From a2d2525f5e06c9a2a0cae2f7ff579d380828e01b Mon Sep 17 00:00:00 2001 From: Alex Klimenkov Date: Tue, 27 Aug 2024 13:44:25 +0300 Subject: [PATCH] [update] version 7.1.1 --- README.md | 4 +- bower.json | 2 +- codebase/dhtmlxscheduler.d.ts | 2 +- codebase/dhtmlxscheduler.es.d.ts | 2 +- codebase/dhtmlxscheduler.es.js | 113 +++++++++++---------- codebase/dhtmlxscheduler.es.js.map | 2 +- codebase/dhtmlxscheduler.js | 26 ++--- codebase/dhtmlxscheduler.js.map | 2 +- codebase/sources/dhtmlxscheduler.es.js | 74 ++++++++++---- codebase/sources/dhtmlxscheduler.es.js.map | 2 +- codebase/sources/dhtmlxscheduler.js | 74 ++++++++++---- codebase/sources/dhtmlxscheduler.js.map | 2 +- codebase/sources/less/package.json | 2 +- package.json | 2 +- whatsnew.md | 10 ++ 15 files changed, 206 insertions(+), 113 deletions(-) diff --git a/README.md b/README.md index 325b4b2..af9c0bd 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # dhtmlxScheduler # [![dhtmlx.com](https://img.shields.io/badge/made%20by-DHTMLX-blue)](https://dhtmlx.com/) -[![npm: v.7.1.0](https://img.shields.io/badge/npm-v.7.1.0-blue.svg)](https://www.npmjs.com/package/dhtmlx-scheduler) +[![npm: v.7.1.1](https://img.shields.io/badge/npm-v.7.1.1-blue.svg)](https://www.npmjs.com/package/dhtmlx-scheduler) [![License: GPL v2](https://img.shields.io/badge/license-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) [DHTMLX Scheduler](https://dhtmlx.com/docs/products/dhtmlxScheduler) is a JavaScript library that allows you to add a Google-like scheduler to your web app or website. @@ -87,7 +87,7 @@ scheduler.parse([ ## License ## -dhtmlxScheduler v.7.1.0 Standard +dhtmlxScheduler v.7.1.1 Standard To use dhtmlxScheduler in non-GPL projects (and get Pro version of the product), please obtain Commercial/Enterprise or Ultimate license on our site https://dhtmlx.com/docs/products/dhtmlxScheduler/#licensing or contact us at sales@dhtmlx.com diff --git a/bower.json b/bower.json index 7e8ab39..a812f8f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "scheduler", - "version": "7.1.0", + "version": "7.1.1", "homepage": "https://dhtmlx.com/docs/products/dhtmlxScheduler/", "description": "JavaScript event calendar. Allows to manage events and appointments in different views", "main": [ diff --git a/codebase/dhtmlxscheduler.d.ts b/codebase/dhtmlxscheduler.d.ts index d99ec60..76afdd2 100644 --- a/codebase/dhtmlxscheduler.d.ts +++ b/codebase/dhtmlxscheduler.d.ts @@ -2087,7 +2087,7 @@ export interface SchedulerStatic { * creates a mini calendar * @param config the calendar configuration object */ - renderCalendar(config: any): void; + renderCalendar(config: any): HTMLElement; /** * generates HTML content for a custom event's box diff --git a/codebase/dhtmlxscheduler.es.d.ts b/codebase/dhtmlxscheduler.es.d.ts index d99ec60..76afdd2 100644 --- a/codebase/dhtmlxscheduler.es.d.ts +++ b/codebase/dhtmlxscheduler.es.d.ts @@ -2087,7 +2087,7 @@ export interface SchedulerStatic { * creates a mini calendar * @param config the calendar configuration object */ - renderCalendar(config: any): void; + renderCalendar(config: any): HTMLElement; /** * generates HTML content for a custom event's box diff --git a/codebase/dhtmlxscheduler.es.js b/codebase/dhtmlxscheduler.es.js index 1eca8a2..6bfbc87 100644 --- a/codebase/dhtmlxscheduler.es.js +++ b/codebase/dhtmlxscheduler.es.js @@ -898,10 +898,10 @@ function qt(e) { function jt(e) { return !isNaN(e.getAttribute("tabindex")) && 1 * e.getAttribute("tabindex") >= 0; } -function Pt(e) { +function It(e) { return !{ a: !0, area: !0 }[e.nodeName.loLowerCase()] || !!e.getAttribute("href"); } -function It(e) { +function Pt(e) { return !{ input: !0, select: !0, textarea: !0, button: !0, object: !0 }[e.nodeName.toLowerCase()] || !e.hasAttribute("disabled"); } function pt() { @@ -952,7 +952,7 @@ const _e = { getAbsoluteLeft: function(e) { return n.tabIndex === 0 && s.tabIndex !== 0 ? 1 : n.tabIndex !== 0 && s.tabIndex === 0 ? -1 : n.tabIndex === s.tabIndex ? n.$position - s.$position : n.tabIndex < s.tabIndex ? -1 : 1; }), r = 0; r < t.length; r++) { var d = t[r]; - (jt(d) || It(d) || Pt(d)) && qt(d) || (t.splice(r, 1), r--); + (jt(d) || Pt(d) || It(d)) && qt(d) || (t.splice(r, 1), r--); } return t; }, getClassName: ut, locateCss: ft, getRootNode: Ke, hasShadowParent: function(e) { @@ -2287,11 +2287,22 @@ He.prototype = { setTransactionMode: function(e, i) { var r = i[t]; this.$scheduler.getUserData(r, this.action_param) && e.call(this, r); } -}, _prepareDataItem: function(e) { - var i = {}, t = this.$scheduler, r = t.utils.copy(e); - for (var d in r) - d.indexOf("_") !== 0 && r[d] && (r[d].getUTCFullYear ? i[d] = t._helpers.formatDate(r[d]) : typeof r[d] == "object" ? i[d] = this._prepareDataItem(r[d]) : r[d] === null ? i[d] = "" : i[d] = r[d]); +}, _prepareItemForJson(e) { + const i = {}, t = this.$scheduler, r = t.utils.copy(e); + for (let d in r) { + let n = r[d]; + d.indexOf("_") !== 0 && (n ? n.getUTCFullYear ? i[d] = t._helpers.formatDate(n) : i[d] = typeof n == "object" ? this._prepareItemForJson(n) : n : n !== void 0 && (i[d] = n)); + } + return i[this.action_param] = t.getUserData(e.id, this.action_param), i; +}, _prepareItemForForm(e) { + const i = {}, t = this.$scheduler, r = t.utils.copy(e); + for (var d in r) { + let n = r[d]; + d.indexOf("_") !== 0 && (n ? n.getUTCFullYear ? i[d] = t._helpers.formatDate(n) : i[d] = typeof n == "object" ? this._prepareItemForForm(n) : n : i[d] = ""); + } return i[this.action_param] = t.getUserData(e.id, this.action_param), i; +}, _prepareDataItem: function(e) { + return this._serializeAsJson ? this._prepareItemForJson(e) : this._prepareItemForForm(e); }, _getRowData: function(e) { var i = this.$scheduler.getEvent(e); return i || (i = { id: e }), this._prepareDataItem(i); @@ -2449,7 +2460,7 @@ class Da { } } function Sa(e) { - const i = { version: "7.1.0" }; + const i = { version: "7.1.1" }; i.$stateProvider = function() { const a = {}; return { getState: function(o) { @@ -4841,7 +4852,7 @@ var $e = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"], K = function() { for (var t = [], r = e; r < i; r++) t.push(r); return t; -}, P = function(e, i) { +}, I = function(e, i) { var t = 0, r = []; if (G(e)) for (; t < i; t++) @@ -4854,7 +4865,7 @@ var $e = ["MO", "TU", "WE", "TH", "FR", "SA", "SU"], K = function() { function ue(e, i, t) { t === void 0 && (t = " "); var r = String(e); - return i >>= 0, r.length > i ? String(r) : ((i -= r.length) > t.length && (t += P(t, i / t.length)), t.slice(0, i) + String(r)); + return i >>= 0, r.length > i ? String(r) : ((i -= r.length) > t.length && (t += I(t, i / t.length)), t.slice(0, i) + String(r)); } var Ha = function(e, i, t) { var r = e.split(i); @@ -4976,7 +4987,7 @@ function O(e, i, t) { !r && d in i || (r || (r = Array.prototype.slice.call(i, 0, d)), r[d] = i[d]); return e.concat(r || Array.prototype.slice.call(i)); } -var I, et = function(e) { +var P, et = function(e) { function i(t, r, d) { var n = e.call(this, t, r) || this; return n.iterator = d, n; @@ -4988,11 +4999,11 @@ var I, et = function(e) { return e.indexOf(i) !== -1; }, ja = function(e) { return e.toString(); -}, Pa = function(e, i, t) { +}, Ia = function(e, i, t) { return "".concat(i, " ").concat(t, ", ").concat(e); }, ie = function() { function e(i, t, r, d) { - if (t === void 0 && (t = ja), r === void 0 && (r = ke), d === void 0 && (d = Pa), this.text = [], this.language = r || ke, this.gettext = t, this.dateFormatter = d, this.rrule = i, this.options = i.options, this.origOptions = i.origOptions, this.origOptions.bymonthday) { + if (t === void 0 && (t = ja), r === void 0 && (r = ke), d === void 0 && (d = Ia), this.text = [], this.language = r || ke, this.gettext = t, this.dateFormatter = d, this.rrule = i, this.options = i.options, this.origOptions = i.origOptions, this.origOptions.bymonthday) { var n = [].concat(this.options.bymonthday), s = [].concat(this.options.bynmonthday); n.sort(function(l, h) { return l - h; @@ -5114,7 +5125,7 @@ var I, et = function(e) { return l; }(i.map(s), d, r) : i.map(s).join(d + " "); }, e; -}(), Ia = function() { +}(), Pa = function() { function e(i) { this.done = !0, this.rules = i; } @@ -5155,7 +5166,7 @@ var I, et = function(e) { }(); function wt(e, i) { i === void 0 && (i = ke); - var t = {}, r = new Ia(i.tokens); + var t = {}, r = new Pa(i.tokens); return r.start(e) ? (function() { r.expect("every"); var l = r.acceptNumber(); @@ -5356,15 +5367,15 @@ function wt(e, i) { } } function Ce(e) { - return e < I.HOURLY; + return e < P.HOURLY; } (function(e) { e[e.YEARLY = 0] = "YEARLY", e[e.MONTHLY = 1] = "MONTHLY", e[e.WEEKLY = 2] = "WEEKLY", e[e.DAILY = 3] = "DAILY", e[e.HOURLY = 4] = "HOURLY", e[e.MINUTELY = 5] = "MINUTELY", e[e.SECONDLY = 6] = "SECONDLY"; -})(I || (I = {})); +})(P || (P = {})); var Ra = function(e, i) { return i === void 0 && (i = ke), new C(wt(e, i) || void 0); }, fe = ["count", "until", "interval", "byweekday", "bymonthday", "bymonth"]; -ie.IMPLEMENTED = [], ie.IMPLEMENTED[I.HOURLY] = fe, ie.IMPLEMENTED[I.MINUTELY] = fe, ie.IMPLEMENTED[I.DAILY] = ["byhour"].concat(fe), ie.IMPLEMENTED[I.WEEKLY] = fe, ie.IMPLEMENTED[I.MONTHLY] = fe, ie.IMPLEMENTED[I.YEARLY] = ["byweekno", "byyearday"].concat(fe); +ie.IMPLEMENTED = [], ie.IMPLEMENTED[P.HOURLY] = fe, ie.IMPLEMENTED[P.MINUTELY] = fe, ie.IMPLEMENTED[P.DAILY] = ["byhour"].concat(fe), ie.IMPLEMENTED[P.WEEKLY] = fe, ie.IMPLEMENTED[P.MONTHLY] = fe, ie.IMPLEMENTED[P.YEARLY] = ["byweekno", "byyearday"].concat(fe); var Ya = ie.isFullyConvertible, we = function() { function e(i, t, r, d) { this.hour = i, this.minute = t, this.second = r, this.millisecond = d || 0; @@ -5442,19 +5453,19 @@ var Ya = ie.isFullyConvertible, we = function() { }, i.prototype.add = function(t, r) { var d = t.freq, n = t.interval, s = t.wkst, _ = t.byhour, a = t.byminute, o = t.bysecond; switch (d) { - case I.YEARLY: + case P.YEARLY: return this.addYears(n); - case I.MONTHLY: + case P.MONTHLY: return this.addMonths(n); - case I.WEEKLY: + case P.WEEKLY: return this.addWeekly(n, s); - case I.DAILY: + case P.DAILY: return this.addDaily(n); - case I.HOURLY: + case P.HOURLY: return this.addHours(n, r, _); - case I.MINUTELY: + case P.MINUTELY: return this.addMinutes(n, r, _, a); - case I.SECONDLY: + case P.SECONDLY: return this.addSeconds(n, r, _, a, o); } }, i; @@ -5520,7 +5531,7 @@ function Va(e) { i.bynweekday = null; return U(i.byhour) ? te(i.byhour) && (i.byhour = [i.byhour]) : i.byhour = i.freq < C.HOURLY ? [i.dtstart.getUTCHours()] : null, U(i.byminute) ? te(i.byminute) && (i.byminute = [i.byminute]) : i.byminute = i.freq < C.MINUTELY ? [i.dtstart.getUTCMinutes()] : null, U(i.bysecond) ? te(i.bysecond) && (i.bysecond = [i.bysecond]) : i.bysecond = i.freq < C.SECONDLY ? [i.dtstart.getUTCSeconds()] : null, { parsedOptions: i }; } -function Pe(e) { +function Ie(e) { var i = e.split(` `).map(Ba).filter(function(t) { return t !== null; @@ -5557,7 +5568,7 @@ function at(e) { var r = t.split("="), d = r[0], n = r[1]; switch (d.toUpperCase()) { case "FREQ": - i.freq = I[n.toUpperCase()]; + i.freq = P[n.toUpperCase()]; break; case "WKST": i.wkst = Q[n.toUpperCase()]; @@ -5629,7 +5640,7 @@ var De = function() { var i, t, r, d, n; }, e; }(); -function Ie(e) { +function Pe(e) { for (var i, t = [], r = "", d = Object.keys(e), n = Object.keys(Je), s = 0; s < d.length; s++) if (d[s] !== "tzid" && R(n, d[s])) { var _ = d[s].toUpperCase(), a = e[d[s]], o = ""; @@ -5713,7 +5724,7 @@ var Wa = function() { } return G(r) ? Ze(r) : r instanceof Date ? qe(r) : r; }, e; -}(), Ka = O(O(O(O(O(O(O(O(O(O(O(O(O([], P(1, 31), !0), P(2, 28), !0), P(3, 31), !0), P(4, 30), !0), P(5, 31), !0), P(6, 30), !0), P(7, 31), !0), P(8, 31), !0), P(9, 30), !0), P(10, 31), !0), P(11, 30), !0), P(12, 31), !0), P(1, 7), !0), Ga = O(O(O(O(O(O(O(O(O(O(O(O(O([], P(1, 31), !0), P(2, 29), !0), P(3, 31), !0), P(4, 30), !0), P(5, 31), !0), P(6, 30), !0), P(7, 31), !0), P(8, 31), !0), P(9, 30), !0), P(10, 31), !0), P(11, 30), !0), P(12, 31), !0), P(1, 7), !0), Xa = ne(1, 29), Za = ne(1, 30), le = ne(1, 31), F = ne(1, 32), Qa = O(O(O(O(O(O(O(O(O(O(O(O(O([], F, !0), Za, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F.slice(0, 7), !0), en = O(O(O(O(O(O(O(O(O(O(O(O(O([], F, !0), Xa, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F.slice(0, 7), !0), tn = ne(-28, 0), an = ne(-29, 0), ce = ne(-30, 0), J = ne(-31, 0), nn = O(O(O(O(O(O(O(O(O(O(O(O(O([], J, !0), an, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J.slice(0, 7), !0), rn = O(O(O(O(O(O(O(O(O(O(O(O(O([], J, !0), tn, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J.slice(0, 7), !0), on = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366], sn = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365], rt = function() { +}(), Ka = O(O(O(O(O(O(O(O(O(O(O(O(O([], I(1, 31), !0), I(2, 28), !0), I(3, 31), !0), I(4, 30), !0), I(5, 31), !0), I(6, 30), !0), I(7, 31), !0), I(8, 31), !0), I(9, 30), !0), I(10, 31), !0), I(11, 30), !0), I(12, 31), !0), I(1, 7), !0), Ga = O(O(O(O(O(O(O(O(O(O(O(O(O([], I(1, 31), !0), I(2, 29), !0), I(3, 31), !0), I(4, 30), !0), I(5, 31), !0), I(6, 30), !0), I(7, 31), !0), I(8, 31), !0), I(9, 30), !0), I(10, 31), !0), I(11, 30), !0), I(12, 31), !0), I(1, 7), !0), Xa = ne(1, 29), Za = ne(1, 30), le = ne(1, 31), F = ne(1, 32), Qa = O(O(O(O(O(O(O(O(O(O(O(O(O([], F, !0), Za, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F.slice(0, 7), !0), en = O(O(O(O(O(O(O(O(O(O(O(O(O([], F, !0), Xa, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F, !0), le, !0), F, !0), le, !0), F, !0), F.slice(0, 7), !0), tn = ne(-28, 0), an = ne(-29, 0), ce = ne(-30, 0), J = ne(-31, 0), nn = O(O(O(O(O(O(O(O(O(O(O(O(O([], J, !0), an, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J.slice(0, 7), !0), rn = O(O(O(O(O(O(O(O(O(O(O(O(O([], J, !0), tn, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J, !0), ce, !0), J, !0), ce, !0), J, !0), J.slice(0, 7), !0), on = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366], sn = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365], rt = function() { for (var e = [], i = 0; i < 55; i++) e = e.concat(ne(7)); return e; @@ -5725,7 +5736,7 @@ function dn(e, i) { }(e)), { wnomask: null }); if (ae(i.byweekno)) return o; - o.wnomask = P(0, n + 7); + o.wnomask = I(0, n + 7); var l = t = Z(7 - a + i.wkst, 7); l >= 4 ? (l = 0, r = o.yearlen + Z(a - i.wkst, 7)) : r = n - l; for (var h = Math.floor(r / 7), v = Z(r, 7), u = Math.floor(h + v / 4), f = 0; f < i.byweekno.length; f++) { @@ -5774,7 +5785,7 @@ var _n = function() { u.freq === C.MONTHLY && (c = [h.slice(o - 1, o + 1)]); if (ae(c)) return f; - for (f.nwdaymask = P(0, l), p = 0; p < c.length; p++) + for (f.nwdaymask = I(0, l), p = 0; p < c.length; p++) for (var m = c[p], g = m[0], y = m[1] - 1, x = 0; x < u.bynweekday.length; x++) { var b = void 0, k = u.bynweekday[x], E = k[0], D = k[1]; D < 0 ? (b = y + 7 * (D + 1), b -= Z(v[b] - E, 7)) : (b = g + 7 * (D - 1), b += Z(7 - v[b] + E, 7)), g <= b && b <= y && (f.nwdaymask[b] = 1); @@ -5814,15 +5825,15 @@ var _n = function() { }, enumerable: !1, configurable: !0 }), e.prototype.ydayset = function() { return [ne(this.yearlen), 0, this.yearlen]; }, e.prototype.mdayset = function(i, t) { - for (var r = this.mrange[t - 1], d = this.mrange[t], n = P(null, this.yearlen), s = r; s < d; s++) + for (var r = this.mrange[t - 1], d = this.mrange[t], n = I(null, this.yearlen), s = r; s < d; s++) n[s] = s; return [n, r, d]; }, e.prototype.wdayset = function(i, t, r) { - for (var d = P(null, this.yearlen + 7), n = ze(he(i, t, r)) - this.yearordinal, s = n, _ = 0; _ < 7 && (d[n] = n, ++n, this.wdaymask[n] !== this.options.wkst); _++) + for (var d = I(null, this.yearlen + 7), n = ze(he(i, t, r)) - this.yearordinal, s = n, _ = 0; _ < 7 && (d[n] = n, ++n, this.wdaymask[n] !== this.options.wkst); _++) ; return [d, s, n]; }, e.prototype.ddayset = function(i, t, r) { - var d = P(null, this.yearlen), n = ze(he(i, t, r)) - this.yearordinal; + var d = I(null, this.yearlen), n = ze(he(i, t, r)) - this.yearordinal; return d[n] = n, [d, n, n + 1]; }, e.prototype.htimeset = function(i, t, r, d) { var n = this, s = []; @@ -5838,23 +5849,23 @@ var _n = function() { return [new we(i, t, r, d)]; }, e.prototype.getdayset = function(i) { switch (i) { - case I.YEARLY: + case P.YEARLY: return this.ydayset.bind(this); - case I.MONTHLY: + case P.MONTHLY: return this.mdayset.bind(this); - case I.WEEKLY: + case P.WEEKLY: return this.wdayset.bind(this); - case I.DAILY: + case P.DAILY: default: return this.ddayset.bind(this); } }, e.prototype.gettimeset = function(i) { switch (i) { - case I.HOURLY: + case P.HOURLY: return this.htimeset.bind(this); - case I.MINUTELY: + case P.MINUTELY: return this.mtimeset.bind(this); - case I.SECONDLY: + case P.SECONDLY: return this.stimeset.bind(this); } }, e; @@ -5940,7 +5951,7 @@ function hn(e, i, t, r, d) { } return n; } -var Q = { MO: new K(0), TU: new K(1), WE: new K(2), TH: new K(3), FR: new K(4), SA: new K(5), SU: new K(6) }, Je = { freq: I.YEARLY, dtstart: null, interval: 1, wkst: Q.MO, count: null, until: null, tzid: null, bysetpos: null, bymonth: null, bymonthday: null, bynmonthday: null, byyearday: null, byweekno: null, byweekday: null, bynweekday: null, byhour: null, byminute: null, bysecond: null, byeaster: null }, un = Object.keys(Je), C = function() { +var Q = { MO: new K(0), TU: new K(1), WE: new K(2), TH: new K(3), FR: new K(4), SA: new K(5), SU: new K(6) }, Je = { freq: P.YEARLY, dtstart: null, interval: 1, wkst: Q.MO, count: null, until: null, tzid: null, bysetpos: null, bymonth: null, bymonthday: null, bynmonthday: null, byyearday: null, byweekno: null, byweekday: null, bynweekday: null, byhour: null, byminute: null, bysecond: null, byeaster: null }, un = Object.keys(Je), C = function() { function e(i, t) { i === void 0 && (i = {}), t === void 0 && (t = !1), this._cache = t ? null : new Wa(), this.origOptions = Et(i); var r = Va(i).parsedOptions; @@ -5985,7 +5996,7 @@ var Q = { MO: new K(0), TU: new K(1), WE: new K(2), TH: new K(3), FR: new K(4), }, e.prototype.count = function() { return this.all().length; }, e.prototype.toString = function() { - return Ie(this.origOptions); + return Pe(this.origOptions); }, e.prototype.toText = function(i, t, r) { return function(d, n, s, _) { return new ie(d, n, s, _).toString(); @@ -5994,7 +6005,7 @@ var Q = { MO: new K(0), TU: new K(1), WE: new K(2), TH: new K(3), FR: new K(4), return Ya(this); }, e.prototype.clone = function() { return new e(this.origOptions); - }, e.FREQUENCIES = ["YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY"], e.YEARLY = I.YEARLY, e.MONTHLY = I.MONTHLY, e.WEEKLY = I.WEEKLY, e.DAILY = I.DAILY, e.HOURLY = I.HOURLY, e.MINUTELY = I.MINUTELY, e.SECONDLY = I.SECONDLY, e.MO = Q.MO, e.TU = Q.TU, e.WE = Q.WE, e.TH = Q.TH, e.FR = Q.FR, e.SA = Q.SA, e.SU = Q.SU, e.parseString = Pe, e.optionsToString = Ie, e; + }, e.FREQUENCIES = ["YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY"], e.YEARLY = P.YEARLY, e.MONTHLY = P.MONTHLY, e.WEEKLY = P.WEEKLY, e.DAILY = P.DAILY, e.HOURLY = P.HOURLY, e.MINUTELY = P.MINUTELY, e.SECONDLY = P.SECONDLY, e.MO = Q.MO, e.TU = Q.TU, e.WE = Q.WE, e.TH = Q.TH, e.FR = Q.FR, e.SA = Q.SA, e.SU = Q.SU, e.parseString = Ie, e.optionsToString = Pe, e; }(), ot = { dtstart: null, cache: !1, unfold: !1, forceset: !1, compatible: !1, tzid: null }; function fn(e, i) { var t = [], r = [], d = [], n = [], s = Ee(e), _ = s.dtstart, a = s.tzid, o = function(l, h) { @@ -6027,7 +6038,7 @@ function fn(e, i) { case "RRULE": if (f.length) throw new Error("unsupported RRULE parm: ".concat(f.join(","))); - t.push(Pe(l)); + t.push(Ie(l)); break; case "RDATE": var p = ((h = /RDATE(?:;TZID=([^:=]+))?/i.exec(l)) !== null && h !== void 0 ? h : [])[1]; @@ -6036,7 +6047,7 @@ function fn(e, i) { case "EXRULE": if (f.length) throw new Error("unsupported EXRULE parm: ".concat(f.join(","))); - d.push(Pe(c)); + d.push(Ie(c)); break; case "EXDATE": n = n.concat(st(c, f)); @@ -6171,7 +6182,7 @@ var pn = function(e) { }); }, i.prototype.valueOf = function() { var t = []; - return !this._rrule.length && this._dtstart && (t = t.concat(Ie({ dtstart: this._dtstart }))), this._rrule.forEach(function(r) { + return !this._rrule.length && this._dtstart && (t = t.concat(Pe({ dtstart: this._dtstart }))), this._rrule.forEach(function(r) { t = t.concat(r.toString().split(` `)); }), this._exrule.forEach(function(r) { @@ -6280,7 +6291,7 @@ class vn { const l = () => { n = o, i.onmouseenter(_, o); }; - n ? o && o === n ? i.onmousemove(_, o) : (i.onmouseleave(_, n), n = null, o && o !== n && l()) : o && l(); + r._mobile && r.config.touch_tooltip && (o ? l() : i.onmouseleave(_, o)), n ? o && o === n ? i.onmousemove(_, o) : (i.onmouseleave(_, n), n = null, o && o !== n && l()) : o && l(); }; this.detach(i.selector), this._domEvents.attach(t, "mousemove", s), this._listeners[i.selector] = { node: t, handler: s }; } @@ -6613,7 +6624,7 @@ const gn = { active_links: function(e) { else { var p = c.firstChild; const E = p.querySelectorAll(".dhx_cal_month_row"); - if (E) { + if (E && E.length) { for (var m = 0; m < E.length; m++) { if (f[m]++, f[m] * v > this._colsS.height - this.xy.month_head_height) { var g = E[m].querySelectorAll(".dhx_cal_month_cell"), y = this._colsS.height - this.xy.month_head_height; @@ -6631,7 +6642,7 @@ const gn = { active_links: function(e) { const D = this._els.dhx_cal_navline[0].offsetHeight, w = this._els.dhx_cal_header[0].offsetHeight; c.style.height = this._obj.offsetHeight - D - w - (this.xy.margin_top || 0) + "px"; var k = this._els.dhx_multi_day[0]; - k.style.height = b, k.style.visibility = f[0] == -1 ? "hidden" : "visible", (k = this._els.dhx_multi_day[1]).style.height = b, k.style.visibility = f[0] == -1 ? "hidden" : "visible", k.style.visibility == "hidden" ? k.style.display = "none" : k.style.display = "", k.className = f[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small", this._dy_shift = (f[0] + 1) * v, f[0] = 0; + k.style.height = b, k.style.visibility = f[0] == -1 ? "hidden" : "visible", k.style.display = f[0] == -1 ? "none" : "", (k = this._els.dhx_multi_day[1]).style.height = b, k.style.visibility = f[0] == -1 ? "hidden" : "visible", k.style.display = f[0] == -1 ? "none" : "", k.className = f[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small", this._dy_shift = (f[0] + 1) * v, f[0] = 0; } } return l; @@ -10152,7 +10163,7 @@ END:VCALENDAR`; }), e.attachEvent("onLightbox", function() { i.hideTooltip(); }), e.attachEvent("onBeforeDrag", function() { - return i.hideTooltip(), !0; + return e._mobile && e.config.touch_tooltip || i.hideTooltip(), !0; }), e.attachEvent("onEventDeleted", function() { return i.hideTooltip(), !0; }); diff --git a/codebase/dhtmlxscheduler.es.js.map b/codebase/dhtmlxscheduler.es.js.map index 97555b6..263e09b 100644 --- a/codebase/dhtmlxscheduler.es.js.map +++ b/codebase/dhtmlxscheduler.es.js.map @@ -1 +1 @@ -{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../sources/global.js","../sources/plugins/drag_highlight_pos.js","../sources/plugins/limit.js","../sources/plugins/batch_update.js","../sources/plugins/index.js","../sources/plugins/undo_delete.js","../sources/core/utils/utils.js","../sources/core/nav_bar.js","../sources/core/scheduler_resize_listener.js","../sources/utils/eventable.js","../sources/core/utils/event.js","../sources/core/common.js","../sources/core/utils/scoped_event.js","../sources/core/utils/dom_helpers.js","../sources/utils/env.js","../sources/core/common/url_serialize.js","../sources/core/base.js","../sources/core/common/get_serializable_events.js","../sources/core/load.js","../sources/core/loaders/xml.js","../sources/core/loaders/json.js","../sources/core/loaders/ical.js","../sources/core/touch.js","../sources/core/skins.js","../sources/core/dataprocessor/dataprocessor_hooks.js","../sources/core/dataprocessor/dataprocessor.js","../sources/core/message.js","../sources/locale/locale_ar.js","../sources/locale/locale_be.js","../sources/locale/locale_ca.js","../sources/locale/locale_cn.js","../sources/locale/locale_cs.js","../sources/locale/locale_da.js","../sources/locale/locale_de.js","../sources/locale/locale_el.js","../sources/locale/locale_en.js","../sources/locale/locale_es.js","../sources/locale/locale_fi.js","../sources/locale/locale_fr.js","../sources/locale/locale_he.js","../sources/locale/locale_hu.js","../sources/locale/locale_id.js","../sources/locale/locale_it.js","../sources/locale/locale_jp.js","../sources/locale/locale_manager.js","../sources/locale/locale_nb.js","../sources/locale/locale_nl.js","../sources/locale/locale_no.js","../sources/locale/locale_pl.js","../sources/locale/locale_pt.js","../sources/locale/locale_ro.js","../sources/locale/locale_ru.js","../sources/locale/locale_si.js","../sources/locale/locale_sk.js","../sources/locale/locale_sv.js","../sources/locale/locale_tr.js","../sources/locale/locale_ua.js","../sources/core/datepicker.js","../sources/scheduler_factory_method.js","../sources/core/state.js","../sources/core/common_errors.js","../sources/core/scheduler.js","../sources/core/wai_aria.js","../sources/core/common/assert.js","../sources/core/jquery.js","../sources/core/destructor.js","../sources/core/utils/ajax.js","../sources/core/config.js","../sources/core/event.js","../sources/core/event_highlight.js","../sources/core/lightbox.js","../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../sources/core/delay_render.js","../sources/core/connector.js","../sources/locale/index.js","../sources/ext/extension_manager.js","../sources/dhtmlx_hook.js","../sources/ext/restricted_extensions/not_implemented_extension.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/ext/map_view/gMapAdapter.ts","../sources/ext/map_view/osmMapAdapter.ts","../sources/ext/map_view/mapboxAdapter.ts","../node_modules/rrule/dist/esm/weekday.js","../node_modules/rrule/dist/esm/helpers.js","../node_modules/rrule/dist/esm/dateutil.js","../node_modules/rrule/dist/esm/iterresult.js","../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../node_modules/rrule/dist/esm/callbackiterresult.js","../node_modules/rrule/dist/esm/types.js","../node_modules/rrule/dist/esm/nlp/i18n.js","../node_modules/rrule/dist/esm/nlp/totext.js","../node_modules/rrule/dist/esm/nlp/parsetext.js","../node_modules/rrule/dist/esm/nlp/index.js","../node_modules/rrule/dist/esm/datetime.js","../node_modules/rrule/dist/esm/parseoptions.js","../node_modules/rrule/dist/esm/parsestring.js","../node_modules/rrule/dist/esm/datewithzone.js","../node_modules/rrule/dist/esm/optionstostring.js","../node_modules/rrule/dist/esm/cache.js","../node_modules/rrule/dist/esm/masks.js","../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../node_modules/rrule/dist/esm/iterinfo/index.js","../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../node_modules/rrule/dist/esm/iterinfo/easter.js","../node_modules/rrule/dist/esm/iter/poslist.js","../node_modules/rrule/dist/esm/iter/index.js","../node_modules/rrule/dist/esm/rrule.js","../node_modules/rrule/dist/esm/rrulestr.js","../node_modules/rrule/dist/esm/rruleset.js","../node_modules/rrule/dist/esm/iterset.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_gpl.js","../sources/ext/active_links.js","../sources/ext/agenda_legacy_view.js","../sources/ext/agenda.js","../sources/ext/all_timed.js","../sources/ext/collision.js","../sources/ext/container_autoresize.js","../sources/ext/cookie.js","../sources/ext/restricted_extensions/daytimeline.js","../sources/ext/restricted_extensions/drag_between.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/restricted_extensions/grid_view.js","../sources/ext/html_templates.js","../sources/ext/key_nav.js","../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../sources/ext/keyboard_navigation/common/eventhandler.js","../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../sources/ext/keyboard_navigation/marker.js","../sources/ext/keyboard_navigation/elements/scheduler_node.js","../sources/ext/keyboard_navigation/elements/nav_node.js","../sources/ext/keyboard_navigation/elements/header_cell.js","../sources/ext/keyboard_navigation/elements/event.js","../sources/ext/keyboard_navigation/elements/time_slot.js","../sources/ext/keyboard_navigation/elements/minical_button.js","../sources/ext/keyboard_navigation/elements/minical_cell.js","../sources/ext/keyboard_navigation/elements/data_area.js","../sources/ext/keyboard_navigation/core.js","../sources/ext/keyboard_navigation/minical_handlers.js","../sources/ext/layer.js","../sources/ext/limit.js","../sources/ext/map_view/index.ts","../sources/ext/minical.js","../sources/ext/monthheight.js","../sources/ext/restricted_extensions/multisection.js","../sources/ext/multiselect.js","../sources/ext/multisource.js","../sources/ext/mvc.js","../sources/ext/outerdrag.js","../sources/ext/pdf.js","../sources/ext/quick_info.js","../sources/ext/readonly.js","../sources/ext/recurring.js","../sources/ext/recurring_legacy.js","../sources/ext/serialize.js","../sources/ext/restricted_extensions/timeline.js","../sources/ext/tooltip/index.ts","../sources/ext/restricted_extensions/treetimeline.js","../sources/ext/restricted_extensions/units.js","../sources/ext/url.js","../sources/ext/restricted_extensions/week_agenda.js","../sources/ext/wp.js","../sources/ext/year_view.js","../sources/dhtmlxscheduler.gpl.js","../sources/scheduler_factory.js"],"sourcesContent":["\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_prepareDataItem: function(item) {\r\n\t\tvar processedItem = {};\r\n\t\tvar scheduler = this.$scheduler;\r\n\t\tvar copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (copy[i]) {\r\n\t\t\t\tif(copy[i].getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(copy[i]);\r\n\t\t\t\t} else if(typeof copy[i] == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareDataItem(copy[i]);\r\n\t\t\t\t} else if(copy[i] === null) {\r\n\t\t\t\t\tprocessedItem[i] = \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = copy[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\t\thtml+=\"
\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tif(last.style.visibility == \"hidden\"){\r\n\t\t\t\t\t\t\tlast.style.display = \"none\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tlast.style.display = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;"],"names":["global$1","window","global","dragHighlightPos","scheduler","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","createMarkerConfig","configSettings","sectionId","style","top","left","marginLeft","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","monthViewMarkersArray","weekDates","currDate","Date","valueOf","obj","push","week_start","cells","$container","querySelectorAll","event_attribute","id","i","length","cloneNode","unitMarkersArray","sectionPropertyName","y_property","map_to","multisection","formatedSections","String","split","section_delimiter","map","element","elems","columnViewMarkersArray","eventNodes","eventNodeClone","getAttribute","forEach","cfg","attachEvent","mode","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","n","unmarkTimespan","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","get_resulting_options","days","zones","options","type","getZones","ev","timespans","day_index","day_value","timespan_type","s","containers","_props","matrix","container","property","view","linker","_add_timespan_zones","_get_blocked_zones","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","resultZones","concat","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","dates","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","d","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","max","min","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","firstChild","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","unit","_get_unit_index","day_ind","unitsPerDay","floor","_date","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","callback","console","error","$stateProvider","registerProvider","batch_update","noRedraw","dp_mode","call_dp","_dp","updateMode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","render","setCurrentView","updateView","render_data","render_view_data","updateEvent","sendData","initPlugins","deletedEvent","copy","undo_deleted","new_event","message","text","expire","addEvent","limit","batchUpdate","uidSeed","isDate","getFullYear","getMonth","utils","mixin","source","force","f","object","result","isArray","pop","Function","prototype","toString","constructor","Number","Boolean","varType","Object","defined","delay","timeout","timer","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","extend","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","renderCalendar","navigation","handler","calendar","html_element","renderElement","renderer","rows","cols","value","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","body","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","$destroyed","a","b","newSize","triggerSchedulerResize","$root","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","EventHost","_silent_mode","listeners","_silentEnd","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","attachAll","name","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","addEventListener","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","detach","detachAll","staticArray","createEventScope","_eventRemoveAll","_createDomEventScope","_trim","str","trim","replace","_isDate","_isObject","getClassName","node","baseVal","locateCss","classname","strict","trg","srcElement","ind","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","hasHref","nodeName","loLowerCase","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","contains","getFocusableNodes","nodes","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","cspEnabled","useCsp","csp","undefined","init","month_short","month_full","old","setSeconds","setMilliseconds","setTime","getTime","time_part","getTimezoneOffset","shift","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","convert_to_utc","getSerializator","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_load_mode","lf","templates","load_format","cache_line","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","_after_call","_tagvalue","_init_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","load","setLoadMode","array","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_pos","_pointerDragId","acc","dnd","timeline","original_render","drag_id","getEvents","_sorder","_count","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","_build_skin_info","clearInterval","monitorIntervalId","setInterval","csstheme","setSkin","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","themeNameFromFile","_theme_info","theme","cssVarTheme","values","themeVariables","_configure","col","_skin_init","hour_scale","hour_date","_old_month_day","month_day","old_month_day","dhx_cal_today_button","tab","header","tabs","specialTabs","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","method","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","_prepareDataItem","item","processedItem","formatDate","dataItem","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","hour","minute","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProviders","internal","provider","unregisterProvider","stateProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","nav_bar","_detachDomEvent","_init_once","scheduler_resize_listener","hasSchedulerMarkup","wai_aria_application_role","views","_grid","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","edit_save","edit_cancel","functor","scale_x","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","prepareValue","prepared","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","differenceInDays","_select_id","_close_not_saved","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","icon","def_step","dhx_cal_tab","deprecated_name","substring","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","base","duration","event_duration","time_step","start_hour","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","drag_event_body","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","hiddenWidth","c2","cc","hourScaleAttr","scroll_hour","now_date","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","lightbox","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","$initial","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_table","_pre_render_events_line","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","zIndex","color","setProperty","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","getLightboxRoot","cspEnvironment","salesforceEnvironment","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","listOfScales","some","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","clearEventMarkers","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","resolveAddress","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","equals","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","toOrdinal","date2","differencems","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","clone","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","IterResult","_result","before","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","l","Frequency","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","number","numberAsText","every","at","the","second","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","o","realCallback","delimiter","finalDelimiter","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","name_1","v","acceptNumber","expect","parseText","ttr","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","decodeNTH","decodeM","freqIsDailyOrGreater","fromText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","minutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","Days","parseIndividualNumber","optionKey","parts","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","all","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","rebuild","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","eastermask","g","yearStart","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","timeset","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","millisecondModulo","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","toText","isFullyConvertibleToText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","_b","parms","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rdateval","parm","createGetterSetter","fieldName","field","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","rule","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderDay","calendarEvent","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","evs_dates","getRecDates","tevs","concurrent","checked_mode","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","year_y","cur_height","week_agenda_scale_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","EventHandler","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","renderMultiple","currentStart","currentEnd","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","setupMapView","createAdapter","unmodifiedEvent","_eventLocationChanged","map_settings","resolve_event_location","_latLngUpdate","addEventWithLocation","updateEventMarker","newIdEvent","removeEventMarker","addEventMarker","onEventClick","coordinates","map_view_provider","currentAdapter","resolve_user_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","dblclick_dhx_map_area","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","_selected_event_id","ariaButtonAttr","map_end","mapContainer","adapter","elem_id","marginRight","marginTop","destroy","initialize","geolocation","getCurrentPosition","coords","_updateEventLocation","_event_resolve_delay","ret","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_children","_mark_inputs","_ids","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","fitQIInsideWindow","quickInfoPopup","popupRect","offsetBottom","getPositionInsideScheduler","_$quickInfoHandler","eventElement","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","_quick_info_onscroll_handler","$testmode","_qi_button_click","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","clearMilliseconds","isSeries","recurring_event_id","old_add_event","groupExceptions","exceptions","original_start","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","ev_id","_ignore_call","tev","_pid_changed","_is_modified_occurence","idTimestamp","nid","nev","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","repeat_date","old_update_event","toIcalString","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","non_render","maxCount","seriesExceptions","utcStart","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","jsDaysToRRULEDays","RruleDayNumsToJs","formatDayNumber","repeat_monthly_date","repeat_monthly_weekday","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","dayNum","dayLabel","dateOfMonth","nthWeekDayOfMonth","dateOfYear","nthWeekDayOfYear","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getFirstSectionOfType","rec","_get_node","_outer_html","loc","_init_set_value","_ds","weekly","monthly","yearly","_rec_init_done","rf","blocked","rruleset","topOption","rruleObj","untilDate","customFreq","actual_dates","timeControl","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","outerHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","date_str","register_els","inps","change_current_view","set_end_rule","_get_repeat_code","get_rcode","str_date","transpose_type","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","_set_repeat_code","MouseEvent","elements","_toggle_block","getTimeSection","_get_button","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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","x_google_ignoreList":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111]} \ No newline at end of file +{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../sources/global.js","../sources/plugins/drag_highlight_pos.js","../sources/plugins/limit.js","../sources/plugins/batch_update.js","../sources/plugins/index.js","../sources/plugins/undo_delete.js","../sources/core/utils/utils.js","../sources/core/nav_bar.js","../sources/core/scheduler_resize_listener.js","../sources/utils/eventable.js","../sources/core/utils/event.js","../sources/core/common.js","../sources/core/utils/scoped_event.js","../sources/core/utils/dom_helpers.js","../sources/utils/env.js","../sources/core/common/url_serialize.js","../sources/core/base.js","../sources/core/common/get_serializable_events.js","../sources/core/load.js","../sources/core/loaders/xml.js","../sources/core/loaders/json.js","../sources/core/loaders/ical.js","../sources/core/touch.js","../sources/core/skins.js","../sources/core/dataprocessor/dataprocessor_hooks.js","../sources/core/dataprocessor/dataprocessor.js","../sources/core/message.js","../sources/locale/locale_ar.js","../sources/locale/locale_be.js","../sources/locale/locale_ca.js","../sources/locale/locale_cn.js","../sources/locale/locale_cs.js","../sources/locale/locale_da.js","../sources/locale/locale_de.js","../sources/locale/locale_el.js","../sources/locale/locale_en.js","../sources/locale/locale_es.js","../sources/locale/locale_fi.js","../sources/locale/locale_fr.js","../sources/locale/locale_he.js","../sources/locale/locale_hu.js","../sources/locale/locale_id.js","../sources/locale/locale_it.js","../sources/locale/locale_jp.js","../sources/locale/locale_manager.js","../sources/locale/locale_nb.js","../sources/locale/locale_nl.js","../sources/locale/locale_no.js","../sources/locale/locale_pl.js","../sources/locale/locale_pt.js","../sources/locale/locale_ro.js","../sources/locale/locale_ru.js","../sources/locale/locale_si.js","../sources/locale/locale_sk.js","../sources/locale/locale_sv.js","../sources/locale/locale_tr.js","../sources/locale/locale_ua.js","../sources/core/datepicker.js","../sources/scheduler_factory_method.js","../sources/core/state.js","../sources/core/common_errors.js","../sources/core/scheduler.js","../sources/core/wai_aria.js","../sources/core/common/assert.js","../sources/core/jquery.js","../sources/core/destructor.js","../sources/core/utils/ajax.js","../sources/core/config.js","../sources/core/event.js","../sources/core/event_highlight.js","../sources/core/lightbox.js","../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../sources/core/delay_render.js","../sources/core/connector.js","../sources/locale/index.js","../sources/ext/extension_manager.js","../sources/dhtmlx_hook.js","../sources/ext/restricted_extensions/not_implemented_extension.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/ext/map_view/gMapAdapter.ts","../sources/ext/map_view/osmMapAdapter.ts","../sources/ext/map_view/mapboxAdapter.ts","../node_modules/rrule/dist/esm/weekday.js","../node_modules/rrule/dist/esm/helpers.js","../node_modules/rrule/dist/esm/dateutil.js","../node_modules/rrule/dist/esm/iterresult.js","../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../node_modules/rrule/dist/esm/callbackiterresult.js","../node_modules/rrule/dist/esm/types.js","../node_modules/rrule/dist/esm/nlp/i18n.js","../node_modules/rrule/dist/esm/nlp/totext.js","../node_modules/rrule/dist/esm/nlp/parsetext.js","../node_modules/rrule/dist/esm/nlp/index.js","../node_modules/rrule/dist/esm/datetime.js","../node_modules/rrule/dist/esm/parseoptions.js","../node_modules/rrule/dist/esm/parsestring.js","../node_modules/rrule/dist/esm/datewithzone.js","../node_modules/rrule/dist/esm/optionstostring.js","../node_modules/rrule/dist/esm/cache.js","../node_modules/rrule/dist/esm/masks.js","../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../node_modules/rrule/dist/esm/iterinfo/index.js","../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../node_modules/rrule/dist/esm/iterinfo/easter.js","../node_modules/rrule/dist/esm/iter/poslist.js","../node_modules/rrule/dist/esm/iter/index.js","../node_modules/rrule/dist/esm/rrule.js","../node_modules/rrule/dist/esm/rrulestr.js","../node_modules/rrule/dist/esm/rruleset.js","../node_modules/rrule/dist/esm/iterset.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_gpl.js","../sources/ext/active_links.js","../sources/ext/agenda_legacy_view.js","../sources/ext/agenda.js","../sources/ext/all_timed.js","../sources/ext/collision.js","../sources/ext/container_autoresize.js","../sources/ext/cookie.js","../sources/ext/restricted_extensions/daytimeline.js","../sources/ext/restricted_extensions/drag_between.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/restricted_extensions/grid_view.js","../sources/ext/html_templates.js","../sources/ext/key_nav.js","../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../sources/ext/keyboard_navigation/common/eventhandler.js","../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../sources/ext/keyboard_navigation/marker.js","../sources/ext/keyboard_navigation/elements/scheduler_node.js","../sources/ext/keyboard_navigation/elements/nav_node.js","../sources/ext/keyboard_navigation/elements/header_cell.js","../sources/ext/keyboard_navigation/elements/event.js","../sources/ext/keyboard_navigation/elements/time_slot.js","../sources/ext/keyboard_navigation/elements/minical_button.js","../sources/ext/keyboard_navigation/elements/minical_cell.js","../sources/ext/keyboard_navigation/elements/data_area.js","../sources/ext/keyboard_navigation/core.js","../sources/ext/keyboard_navigation/minical_handlers.js","../sources/ext/layer.js","../sources/ext/limit.js","../sources/ext/map_view/index.ts","../sources/ext/minical.js","../sources/ext/monthheight.js","../sources/ext/restricted_extensions/multisection.js","../sources/ext/multiselect.js","../sources/ext/multisource.js","../sources/ext/mvc.js","../sources/ext/outerdrag.js","../sources/ext/pdf.js","../sources/ext/quick_info.js","../sources/ext/readonly.js","../sources/ext/recurring.js","../sources/ext/recurring_legacy.js","../sources/ext/serialize.js","../sources/ext/restricted_extensions/timeline.js","../sources/ext/tooltip/index.ts","../sources/ext/restricted_extensions/treetimeline.js","../sources/ext/restricted_extensions/units.js","../sources/ext/url.js","../sources/ext/restricted_extensions/week_agenda.js","../sources/ext/wp.js","../sources/ext/year_view.js","../sources/dhtmlxscheduler.gpl.js","../sources/scheduler_factory.js"],"sourcesContent":["\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_prepareItemForJson(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (let i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop){\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t\t}\r\n\t\t\t} else if (prop !== undefined){\r\n\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareItemForForm(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop) {\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareDataItem: function(item) {\r\n\t\tif(this._serializeAsJson){\r\n\t\t\treturn this._prepareItemForJson(item);\r\n\t\t}else {\r\n\t\t\treturn this._prepareItemForForm(item);\r\n\t\t}\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\t\thtml+=\"
\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\r\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows && rows.length) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\r\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;"],"names":["global$1","window","global","dragHighlightPos","scheduler","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","createMarkerConfig","configSettings","sectionId","style","top","left","marginLeft","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","monthViewMarkersArray","weekDates","currDate","Date","valueOf","obj","push","week_start","cells","$container","querySelectorAll","event_attribute","id","i","length","cloneNode","unitMarkersArray","sectionPropertyName","y_property","map_to","multisection","formatedSections","String","split","section_delimiter","map","element","elems","columnViewMarkersArray","eventNodes","eventNodeClone","getAttribute","forEach","cfg","attachEvent","mode","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","get_resulting_options","days","zones","options","type","getZones","ev","timespans","day_index","day_value","timespan_type","s","containers","_props","matrix","container","property","view","linker","_add_timespan_zones","_get_blocked_zones","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","resultZones","concat","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","dates","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","d","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","max","min","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","firstChild","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","undefined","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","unit","_get_unit_index","day_ind","unitsPerDay","floor","_date","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","callback","console","error","$stateProvider","registerProvider","batch_update","noRedraw","dp_mode","call_dp","_dp","updateMode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","render","setCurrentView","updateView","render_data","render_view_data","updateEvent","sendData","initPlugins","deletedEvent","copy","undo_deleted","new_event","message","text","expire","addEvent","limit","batchUpdate","uidSeed","isDate","getFullYear","getMonth","utils","mixin","source","force","f","object","result","isArray","pop","Function","prototype","toString","constructor","Number","Boolean","varType","Object","defined","delay","timeout","timer","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","extend","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","renderCalendar","navigation","handler","calendar","html_element","renderElement","renderer","rows","cols","value","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","body","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","$destroyed","a","b","newSize","triggerSchedulerResize","$root","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","EventHost","_silent_mode","listeners","_silentEnd","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","attachAll","name","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","addEventListener","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","detach","detachAll","staticArray","_eventRemoveAll","_createDomEventScope","_trim","str","trim","replace","_isDate","_isObject","getClassName","node","baseVal","locateCss","classname","strict","trg","srcElement","ind","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","hasHref","nodeName","loLowerCase","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","contains","getFocusableNodes","nodes","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","cspEnabled","useCsp","csp","checkIfCSPEnabled","init","month_short","month_full","old","setSeconds","setMilliseconds","setTime","getTime","time_part","getTimezoneOffset","shift","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","convert_to_utc","getSerializator","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_load_mode","lf","templates","load_format","cache_line","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","_after_call","_tagvalue","_init_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","load","setLoadMode","array","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_pos","_pointerDragId","acc","dnd","timeline","original_render","drag_id","getEvents","_sorder","_count","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","checkIfMaterialSkin","_build_skin_info","clearInterval","monitorIntervalId","setInterval","csstheme","setSkin","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","themeNameFromFile","_theme_info","theme","cssVarTheme","values","themeVariables","_configure","col","_skin_init","hour_scale","hour_date","_old_month_day","month_day","old_month_day","dhx_cal_today_button","tab","header","tabs","specialTabs","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","method","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","item","processedItem","prop","formatDate","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","hour","minute","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProviders","internal","provider","unregisterProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","nav_bar","_detachDomEvent","_init_once","scheduler_resize_listener","hasSchedulerMarkup","wai_aria_application_role","views","_grid","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","edit_save","edit_cancel","functor","scale_x","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","prepareValue","prepared","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","differenceInDays","_select_id","_close_not_saved","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","icon","def_step","dhx_cal_tab","deprecated_name","substring","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","base","duration","event_duration","time_step","start_hour","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","drag_event_body","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","hiddenWidth","c2","cc","hourScaleAttr","scroll_hour","now_date","n","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","lightbox","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","$initial","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_table","_pre_render_events_line","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","zIndex","color","setProperty","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","getLightboxRoot","cspEnvironment","salesforceEnvironment","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","listOfScales","some","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","clearEventMarkers","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","resolveAddress","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","equals","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","toOrdinal","date2","differencems","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","clone","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","IterResult","_result","before","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","l","Frequency","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","number","numberAsText","every","at","the","second","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","o","realCallback","delimiter","finalDelimiter","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","name_1","v","acceptNumber","expect","parseText","ttr","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","decodeNTH","MDAYs","decodeM","S","freqIsDailyOrGreater","fromText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","minutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","Days","parseIndividualNumber","optionKey","parts","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","all","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","rebuild","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","eastermask","g","yearStart","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","timeset","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","millisecondModulo","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","toText","isFullyConvertibleToText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","_b","parms","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rdateval","parm","createGetterSetter","fieldName","field","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","rule","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","hideTooltip","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderDay","calendarEvent","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","evs_dates","getRecDates","tevs","concurrent","checked_mode","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","year_y","cur_height","week_agenda_scale_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","EventHandler","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","renderMultiple","currentStart","currentEnd","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","setupMapView","createAdapter","unmodifiedEvent","_eventLocationChanged","map_settings","resolve_event_location","_latLngUpdate","addEventWithLocation","updateEventMarker","newIdEvent","removeEventMarker","addEventMarker","onEventClick","coordinates","map_view_provider","currentAdapter","resolve_user_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","dblclick_dhx_map_area","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","_selected_event_id","ariaButtonAttr","map_end","mapContainer","adapter","elem_id","marginRight","marginTop","destroy","initialize","geolocation","getCurrentPosition","coords","_updateEventLocation","_event_resolve_delay","ret","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_children","_mark_inputs","_ids","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","fitQIInsideWindow","quickInfoPopup","popupRect","offsetBottom","getPositionInsideScheduler","_$quickInfoHandler","eventElement","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","_quick_info_onscroll_handler","$testmode","_qi_button_click","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","clearMilliseconds","isSeries","recurring_event_id","old_add_event","groupExceptions","exceptions","original_start","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","ev_id","_ignore_call","tev","_pid_changed","_is_modified_occurence","idTimestamp","nid","nev","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","repeat_date","old_update_event","toIcalString","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","non_render","maxCount","seriesExceptions","utcStart","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","jsDaysToRRULEDays","RruleDayNumsToJs","formatDayNumber","repeat_monthly_date","repeat_monthly_weekday","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","dayNum","dayLabel","dateOfMonth","nthWeekDayOfMonth","dateOfYear","nthWeekDayOfYear","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getFirstSectionOfType","rec","_get_node","_outer_html","loc","_init_set_value","_ds","weekly","monthly","yearly","_rec_init_done","rf","blocked","rruleset","topOption","rruleObj","untilDate","customFreq","actual_dates","timeControl","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","outerHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","date_str","register_els","inps","change_current_view","set_end_rule","_get_repeat_code","get_rcode","str_date","transpose_type","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","_set_repeat_code","MouseEvent","elements","_toggle_block","_get_button","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","targetEventId","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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","x_google_ignoreList":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111]} \ No newline at end of file diff --git a/codebase/dhtmlxscheduler.js b/codebase/dhtmlxscheduler.js index 62985cd..837f9b9 100644 --- a/codebase/dhtmlxscheduler.js +++ b/codebase/dhtmlxscheduler.js @@ -1,7 +1,7 @@ (function(he,G){typeof exports=="object"&&typeof module<"u"?G(exports):typeof define=="function"&&define.amd?define(["exports"],G):G((he=typeof globalThis<"u"?globalThis:he||self).dhtmlxscheduler={})})(this,function(he){"use strict";const G=typeof window<"u"?window:global;function Nt(e){let i=[],t=!1,r=null,d=null;function n(){return e.config.drag_highlight&&e.markTimespan}function s(o){const l=e.getView(o);return l?l.layout:o}function _(o){const{event:l,layout:h,viewName:v,sectionId:u,eventNode:f}=o;(function(m,g){switch(g){case"month":m.style.top="",m.style.left="";break;case"timeline":m.style.left="",m.style.marginLeft="1px";break;default:m.style.top=""}})(f,h);const c={};let p={start_date:l.start_date,end_date:l.end_date,css:"dhx_scheduler_dnd_marker",html:f};return h!="timeline"&&h!="month"||(p={...p,end_date:e.date.add(l.start_date,1,"minute")}),u&&(c[v]=u,p.sections=c),p}function a(o){const{layout:l}=o;let h;switch(l){case"month":h=function(v){let u=[];const{event:f,layout:c,viewName:p,sectionId:m}=v,g=[];let y=new Date(f.start_date);for(;y.valueOf()String(b)),x=[];for(let b=0;b{i.push(e.markTimespan(v))})}e.attachEvent("onBeforeDrag",function(o,l,h){return n()&&(t=!0,d=e.getEvent(o),r=h.target.closest(`[${e.config.event_attribute}]`),s(e.getState().mode)=="units"&&e.config.cascade_event_display&&(e.unselect(o),r=h.target.closest(`[${e.config.event_attribute}]`))),!0}),e.attachEvent("onEventDrag",function(o,l,h){if(t&&n()){t=!1;const v=e.getState().mode,u=s(v),f=e.getActionData(h).section;d&&a({event:d,layout:u,viewName:v,sectionId:f,eventNode:r})}}),e.attachEvent("onDragEnd",function(o,l,h){for(let v=0;vl||n.end_date.getDate()!=o.getDate()?1440:e._get_zone_minutes(n.end_date),m=u[f],g=u[f+1];if(mc&&!(a=typeof _=="function"&&_(n,c,p,m,g)))break}}return!a},e.checkLimitViolation=function(n){if(!n||!e.config.check_limits)return!0;var s=e,_=s.config,a=[];if(n.rec_type&&n._end_date||n.rrule){const u=n._end_date||n.end_date;return!_.limit_start||!_.limit_end||u.valueOf()>=_.limit_start.valueOf()&&n.start_date.valueOf()<=_.limit_end.valueOf()}a=[n];for(var o=!0,l=0;l=_.limit_start.valueOf()&&v.end_date.valueOf()<=_.limit_end.valueOf())&&(h=!e.checkInMarkedTimespan(v,i,function(u,f,c,p,m){var g=!0;return f<=m&&f>=p&&((m==1440||c<=m)&&(g=!1),u._timed&&s._drag_id&&s._drag_mode=="new-size"?(u.start_date.setHours(0),u.start_date.setMinutes(m)):g=!1),(c>=p&&c<=m||fm)&&(u._timed&&s._drag_id&&s._drag_mode=="new-size"?(u.end_date.setHours(0),u.end_date.setMinutes(p)):g=!1),g})),h||(h=s.checkEvent("onLimitViolation")?s.callEvent("onLimitViolation",[v.id,v]):h),o=o&&h}return o||(s._drag_id=null,s._drag_mode=null),o},e._get_blocked_zones=function(n,s,_,a,o){var l=[];if(n&&n[s])for(var h=n[s],v=this._get_relevant_blocked_zones(_,a,h,o),u=0;uthis._min_date&&_.getHours()>=a.first_hour&&_.getHours()1?(v.size&&v.options.length&&(n=(v.position+n)/v.options.length*v.size),l=n,h=n+u):h=(l=0)+u;for(var f=[],c=l;cn.start_date||n.days!==void 0&&n.zones)&&!n.type)return s;n.zones=="fullday"&&(n.zones=[0,1440]),n.zones&&n.invert_zones&&(n.zones=e.invertZones(n.zones)),n.id=e.uid(),n.css=n.css||"",n.type=n.type||t;var h=n.sections;if(h){for(var v in h)if(h.hasOwnProperty(v)){var u=h[v];for(u instanceof Array||(u=[u]),o=0;og?e._get_zone_minutes(p):0,k=m>y||m.getDate()!=g.getDate()?1440:e._get_zone_minutes(m);x.zones=[b,k],s.push(x),g=y,y=e.date.add(y,1,"day")}else c.days instanceof Date&&(c.days=e.date.date_part(c.days).valueOf()),c.zones=n.zones.slice(),s.push(c)}return s},e._get_dates_by_index=function(n,s,_){var a=[];s=e.date.date_part(new Date(s||e._min_date)),_=new Date(_||e._max_date);for(var o=s.getDay(),l=n-o>=0?n-o:7-s.getDay()+n,h=e.date.add(s,l,"day");h<_;h=e.date.add(h,1,"week"))a.push(h);return a},e._get_css_classes_by_config=function(n){var s=[];return n.type==i&&(s.push(i),n.css&&s.push(i+"_reset")),s.push("dhx_marked_timespan",n.css),s.join(" ")},e._get_block_by_config=function(n){var s=document.createElement("div");return n.html&&(typeof n.html=="string"?s.innerHTML=n.html:s.appendChild(n.html)),s},e._render_marked_timespan=function(n,s,_){var a=[],o=e.config,l=this._min_date,h=this._max_date,v=!1;if(!o.display_marked_timespans)return a;if(!_&&_!==0){if(n.days<7)_=n.days;else{var u=new Date(n.days);if(v=+u,!(+h>+u&&+l<=+u))return a;_=u.getDay()}var f=l.getDay();f>_?_=7-(f-_):_-=f}var c=n.zones,p=e._get_css_classes_by_config(n);if(e._table_view&&e._mode=="month"){var m=[],g=[];if(s)m.push(s),g.push(_);else{g=v?[v]:e._get_dates_by_index(_);for(var y=0;y1?D=D*(w.size||w.options.length)+S:(D=S,w.size&&D>w.position+w.size&&(D=0))}for(s=s||e.locate_holder(D),y=0;y-1||(s.push.apply(s,e._on_scale_add_marker(h,a)),a=e.date.add(a,1,"day"))}}return s},e.markTimespan=function(n){if(!this._els)throw new Error("`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.");var s=!1;this._els.dhx_cal_data||(e.get_elements(),s=!0);var _=e._marked_timespans_ids,a=e._marked_timespans_types,o=e._marked_timespans;e.deleteMarkedTimespan(),e.addMarkedTimespan(n);var l=e._mark_timespans();return s&&(e._els=[]),e._marked_timespans_ids=_,e._marked_timespans_types=a,e._marked_timespans=o,l},e.unmarkTimespan=function(n){if(n)for(var s=0;sl&&u<=l||u=o)_[a]=Math.min(o,u),_[a+1]=Math.max(l,f),a-=2;else{if(!h)continue;var c=o>u?0:2;_.splice(a+c,0,u,f)}s.splice(v--,2);break}return _},e._subtract_timespan_zones=function(n,s){for(var _=n.slice(),a=0;a<_.length;a+=2)for(var o=_[a],l=_[a+1],h=0;ho&&v=v&&l<=u&&_.splice(a,2),ou&&_.splice(f?a+2:a,f?0:2,u,l),a-=2;break}}return _},e.invertZones=function(n){return e._subtract_timespan_zones([0,1440],n.slice())},e._delete_marked_timespan_by_id=function(n){var s=e._marked_timespans_ids[n];if(s){for(var _=0;_1){var p=Math.round((s-e._min_date)/864e5),m=u.size||f.length;s=e.date.add(e._min_date,Math.floor(p/m),"day"),s=e.date.date_part(s)}else s=e.date.date_part(new Date(this._date));if(_=s.getDay(),a=s.valueOf(),l[o]&&l[o][c.key]){var g=l[o][c.key],y=e._get_types_to_render(g[_],g[a]);h.push.apply(h,e._get_configs_to_render(y))}}var x=l.global;if(e.config.overwrite_marked_timespans){var b=x[a]||x[_];h.push.apply(h,e._get_configs_to_render(b))}else x[a]&&h.push.apply(h,e._get_configs_to_render(x[a])),x[_]&&h.push.apply(h,e._get_configs_to_render(x[_]));for(var k=0;k{c&&(v.setModeDate.date=c),p&&(v.setModeDate.mode=p)};var f={render:(c,p)=>{v.needRender=!0,u(c,p)},setCurrentView:(c,p)=>{v.needRender=!0,u(c,p)},updateView:(c,p)=>{v.needUpdateView=!0,u(c,p)},render_data:()=>v.needRender=!0,render_view_data:c=>{c&&c.length?c.forEach(p=>v.repaintEvents[p.id]=!0):v.needRender=!0}};if(n.call(this,f),t=!0,this.callEvent("onBeforeBatchUpdate",[]),_(a),this.callEvent("onAfterBatchUpdate",[]),s.call(this),t=!1,!o)if(v.needRender)e.render(v.setModeDate.date,v.setModeDate.mode);else if(v.needUpdateView)e.updateView(v.setModeDate.date,v.setModeDate.mode);else for(const c in v.repaintEvents)e.updateEvent(c);h&&(this._dp.setUpdateMode(l),this._dp.sendData())}}function At(e){(function(i){i.attachEvent("onEventDeleted",function(t,r){let d=i.copy(r);i.config.undo_deleted&&!i.getState().new_event&&i.message({text:`
Event deleted -
`,expire:1e4,type:"popup_after_delete",callback:function(n){n.target.closest(`[data-deleted-event-id="${r.id}"]`)&&(i.addEvent(d),i.render())}})})})(e),Nt(e),Mt(e),function(i){i.batchUpdate=Tt(i)}(e)}var Ct=Date.now();function Te(e){return!(!e||typeof e!="object")&&!!(e.getFullYear&&e.getMonth&&e.getDate)}const ee={uid:function(){return Ct++},mixin:function(e,i,t){for(var r in i)(e[r]===void 0||t)&&(e[r]=i[r]);return e},copy:function e(i){var t,r,d;if(i&&typeof i=="object")switch(!0){case Te(i):r=new Date(i);break;case(d=i,Array.isArray?Array.isArray(d):d&&d.length!==void 0&&d.pop&&d.push):for(r=new Array(i.length),t=0;t=0){if(!t)return r;var s=n===0||!(d.charAt(n-1)||"").trim(),_=n+i.length>=d.length||!d.charAt(n+i.length).trim();if(s&&_)return r}}r=r.parentNode}return null}function qt(e){var i=!1,t=!1;if(window.getComputedStyle){var r=window.getComputedStyle(e,null);i=r.display,t=r.visibility}else e.currentStyle&&(i=e.currentStyle.display,t=e.currentStyle.visibility);var d=!1,n=Ze({target:e},"dhx_form_repeat",!1);return n&&(d=n.style.height=="0px"),d=d||!e.offsetHeight,i!="none"&&t!="hidden"&&!d}function jt(e){return!isNaN(e.getAttribute("tabindex"))&&1*e.getAttribute("tabindex")>=0}function Pt(e){return!{a:!0,area:!0}[e.nodeName.loLowerCase()]||!!e.getAttribute("href")}function It(e){return!{input:!0,select:!0,textarea:!0,button:!0,object:!0}[e.nodeName.toLowerCase()]||!e.hasAttribute("disabled")}function Qe(){return document.head.createShadowRoot||document.head.attachShadow}function et(e){if(!e||!Qe())return document.body;for(;e.parentNode&&(e=e.parentNode);)if(e instanceof ShadowRoot)return e.host;return document.body}const se={getAbsoluteLeft:function(e){return this.getOffset(e).left},getAbsoluteTop:function(e){return this.getOffset(e).top},getOffsetSum:function(e){for(var i=0,t=0;e;)i+=parseInt(e.offsetTop),t+=parseInt(e.offsetLeft),e=e.offsetParent;return{top:i,left:t}},getOffsetRect:function(e){var i=e.getBoundingClientRect(),t=0,r=0;if(/Mobi/.test(navigator.userAgent)){var d=document.createElement("div");d.style.position="absolute",d.style.left="0px",d.style.top="0px",d.style.width="1px",d.style.height="1px",document.body.appendChild(d);var n=d.getBoundingClientRect();t=i.top-n.top,r=i.left-n.left,d.parentNode.removeChild(d)}else{var s=document.body,_=document.documentElement,a=window.pageYOffset||_.scrollTop||s.scrollTop,o=window.pageXOffset||_.scrollLeft||s.scrollLeft,l=_.clientTop||s.clientTop||0,h=_.clientLeft||s.clientLeft||0;t=i.top+a-l,r=i.left+o-h}return{top:Math.round(t),left:Math.round(r)}},getOffset:function(e){return e.getBoundingClientRect?this.getOffsetRect(e):this.getOffsetSum(e)},closest:function(e,i){return e&&i?Ce(e,i):null},insertAfter:function(e,i){i.nextSibling?i.parentNode.insertBefore(e,i.nextSibling):i.parentNode.appendChild(e)},remove:function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},isChildOf:function(e,i){return i.contains(e)},getFocusableNodes:function(e){for(var i=e.querySelectorAll(["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"].join(", ")),t=Array.prototype.slice.call(i,0),r=0;r=0||navigator.userAgent.indexOf("Trident")>=0),isOpera:de&&navigator.userAgent.indexOf("Opera")>=0,isChrome:de&&navigator.userAgent.indexOf("Chrome")>=0,isKHTML:de&&(navigator.userAgent.indexOf("Safari")>=0||navigator.userAgent.indexOf("Konqueror")>=0),isFF:de&&navigator.userAgent.indexOf("Firefox")>=0,isIPad:de&&navigator.userAgent.search(/iPad/gi)>=0,isEdge:de&&navigator.userAgent.indexOf("Edge")!=-1,isNode:!de||typeof navigator>"u"};function Oe(e){if(typeof e=="string"||typeof e=="number")return e;var i="";for(var t in e){var r="";e.hasOwnProperty(t)&&(r=t+"="+(r=typeof e[t]=="string"?encodeURIComponent(e[t]):typeof e[t]=="number"?e[t]:encodeURIComponent(JSON.stringify(e[t]))),i.length&&(r="&"+r),i+=r)}return i}function Ut(e){var i=function(n,s){for(var _="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",a=n.match(/%[a-zA-Z]/g),o=0;o50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":_+="set[3]=temp["+o+"]||0;";break;case"%i":_+="set[4]=temp["+o+"]||0;";break;case"%Y":_+="set[0]=temp["+o+"]||0;";break;case"%a":case"%A":_+="set[3]=set[3]%12+((temp["+o+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":_+="set[5]=temp["+o+"]||0;";break;case"%M":_+="set[1]=this.locale.date.month_short_hash[temp["+o+"]]||0;";break;case"%F":_+="set[1]=this.locale.date.month_full_hash[temp["+o+"]]||0;"}var l="set[0],set[1],set[2],set[3],set[4],set[5]";return s&&(l=" Date.UTC("+l+")"),new Function("date","var set=[0,0,1,0,0,0]; "+_+" return new Date("+l+");")},t=function(n,s){const _=n.match(/%[a-zA-Z]/g);return function(a){for(var o=[0,0,1,0,0,0],l=a.match(/[a-zA-Z]+|[0-9]+/g),h=0;h<_.length;h++)switch(_[h]){case"%j":case"%d":o[2]=l[h]||1;break;case"%n":case"%m":o[1]=(l[h]||1)-1;break;case"%y":o[0]=1*l[h]+(l[h]>50?1900:2e3);break;case"%g":case"%G":case"%h":case"%H":o[3]=l[h]||0;break;case"%i":o[4]=l[h]||0;break;case"%Y":o[0]=l[h]||0;break;case"%a":case"%A":o[3]=o[3]%12+((l[h]||"").toLowerCase()=="am"?0:12);break;case"%s":o[5]=l[h]||0;break;case"%M":o[1]=e.locale.date.month_short_hash[l[h]]||0;break;case"%F":o[1]=e.locale.date.month_full_hash[l[h]]||0}return s?new Date(Date.UTC(o[0],o[1],o[2],o[3],o[4],o[5])):new Date(o[0],o[1],o[2],o[3],o[4],o[5])}};let r;function d(){var n=!1;return e.config.csp==="auto"?(r===void 0&&(r=function(){try{new Function("cspEnabled = false;"),r=!1}catch{r=!0}return r}()),n=r):n=e.config.csp,n}e.date={init:function(){for(var n=e.locale.date.month_short,s=e.locale.date.month_short_hash={},_=0;_0){var a=(+_-+n)%864e5;if(a&&n.getTimezoneOffset()==_.getTimezoneOffset()){var o=a/36e5;_.setTime(_.getTime()+60*(24-o)*60*1e3)}}return s>=0&&!n.getHours()&&_.getHours()&&(_.getDate()11?"pm":"am":o.getHours()>11?"pm":"am";case"%A":return a?o.getUTCHours()>11?"PM":"AM":o.getHours()>11?"PM":"AM";case"%s":return a?e.date.to_fixed(o.getUTCSeconds()):e.date.to_fixed(o.getSeconds());case"%W":return a?e.date.to_fixed(e.date.getUTCISOWeek(o)):e.date.to_fixed(e.date.getISOWeek(o));default:return l}})}}(n,s):(n=n.replace(/%[a-zA-Z]/g,function(_){switch(_){case"%d":return'"+this.date.to_fixed(date.getDate())+"';case"%m":return'"+this.date.to_fixed((date.getMonth()+1))+"';case"%j":return'"+date.getDate()+"';case"%n":return'"+(date.getMonth()+1)+"';case"%y":return'"+this.date.to_fixed(date.getFullYear()%100)+"';case"%Y":return'"+date.getFullYear()+"';case"%D":return'"+this.locale.date.day_short[date.getDay()]+"';case"%l":return'"+this.locale.date.day_full[date.getDay()]+"';case"%M":return'"+this.locale.date.month_short[date.getMonth()]+"';case"%F":return'"+this.locale.date.month_full[date.getMonth()]+"';case"%h":return'"+this.date.to_fixed((date.getHours()+11)%12+1)+"';case"%g":return'"+((date.getHours()+11)%12+1)+"';case"%G":return'"+date.getHours()+"';case"%H":return'"+this.date.to_fixed(date.getHours())+"';case"%i":return'"+this.date.to_fixed(date.getMinutes())+"';case"%a":return'"+(date.getHours()>11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+this.date.to_fixed(date.getSeconds())+"';case"%W":return'"+this.date.to_fixed(this.date.getISOWeek(date))+"';default:return _}}),s&&(n=n.replace(/date\.get/g,"date.getUTC")),new Function("date",'return "'+n+'";').bind(e))},str_to_date:function(n,s,_){var a=d()?t:i,o=a(n,s),l=/^[0-9]{4}(\-|\/)[0-9]{2}(\-|\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/,h=/^[0-9]{2}\/[0-9]{2}\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/,v=/^[0-9]{2}\-[0-9]{2}\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/,u=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,f=a("%Y-%m-%d %H:%i:%s",s),c=a("%m/%d/%Y %H:%i:%s",s),p=a("%d-%m-%Y %H:%i:%s",s);return function(m){if(!_&&!e.config.parse_exact_format){if(m&&m.getISOWeek)return new Date(m);if(typeof m=="number")return new Date(m);if(g=m,l.test(String(g)))return f(m);if(function(y){return h.test(String(y))}(m))return c(m);if(function(y){return v.test(String(y))}(m))return p(m);if(function(y){return u.test(y)}(m))return new Date(m)}var g;return o.call(e,m)}},getISOWeek:function(n){if(!n)return!1;var s=(n=this.date_part(new Date(n))).getDay();s===0&&(s=7);var _=new Date(n.valueOf());_.setDate(n.getDate()+(4-s));var a=_.getFullYear(),o=Math.round((_.getTime()-new Date(a,0,1).getTime())/864e5);return 1+Math.floor(o/7)},getUTCISOWeek:function(n){return this.getISOWeek(this.convert_to_utc(n))},convert_to_utc:function(n){return new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds())}}}function tt(e){return(function(){var i={};for(var t in this._events){var r=this._events[t];r.id.toString().indexOf("#")==-1&&(i[r.id]=r)}return i}).bind(e)}function Vt(e){e._loaded={},e._load=function(t,r){if(t=t||this._load_url){var d;if(t+=(t.indexOf("?")==-1?"?":"&")+"timeshift="+new Date().getTimezoneOffset(),this.config.prevent_cache&&(t+="&uid="+this.uid()),r=r||this._date,this._load_mode){var n=this.templates.load_format;for(r=this.date[this._load_mode+"_start"](new Date(r.valueOf()));r>this._min_date;)r=this.date.add(r,-1,this._load_mode);d=r;for(var s=!0;dr&&this._loaded[n(_)]);if(d<=r)return!1;for(e.ajax.get(t+"&from="+n(r)+"&to="+n(d),a);r=400)&&(this.callEvent("onLoadError",[t.xmlDoc]),r=[]),this._process_loading(r),this.callEvent("onXLE",[]),this.callEvent("onParse",[])},e._process_loading=function(t){this._loading=!0,this._not_render=!0;for(var r=0;r1)&&(this.xy.scroll_width=0,this._mobile=!0),this.config.touch){var i=!0;try{document.createEvent("TouchEvent")}catch{i=!1}i?this._touch_events(["touchmove","touchstart","touchend"],function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:t.target,pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t},function(){return!1}):window.PointerEvent||window.navigator.pointerEnabled?this._touch_events(["pointermove","pointerdown","pointerup"],function(t){return t.pointerType=="mouse"?null:t},function(t){return!t||t.pointerType=="mouse"}):window.navigator.msPointerEnabled&&this._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t},function(t){return!t||t.pointerType==t.MSPOINTER_TYPE_MOUSE})}},e._touch_events=function(i,t,r){var d,n,s,_,a,o,l=0;function h(u,f,c){e.event(u,f,function(p){return!!e._is_lightbox_open()||(r(p)?void 0:c(p))},{passive:!1})}function v(u){r(u)||(e._hide_global_tip(),_&&(e._on_mouse_up(t(u)),e._temp_touch_block=!1),e._drag_id=null,e._drag_mode=null,e._drag_pos=null,e._pointerDragId=null,clearTimeout(s),_=o=!1,a=!0)}h(document.body,i[0],function(u){if(!r(u)){var f=t(u);if(f){if(_)return function(c){if(!r(c)){var p=e.getState().drag_mode,m=!!e.matrix&&e.matrix[e._mode],g=e.render_view_data;p=="create"&&m&&(e.render_view_data=function(){for(var y=e.getState().drag_id,x=e.getEvent(y),b=m.y_property,k=e.getEvents(x.start_date,x.end_date),E=0;E5||Math.abs(d.pageY-n.pageY)>5)&&(a=!0,clearTimeout(s)):a=!0)}}}),h(this._els.dhx_cal_data[0],"touchcancel",v),h(this._els.dhx_cal_data[0],"contextmenu",function(u){if(!r(u))return o?(u&&u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,!1):void 0}),h(this._obj,i[1],function(u){var f;if(document&&document.body&&document.body.classList.add("dhx_cal_touch_active"),!r(u))if(e._pointerDragId=u.pointerId,_=a=!1,o=!0,f=n=t(u)){var c=new Date;if(!a&&!_&&c-l<250)return e._click.dhx_cal_data(f),window.setTimeout(function(){e.$destroyed||e._on_dbl_click(f)},50),u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,e._block_next_stop=!0,!1;if(l=c,!a&&!_&&e.config.touch_drag){var p=e._locate_event(document.activeElement),m=e._locate_event(f.target),g=d?e._locate_event(d.target):null;if(p&&m&&p==m&&p!=g)return u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,e._ignore_next_click=!1,e._click.dhx_cal_data(f),d=f,!1;s=setTimeout(function(){if(!e.$destroyed){_=!0;var y=d.target,x=e._getClassName(y);y&&x.indexOf("dhx_body")!=-1&&(y=y.previousSibling),e._on_mouse_down(d,y),e._drag_mode&&e._drag_mode!="create"&&e.for_rendered(e._drag_id,function(b,k){b.style.display="none",e._rendered.splice(k,1)}),e.config.touch_tip&&e._show_global_tip(),e.updateEvent(e._drag_id)}},e.config.touch_drag),d=f}}else a=!0}),h(this._els.dhx_cal_data[0],i[2],function(u){if(document&&document.body&&document.body.classList.remove("dhx_cal_touch_active"),!r(u))return e.config.touch_swipe_dates&&!_&&function(f,c,p,m){if(!f||!c)return!1;for(var g=f.target;g&&g!=e._obj;)g=g.parentNode;if(g!=e._obj||e.matrix&&e.matrix[e.getState().mode]&&e.matrix[e.getState().mode].scrollable)return!1;var y=Math.abs(f.pageY-c.pageY),x=Math.abs(f.pageX-c.pageX);return yp&&(!y||x/y>3)&&(f.pageX>c.pageX?e._click.dhx_cal_next_button():e._click.dhx_cal_prev_button(),!0)}(d,n,200,100)&&(e._block_next_stop=!0),_&&(e._ignore_next_click=!0,setTimeout(function(){e._ignore_next_click=!1},100)),v(u),e._block_next_stop?(e._block_next_stop=!1,u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,!1):void 0}),e.event(document.body,i[2],v)},e._show_global_tip=function(){e._hide_global_tip();var i=e._global_tip=document.createElement("div");i.className="dhx_global_tip",e._update_global_tip(1),document.body.appendChild(i)},e._update_global_tip=function(i){var t=e._global_tip;if(t){var r="";if(e._drag_id&&!i){var d=e.getEvent(e._drag_id);d&&(r="
"+(d._timed?e.templates.event_header(d.start_date,d.end_date,d):e.templates.day_date(d.start_date,d.end_date,d))+"
")}e._drag_mode=="create"||e._drag_mode=="new-size"?t.innerHTML=(e.locale.labels.drag_to_create||"Drag to create")+r:t.innerHTML=(e.locale.labels.drag_to_move||"Drag to move")+r}},e._hide_global_tip=function(){var i=e._global_tip;i&&i.parentNode&&(i.parentNode.removeChild(i),e._global_tip=0)}}function Ft(e){var i,t;function r(){if(e._is_material_skin())return!0;if(t!==void 0)return t;var _=document.createElement("div");_.style.position="absolute",_.style.left="-9999px",_.style.top="-9999px",_.innerHTML="
",document.body.appendChild(_);var a=window.getComputedStyle(_.querySelector(".dhx_body")).getPropertyValue("box-sizing");document.body.removeChild(_),(t=a==="border-box")||setTimeout(function(){t=void 0},1e3)}function d(){if(!e._is_material_skin()&&!e._border_box_events()){var _=t;t=void 0,i=void 0,_!==r()&&e.$container&&e.getState().mode&&e.setCurrentView()}}function n(_){var a=_.getMinutes();return a=a<10?"0"+a:a,""+_.getHours()+" "+a+""}e._addThemeClass=function(){document.documentElement.setAttribute("data-scheduler-theme",e.skin)},e._skin_settings={fix_tab_position:[1,0],use_select_menu_space:[1,0],wide_form:[1,0],hour_size_px:[44,42],displayed_event_color:["#ff4a4a","ffc5ab"],displayed_event_text_color:["#ffef80","7e2727"]},e._skin_xy={lightbox_additional_height:[90,50],nav_height:[59,22],bar_height:[24,20]},e._is_material_skin=function(){return e.skin?(e.skin+"").indexOf("material")>-1:function(){if(i===void 0){var _=document.createElement("div");_.style.position="absolute",_.style.left="-9999px",_.style.top="-9999px",_.innerHTML="
",document.body.appendChild(_);var a=window.getComputedStyle(_.querySelector(".dhx_cal_scale_placeholder")).getPropertyValue("position");i=a==="absolute",setTimeout(function(){i=null,_&&_.parentNode&&_.parentNode.removeChild(_)},500)}return i}()},e._build_skin_info=function(){(function(){const u=e.$container;clearInterval(s),u&&(s=setInterval(()=>{const f=getComputedStyle(u).getPropertyValue("--dhx-scheduler-theme");f&&f!==e.skin&&e.setSkin(f)},100))})();const _=getComputedStyle(this.$container),a=_.getPropertyValue("--dhx-scheduler-theme");let o,l=!!a,h={},v=!1;if(l){o=a;for(let u in e.xy)h[u]=_.getPropertyValue(`--dhx-scheduler-xy-${u}`);h.hour_size_px=_.getPropertyValue("--dhx-scheduler-config-hour_size_px"),h.wide_form=_.getPropertyValue("--dhx-scheduler-config-form_wide")}else o=function(){for(var u=document.getElementsByTagName("link"),f=0;f{switch(o.getAttribute("data-tab")||o.getAttribute("name")){case"day":case"day_tab":o.classList.add("dhx_cal_tab_first"),o.classList.add("dhx_cal_tab_segmented");break;case"week":case"week_tab":o.classList.add("dhx_cal_tab_segmented");break;case"month":case"month_tab":o.classList.add("dhx_cal_tab_last"),o.classList.add("dhx_cal_tab_segmented");break;default:o.classList.add("dhx_cal_tab_standalone")}}),function(o){if(e.config.header)return;const l=Array.from(o.querySelectorAll(".dhx_cal_tab")),h=["day","week","month"].map(u=>l.find(f=>f.getAttribute("data-tab")===u)).filter(u=>u!==void 0);let v=l.length>0?l[0]:null;h.reverse().forEach(u=>{o.insertBefore(u,v),v=u})}(e._els.dhx_cal_navline[0]))},{once:!0})}}function Jt(e,i){this.$scheduler=e,this.$dp=i,this._dataProcessorHandlers=[],this.attach=function(){var t=this.$dp,r=this.$scheduler;this._dataProcessorHandlers.push(r.attachEvent("onEventAdded",function(d){!this._loading&&this._validId(d)&&t.setUpdated(d,!0,"inserted")})),this._dataProcessorHandlers.push(r.attachEvent("onConfirmedBeforeEventDelete",function(d){if(this._validId(d)){var n=t.getState(d);return n=="inserted"||this._new_event?(t.setUpdated(d,!1),!0):n!="deleted"&&(n=="true_deleted"||(t.setUpdated(d,!0,"deleted"),!1))}})),this._dataProcessorHandlers.push(r.attachEvent("onEventChanged",function(d){!this._loading&&this._validId(d)&&t.setUpdated(d,!0,"updated")})),this._dataProcessorHandlers.push(r.attachEvent("onClearAll",function(){t._in_progress={},t._invalid={},t.updatedRows=[],t._waitMode=0})),t.attachEvent("insertCallback",r._update_callback),t.attachEvent("updateCallback",r._update_callback),t.attachEvent("deleteCallback",function(d,n){r.getEvent(n)?(r.setUserData(n,this.action_param,"true_deleted"),r.deleteEvent(n)):r._add_rec_marker&&r._update_callback(d,n)})},this.detach=function(){for(var t in this._dataProcessorHandlers){var r=this._dataProcessorHandlers[t];this.$scheduler.detachEvent(r)}this._dataProcessorHandlers=[]}}function Le(e){return this.serverProcessor=e,this.action_param="!nativeeditor_status",this.object=null,this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._tMode="GET",this._headers=null,this._payload=null,this.post_delim="_",this._waitMode=0,this._in_progress={},this._invalid={},this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),Ae(this),this}function Wt(e){var i="data-dhxbox",t=null;function r(m,g){var y=m.callback;f.hide(m.box),t=m.box=null,y&&y(g)}function d(m){if(t){var g=m.which||m.keyCode,y=!1;if(c.keyboard){if(g==13||g==32){var x=m.target||m.srcElement;se.getClassName(x).indexOf("scheduler_popup_button")>-1&&x.click?x.click():(r(t,!0),y=!0)}g==27&&(r(t,!1),y=!0)}return y?(m.preventDefault&&m.preventDefault(),!(m.cancelBubble=!0)):void 0}}function n(m){n.cover||(n.cover=document.createElement("div"),e.event(n.cover,"keydown",d),n.cover.className="dhx_modal_cover",document.body.appendChild(n.cover)),n.cover.style.display=m?"inline-block":"none"}function s(m,g,y){var x=e._waiAria.messageButtonAttrString(m),b=(g||"").toLowerCase().replace(/ /g,"_");return`
${m}
`}function _(){for(var m=[].slice.apply(arguments,[0]),g=0;g'+E.title+"
"),M+='
'+(E.content?"":E.text)+'
',D&&(M+=s(_(E.ok,e.locale.labels.message_ok,"OK"),"ok",!0)),w&&(M+=s(_(E.cancel,e.locale.labels.message_cancel,"Cancel"),"cancel",!1)),E.buttons)for(var T=0;T",k.className="scheduler-info dhtmlx-info scheduler-"+b.type+" dhtmlx-"+b.type,e.event(k,"click",function(E){b.callback&&b.callback.call(this,E),c.hide(b.id),b=null}),e._waiAria.messageInfoAttr(k),c.position=="bottom"&&c.area.firstChild?c.area.insertBefore(k,c.area.firstChild):c.area.appendChild(k),b.expire>0&&(c.timers[b.id]=window.setTimeout(function(){c&&c.hide(b.id)},b.expire)),c.pull[b.id]=k,k=null,b.id}(m)}};c.seed=new Date().valueOf(),c.uid=ee.uid,c.expire=4e3,c.keyboard=!0,c.position="top",c.pull={},c.timers={},c.hideAll=function(){for(var m in c.pull)c.hide(m)},c.hide=function(m){var g=c.pull[m];g&&g.parentNode&&(window.setTimeout(function(){g.parentNode.removeChild(g),g=null},2e3),g.className+=" hidden",c.timers[m]&&window.clearTimeout(c.timers[m]),delete c.pull[m])};var p=[];return e.attachEvent("onMessagePopup",function(m){p.push(m)}),e.attachEvent("onAfterMessagePopup",function(m){for(var g=0;g{this.callEvent("onStateChange",[n,d])})}getState(){return{...this.state,mode:this.state.modes[this.state.currentModeIndex]}}setState(i){const t={...this.state};i.mode&&(i.currentModeIndex=this.state.modes.indexOf(i.mode)),this.state={...this.state,...i},this._notifyStateChange(t,this.state),this.container&&this.render(this.container)}onStateChange(i){return this.onStateChangeHandlers.push(i),()=>{const t=this.onStateChangeHandlers.indexOf(i);t!==-1&&this.onStateChangeHandlers.splice(t,1)}}_notifyStateChange(i,t){this.onStateChangeHandlers.forEach(r=>r(i,t))}_adjustDate(i){const{mode:t,date:r}=this.getState(),d=new Date(r);t==="days"?d.setMonth(r.getMonth()+i):t==="months"?d.setFullYear(r.getFullYear()+i):d.setFullYear(r.getFullYear()+10*i),this.setState({date:d})}_toggleMode(){const i=(this.state.currentModeIndex+1)%this.state.modes.length;this.setState({currentModeIndex:i})}_renderCalendarHeader(i){const{mode:t,date:r}=this.getState(),d=document.createElement("div");d.classList.add("dhx_cal_datepicker_header");const n=document.createElement("button");n.classList.add("dhx_cal_datepicker_arrow","scheduler_icon","arrow_left"),d.appendChild(n);const s=document.createElement("div");if(s.classList.add("dhx_cal_datepicker_title"),t==="days")s.innerText=r.toLocaleString("default",{month:"long"})+" "+r.getFullYear();else if(t==="months")s.innerText=r.getFullYear();else{const a=10*Math.floor(r.getFullYear()/10);s.innerText=`${a} - ${a+9}`}this._domEvents.attach(s,"click",this._toggleMode.bind(this)),d.appendChild(s);const _=document.createElement("button");_.classList.add("dhx_cal_datepicker_arrow","scheduler_icon","arrow_right"),d.appendChild(_),i.appendChild(d),this._domEvents.attach(n,"click",this._adjustDate.bind(this,-1)),this._domEvents.attach(_,"click",this._adjustDate.bind(this,1))}render(i){this._domEvents.detachAll(),this.container=i||this.container,this.container.innerHTML="",this.element||(this.element=document.createElement("div"),this.element.classList.add("dhx_cal_datepicker")),this.element.innerHTML="",this.container.appendChild(this.element),this._renderCalendarHeader(this.element);const t=document.createElement("div");t.classList.add("dhx_cal_datepicker_data"),this.element.appendChild(t);const{mode:r}=this.getState();r==="days"?this._renderDayGrid(t):r==="months"?this._renderMonthGrid(t):this._renderYearGrid(t)}_renderDayGridHeader(i){const{date:t}=this.getState(),r=this.scheduler;let d=r.date.week_start(new Date(t));const n=r.date.add(r.date.week_start(new Date(t)),1,"week");i.classList.add("dhx_cal_datepicker_days");const s=r.date.date_to_str("%D");for(;d.valueOf()(y[this.scheduler.date.day_start(new Date(x)).valueOf()]=!0,y),{}),o=document.createElement("div");this._renderDayGridHeader(o),i.appendChild(o);const l=this.scheduler,h=l.date.week_start(l.date.month_start(new Date(t))),v=l.date.month_start(new Date(t)),u=l.date.add(l.date.month_start(new Date(t)),1,"month");let f=l.date.add(l.date.month_start(new Date(t)),1,"month");const c=l.date.date_part(l._currentDate());f.getDay()!==0&&(f=l.date.add(l.date.week_start(f),1,"week"));let p=this._weeksBetween(h,f);n&&p{const x=y.target.closest("[data-cell-date]"),b=new Date(x.getAttribute("data-cell-date"));this.callEvent("onDateClick",[b,y])});m.valueOf()=u.valueOf()&&y.classList.add("dhx_after"),m.getDay()!==0&&m.getDay()!==6||y.classList.add("dhx_cal_datepicker_weekend"),m.valueOf()==c.valueOf()&&y.classList.add("dhx_now"),s&&_&&m.valueOf()>=s.valueOf()&&m.valueOf()<_.valueOf()&&y.classList.add("dhx_cal_datepicker_current"),a[m.valueOf()]&&y.classList.add("dhx_cal_datepicker_event"),y.classList.add("dhx_cal_datepicker_date"),g.appendChild(y),m=l.date.add(m,1,"day")}i.appendChild(g)}_renderMonthGrid(i){const{date:t}=this.getState(),r=document.createElement("div");r.classList.add("dhx_cal_datepicker_months");const d=[];for(let a=0;a<12;a++)d.push(new Date(t.getFullYear(),a,1));const n=this.scheduler.date.date_to_str("%M");d.forEach(a=>{const o=document.createElement("div");o.classList.add("dhx_cal_datepicker_month"),t.getMonth()===a.getMonth()&&o.classList.add("dhx_cal_datepicker_current"),o.setAttribute("data-month",a.getMonth()),o.innerHTML=n(a),this._domEvents.attach(o,"click",()=>{const l=new Date(a);this.setState({date:l,mode:"days"})}),r.appendChild(o)}),i.appendChild(r);const s=document.createElement("div");s.classList.add("dhx_cal_datepicker_done");const _=document.createElement("button");_.innerText="Done",_.classList.add("dhx_cal_datepicker_done_btn"),this._domEvents.attach(_,"click",()=>{this.setState({mode:"days"})}),s.appendChild(_),i.appendChild(s)}_renderYearGrid(i){const{date:t}=this.getState(),r=10*Math.floor(t.getFullYear()/10),d=document.createElement("div");d.classList.add("dhx_cal_datepicker_years");for(let _=r-1;_<=r+10;_++){const a=document.createElement("div");a.innerText=_,a.classList.add("dhx_cal_datepicker_year"),a.setAttribute("data-year",_),t.getFullYear()===_&&a.classList.add("dhx_cal_datepicker_current"),this._domEvents.attach(a,"click",()=>{this.setState({date:new Date(_,t.getMonth(),1),mode:"months"})}),d.appendChild(a)}i.appendChild(d);const n=document.createElement("div");n.classList.add("dhx_cal_datepicker_done");const s=document.createElement("button");s.innerText="Done",s.classList.add("dhx_cal_datepicker_done_btn"),this._domEvents.attach(s,"click",()=>{this.setState({mode:"months"})}),n.appendChild(s),i.appendChild(n)}destructor(){this.onStateChangeHandlers=[],this.element&&(this.element.innerHTML="",this.element.remove()),this._domEvents.detachAll(),this.callEvent("onDestroy",[]),this.detachAllEvents(),this.scheduler=null}}function Sa(e){const i={version:"7.1.0"};i.$stateProvider=function(){const a={};return{getState:function(o){if(a[o])return a[o].method();{const l={};for(const h in a)a[h].internal||ee.mixin(l,a[h].method(),!0);return l}},registerProvider:function(o,l,h){a[o]={method:l,internal:h}},unregisterProvider:function(o){delete a[o]}}}(),i.getState=i.$stateProvider.getState,function(a){var o={agenda:"https://docs.dhtmlx.com/scheduler/agenda_view.html",grid:"https://docs.dhtmlx.com/scheduler/grid_view.html",map:"https://docs.dhtmlx.com/scheduler/map_view.html",unit:"https://docs.dhtmlx.com/scheduler/units_view.html",timeline:"https://docs.dhtmlx.com/scheduler/timeline_view.html",week_agenda:"https://docs.dhtmlx.com/scheduler/weekagenda_view.html",year:"https://docs.dhtmlx.com/scheduler/year_view.html",anythingElse:"https://docs.dhtmlx.com/scheduler/views.html"},l={agenda:"ext/dhtmlxscheduler_agenda_view.js",grid:"ext/dhtmlxscheduler_grid_view.js",map:"ext/dhtmlxscheduler_map_view.js",unit:"ext/dhtmlxscheduler_units.js",timeline:"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js",week_agenda:"ext/dhtmlxscheduler_week_agenda.js",year:"ext/dhtmlxscheduler_year_view.js",limit:"ext/dhtmlxscheduler_limit.js"};a._commonErrorMessages={unknownView:function(h){var v=l[h]?"You're probably missing "+l[h]+".":"";return"`"+h+"` view is not defined. \nPlease check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \nRelated docs: "+(o[h]||o.anythingElse)+` +
`,expire:1e4,type:"popup_after_delete",callback:function(n){n.target.closest(`[data-deleted-event-id="${r.id}"]`)&&(i.addEvent(d),i.render())}})})})(e),Nt(e),Mt(e),function(i){i.batchUpdate=Tt(i)}(e)}var Ct=Date.now();function Te(e){return!(!e||typeof e!="object")&&!!(e.getFullYear&&e.getMonth&&e.getDate)}const ee={uid:function(){return Ct++},mixin:function(e,i,t){for(var r in i)(e[r]===void 0||t)&&(e[r]=i[r]);return e},copy:function e(i){var t,r,d;if(i&&typeof i=="object")switch(!0){case Te(i):r=new Date(i);break;case(d=i,Array.isArray?Array.isArray(d):d&&d.length!==void 0&&d.pop&&d.push):for(r=new Array(i.length),t=0;t=0){if(!t)return r;var s=n===0||!(d.charAt(n-1)||"").trim(),_=n+i.length>=d.length||!d.charAt(n+i.length).trim();if(s&&_)return r}}r=r.parentNode}return null}function qt(e){var i=!1,t=!1;if(window.getComputedStyle){var r=window.getComputedStyle(e,null);i=r.display,t=r.visibility}else e.currentStyle&&(i=e.currentStyle.display,t=e.currentStyle.visibility);var d=!1,n=Ze({target:e},"dhx_form_repeat",!1);return n&&(d=n.style.height=="0px"),d=d||!e.offsetHeight,i!="none"&&t!="hidden"&&!d}function jt(e){return!isNaN(e.getAttribute("tabindex"))&&1*e.getAttribute("tabindex")>=0}function It(e){return!{a:!0,area:!0}[e.nodeName.loLowerCase()]||!!e.getAttribute("href")}function Pt(e){return!{input:!0,select:!0,textarea:!0,button:!0,object:!0}[e.nodeName.toLowerCase()]||!e.hasAttribute("disabled")}function Qe(){return document.head.createShadowRoot||document.head.attachShadow}function et(e){if(!e||!Qe())return document.body;for(;e.parentNode&&(e=e.parentNode);)if(e instanceof ShadowRoot)return e.host;return document.body}const se={getAbsoluteLeft:function(e){return this.getOffset(e).left},getAbsoluteTop:function(e){return this.getOffset(e).top},getOffsetSum:function(e){for(var i=0,t=0;e;)i+=parseInt(e.offsetTop),t+=parseInt(e.offsetLeft),e=e.offsetParent;return{top:i,left:t}},getOffsetRect:function(e){var i=e.getBoundingClientRect(),t=0,r=0;if(/Mobi/.test(navigator.userAgent)){var d=document.createElement("div");d.style.position="absolute",d.style.left="0px",d.style.top="0px",d.style.width="1px",d.style.height="1px",document.body.appendChild(d);var n=d.getBoundingClientRect();t=i.top-n.top,r=i.left-n.left,d.parentNode.removeChild(d)}else{var s=document.body,_=document.documentElement,a=window.pageYOffset||_.scrollTop||s.scrollTop,o=window.pageXOffset||_.scrollLeft||s.scrollLeft,l=_.clientTop||s.clientTop||0,h=_.clientLeft||s.clientLeft||0;t=i.top+a-l,r=i.left+o-h}return{top:Math.round(t),left:Math.round(r)}},getOffset:function(e){return e.getBoundingClientRect?this.getOffsetRect(e):this.getOffsetSum(e)},closest:function(e,i){return e&&i?Ce(e,i):null},insertAfter:function(e,i){i.nextSibling?i.parentNode.insertBefore(e,i.nextSibling):i.parentNode.appendChild(e)},remove:function(e){e&&e.parentNode&&e.parentNode.removeChild(e)},isChildOf:function(e,i){return i.contains(e)},getFocusableNodes:function(e){for(var i=e.querySelectorAll(["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"].join(", ")),t=Array.prototype.slice.call(i,0),r=0;r=0||navigator.userAgent.indexOf("Trident")>=0),isOpera:de&&navigator.userAgent.indexOf("Opera")>=0,isChrome:de&&navigator.userAgent.indexOf("Chrome")>=0,isKHTML:de&&(navigator.userAgent.indexOf("Safari")>=0||navigator.userAgent.indexOf("Konqueror")>=0),isFF:de&&navigator.userAgent.indexOf("Firefox")>=0,isIPad:de&&navigator.userAgent.search(/iPad/gi)>=0,isEdge:de&&navigator.userAgent.indexOf("Edge")!=-1,isNode:!de||typeof navigator>"u"};function Oe(e){if(typeof e=="string"||typeof e=="number")return e;var i="";for(var t in e){var r="";e.hasOwnProperty(t)&&(r=t+"="+(r=typeof e[t]=="string"?encodeURIComponent(e[t]):typeof e[t]=="number"?e[t]:encodeURIComponent(JSON.stringify(e[t]))),i.length&&(r="&"+r),i+=r)}return i}function Ut(e){var i=function(n,s){for(var _="var temp=date.match(/[a-zA-Z]+|[0-9]+/g);",a=n.match(/%[a-zA-Z]/g),o=0;o50?1900:2000);";break;case"%g":case"%G":case"%h":case"%H":_+="set[3]=temp["+o+"]||0;";break;case"%i":_+="set[4]=temp["+o+"]||0;";break;case"%Y":_+="set[0]=temp["+o+"]||0;";break;case"%a":case"%A":_+="set[3]=set[3]%12+((temp["+o+"]||'').toLowerCase()=='am'?0:12);";break;case"%s":_+="set[5]=temp["+o+"]||0;";break;case"%M":_+="set[1]=this.locale.date.month_short_hash[temp["+o+"]]||0;";break;case"%F":_+="set[1]=this.locale.date.month_full_hash[temp["+o+"]]||0;"}var l="set[0],set[1],set[2],set[3],set[4],set[5]";return s&&(l=" Date.UTC("+l+")"),new Function("date","var set=[0,0,1,0,0,0]; "+_+" return new Date("+l+");")},t=function(n,s){const _=n.match(/%[a-zA-Z]/g);return function(a){for(var o=[0,0,1,0,0,0],l=a.match(/[a-zA-Z]+|[0-9]+/g),h=0;h<_.length;h++)switch(_[h]){case"%j":case"%d":o[2]=l[h]||1;break;case"%n":case"%m":o[1]=(l[h]||1)-1;break;case"%y":o[0]=1*l[h]+(l[h]>50?1900:2e3);break;case"%g":case"%G":case"%h":case"%H":o[3]=l[h]||0;break;case"%i":o[4]=l[h]||0;break;case"%Y":o[0]=l[h]||0;break;case"%a":case"%A":o[3]=o[3]%12+((l[h]||"").toLowerCase()=="am"?0:12);break;case"%s":o[5]=l[h]||0;break;case"%M":o[1]=e.locale.date.month_short_hash[l[h]]||0;break;case"%F":o[1]=e.locale.date.month_full_hash[l[h]]||0}return s?new Date(Date.UTC(o[0],o[1],o[2],o[3],o[4],o[5])):new Date(o[0],o[1],o[2],o[3],o[4],o[5])}};let r;function d(){var n=!1;return e.config.csp==="auto"?(r===void 0&&(r=function(){try{new Function("cspEnabled = false;"),r=!1}catch{r=!0}return r}()),n=r):n=e.config.csp,n}e.date={init:function(){for(var n=e.locale.date.month_short,s=e.locale.date.month_short_hash={},_=0;_0){var a=(+_-+n)%864e5;if(a&&n.getTimezoneOffset()==_.getTimezoneOffset()){var o=a/36e5;_.setTime(_.getTime()+60*(24-o)*60*1e3)}}return s>=0&&!n.getHours()&&_.getHours()&&(_.getDate()11?"pm":"am":o.getHours()>11?"pm":"am";case"%A":return a?o.getUTCHours()>11?"PM":"AM":o.getHours()>11?"PM":"AM";case"%s":return a?e.date.to_fixed(o.getUTCSeconds()):e.date.to_fixed(o.getSeconds());case"%W":return a?e.date.to_fixed(e.date.getUTCISOWeek(o)):e.date.to_fixed(e.date.getISOWeek(o));default:return l}})}}(n,s):(n=n.replace(/%[a-zA-Z]/g,function(_){switch(_){case"%d":return'"+this.date.to_fixed(date.getDate())+"';case"%m":return'"+this.date.to_fixed((date.getMonth()+1))+"';case"%j":return'"+date.getDate()+"';case"%n":return'"+(date.getMonth()+1)+"';case"%y":return'"+this.date.to_fixed(date.getFullYear()%100)+"';case"%Y":return'"+date.getFullYear()+"';case"%D":return'"+this.locale.date.day_short[date.getDay()]+"';case"%l":return'"+this.locale.date.day_full[date.getDay()]+"';case"%M":return'"+this.locale.date.month_short[date.getMonth()]+"';case"%F":return'"+this.locale.date.month_full[date.getMonth()]+"';case"%h":return'"+this.date.to_fixed((date.getHours()+11)%12+1)+"';case"%g":return'"+((date.getHours()+11)%12+1)+"';case"%G":return'"+date.getHours()+"';case"%H":return'"+this.date.to_fixed(date.getHours())+"';case"%i":return'"+this.date.to_fixed(date.getMinutes())+"';case"%a":return'"+(date.getHours()>11?"pm":"am")+"';case"%A":return'"+(date.getHours()>11?"PM":"AM")+"';case"%s":return'"+this.date.to_fixed(date.getSeconds())+"';case"%W":return'"+this.date.to_fixed(this.date.getISOWeek(date))+"';default:return _}}),s&&(n=n.replace(/date\.get/g,"date.getUTC")),new Function("date",'return "'+n+'";').bind(e))},str_to_date:function(n,s,_){var a=d()?t:i,o=a(n,s),l=/^[0-9]{4}(\-|\/)[0-9]{2}(\-|\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/,h=/^[0-9]{2}\/[0-9]{2}\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/,v=/^[0-9]{2}\-[0-9]{2}\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/,u=/^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-3])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,f=a("%Y-%m-%d %H:%i:%s",s),c=a("%m/%d/%Y %H:%i:%s",s),p=a("%d-%m-%Y %H:%i:%s",s);return function(m){if(!_&&!e.config.parse_exact_format){if(m&&m.getISOWeek)return new Date(m);if(typeof m=="number")return new Date(m);if(g=m,l.test(String(g)))return f(m);if(function(y){return h.test(String(y))}(m))return c(m);if(function(y){return v.test(String(y))}(m))return p(m);if(function(y){return u.test(y)}(m))return new Date(m)}var g;return o.call(e,m)}},getISOWeek:function(n){if(!n)return!1;var s=(n=this.date_part(new Date(n))).getDay();s===0&&(s=7);var _=new Date(n.valueOf());_.setDate(n.getDate()+(4-s));var a=_.getFullYear(),o=Math.round((_.getTime()-new Date(a,0,1).getTime())/864e5);return 1+Math.floor(o/7)},getUTCISOWeek:function(n){return this.getISOWeek(this.convert_to_utc(n))},convert_to_utc:function(n){return new Date(n.getUTCFullYear(),n.getUTCMonth(),n.getUTCDate(),n.getUTCHours(),n.getUTCMinutes(),n.getUTCSeconds())}}}function tt(e){return(function(){var i={};for(var t in this._events){var r=this._events[t];r.id.toString().indexOf("#")==-1&&(i[r.id]=r)}return i}).bind(e)}function Vt(e){e._loaded={},e._load=function(t,r){if(t=t||this._load_url){var d;if(t+=(t.indexOf("?")==-1?"?":"&")+"timeshift="+new Date().getTimezoneOffset(),this.config.prevent_cache&&(t+="&uid="+this.uid()),r=r||this._date,this._load_mode){var n=this.templates.load_format;for(r=this.date[this._load_mode+"_start"](new Date(r.valueOf()));r>this._min_date;)r=this.date.add(r,-1,this._load_mode);d=r;for(var s=!0;dr&&this._loaded[n(_)]);if(d<=r)return!1;for(e.ajax.get(t+"&from="+n(r)+"&to="+n(d),a);r=400)&&(this.callEvent("onLoadError",[t.xmlDoc]),r=[]),this._process_loading(r),this.callEvent("onXLE",[]),this.callEvent("onParse",[])},e._process_loading=function(t){this._loading=!0,this._not_render=!0;for(var r=0;r1)&&(this.xy.scroll_width=0,this._mobile=!0),this.config.touch){var i=!0;try{document.createEvent("TouchEvent")}catch{i=!1}i?this._touch_events(["touchmove","touchstart","touchend"],function(t){return t.touches&&t.touches.length>1?null:t.touches[0]?{target:t.target,pageX:t.touches[0].pageX,pageY:t.touches[0].pageY,clientX:t.touches[0].clientX,clientY:t.touches[0].clientY}:t},function(){return!1}):window.PointerEvent||window.navigator.pointerEnabled?this._touch_events(["pointermove","pointerdown","pointerup"],function(t){return t.pointerType=="mouse"?null:t},function(t){return!t||t.pointerType=="mouse"}):window.navigator.msPointerEnabled&&this._touch_events(["MSPointerMove","MSPointerDown","MSPointerUp"],function(t){return t.pointerType==t.MSPOINTER_TYPE_MOUSE?null:t},function(t){return!t||t.pointerType==t.MSPOINTER_TYPE_MOUSE})}},e._touch_events=function(i,t,r){var d,n,s,_,a,o,l=0;function h(u,f,c){e.event(u,f,function(p){return!!e._is_lightbox_open()||(r(p)?void 0:c(p))},{passive:!1})}function v(u){r(u)||(e._hide_global_tip(),_&&(e._on_mouse_up(t(u)),e._temp_touch_block=!1),e._drag_id=null,e._drag_mode=null,e._drag_pos=null,e._pointerDragId=null,clearTimeout(s),_=o=!1,a=!0)}h(document.body,i[0],function(u){if(!r(u)){var f=t(u);if(f){if(_)return function(c){if(!r(c)){var p=e.getState().drag_mode,m=!!e.matrix&&e.matrix[e._mode],g=e.render_view_data;p=="create"&&m&&(e.render_view_data=function(){for(var y=e.getState().drag_id,x=e.getEvent(y),b=m.y_property,k=e.getEvents(x.start_date,x.end_date),E=0;E5||Math.abs(d.pageY-n.pageY)>5)&&(a=!0,clearTimeout(s)):a=!0)}}}),h(this._els.dhx_cal_data[0],"touchcancel",v),h(this._els.dhx_cal_data[0],"contextmenu",function(u){if(!r(u))return o?(u&&u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,!1):void 0}),h(this._obj,i[1],function(u){var f;if(document&&document.body&&document.body.classList.add("dhx_cal_touch_active"),!r(u))if(e._pointerDragId=u.pointerId,_=a=!1,o=!0,f=n=t(u)){var c=new Date;if(!a&&!_&&c-l<250)return e._click.dhx_cal_data(f),window.setTimeout(function(){e.$destroyed||e._on_dbl_click(f)},50),u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,e._block_next_stop=!0,!1;if(l=c,!a&&!_&&e.config.touch_drag){var p=e._locate_event(document.activeElement),m=e._locate_event(f.target),g=d?e._locate_event(d.target):null;if(p&&m&&p==m&&p!=g)return u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,e._ignore_next_click=!1,e._click.dhx_cal_data(f),d=f,!1;s=setTimeout(function(){if(!e.$destroyed){_=!0;var y=d.target,x=e._getClassName(y);y&&x.indexOf("dhx_body")!=-1&&(y=y.previousSibling),e._on_mouse_down(d,y),e._drag_mode&&e._drag_mode!="create"&&e.for_rendered(e._drag_id,function(b,k){b.style.display="none",e._rendered.splice(k,1)}),e.config.touch_tip&&e._show_global_tip(),e.updateEvent(e._drag_id)}},e.config.touch_drag),d=f}}else a=!0}),h(this._els.dhx_cal_data[0],i[2],function(u){if(document&&document.body&&document.body.classList.remove("dhx_cal_touch_active"),!r(u))return e.config.touch_swipe_dates&&!_&&function(f,c,p,m){if(!f||!c)return!1;for(var g=f.target;g&&g!=e._obj;)g=g.parentNode;if(g!=e._obj||e.matrix&&e.matrix[e.getState().mode]&&e.matrix[e.getState().mode].scrollable)return!1;var y=Math.abs(f.pageY-c.pageY),x=Math.abs(f.pageX-c.pageX);return yp&&(!y||x/y>3)&&(f.pageX>c.pageX?e._click.dhx_cal_next_button():e._click.dhx_cal_prev_button(),!0)}(d,n,200,100)&&(e._block_next_stop=!0),_&&(e._ignore_next_click=!0,setTimeout(function(){e._ignore_next_click=!1},100)),v(u),e._block_next_stop?(e._block_next_stop=!1,u.preventDefault&&u.preventDefault(),u.cancelBubble=!0,!1):void 0}),e.event(document.body,i[2],v)},e._show_global_tip=function(){e._hide_global_tip();var i=e._global_tip=document.createElement("div");i.className="dhx_global_tip",e._update_global_tip(1),document.body.appendChild(i)},e._update_global_tip=function(i){var t=e._global_tip;if(t){var r="";if(e._drag_id&&!i){var d=e.getEvent(e._drag_id);d&&(r="
"+(d._timed?e.templates.event_header(d.start_date,d.end_date,d):e.templates.day_date(d.start_date,d.end_date,d))+"
")}e._drag_mode=="create"||e._drag_mode=="new-size"?t.innerHTML=(e.locale.labels.drag_to_create||"Drag to create")+r:t.innerHTML=(e.locale.labels.drag_to_move||"Drag to move")+r}},e._hide_global_tip=function(){var i=e._global_tip;i&&i.parentNode&&(i.parentNode.removeChild(i),e._global_tip=0)}}function Ft(e){var i,t;function r(){if(e._is_material_skin())return!0;if(t!==void 0)return t;var _=document.createElement("div");_.style.position="absolute",_.style.left="-9999px",_.style.top="-9999px",_.innerHTML="
",document.body.appendChild(_);var a=window.getComputedStyle(_.querySelector(".dhx_body")).getPropertyValue("box-sizing");document.body.removeChild(_),(t=a==="border-box")||setTimeout(function(){t=void 0},1e3)}function d(){if(!e._is_material_skin()&&!e._border_box_events()){var _=t;t=void 0,i=void 0,_!==r()&&e.$container&&e.getState().mode&&e.setCurrentView()}}function n(_){var a=_.getMinutes();return a=a<10?"0"+a:a,""+_.getHours()+" "+a+""}e._addThemeClass=function(){document.documentElement.setAttribute("data-scheduler-theme",e.skin)},e._skin_settings={fix_tab_position:[1,0],use_select_menu_space:[1,0],wide_form:[1,0],hour_size_px:[44,42],displayed_event_color:["#ff4a4a","ffc5ab"],displayed_event_text_color:["#ffef80","7e2727"]},e._skin_xy={lightbox_additional_height:[90,50],nav_height:[59,22],bar_height:[24,20]},e._is_material_skin=function(){return e.skin?(e.skin+"").indexOf("material")>-1:function(){if(i===void 0){var _=document.createElement("div");_.style.position="absolute",_.style.left="-9999px",_.style.top="-9999px",_.innerHTML="
",document.body.appendChild(_);var a=window.getComputedStyle(_.querySelector(".dhx_cal_scale_placeholder")).getPropertyValue("position");i=a==="absolute",setTimeout(function(){i=null,_&&_.parentNode&&_.parentNode.removeChild(_)},500)}return i}()},e._build_skin_info=function(){(function(){const u=e.$container;clearInterval(s),u&&(s=setInterval(()=>{const f=getComputedStyle(u).getPropertyValue("--dhx-scheduler-theme");f&&f!==e.skin&&e.setSkin(f)},100))})();const _=getComputedStyle(this.$container),a=_.getPropertyValue("--dhx-scheduler-theme");let o,l=!!a,h={},v=!1;if(l){o=a;for(let u in e.xy)h[u]=_.getPropertyValue(`--dhx-scheduler-xy-${u}`);h.hour_size_px=_.getPropertyValue("--dhx-scheduler-config-hour_size_px"),h.wide_form=_.getPropertyValue("--dhx-scheduler-config-form_wide")}else o=function(){for(var u=document.getElementsByTagName("link"),f=0;f{switch(o.getAttribute("data-tab")||o.getAttribute("name")){case"day":case"day_tab":o.classList.add("dhx_cal_tab_first"),o.classList.add("dhx_cal_tab_segmented");break;case"week":case"week_tab":o.classList.add("dhx_cal_tab_segmented");break;case"month":case"month_tab":o.classList.add("dhx_cal_tab_last"),o.classList.add("dhx_cal_tab_segmented");break;default:o.classList.add("dhx_cal_tab_standalone")}}),function(o){if(e.config.header)return;const l=Array.from(o.querySelectorAll(".dhx_cal_tab")),h=["day","week","month"].map(u=>l.find(f=>f.getAttribute("data-tab")===u)).filter(u=>u!==void 0);let v=l.length>0?l[0]:null;h.reverse().forEach(u=>{o.insertBefore(u,v),v=u})}(e._els.dhx_cal_navline[0]))},{once:!0})}}function Jt(e,i){this.$scheduler=e,this.$dp=i,this._dataProcessorHandlers=[],this.attach=function(){var t=this.$dp,r=this.$scheduler;this._dataProcessorHandlers.push(r.attachEvent("onEventAdded",function(d){!this._loading&&this._validId(d)&&t.setUpdated(d,!0,"inserted")})),this._dataProcessorHandlers.push(r.attachEvent("onConfirmedBeforeEventDelete",function(d){if(this._validId(d)){var n=t.getState(d);return n=="inserted"||this._new_event?(t.setUpdated(d,!1),!0):n!="deleted"&&(n=="true_deleted"||(t.setUpdated(d,!0,"deleted"),!1))}})),this._dataProcessorHandlers.push(r.attachEvent("onEventChanged",function(d){!this._loading&&this._validId(d)&&t.setUpdated(d,!0,"updated")})),this._dataProcessorHandlers.push(r.attachEvent("onClearAll",function(){t._in_progress={},t._invalid={},t.updatedRows=[],t._waitMode=0})),t.attachEvent("insertCallback",r._update_callback),t.attachEvent("updateCallback",r._update_callback),t.attachEvent("deleteCallback",function(d,n){r.getEvent(n)?(r.setUserData(n,this.action_param,"true_deleted"),r.deleteEvent(n)):r._add_rec_marker&&r._update_callback(d,n)})},this.detach=function(){for(var t in this._dataProcessorHandlers){var r=this._dataProcessorHandlers[t];this.$scheduler.detachEvent(r)}this._dataProcessorHandlers=[]}}function Le(e){return this.serverProcessor=e,this.action_param="!nativeeditor_status",this.object=null,this.updatedRows=[],this.autoUpdate=!0,this.updateMode="cell",this._tMode="GET",this._headers=null,this._payload=null,this.post_delim="_",this._waitMode=0,this._in_progress={},this._invalid={},this.messages=[],this.styles={updated:"font-weight:bold;",inserted:"font-weight:bold;",deleted:"text-decoration : line-through;",invalid:"background-color:FFE0E0;",invalid_cell:"border-bottom:2px solid red;",error:"color:red;",clear:"font-weight:normal;text-decoration:none;"},this.enableUTFencoding(!0),Ae(this),this}function Wt(e){var i="data-dhxbox",t=null;function r(m,g){var y=m.callback;f.hide(m.box),t=m.box=null,y&&y(g)}function d(m){if(t){var g=m.which||m.keyCode,y=!1;if(c.keyboard){if(g==13||g==32){var x=m.target||m.srcElement;se.getClassName(x).indexOf("scheduler_popup_button")>-1&&x.click?x.click():(r(t,!0),y=!0)}g==27&&(r(t,!1),y=!0)}return y?(m.preventDefault&&m.preventDefault(),!(m.cancelBubble=!0)):void 0}}function n(m){n.cover||(n.cover=document.createElement("div"),e.event(n.cover,"keydown",d),n.cover.className="dhx_modal_cover",document.body.appendChild(n.cover)),n.cover.style.display=m?"inline-block":"none"}function s(m,g,y){var x=e._waiAria.messageButtonAttrString(m),b=(g||"").toLowerCase().replace(/ /g,"_");return`
${m}
`}function _(){for(var m=[].slice.apply(arguments,[0]),g=0;g'+E.title+"
"),M+='
'+(E.content?"":E.text)+'
',D&&(M+=s(_(E.ok,e.locale.labels.message_ok,"OK"),"ok",!0)),w&&(M+=s(_(E.cancel,e.locale.labels.message_cancel,"Cancel"),"cancel",!1)),E.buttons)for(var T=0;T",k.className="scheduler-info dhtmlx-info scheduler-"+b.type+" dhtmlx-"+b.type,e.event(k,"click",function(E){b.callback&&b.callback.call(this,E),c.hide(b.id),b=null}),e._waiAria.messageInfoAttr(k),c.position=="bottom"&&c.area.firstChild?c.area.insertBefore(k,c.area.firstChild):c.area.appendChild(k),b.expire>0&&(c.timers[b.id]=window.setTimeout(function(){c&&c.hide(b.id)},b.expire)),c.pull[b.id]=k,k=null,b.id}(m)}};c.seed=new Date().valueOf(),c.uid=ee.uid,c.expire=4e3,c.keyboard=!0,c.position="top",c.pull={},c.timers={},c.hideAll=function(){for(var m in c.pull)c.hide(m)},c.hide=function(m){var g=c.pull[m];g&&g.parentNode&&(window.setTimeout(function(){g.parentNode.removeChild(g),g=null},2e3),g.className+=" hidden",c.timers[m]&&window.clearTimeout(c.timers[m]),delete c.pull[m])};var p=[];return e.attachEvent("onMessagePopup",function(m){p.push(m)}),e.attachEvent("onAfterMessagePopup",function(m){for(var g=0;g{this.callEvent("onStateChange",[n,d])})}getState(){return{...this.state,mode:this.state.modes[this.state.currentModeIndex]}}setState(i){const t={...this.state};i.mode&&(i.currentModeIndex=this.state.modes.indexOf(i.mode)),this.state={...this.state,...i},this._notifyStateChange(t,this.state),this.container&&this.render(this.container)}onStateChange(i){return this.onStateChangeHandlers.push(i),()=>{const t=this.onStateChangeHandlers.indexOf(i);t!==-1&&this.onStateChangeHandlers.splice(t,1)}}_notifyStateChange(i,t){this.onStateChangeHandlers.forEach(r=>r(i,t))}_adjustDate(i){const{mode:t,date:r}=this.getState(),d=new Date(r);t==="days"?d.setMonth(r.getMonth()+i):t==="months"?d.setFullYear(r.getFullYear()+i):d.setFullYear(r.getFullYear()+10*i),this.setState({date:d})}_toggleMode(){const i=(this.state.currentModeIndex+1)%this.state.modes.length;this.setState({currentModeIndex:i})}_renderCalendarHeader(i){const{mode:t,date:r}=this.getState(),d=document.createElement("div");d.classList.add("dhx_cal_datepicker_header");const n=document.createElement("button");n.classList.add("dhx_cal_datepicker_arrow","scheduler_icon","arrow_left"),d.appendChild(n);const s=document.createElement("div");if(s.classList.add("dhx_cal_datepicker_title"),t==="days")s.innerText=r.toLocaleString("default",{month:"long"})+" "+r.getFullYear();else if(t==="months")s.innerText=r.getFullYear();else{const a=10*Math.floor(r.getFullYear()/10);s.innerText=`${a} - ${a+9}`}this._domEvents.attach(s,"click",this._toggleMode.bind(this)),d.appendChild(s);const _=document.createElement("button");_.classList.add("dhx_cal_datepicker_arrow","scheduler_icon","arrow_right"),d.appendChild(_),i.appendChild(d),this._domEvents.attach(n,"click",this._adjustDate.bind(this,-1)),this._domEvents.attach(_,"click",this._adjustDate.bind(this,1))}render(i){this._domEvents.detachAll(),this.container=i||this.container,this.container.innerHTML="",this.element||(this.element=document.createElement("div"),this.element.classList.add("dhx_cal_datepicker")),this.element.innerHTML="",this.container.appendChild(this.element),this._renderCalendarHeader(this.element);const t=document.createElement("div");t.classList.add("dhx_cal_datepicker_data"),this.element.appendChild(t);const{mode:r}=this.getState();r==="days"?this._renderDayGrid(t):r==="months"?this._renderMonthGrid(t):this._renderYearGrid(t)}_renderDayGridHeader(i){const{date:t}=this.getState(),r=this.scheduler;let d=r.date.week_start(new Date(t));const n=r.date.add(r.date.week_start(new Date(t)),1,"week");i.classList.add("dhx_cal_datepicker_days");const s=r.date.date_to_str("%D");for(;d.valueOf()(y[this.scheduler.date.day_start(new Date(x)).valueOf()]=!0,y),{}),o=document.createElement("div");this._renderDayGridHeader(o),i.appendChild(o);const l=this.scheduler,h=l.date.week_start(l.date.month_start(new Date(t))),v=l.date.month_start(new Date(t)),u=l.date.add(l.date.month_start(new Date(t)),1,"month");let f=l.date.add(l.date.month_start(new Date(t)),1,"month");const c=l.date.date_part(l._currentDate());f.getDay()!==0&&(f=l.date.add(l.date.week_start(f),1,"week"));let p=this._weeksBetween(h,f);n&&p{const x=y.target.closest("[data-cell-date]"),b=new Date(x.getAttribute("data-cell-date"));this.callEvent("onDateClick",[b,y])});m.valueOf()=u.valueOf()&&y.classList.add("dhx_after"),m.getDay()!==0&&m.getDay()!==6||y.classList.add("dhx_cal_datepicker_weekend"),m.valueOf()==c.valueOf()&&y.classList.add("dhx_now"),s&&_&&m.valueOf()>=s.valueOf()&&m.valueOf()<_.valueOf()&&y.classList.add("dhx_cal_datepicker_current"),a[m.valueOf()]&&y.classList.add("dhx_cal_datepicker_event"),y.classList.add("dhx_cal_datepicker_date"),g.appendChild(y),m=l.date.add(m,1,"day")}i.appendChild(g)}_renderMonthGrid(i){const{date:t}=this.getState(),r=document.createElement("div");r.classList.add("dhx_cal_datepicker_months");const d=[];for(let a=0;a<12;a++)d.push(new Date(t.getFullYear(),a,1));const n=this.scheduler.date.date_to_str("%M");d.forEach(a=>{const o=document.createElement("div");o.classList.add("dhx_cal_datepicker_month"),t.getMonth()===a.getMonth()&&o.classList.add("dhx_cal_datepicker_current"),o.setAttribute("data-month",a.getMonth()),o.innerHTML=n(a),this._domEvents.attach(o,"click",()=>{const l=new Date(a);this.setState({date:l,mode:"days"})}),r.appendChild(o)}),i.appendChild(r);const s=document.createElement("div");s.classList.add("dhx_cal_datepicker_done");const _=document.createElement("button");_.innerText="Done",_.classList.add("dhx_cal_datepicker_done_btn"),this._domEvents.attach(_,"click",()=>{this.setState({mode:"days"})}),s.appendChild(_),i.appendChild(s)}_renderYearGrid(i){const{date:t}=this.getState(),r=10*Math.floor(t.getFullYear()/10),d=document.createElement("div");d.classList.add("dhx_cal_datepicker_years");for(let _=r-1;_<=r+10;_++){const a=document.createElement("div");a.innerText=_,a.classList.add("dhx_cal_datepicker_year"),a.setAttribute("data-year",_),t.getFullYear()===_&&a.classList.add("dhx_cal_datepicker_current"),this._domEvents.attach(a,"click",()=>{this.setState({date:new Date(_,t.getMonth(),1),mode:"months"})}),d.appendChild(a)}i.appendChild(d);const n=document.createElement("div");n.classList.add("dhx_cal_datepicker_done");const s=document.createElement("button");s.innerText="Done",s.classList.add("dhx_cal_datepicker_done_btn"),this._domEvents.attach(s,"click",()=>{this.setState({mode:"months"})}),n.appendChild(s),i.appendChild(n)}destructor(){this.onStateChangeHandlers=[],this.element&&(this.element.innerHTML="",this.element.remove()),this._domEvents.detachAll(),this.callEvent("onDestroy",[]),this.detachAllEvents(),this.scheduler=null}}function Sa(e){const i={version:"7.1.1"};i.$stateProvider=function(){const a={};return{getState:function(o){if(a[o])return a[o].method();{const l={};for(const h in a)a[h].internal||ee.mixin(l,a[h].method(),!0);return l}},registerProvider:function(o,l,h){a[o]={method:l,internal:h}},unregisterProvider:function(o){delete a[o]}}}(),i.getState=i.$stateProvider.getState,function(a){var o={agenda:"https://docs.dhtmlx.com/scheduler/agenda_view.html",grid:"https://docs.dhtmlx.com/scheduler/grid_view.html",map:"https://docs.dhtmlx.com/scheduler/map_view.html",unit:"https://docs.dhtmlx.com/scheduler/units_view.html",timeline:"https://docs.dhtmlx.com/scheduler/timeline_view.html",week_agenda:"https://docs.dhtmlx.com/scheduler/weekagenda_view.html",year:"https://docs.dhtmlx.com/scheduler/year_view.html",anythingElse:"https://docs.dhtmlx.com/scheduler/views.html"},l={agenda:"ext/dhtmlxscheduler_agenda_view.js",grid:"ext/dhtmlxscheduler_grid_view.js",map:"ext/dhtmlxscheduler_map_view.js",unit:"ext/dhtmlxscheduler_units.js",timeline:"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js",week_agenda:"ext/dhtmlxscheduler_week_agenda.js",year:"ext/dhtmlxscheduler_year_view.js",limit:"ext/dhtmlxscheduler_limit.js"};a._commonErrorMessages={unknownView:function(h){var v=l[h]?"You're probably missing "+l[h]+".":"";return"`"+h+"` view is not defined. \nPlease check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \nRelated docs: "+(o[h]||o.anythingElse)+` `+(v?v+` `:"")},collapsedContainer:function(h){return`Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. Make sure that the container has some initial height or use different units. For example: @@ -15,9 +15,9 @@ https://docs.dhtmlx.com/scheduler/minicalendar.html`)},a.exportToPNG=function(){ `))},a.exportToPDF=function(){throw new Error(["scheduler.exportToPDF is not implemented.","This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html","Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml"].join(` `))}}(i),zt(i),function(a){Ae(a),Ot(a),a._detachDomEvent=function(c,p,m){c.removeEventListener?c.removeEventListener(p,m,!1):c.detachEvent&&c.detachEvent("on"+p,m)},a._init_once=function(){Lt(a),a._init_once=function(){}};const o={render:function(c){return a._init_nav_bar(c)}},l={render:function(c){const p=document.createElement("div");return p.className="dhx_cal_header",p}},h={render:function(c){const p=document.createElement("div");return p.className="dhx_cal_data",p}};function v(c){return!!(c.querySelector(".dhx_cal_header")&&c.querySelector(".dhx_cal_data")&&c.querySelector(".dhx_cal_navline"))}a.init=function(c,p,m){if(!this.$destroyed){if(p=p||a._currentDate(),m=m||"week",this._obj&&this.unset_actions(),this._obj=typeof c=="string"?document.getElementById(c):c,this.$container=this._obj,this.$root=this._obj,!this.$container.offsetHeight&&this.$container.offsetWidth&&this.$container.style.height==="100%"&&window.console.error(a._commonErrorMessages.collapsedContainer(),this.$container),this.config.wai_aria_attributes&&this.config.wai_aria_application_role&&this.$container.setAttribute("role","application"),this.config.header||v(this.$container)||(this.config.header=function(g){const y=["day","week","month"];if(g.matrix)for(const x in g.matrix)y.push(x);if(g._props)for(const x in g._props)y.push(x);if(g._grid&&g._grid.names)for(const x in g._grid.names)y.push(x);return["map","agenda","week_agenda","year"].forEach(function(x){g[x+"_view"]&&y.push(x)}),y.concat(["date"]).concat(["prev","today","next"])}(this),window.console.log(["Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.","Using a default header configuration: ","scheduler.config.header = "+JSON.stringify(this.config.header,null,2),"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html"].join(` `))),this.config.header)this.$container.innerHTML="",this.$container.classList.add("dhx_cal_container"),this.config.header.height&&(this.xy.nav_height=this.config.header.height),this.$container.appendChild(o.render(this.config.header)),this.$container.appendChild(l.render()),this.$container.appendChild(h.render());else if(!v(this.$container))throw new Error(["Required DOM elements are missing from the scheduler container.","Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup","Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig"].join(` -`));this.config.rtl&&(this.$container.className+=" dhx_cal_container_rtl"),this._skin_init&&a._skin_init(),a.date.init(),this._scroll=!0,this._els=[],this.get_elements(),this.init_templates(),this.set_actions(),this._init_once(),this._init_touch_events(),this.set_sizes(),a.callEvent("onSchedulerReady",[]),a.$initialized=!0,this.setCurrentView(p,m)}},a.xy={min_event_height:20,bar_height:24,scale_width:50,scroll_width:18,scale_height:20,month_scale_height:20,menu_width:25,margin_top:0,margin_left:0,editor_width:140,month_head_height:22,event_header_height:14},a.keys={edit_save:13,edit_cancel:27},a.bind=function(c,p){return c.bind?c.bind(p):function(){return c.apply(p,arguments)}},a.set_sizes=function(){var c=this._x=this._obj.clientWidth-this.xy.margin_left,p=this._table_view?0:this.xy.scale_width+this.xy.scroll_width,m=this.$container.querySelector(".dhx_cal_scale_placeholder");a._is_material_skin()?(m||((m=document.createElement("div")).className="dhx_cal_scale_placeholder",this.$container.insertBefore(m,this._els.dhx_cal_header[0])),m.style.display="block",this.set_xy(m,c,this.xy.scale_height+1,0,this._els.dhx_cal_header[0].offsetTop)):m&&m.parentNode.removeChild(m),this._lightbox&&(a.$container.offsetWidth<1200||this._setLbPosition(document.querySelector(".dhx_cal_light"))),this._data_width=c-p,this._els.dhx_cal_navline[0].style.width=c+"px";const g=this._els.dhx_cal_header[0];this.set_xy(g,this._data_width,this.xy.scale_height),g.style.left="",g.style.right="",this._table_view?this.config.rtl?g.style.right="-1px":g.style.left="-1px":this.config.rtl?g.style.right=`${this.xy.scale_width}px`:g.style.left=`${this.xy.scale_width}px`},a.set_xy=function(c,p,m,g,y){function x(k){let E=k;return isNaN(Number(E))||(E=Math.max(0,E)+"px"),E}var b="left";p!==void 0&&(c.style.width=x(p)),m!==void 0&&(c.style.height=x(m)),arguments.length>3&&(g!==void 0&&(this.config.rtl&&(b="right"),c.style[b]=g+"px"),y!==void 0&&(c.style.top=y+"px"))},a.get_elements=function(){const c=this._obj.getElementsByTagName("DIV");for(let p=0;p500&&a.unselect()},dhx_cal_prev_button:function(){a._click.dhx_cal_next_button(0,-1)},dhx_cal_next_button:function(c,p){let m=1;a.config.rtl&&(p=-p,m=-m),a.setCurrentView(a.date.add(a.date[a._mode+"_start"](new Date(a._date)),p||m,a._mode))},dhx_cal_today_button:function(){a.callEvent("onBeforeTodayDisplayed",[])&&a.setCurrentView(a._currentDate())},dhx_cal_tab:function(){const c=this.getAttribute("data-tab"),p=this.getAttribute("name"),m=c||p.substring(0,p.search("_tab"));a.setCurrentView(a._date,m)},buttons:{delete:function(c){const p=a.locale.labels.confirm_deleting;a._dhtmlx_confirm({message:p,title:a.locale.labels.title_confirm_deleting,callback:function(){a.deleteEvent(c)},config:{ok:a.locale.labels.icon_delete}})},edit:function(c){a.edit(c)},save:function(c){a.editStop(!0)},details:function(c){a.showLightbox(c)},form:function(c){a.showLightbox(c)},cancel:function(c){a.editStop(!1)}}},a._dhtmlx_confirm=function({message:c,title:p,callback:m,config:g}){if(!c)return m();g=g||{};const y={...g,text:c};p&&(y.title=p),m&&(y.callback=function(x){x&&m()}),a.confirm(y)},a.addEventNow=function(c,p,m){let g={};a._isObject(c)&&!a._isDate(c)&&(g=c,c=null);const y=6e4*(this.config.event_duration||this.config.time_step);c||(c=g.start_date||Math.round(a._currentDate().valueOf()/y)*y);let x=new Date(c);if(!p){let E=this.config.first_hour;E>x.getHours()&&(x.setHours(E),c=x.valueOf()),p=c.valueOf()+y}let b=new Date(p);x.valueOf()==b.valueOf()&&b.setTime(b.valueOf()+y),g.start_date=g.start_date||x,g.end_date=g.end_date||b,g.text=g.text||this.locale.labels.new_event,g.id=this._drag_id=g.id||this.uid(),this._drag_mode="new-size",this._loading=!0;const k=this.addEvent(g);return this.callEvent("onEventCreated",[this._drag_id,m]),this._loading=!1,this._drag_event={},this._on_mouse_up(m),k},a._on_dbl_click=function(c,p){if(p=p||c.target,this.config.readonly)return;const m=a._getClassName(p).split(" ")[0];switch(m){case"dhx_scale_holder":case"dhx_scale_holder_now":case"dhx_month_body":case"dhx_wa_day_data":if(!a.config.dblclick_create)break;this.addEventNow(this.getActionData(c).date,null,c);break;case"dhx_cal_event":case"dhx_wa_ev_body":case"dhx_agenda_line":case"dhx_cal_agenda_event_line":case"dhx_grid_event":case"dhx_cal_event_line":case"dhx_cal_event_clear":{const g=this._locate_event(p);if(!this.callEvent("onDblClick",[g,c]))return;this.config.details_on_dblclick||this._table_view||!this.getEvent(g)._timed||!this.config.select?this.showLightbox(g):this.edit(g);break}case"dhx_time_block":case"dhx_cal_container":return;default:{const g=this["dblclick_"+m];if(g)g.call(this,c);else if(p.parentNode&&p!=this)return a._on_dbl_click(c,p.parentNode);break}}},a._get_column_index=function(c){let p=0;if(this._cols){let m=0,g=0;for(;m+this._cols[g]=this._cols.length)for(;p>=1&&this._ignores[Math.floor(p)];)p--}return p},a._week_indexes_from_pos=function(c){if(this._cols){const p=this._get_column_index(c.x);return c.x=Math.min(this._cols.length-1,Math.max(0,Math.ceil(p)-1)),c.y=Math.max(0,Math.ceil(60*c.y/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step),c}return c},a._mouse_coords=function(c){let p;const m=document.body,g=document.documentElement;p=this.$env.isIE||!c.pageX&&!c.pageY?{x:c.clientX+(m.scrollLeft||g.scrollLeft||0)-m.clientLeft,y:c.clientY+(m.scrollTop||g.scrollTop||0)-m.clientTop}:{x:c.pageX,y:c.pageY},this.config.rtl&&this._colsS?(p.x=this.$container.querySelector(".dhx_cal_data").offsetWidth-p.x,p.x+=this.$domHelpers.getAbsoluteLeft(this._obj),this._mode!=="month"&&(p.x-=this.xy.scale_width)):p.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);const y=this.$container.querySelector(".dhx_cal_data");p.y-=this.$domHelpers.getAbsoluteTop(y)-this._els.dhx_cal_data[0].scrollTop,p.ev=c;const x=this["mouse_"+this._mode];if(x)p=x.call(this,p);else if(this._table_view){const b=this._get_column_index(p.x);if(!this._cols||!this._colsS)return p;let k=0;for(k=1;kp.y);k++);p.y=Math.ceil(24*(Math.max(0,b)+7*Math.max(0,k-1))*60/this.config.time_step),(a._drag_mode||this._mode=="month")&&(p.y=24*(Math.max(0,Math.ceil(b)-1)+7*Math.max(0,k-1))*60/this.config.time_step),this._drag_mode=="move"&&a._ignores_detected&&a.config.preserve_length&&(p._ignores=!0,this._drag_event._event_length||(this._drag_event._event_length=this._get_real_event_length(this._drag_event.start_date,this._drag_event.end_date,{x_step:1,x_unit:"day"}))),p.x=0}else p=this._week_indexes_from_pos(p);return p.timestamp=+new Date,p},a._close_not_saved=function(){if(new Date().valueOf()-(a._new_event||0)>500&&a._edit_id){const c=a.locale.labels.confirm_closing;a._dhtmlx_confirm({message:c,title:a.locale.labels.title_confirm_closing,callback:function(){a.editStop(a.config.positive_closing)}}),c&&(this._drag_id=this._drag_pos=this._drag_mode=null)}},a._correct_shift=function(c,p){return c-6e4*(new Date(a._min_date).getTimezoneOffset()-new Date(c).getTimezoneOffset())*(p?-1:1)},a._is_pos_changed=function(c,p){function m(g,y,x){return Math.abs(g-y)>x}return!c||!this._drag_pos||!!(this._drag_pos.has_moved||!this._drag_pos.timestamp||p.timestamp-this._drag_pos.timestamp>100||m(c.ev.clientX,p.ev.clientX,5)||m(c.ev.clientY,p.ev.clientY,5))},a._correct_drag_start_date=function(c){let p;a.matrix&&(p=a.matrix[a._mode]),p=p||{x_step:1,x_unit:"day"},c=new Date(c);let m=1;return(p._start_correction||p._end_correction)&&(m=60*(p.last_hour||0)-(60*c.getHours()+c.getMinutes())||1),1*c+(a._get_fictional_event_length(c,m,p)-m)},a._correct_drag_end_date=function(c,p){let m;a.matrix&&(m=a.matrix[a._mode]),m=m||{x_step:1,x_unit:"day"};const g=1*c+a._get_fictional_event_length(c,p,m);return new Date(1*g-(a._get_fictional_event_length(g,-1,m,-1)+1))},a._on_mouse_move=function(c){if(this._drag_mode){var p=this._mouse_coords(c);if(this._is_pos_changed(this._drag_pos,p)){var m,g;if(this._edit_id!=this._drag_id&&this._close_not_saved(),!this._drag_mode)return;var y=null;if(this._drag_pos&&!this._drag_pos.has_moved&&((y=this._drag_pos).has_moved=!0),this._drag_pos=p,this._drag_pos.has_moved=!0,this._drag_mode=="create"){if(y&&(p=y),this._close_not_saved(),this.unselect(this._select_id),this._loading=!0,m=this._get_date_from_pos(p).valueOf(),!this._drag_start)return this.callEvent("onBeforeEventCreated",[c,this._drag_id])?(this._loading=!1,void(this._drag_start=m)):void(this._loading=!1);g=m,this._drag_start;var x=new Date(this._drag_start),b=new Date(g);this._mode!="day"&&this._mode!="week"||x.getHours()!=b.getHours()||x.getMinutes()!=b.getMinutes()||(b=new Date(this._drag_start+1e3)),this._drag_id=this.uid(),this.addEvent(x,b,this.locale.labels.new_event,this._drag_id,p.fields),this.callEvent("onEventCreated",[this._drag_id,c]),this._loading=!1,this._drag_mode="new-size"}var k,E=this.config.time_step,D=this.getEvent(this._drag_id);if(a.matrix&&(k=a.matrix[a._mode]),k=k||{x_step:1,x_unit:"day"},this._drag_mode=="move")m=this._min_date.valueOf()+6e4*(p.y*this.config.time_step+24*p.x*60),!p.custom&&this._table_view&&(m+=1e3*this.date.time_part(D.start_date)),!this._table_view&&this._dragEventBody&&this._drag_event._move_event_shift===void 0&&(this._drag_event._move_event_shift=m-D.start_date),this._drag_event._move_event_shift&&(m-=this._drag_event._move_event_shift),m=this._correct_shift(m),p._ignores&&this.config.preserve_length&&this._table_view&&k?(m=a._correct_drag_start_date(m),g=a._correct_drag_end_date(m,this._drag_event._event_length)):g=D.end_date.valueOf()-(D.start_date.valueOf()-m);else{if(m=D.start_date.valueOf(),g=D.end_date.valueOf(),this._table_view){var w=this._min_date.valueOf()+p.y*this.config.time_step*6e4+(p.custom?0:864e5);if(this._mode=="month")if(w=this._correct_shift(w,!1),this._drag_from_start){var S=864e5;w<=a.date.date_part(new Date(g+S-1)).valueOf()&&(m=w-S)}else g=w;else this.config.preserve_length?p.resize_from_start?m=a._correct_drag_start_date(w):g=a._correct_drag_end_date(w,0):p.resize_from_start?m=w:g=w}else{var N=this.date.date_part(new Date(D.end_date.valueOf()-1)).valueOf(),M=new Date(N),T=this.config.first_hour,A=60/E*(this.config.last_hour-T);this.config.time_step=1;var H=this._mouse_coords(c);this.config.time_step=E;var $=p.y*E*6e4,I=Math.min(p.y+1,A)*E*6e4,z=6e4*H.y;g=Math.abs($-z)>Math.abs(I-z)?N+I:N+$,g+=6e4*(new Date(g).getTimezoneOffset()-M.getTimezoneOffset()),this._els.dhx_cal_data[0].style.cursor="s-resize",this._mode!="week"&&this._mode!="day"||(g=this._correct_shift(g))}if(this._drag_mode=="new-size")if(g<=this._drag_start){var K=p.shift||(this._table_view&&!p.custom?864e5:0);m=g-(p.shift?0:K),g=this._drag_start+(K||6e4*E)}else m=this._drag_start;else g<=m&&(g=m+6e4*E)}var U=new Date(g-1),q=new Date(m);if(this._drag_mode=="move"&&a.config.limit_drag_out&&(+q<+a._min_date||+g>+a._max_date)){if(+D.start_date<+a._min_date||+D.end_date>+a._max_date)q=new Date(D.start_date),g=new Date(D.end_date);else{var B=g-q;+q<+a._min_date?(q=new Date(a._min_date),p._ignores&&this.config.preserve_length&&this._table_view?(q=new Date(a._correct_drag_start_date(q)),k._start_correction&&(q=new Date(q.valueOf()+k._start_correction)),g=new Date(1*q+this._get_fictional_event_length(q,this._drag_event._event_length,k))):g=new Date(+q+B)):(g=new Date(a._max_date),p._ignores&&this.config.preserve_length&&this._table_view?(k._end_correction&&(g=new Date(g.valueOf()-k._end_correction)),g=new Date(1*g-this._get_fictional_event_length(g,0,k,!0)),q=new Date(1*g-this._get_fictional_event_length(g,this._drag_event._event_length,k,!0)),this._ignores_detected&&(q=a.date.add(q,k.x_step,k.x_unit),g=new Date(1*g-this._get_fictional_event_length(g,0,k,!0)),g=a.date.add(g,k.x_step,k.x_unit))):q=new Date(+g-B))}U=new Date(g-1)}if(!this._table_view&&this._dragEventBody&&!a.config.all_timed&&(!a._get_section_view()&&p.x!=this._get_event_sday({start_date:new Date(m),end_date:new Date(m)})||new Date(m).getHours()=this.config.last_hour)||(B=g-q,S=this._min_date.valueOf()+24*p.x*60*6e4,(g=a.date.date_part(new Date(S))).setHours(this.config.last_hour),U=new Date(g-1),this._drag_mode=="move"&&(q=new Date(+g-B))),this._table_view||U.getDate()==q.getDate()&&U.getHours()=y?H+=" dhx_after":m.valueOf()==b.valueOf()&&(H+=" dhx_now"),this._ignores_detected&&this._ignores[T]&&(H+=" dhx_scale_ignore"),A.className=H+" "+this.templates.month_date_class(m,b),A.setAttribute("data-cell-date",a.templates.format_date(m));var $="dhx_month_body",I="dhx_month_head";if(T===0&&this.config.left_border&&($+=" dhx_month_body_border",I+=" dhx_month_head_border"),this._ignores_detected&&this._ignores[T])A.appendChild(document.createElement("div")),A.appendChild(document.createElement("div"));else{A.style.width=k[T],this._waiAria.monthCellAttr(A,m);var z=document.createElement("div");z.style.height=a.xy.month_head_height+"px",z.className=I,z.innerHTML=this.templates.month_day(m),A.appendChild(z);var K=document.createElement("div");K.className=$,A.appendChild(K)}var U=m.getDate();(m=this.date.add(m,1,"day")).getDate()-U>1&&(m=new Date(m.getFullYear(),m.getMonth(),U+1,12,0))}a._colsS.heights[E]=S,S+=w(E)}return this._min_date=x,this._max_date=m,c.innerHTML="",c.appendChild(N),this._scales={},c.querySelectorAll("[data-cell-date]").forEach(q=>{const B=a.templates.parse_date(q.getAttribute("data-cell-date")),ke=q.querySelector(".dhx_month_body");this._scales[+B]=ke,this.callEvent("onScaleAdd",[this._scales[+B],B])}),this._max_date},a._reset_month_scale=function(c,p,m,g){var y=a.date.add(p,1,"month"),x=a._currentDate();this.date.date_part(x),this.date.date_part(m),g=g||Math.ceil(Math.round((y.valueOf()-m.valueOf())/864e5)/7);var b=Math.floor(c.clientHeight/g)-this.xy.month_head_height;return this._colsS.height=b+this.xy.month_head_height,this._colsS.heights=[],a._render_month_scale(c,p,m,g)},a.getView=function(c){return c||(c=a.getState().mode),a.matrix&&a.matrix[c]?a.matrix[c]:a._props&&a._props[c]?a._props[c]:null},a.getLabel=function(c,p){for(var m=this.config.lightbox.sections,g=0;ga.getState().max_date.valueOf()&&(g+=f(p,a.getState().max_date))):g=Math.round(y/60/60/1e3/24);for(var k=!0;bA.valueOf()&&(D+=S-A),S.valueOf()>T.valueOf()?D+=m._start_correction:D+=60*S.getHours()*60*1e3+60*S.getMinutes()*1e3,w.valueOf()`,"gm"),l=new RegExp(" +","gm");function h(c){return(c+"").replace(o," ").replace(l," ")}var v=new RegExp("'","gm");function u(c){return(c+"").replace(v,"'")}for(var f in a._waiAria={getAttributeString:function(c){var p=[" "];for(var m in c)if(typeof c[m]!="function"&&typeof c[m]!="object"){var g=u(h(c[m]));p.push(m+"='"+g+"'")}return p.push(" "),p.join(" ")},setAttributes:function(c,p){for(var m in p)c.setAttribute(m,h(p[m]));return c},labelAttr:function(c,p){return this.setAttributes(c,{"aria-label":p})},label:function(c){return a._waiAria.getAttributeString({"aria-label":c})},hourScaleAttr:function(c,p){this.labelAttr(c,p)},monthCellAttr:function(c,p){this.labelAttr(c,a.templates.day_date(p))},navBarDateAttr:function(c,p){this.labelAttr(c,p)},dayHeaderAttr:function(c,p){this.labelAttr(c,p)},dayColumnAttr:function(c,p){this.dayHeaderAttr(c,a.templates.day_date(p))},headerButtonsAttributes:function(c,p){return this.setAttributes(c,{role:"button","aria-label":p})},headerToggleState:function(c,p){return this.setAttributes(c,{"aria-pressed":p?"true":"false"})},getHeaderCellAttr:function(c){return a._waiAria.getAttributeString({"aria-label":c})},eventAttr:function(c,p){this._eventCommonAttr(c,p)},_eventCommonAttr:function(c,p){p.setAttribute("aria-label",h(a.templates.event_text(c.start_date,c.end_date,c))),a.config.readonly&&p.setAttribute("aria-readonly",!0),c.$dataprocessor_class&&p.setAttribute("aria-busy",!0),p.setAttribute("aria-selected",a.getState().select_id==c.id?"true":"false")},setEventBarAttr:function(c,p){this._eventCommonAttr(c,p)},_getAttributes:function(c,p){var m={setAttribute:function(g,y){this[g]=y}};return c.apply(this,[p,m]),m},eventBarAttrString:function(c){return this.getAttributeString(this._getAttributes(this.setEventBarAttr,c))},agendaHeadAttrString:function(){return this.getAttributeString({role:"row"})},agendaHeadDateString:function(c){return this.getAttributeString({role:"columnheader","aria-label":c})},agendaHeadDescriptionString:function(c){return this.agendaHeadDateString(c)},agendaDataAttrString:function(){return this.getAttributeString({role:"grid"})},agendaEventAttrString:function(c){var p=this._getAttributes(this._eventCommonAttr,c);return p.role="row",this.getAttributeString(p)},agendaDetailsBtnString:function(){return this.getAttributeString({role:"button","aria-label":a.locale.labels.icon_details})},gridAttrString:function(){return this.getAttributeString({role:"grid"})},gridRowAttrString:function(c){return this.agendaEventAttrString(c)},gridCellAttrString:function(c,p,m){return this.getAttributeString({role:"gridcell","aria-label":[p.label===void 0?p.id:p.label,": ",m]})},mapAttrString:function(){return this.gridAttrString()},mapRowAttrString:function(c){return this.gridRowAttrString(c)},mapDetailsBtnString:function(){return this.agendaDetailsBtnString()},minicalHeader:function(c,p){this.setAttributes(c,{id:p+"","aria-live":"assertice","aria-atomic":"true"})},minicalGrid:function(c,p){this.setAttributes(c,{"aria-labelledby":p+"",role:"grid"})},minicalRow:function(c){this.setAttributes(c,{role:"row"})},minicalDayCell:function(c,p){var m=p.valueOf()=a._min_date.valueOf();this.setAttributes(c,{role:"gridcell","aria-label":a.templates.day_date(p),"aria-selected":m?"true":"false"})},minicalHeadCell:function(c){this.setAttributes(c,{role:"columnheader"})},weekAgendaDayCell:function(c,p){var m=c.querySelector(".dhx_wa_scale_bar"),g=c.querySelector(".dhx_wa_day_data"),y=a.uid()+"";this.setAttributes(m,{id:y}),this.setAttributes(g,{"aria-labelledby":y})},weekAgendaEvent:function(c,p){this.eventAttr(p,c)},lightboxHiddenAttr:function(c){c.setAttribute("aria-hidden","true")},lightboxVisibleAttr:function(c){c.setAttribute("aria-hidden","false")},lightboxSectionButtonAttrString:function(c){return this.getAttributeString({role:"button","aria-label":c,tabindex:"0"})},yearHeader:function(c,p){this.setAttributes(c,{id:p+""})},yearGrid:function(c,p){this.minicalGrid(c,p)},yearHeadCell:function(c){return this.minicalHeadCell(c)},yearRow:function(c){return this.minicalRow(c)},yearDayCell:function(c){this.setAttributes(c,{role:"gridcell"})},lightboxAttr:function(c){c.setAttribute("role","dialog"),c.setAttribute("aria-hidden","true"),c.firstChild.setAttribute("role","heading")},lightboxButtonAttrString:function(c){return this.getAttributeString({role:"button","aria-label":a.locale.labels[c],tabindex:"0"})},eventMenuAttrString:function(c){return this.getAttributeString({role:"button","aria-label":a.locale.labels[c]})},lightboxHeader:function(c,p){c.setAttribute("aria-label",p)},lightboxSelectAttrString:function(c){var p="";switch(c){case"%Y":p=a.locale.labels.year;break;case"%m":p=a.locale.labels.month;break;case"%d":p=a.locale.labels.day;break;case"%H:%i":p=a.locale.labels.hour+" "+a.locale.labels.minute}return a._waiAria.getAttributeString({"aria-label":p})},messageButtonAttrString:function(c){return"tabindex='0' role='button' aria-label='"+c+"'"},messageInfoAttr:function(c){c.setAttribute("role","alert")},messageModalAttr:function(c,p){c.setAttribute("role","dialog"),p&&c.setAttribute("aria-labelledby",p)},quickInfoAttr:function(c){c.setAttribute("role","dialog")},quickInfoHeaderAttrString:function(){return" role='heading' "},quickInfoHeader:function(c,p){c.setAttribute("aria-label",p)},quickInfoButtonAttrString:function(c){return a._waiAria.getAttributeString({role:"button","aria-label":c,tabindex:"0"})},tooltipAttr:function(c){c.setAttribute("role","tooltip")},tooltipVisibleAttr:function(c){c.setAttribute("aria-hidden","false")},tooltipHiddenAttr:function(c){c.setAttribute("aria-hidden","true")}},a._waiAria)a._waiAria[f]=function(c){return function(){return a.config.wai_aria_attributes?c.apply(this,arguments):" "}}(a._waiAria[f])})()}(i),i.utils=ee,i.$domHelpers=se,i.utils.dom=se,i.uid=ee.uid,i.mixin=ee.mixin,i.defined=ee.defined,i.assert=function(a){return function(o,l){o||a.config.show_errors&&a.callEvent("onError",[l])!==!1&&(a.message?a.message({type:"error",text:l,expire:-1}):console.log(l))}}(i),i.copy=ee.copy,i._createDatePicker=function(a,o){return new Da(i,a,o)},i._getFocusableNodes=se.getFocusableNodes,i._getClassName=se.getClassName,i._locate_css=se.locateCss;const t=Wt(i);var r,d,n;i.utils.mixin(i,t),i.env=i.$env=Yt,i.Promise=window.Promise,function(a){a.destructor=function(){for(var o in a.callEvent("onDestroy",[]),this.clearAll(),this.$container&&(this.$container.innerHTML=""),this._eventRemoveAll&&this._eventRemoveAll(),this.resetLightbox&&this.resetLightbox(),this._dp&&this._dp.destructor&&this._dp.destructor(),this.detachAllEvents(),this)o.indexOf("$")===0&&delete this[o];a.$destroyed=!0}}(i),function(a){function o(l,h){var v={method:l};if(h.length===0)throw new Error("Arguments list of query is wrong.");if(h.length===1)return typeof h[0]=="string"?(v.url=h[0],v.async=!0):(v.url=h[0].url,v.async=h[0].async||!0,v.callback=h[0].callback,v.headers=h[0].headers),h[0].data?typeof h[0].data!="string"?v.data=Oe(h[0].data):v.data=h[0].data:v.data="",v;switch(v.url=h[0],l){case"GET":case"DELETE":v.callback=h[1],v.headers=h[2];break;case"POST":case"PUT":h[1]?typeof h[1]!="string"?v.data=Oe(h[1]):v.data=h[1]:v.data="",v.callback=h[2],v.headers=h[3]}return v}a.Promise=window.Promise,a.ajax={cache:!0,method:"get",serializeRequestParams:Oe,parse:function(l){return typeof l!="string"?l:(l=l.replace(/^[\s]+/,""),typeof DOMParser>"u"||a.$env.isIE?window.ActiveXObject!==void 0&&((h=new window.ActiveXObject("Microsoft.XMLDOM")).async="false",h.loadXML(l)):h=new DOMParser().parseFromString(l,"text/xml"),h);var h},xmltop:function(l,h,v){if(h.status===void 0||h.status<400){var u=h.responseXML?h.responseXML||h:this.parse(h.responseText||h);if(u&&u.documentElement!==null&&!u.getElementsByTagName("parsererror").length)return u.getElementsByTagName(l)[0]}return v!==-1&&a.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],v]),document.createElement("DIV")},xpath:function(l,h){if(h.nodeName||(h=h.responseXML||h),a.$env.isIE)return h.selectNodes(l)||[];for(var v,u=[],f=(h.ownerDocument||h).evaluate(l,h,null,XPathResult.ANY_TYPE,null);v=f.iterateNext();)u.push(v);return u},query:function(l){return this._call(l.method||"GET",l.url,l.data||"",l.async||!0,l.callback,l.headers)},get:function(l,h,v){var u=o("GET",arguments);return this.query(u)},getSync:function(l,h){var v=o("GET",arguments);return v.async=!1,this.query(v)},put:function(l,h,v,u){var f=o("PUT",arguments);return this.query(f)},del:function(l,h,v){var u=o("DELETE",arguments);return this.query(u)},post:function(l,h,v,u){arguments.length==1?h="":arguments.length==2&&typeof h=="function"&&(v=h,h="");var f=o("POST",arguments);return this.query(f)},postSync:function(l,h,v){h=h===null?"":String(h);var u=o("POST",arguments);return u.async=!1,this.query(u)},_call:function(l,h,v,u,f,c){return new a.Promise((function(p,m){var g=typeof XMLHttpRequest===void 0||a.$env.isIE?new window.ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest,y=navigator.userAgent.match(/AppleWebKit/)!==null&&navigator.userAgent.match(/Qt/)!==null&&navigator.userAgent.match(/Safari/)!==null;if(u&&g.addEventListener("readystatechange",function(){if(g.readyState==4||y&&g.readyState==3){if((g.status!=200||g.responseText==="")&&!a.callEvent("onAjaxError",[g]))return;setTimeout(function(){typeof f=="function"&&f.apply(window,[{xmlDoc:g,filePath:h}]),p(g),typeof f=="function"&&(f=null,g=null)},0)}}),l!="GET"||this.cache||(h+=(h.indexOf("?")>=0?"&":"?")+"dhxr"+new Date().getTime()+"=1"),g.open(l,h,u),c)for(var x in c)g.setRequestHeader(x,c[x]);else l.toUpperCase()=="POST"||l=="PUT"||l=="DELETE"?g.setRequestHeader("Content-Type","application/x-www-form-urlencoded"):l=="GET"&&(v=null);if(g.setRequestHeader("X-Requested-With","XMLHttpRequest"),g.send(v),!u)return{xmlDoc:g,filePath:h}}).bind(this))},urlSeparator:function(l){return l.indexOf("?")!=-1?"&":"?"}},a.$ajax=a.ajax}(i),Ut(i),function(a){a.config={default_date:"%j %M %Y",month_date:"%F %Y",load_date:"%Y-%m-%d",week_date:"%l",day_date:"%D %j",hour_date:"%H:%i",month_day:"%d",date_format:"%Y-%m-%d %H:%i",api_date:"%d-%m-%Y %H:%i",parse_exact_format:!1,preserve_length:!0,time_step:5,displayed_event_color:"#ff4a4a",displayed_event_text_color:"#ffef80",wide_form:0,day_column_padding:8,use_select_menu_space:!0,fix_tab_position:!0,start_on_monday:!0,first_hour:0,last_hour:24,readonly:!1,drag_resize:!0,drag_move:!0,drag_create:!0,drag_event_body:!0,dblclick_create:!0,details_on_dblclick:!0,edit_on_create:!0,details_on_create:!0,header:null,hour_size_px:44,resize_month_events:!1,resize_month_timed:!1,responsive_lightbox:!1,separate_short_events:!0,rtl:!1,cascade_event_display:!1,cascade_event_count:4,cascade_event_margin:30,multi_day:!0,multi_day_height_limit:200,drag_lightbox:!0,preserve_scroll:!0,select:!0,undo_deleted:!0,server_utc:!1,touch:!0,touch_tip:!0,touch_drag:500,touch_swipe_dates:!1,quick_info_detached:!0,positive_closing:!1,drag_highlight:!0,limit_drag_out:!1,icons_edit:["icon_save","icon_cancel"],icons_select:["icon_details","icon_edit","icon_delete"],buttons_left:["dhx_save_btn","dhx_cancel_btn"],buttons_right:["dhx_delete_btn"],lightbox:{sections:[{name:"description",map_to:"text",type:"textarea",focus:!0},{name:"time",height:72,type:"time",map_to:"auto"}]},highlight_displayed_event:!0,left_border:!1,ajax_error:"alert",delay_render:0,timeline_swap_resize:!0,wai_aria_attributes:!0,wai_aria_application_role:!0,csp:"auto",event_attribute:"data-event-id",show_errors:!0},a.config.buttons_left.$initial=a.config.buttons_left.join(),a.config.buttons_right.$initial=a.config.buttons_right.join(),a._helpers={parseDate:function(o){return(a.templates.xml_date||a.templates.parse_date)(o)},formatDate:function(o){return(a.templates.xml_format||a.templates.format_date)(o)}},a.templates={},a.init_templates=function(){var o=a.date.date_to_str,l=a.config;(function(h,v){for(var u in v)h[u]||(h[u]=v[u])})(a.templates,{day_date:o(l.default_date),month_date:o(l.month_date),week_date:function(h,v){return l.rtl?a.templates.day_date(a.date.add(v,-1,"day"))+" – "+a.templates.day_date(h):a.templates.day_date(h)+" – "+a.templates.day_date(a.date.add(v,-1,"day"))},day_scale_date:o(l.default_date),time_slot_text:function(h){return""},time_slot_class:function(h){return""},month_scale_date:o(l.week_date),week_scale_date:o(l.day_date),hour_scale:o(l.hour_date),time_picker:o(l.hour_date),event_date:o(l.hour_date),month_day:o(l.month_day),load_format:o(l.load_date),format_date:o(l.date_format,l.server_utc),parse_date:a.date.str_to_date(l.date_format,l.server_utc),api_date:a.date.str_to_date(l.api_date,!1,!1),event_header:function(h,v,u){return u._mode==="small"||u._mode==="smallest"?a.templates.event_date(h):a.templates.event_date(h)+" - "+a.templates.event_date(v)},event_text:function(h,v,u){return u.text},event_class:function(h,v,u){return""},month_date_class:function(h){return""},week_date_class:function(h){return""},event_bar_date:function(h,v,u){return a.templates.event_date(h)},event_bar_text:function(h,v,u){return u.text},month_events_link:function(h,v){return"View more("+v+" events)"},drag_marker_class:function(h,v,u){return""},drag_marker_content:function(h,v,u){return""},tooltip_date_format:a.date.date_to_str("%Y-%m-%d %H:%i"),tooltip_text:function(h,v,u){return"Event: "+u.text+"
Start date: "+a.templates.tooltip_date_format(h)+"
End date: "+a.templates.tooltip_date_format(v)},calendar_month:o("%F %Y"),calendar_scale_date:o("%D"),calendar_date:o("%d"),calendar_time:o("%d-%m-%Y")}),this.callEvent("onTemplatesReady",[])}}(i),function(a){a._events={},a.clearAll=function(){this._events={},this._loaded={},this._edit_id=null,this._select_id=null,this._drag_id=null,this._drag_mode=null,this._drag_pos=null,this._new_event=null,this.clear_view(),this.callEvent("onClearAll",[])},a.addEvent=function(o,l,h,v,u){if(!arguments.length)return this.addEventNow();var f=o;arguments.length!=1&&((f=u||{}).start_date=o,f.end_date=l,f.text=h,f.id=v),f.id=f.id||a.uid(),f.text=f.text||"",typeof f.start_date=="string"&&(f.start_date=this.templates.api_date(f.start_date)),typeof f.end_date=="string"&&(f.end_date=this.templates.api_date(f.end_date));var c=6e4*(this.config.event_duration||this.config.time_step);f.start_date.valueOf()==f.end_date.valueOf()&&f.end_date.setTime(f.end_date.valueOf()+c),f.start_date.setMilliseconds(0),f.end_date.setMilliseconds(0),f._timed=this.isOneDayEvent(f);var p=!this._events[f.id];return this._events[f.id]=f,this.event_updated(f),this._loading||this.callEvent(p?"onEventAdded":"onEventChanged",[f.id,f]),f.id},a.deleteEvent=function(o,l){var h=this._events[o];(l||this.callEvent("onBeforeEventDelete",[o,h])&&this.callEvent("onConfirmedBeforeEventDelete",[o,h]))&&(h&&(a.getState().select_id==o&&a.unselect(),delete this._events[o],this.event_updated(h),this._drag_id==h.id&&(this._drag_id=null,this._drag_mode=null,this._drag_pos=null)),this.callEvent("onEventDeleted",[o,h]))},a.getEvent=function(o){return this._events[o]},a.setEvent=function(o,l){l.id||(l.id=o),this._events[o]=l},a.for_rendered=function(o,l){for(var h=this._rendered.length-1;h>=0;h--)this._rendered[h].getAttribute(this.config.event_attribute)==o&&l(this._rendered[h],h)},a.changeEventId=function(o,l){if(o!=l){var h=this._events[o];h&&(h.id=l,this._events[l]=h,delete this._events[o]),this.for_rendered(o,function(v){v.setAttribute("event_id",l),v.setAttribute(a.config.event_attribute,l)}),this._select_id==o&&(this._select_id=l),this._edit_id==o&&(this._edit_id=l),this.callEvent("onEventIdChange",[o,l])}},function(){for(var o=["text","Text","start_date","StartDate","end_date","EndDate"],l=function(u){return function(f){return a.getEvent(f)[u]}},h=function(u){return function(f,c){var p=a.getEvent(f);p[u]=c,p._changed=!0,p._timed=this.isOneDayEvent(p),a.event_updated(p,!0)}},v=0;vv||h<=u)&&(l>=v||l24-(this.config.last_hour-this.config.first_hour)||lu))}return!1},a.isOneDayEvent=function(o){var l=new Date(o.end_date.valueOf()-1);return o.start_date.getFullYear()===l.getFullYear()&&o.start_date.getMonth()===l.getMonth()&&o.start_date.getDate()===l.getDate()&&o.end_date.valueOf()-o.start_date.valueOf()<864e5},a.get_visible_events=function(o){var l=[];for(var h in this._events)this.is_visible_events(this._events[h])&&(o&&!this._events[h]._timed||this.filter_event(h,this._events[h])&&l.push(this._events[h]));return l},a.filter_event=function(o,l){var h=this["filter_"+this._mode];return!h||h(o,l)},a._is_main_area_event=function(o){return!!o._timed},a.render_view_data=function(o,l){var h=!1;if(!o){if(h=!0,this._not_render)return void(this._render_wait=!0);this._render_wait=!1,this.clear_view(),o=this.get_visible_events(!(this._table_view||this.config.multi_day))}for(var v=0,u=o.length;vg){var y=g;1*this.config.max_month_events!==this.config.max_month_events||u[p]<=this.config.max_month_events?y=u[p]*h:(this.config.max_month_events+1)*h>g&&(y=(this.config.max_month_events+1)*h),c[p].style.height=y+this.xy.month_head_height+"px"}u[p]=(u[p-1]||0)+a._get_first_visible_cell(m).offsetHeight}u.unshift(0);const M=this.$container.querySelector(".dhx_cal_data");if(M.offsetHeightM.id?1:-1:N.start_date>M.start_date?1:-1});var h=[],v=[];this._min_mapped_duration=Math.floor(60*this.xy.min_event_height/this.config.hour_size_px);for(var u=0;uS&&(S=y[E]._sorder);f._sorder=S+1,f._inner=!1}else f._sorder=0;y.splice(b,b==y.length?0:1,f),y.length>(y.max_count||0)?(y.max_count=y.length,f._count=y.length):f._count=f._count?f._count:1}(m=this.config.last_hour)&&(v.push(f),o[u]=f=this._copy_event(f),m=this.config.last_hour&&(f.end_date.setMinutes(0),f.end_date.setHours(this.config.last_hour)),f.start_date>f.end_date||m==this.config.last_hour)&&(o.splice(u,1),u--)}}if(!l){for(u=0;uh.id?1:-1:l.start_date>h.start_date?1:-1})},a._is_any_multiday_cell_visible=function(o,l,h){var v=this._cols.length,u=!1,f=o,c=!0,p=new Date(l);for(a.date.day_start(new Date(l)).valueOf()!=l.valueOf()&&(p=a.date.day_start(p),p=a.date.add(p,1,"day"));fthis._max_date&&(x.last_chunk=!1,k=this._max_date);var E=this.locate_holder_day(b,!1,g);if(g._sday=E%c,!this._ignores[g._sday]||!g._timed){var D=this.locate_holder_day(k,!0,g)||c;if(g._eday=D%c||c,g._length=D-E,g._sweek=Math.floor((this._correct_shift(b.valueOf(),1)-this._min_date.valueOf())/(864e5*c)),a._is_any_multiday_cell_visible(b,k,g)){var w,S=u[g._sweek];for(w=0;w"+o.text+"",this._editor=N.querySelector("textarea"),a.event(this._editor,"keydown",function(I){if(I.shiftKey)return!0;var z=I.keyCode;z==a.keys.edit_save&&a.editStop(!0),z==a.keys.edit_cancel&&a.editStop(!1),z!=a.keys.edit_save&&z!=a.keys.edit_cancel||I.preventDefault&&I.preventDefault()}),a.event(this._editor,"selectstart",function(I){return I.cancelBubble=!0,!0}),a._focus(this._editor,!0),this._els.dhx_cal_data[0].scrollLeft=0}if(this.xy.menu_width!==0&&this._select_id==o.id){this.config.cascade_event_display&&this._drag_mode&&(w.style.zIndex=1);for(var M,T=this.config["icons_"+(this._edit_id==o.id?"edit":"select")],A="",H=0;H
`}var $=this._render_v_bar(o,b-v-1,p,v,null,"","
",A,!0);o.color&&$.style.setProperty("--dhx-scheduler-event-background",o.color),o.textColor&&$.style.setProperty("--dhx-scheduler-event-color",o.textColor),this._els.dhx_cal_data[0].appendChild($),this._rendered.push($)}this.config.drag_highlight&&this._drag_id==o.id&&this.highlightEventPosition(o)}}},a._render_v_bar=function(o,l,h,v,u,f,c,p,m){var g=document.createElement("div"),y=o.id,x=m?"dhx_cal_event dhx_cal_select_menu":"dhx_cal_event",b=a.getState();b.drag_id==o.id&&(x+=" dhx_cal_event_drag"),b.select_id==o.id&&(x+=" dhx_cal_event_selected");var k=a.templates.event_class(o.start_date,o.end_date,o);k&&(x=x+" "+k),this.config.cascade_event_display&&(x+=" dhx_cal_event_cascade");var E=v-1,D=`
3&&(g!==void 0&&(this.config.rtl&&(b="right"),c.style[b]=g+"px"),y!==void 0&&(c.style.top=y+"px"))},a.get_elements=function(){const c=this._obj.getElementsByTagName("DIV");for(let p=0;p500&&a.unselect()},dhx_cal_prev_button:function(){a._click.dhx_cal_next_button(0,-1)},dhx_cal_next_button:function(c,p){let m=1;a.config.rtl&&(p=-p,m=-m),a.setCurrentView(a.date.add(a.date[a._mode+"_start"](new Date(a._date)),p||m,a._mode))},dhx_cal_today_button:function(){a.callEvent("onBeforeTodayDisplayed",[])&&a.setCurrentView(a._currentDate())},dhx_cal_tab:function(){const c=this.getAttribute("data-tab"),p=this.getAttribute("name"),m=c||p.substring(0,p.search("_tab"));a.setCurrentView(a._date,m)},buttons:{delete:function(c){const p=a.locale.labels.confirm_deleting;a._dhtmlx_confirm({message:p,title:a.locale.labels.title_confirm_deleting,callback:function(){a.deleteEvent(c)},config:{ok:a.locale.labels.icon_delete}})},edit:function(c){a.edit(c)},save:function(c){a.editStop(!0)},details:function(c){a.showLightbox(c)},form:function(c){a.showLightbox(c)},cancel:function(c){a.editStop(!1)}}},a._dhtmlx_confirm=function({message:c,title:p,callback:m,config:g}){if(!c)return m();g=g||{};const y={...g,text:c};p&&(y.title=p),m&&(y.callback=function(x){x&&m()}),a.confirm(y)},a.addEventNow=function(c,p,m){let g={};a._isObject(c)&&!a._isDate(c)&&(g=c,c=null);const y=6e4*(this.config.event_duration||this.config.time_step);c||(c=g.start_date||Math.round(a._currentDate().valueOf()/y)*y);let x=new Date(c);if(!p){let E=this.config.first_hour;E>x.getHours()&&(x.setHours(E),c=x.valueOf()),p=c.valueOf()+y}let b=new Date(p);x.valueOf()==b.valueOf()&&b.setTime(b.valueOf()+y),g.start_date=g.start_date||x,g.end_date=g.end_date||b,g.text=g.text||this.locale.labels.new_event,g.id=this._drag_id=g.id||this.uid(),this._drag_mode="new-size",this._loading=!0;const k=this.addEvent(g);return this.callEvent("onEventCreated",[this._drag_id,m]),this._loading=!1,this._drag_event={},this._on_mouse_up(m),k},a._on_dbl_click=function(c,p){if(p=p||c.target,this.config.readonly)return;const m=a._getClassName(p).split(" ")[0];switch(m){case"dhx_scale_holder":case"dhx_scale_holder_now":case"dhx_month_body":case"dhx_wa_day_data":if(!a.config.dblclick_create)break;this.addEventNow(this.getActionData(c).date,null,c);break;case"dhx_cal_event":case"dhx_wa_ev_body":case"dhx_agenda_line":case"dhx_cal_agenda_event_line":case"dhx_grid_event":case"dhx_cal_event_line":case"dhx_cal_event_clear":{const g=this._locate_event(p);if(!this.callEvent("onDblClick",[g,c]))return;this.config.details_on_dblclick||this._table_view||!this.getEvent(g)._timed||!this.config.select?this.showLightbox(g):this.edit(g);break}case"dhx_time_block":case"dhx_cal_container":return;default:{const g=this["dblclick_"+m];if(g)g.call(this,c);else if(p.parentNode&&p!=this)return a._on_dbl_click(c,p.parentNode);break}}},a._get_column_index=function(c){let p=0;if(this._cols){let m=0,g=0;for(;m+this._cols[g]=this._cols.length)for(;p>=1&&this._ignores[Math.floor(p)];)p--}return p},a._week_indexes_from_pos=function(c){if(this._cols){const p=this._get_column_index(c.x);return c.x=Math.min(this._cols.length-1,Math.max(0,Math.ceil(p)-1)),c.y=Math.max(0,Math.ceil(60*c.y/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step),c}return c},a._mouse_coords=function(c){let p;const m=document.body,g=document.documentElement;p=this.$env.isIE||!c.pageX&&!c.pageY?{x:c.clientX+(m.scrollLeft||g.scrollLeft||0)-m.clientLeft,y:c.clientY+(m.scrollTop||g.scrollTop||0)-m.clientTop}:{x:c.pageX,y:c.pageY},this.config.rtl&&this._colsS?(p.x=this.$container.querySelector(".dhx_cal_data").offsetWidth-p.x,p.x+=this.$domHelpers.getAbsoluteLeft(this._obj),this._mode!=="month"&&(p.x-=this.xy.scale_width)):p.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);const y=this.$container.querySelector(".dhx_cal_data");p.y-=this.$domHelpers.getAbsoluteTop(y)-this._els.dhx_cal_data[0].scrollTop,p.ev=c;const x=this["mouse_"+this._mode];if(x)p=x.call(this,p);else if(this._table_view){const b=this._get_column_index(p.x);if(!this._cols||!this._colsS)return p;let k=0;for(k=1;kp.y);k++);p.y=Math.ceil(24*(Math.max(0,b)+7*Math.max(0,k-1))*60/this.config.time_step),(a._drag_mode||this._mode=="month")&&(p.y=24*(Math.max(0,Math.ceil(b)-1)+7*Math.max(0,k-1))*60/this.config.time_step),this._drag_mode=="move"&&a._ignores_detected&&a.config.preserve_length&&(p._ignores=!0,this._drag_event._event_length||(this._drag_event._event_length=this._get_real_event_length(this._drag_event.start_date,this._drag_event.end_date,{x_step:1,x_unit:"day"}))),p.x=0}else p=this._week_indexes_from_pos(p);return p.timestamp=+new Date,p},a._close_not_saved=function(){if(new Date().valueOf()-(a._new_event||0)>500&&a._edit_id){const c=a.locale.labels.confirm_closing;a._dhtmlx_confirm({message:c,title:a.locale.labels.title_confirm_closing,callback:function(){a.editStop(a.config.positive_closing)}}),c&&(this._drag_id=this._drag_pos=this._drag_mode=null)}},a._correct_shift=function(c,p){return c-6e4*(new Date(a._min_date).getTimezoneOffset()-new Date(c).getTimezoneOffset())*(p?-1:1)},a._is_pos_changed=function(c,p){function m(g,y,x){return Math.abs(g-y)>x}return!c||!this._drag_pos||!!(this._drag_pos.has_moved||!this._drag_pos.timestamp||p.timestamp-this._drag_pos.timestamp>100||m(c.ev.clientX,p.ev.clientX,5)||m(c.ev.clientY,p.ev.clientY,5))},a._correct_drag_start_date=function(c){let p;a.matrix&&(p=a.matrix[a._mode]),p=p||{x_step:1,x_unit:"day"},c=new Date(c);let m=1;return(p._start_correction||p._end_correction)&&(m=60*(p.last_hour||0)-(60*c.getHours()+c.getMinutes())||1),1*c+(a._get_fictional_event_length(c,m,p)-m)},a._correct_drag_end_date=function(c,p){let m;a.matrix&&(m=a.matrix[a._mode]),m=m||{x_step:1,x_unit:"day"};const g=1*c+a._get_fictional_event_length(c,p,m);return new Date(1*g-(a._get_fictional_event_length(g,-1,m,-1)+1))},a._on_mouse_move=function(c){if(this._drag_mode){var p=this._mouse_coords(c);if(this._is_pos_changed(this._drag_pos,p)){var m,g;if(this._edit_id!=this._drag_id&&this._close_not_saved(),!this._drag_mode)return;var y=null;if(this._drag_pos&&!this._drag_pos.has_moved&&((y=this._drag_pos).has_moved=!0),this._drag_pos=p,this._drag_pos.has_moved=!0,this._drag_mode=="create"){if(y&&(p=y),this._close_not_saved(),this.unselect(this._select_id),this._loading=!0,m=this._get_date_from_pos(p).valueOf(),!this._drag_start)return this.callEvent("onBeforeEventCreated",[c,this._drag_id])?(this._loading=!1,void(this._drag_start=m)):void(this._loading=!1);g=m,this._drag_start;var x=new Date(this._drag_start),b=new Date(g);this._mode!="day"&&this._mode!="week"||x.getHours()!=b.getHours()||x.getMinutes()!=b.getMinutes()||(b=new Date(this._drag_start+1e3)),this._drag_id=this.uid(),this.addEvent(x,b,this.locale.labels.new_event,this._drag_id,p.fields),this.callEvent("onEventCreated",[this._drag_id,c]),this._loading=!1,this._drag_mode="new-size"}var k,E=this.config.time_step,D=this.getEvent(this._drag_id);if(a.matrix&&(k=a.matrix[a._mode]),k=k||{x_step:1,x_unit:"day"},this._drag_mode=="move")m=this._min_date.valueOf()+6e4*(p.y*this.config.time_step+24*p.x*60),!p.custom&&this._table_view&&(m+=1e3*this.date.time_part(D.start_date)),!this._table_view&&this._dragEventBody&&this._drag_event._move_event_shift===void 0&&(this._drag_event._move_event_shift=m-D.start_date),this._drag_event._move_event_shift&&(m-=this._drag_event._move_event_shift),m=this._correct_shift(m),p._ignores&&this.config.preserve_length&&this._table_view&&k?(m=a._correct_drag_start_date(m),g=a._correct_drag_end_date(m,this._drag_event._event_length)):g=D.end_date.valueOf()-(D.start_date.valueOf()-m);else{if(m=D.start_date.valueOf(),g=D.end_date.valueOf(),this._table_view){var w=this._min_date.valueOf()+p.y*this.config.time_step*6e4+(p.custom?0:864e5);if(this._mode=="month")if(w=this._correct_shift(w,!1),this._drag_from_start){var S=864e5;w<=a.date.date_part(new Date(g+S-1)).valueOf()&&(m=w-S)}else g=w;else this.config.preserve_length?p.resize_from_start?m=a._correct_drag_start_date(w):g=a._correct_drag_end_date(w,0):p.resize_from_start?m=w:g=w}else{var N=this.date.date_part(new Date(D.end_date.valueOf()-1)).valueOf(),M=new Date(N),T=this.config.first_hour,A=60/E*(this.config.last_hour-T);this.config.time_step=1;var H=this._mouse_coords(c);this.config.time_step=E;var $=p.y*E*6e4,P=Math.min(p.y+1,A)*E*6e4,z=6e4*H.y;g=Math.abs($-z)>Math.abs(P-z)?N+P:N+$,g+=6e4*(new Date(g).getTimezoneOffset()-M.getTimezoneOffset()),this._els.dhx_cal_data[0].style.cursor="s-resize",this._mode!="week"&&this._mode!="day"||(g=this._correct_shift(g))}if(this._drag_mode=="new-size")if(g<=this._drag_start){var K=p.shift||(this._table_view&&!p.custom?864e5:0);m=g-(p.shift?0:K),g=this._drag_start+(K||6e4*E)}else m=this._drag_start;else g<=m&&(g=m+6e4*E)}var U=new Date(g-1),q=new Date(m);if(this._drag_mode=="move"&&a.config.limit_drag_out&&(+q<+a._min_date||+g>+a._max_date)){if(+D.start_date<+a._min_date||+D.end_date>+a._max_date)q=new Date(D.start_date),g=new Date(D.end_date);else{var B=g-q;+q<+a._min_date?(q=new Date(a._min_date),p._ignores&&this.config.preserve_length&&this._table_view?(q=new Date(a._correct_drag_start_date(q)),k._start_correction&&(q=new Date(q.valueOf()+k._start_correction)),g=new Date(1*q+this._get_fictional_event_length(q,this._drag_event._event_length,k))):g=new Date(+q+B)):(g=new Date(a._max_date),p._ignores&&this.config.preserve_length&&this._table_view?(k._end_correction&&(g=new Date(g.valueOf()-k._end_correction)),g=new Date(1*g-this._get_fictional_event_length(g,0,k,!0)),q=new Date(1*g-this._get_fictional_event_length(g,this._drag_event._event_length,k,!0)),this._ignores_detected&&(q=a.date.add(q,k.x_step,k.x_unit),g=new Date(1*g-this._get_fictional_event_length(g,0,k,!0)),g=a.date.add(g,k.x_step,k.x_unit))):q=new Date(+g-B))}U=new Date(g-1)}if(!this._table_view&&this._dragEventBody&&!a.config.all_timed&&(!a._get_section_view()&&p.x!=this._get_event_sday({start_date:new Date(m),end_date:new Date(m)})||new Date(m).getHours()=this.config.last_hour)||(B=g-q,S=this._min_date.valueOf()+24*p.x*60*6e4,(g=a.date.date_part(new Date(S))).setHours(this.config.last_hour),U=new Date(g-1),this._drag_mode=="move"&&(q=new Date(+g-B))),this._table_view||U.getDate()==q.getDate()&&U.getHours()=y?H+=" dhx_after":m.valueOf()==b.valueOf()&&(H+=" dhx_now"),this._ignores_detected&&this._ignores[T]&&(H+=" dhx_scale_ignore"),A.className=H+" "+this.templates.month_date_class(m,b),A.setAttribute("data-cell-date",a.templates.format_date(m));var $="dhx_month_body",P="dhx_month_head";if(T===0&&this.config.left_border&&($+=" dhx_month_body_border",P+=" dhx_month_head_border"),this._ignores_detected&&this._ignores[T])A.appendChild(document.createElement("div")),A.appendChild(document.createElement("div"));else{A.style.width=k[T],this._waiAria.monthCellAttr(A,m);var z=document.createElement("div");z.style.height=a.xy.month_head_height+"px",z.className=P,z.innerHTML=this.templates.month_day(m),A.appendChild(z);var K=document.createElement("div");K.className=$,A.appendChild(K)}var U=m.getDate();(m=this.date.add(m,1,"day")).getDate()-U>1&&(m=new Date(m.getFullYear(),m.getMonth(),U+1,12,0))}a._colsS.heights[E]=S,S+=w(E)}return this._min_date=x,this._max_date=m,c.innerHTML="",c.appendChild(N),this._scales={},c.querySelectorAll("[data-cell-date]").forEach(q=>{const B=a.templates.parse_date(q.getAttribute("data-cell-date")),ke=q.querySelector(".dhx_month_body");this._scales[+B]=ke,this.callEvent("onScaleAdd",[this._scales[+B],B])}),this._max_date},a._reset_month_scale=function(c,p,m,g){var y=a.date.add(p,1,"month"),x=a._currentDate();this.date.date_part(x),this.date.date_part(m),g=g||Math.ceil(Math.round((y.valueOf()-m.valueOf())/864e5)/7);var b=Math.floor(c.clientHeight/g)-this.xy.month_head_height;return this._colsS.height=b+this.xy.month_head_height,this._colsS.heights=[],a._render_month_scale(c,p,m,g)},a.getView=function(c){return c||(c=a.getState().mode),a.matrix&&a.matrix[c]?a.matrix[c]:a._props&&a._props[c]?a._props[c]:null},a.getLabel=function(c,p){for(var m=this.config.lightbox.sections,g=0;ga.getState().max_date.valueOf()&&(g+=f(p,a.getState().max_date))):g=Math.round(y/60/60/1e3/24);for(var k=!0;bA.valueOf()&&(D+=S-A),S.valueOf()>T.valueOf()?D+=m._start_correction:D+=60*S.getHours()*60*1e3+60*S.getMinutes()*1e3,w.valueOf()`,"gm"),l=new RegExp(" +","gm");function h(c){return(c+"").replace(o," ").replace(l," ")}var v=new RegExp("'","gm");function u(c){return(c+"").replace(v,"'")}for(var f in a._waiAria={getAttributeString:function(c){var p=[" "];for(var m in c)if(typeof c[m]!="function"&&typeof c[m]!="object"){var g=u(h(c[m]));p.push(m+"='"+g+"'")}return p.push(" "),p.join(" ")},setAttributes:function(c,p){for(var m in p)c.setAttribute(m,h(p[m]));return c},labelAttr:function(c,p){return this.setAttributes(c,{"aria-label":p})},label:function(c){return a._waiAria.getAttributeString({"aria-label":c})},hourScaleAttr:function(c,p){this.labelAttr(c,p)},monthCellAttr:function(c,p){this.labelAttr(c,a.templates.day_date(p))},navBarDateAttr:function(c,p){this.labelAttr(c,p)},dayHeaderAttr:function(c,p){this.labelAttr(c,p)},dayColumnAttr:function(c,p){this.dayHeaderAttr(c,a.templates.day_date(p))},headerButtonsAttributes:function(c,p){return this.setAttributes(c,{role:"button","aria-label":p})},headerToggleState:function(c,p){return this.setAttributes(c,{"aria-pressed":p?"true":"false"})},getHeaderCellAttr:function(c){return a._waiAria.getAttributeString({"aria-label":c})},eventAttr:function(c,p){this._eventCommonAttr(c,p)},_eventCommonAttr:function(c,p){p.setAttribute("aria-label",h(a.templates.event_text(c.start_date,c.end_date,c))),a.config.readonly&&p.setAttribute("aria-readonly",!0),c.$dataprocessor_class&&p.setAttribute("aria-busy",!0),p.setAttribute("aria-selected",a.getState().select_id==c.id?"true":"false")},setEventBarAttr:function(c,p){this._eventCommonAttr(c,p)},_getAttributes:function(c,p){var m={setAttribute:function(g,y){this[g]=y}};return c.apply(this,[p,m]),m},eventBarAttrString:function(c){return this.getAttributeString(this._getAttributes(this.setEventBarAttr,c))},agendaHeadAttrString:function(){return this.getAttributeString({role:"row"})},agendaHeadDateString:function(c){return this.getAttributeString({role:"columnheader","aria-label":c})},agendaHeadDescriptionString:function(c){return this.agendaHeadDateString(c)},agendaDataAttrString:function(){return this.getAttributeString({role:"grid"})},agendaEventAttrString:function(c){var p=this._getAttributes(this._eventCommonAttr,c);return p.role="row",this.getAttributeString(p)},agendaDetailsBtnString:function(){return this.getAttributeString({role:"button","aria-label":a.locale.labels.icon_details})},gridAttrString:function(){return this.getAttributeString({role:"grid"})},gridRowAttrString:function(c){return this.agendaEventAttrString(c)},gridCellAttrString:function(c,p,m){return this.getAttributeString({role:"gridcell","aria-label":[p.label===void 0?p.id:p.label,": ",m]})},mapAttrString:function(){return this.gridAttrString()},mapRowAttrString:function(c){return this.gridRowAttrString(c)},mapDetailsBtnString:function(){return this.agendaDetailsBtnString()},minicalHeader:function(c,p){this.setAttributes(c,{id:p+"","aria-live":"assertice","aria-atomic":"true"})},minicalGrid:function(c,p){this.setAttributes(c,{"aria-labelledby":p+"",role:"grid"})},minicalRow:function(c){this.setAttributes(c,{role:"row"})},minicalDayCell:function(c,p){var m=p.valueOf()=a._min_date.valueOf();this.setAttributes(c,{role:"gridcell","aria-label":a.templates.day_date(p),"aria-selected":m?"true":"false"})},minicalHeadCell:function(c){this.setAttributes(c,{role:"columnheader"})},weekAgendaDayCell:function(c,p){var m=c.querySelector(".dhx_wa_scale_bar"),g=c.querySelector(".dhx_wa_day_data"),y=a.uid()+"";this.setAttributes(m,{id:y}),this.setAttributes(g,{"aria-labelledby":y})},weekAgendaEvent:function(c,p){this.eventAttr(p,c)},lightboxHiddenAttr:function(c){c.setAttribute("aria-hidden","true")},lightboxVisibleAttr:function(c){c.setAttribute("aria-hidden","false")},lightboxSectionButtonAttrString:function(c){return this.getAttributeString({role:"button","aria-label":c,tabindex:"0"})},yearHeader:function(c,p){this.setAttributes(c,{id:p+""})},yearGrid:function(c,p){this.minicalGrid(c,p)},yearHeadCell:function(c){return this.minicalHeadCell(c)},yearRow:function(c){return this.minicalRow(c)},yearDayCell:function(c){this.setAttributes(c,{role:"gridcell"})},lightboxAttr:function(c){c.setAttribute("role","dialog"),c.setAttribute("aria-hidden","true"),c.firstChild.setAttribute("role","heading")},lightboxButtonAttrString:function(c){return this.getAttributeString({role:"button","aria-label":a.locale.labels[c],tabindex:"0"})},eventMenuAttrString:function(c){return this.getAttributeString({role:"button","aria-label":a.locale.labels[c]})},lightboxHeader:function(c,p){c.setAttribute("aria-label",p)},lightboxSelectAttrString:function(c){var p="";switch(c){case"%Y":p=a.locale.labels.year;break;case"%m":p=a.locale.labels.month;break;case"%d":p=a.locale.labels.day;break;case"%H:%i":p=a.locale.labels.hour+" "+a.locale.labels.minute}return a._waiAria.getAttributeString({"aria-label":p})},messageButtonAttrString:function(c){return"tabindex='0' role='button' aria-label='"+c+"'"},messageInfoAttr:function(c){c.setAttribute("role","alert")},messageModalAttr:function(c,p){c.setAttribute("role","dialog"),p&&c.setAttribute("aria-labelledby",p)},quickInfoAttr:function(c){c.setAttribute("role","dialog")},quickInfoHeaderAttrString:function(){return" role='heading' "},quickInfoHeader:function(c,p){c.setAttribute("aria-label",p)},quickInfoButtonAttrString:function(c){return a._waiAria.getAttributeString({role:"button","aria-label":c,tabindex:"0"})},tooltipAttr:function(c){c.setAttribute("role","tooltip")},tooltipVisibleAttr:function(c){c.setAttribute("aria-hidden","false")},tooltipHiddenAttr:function(c){c.setAttribute("aria-hidden","true")}},a._waiAria)a._waiAria[f]=function(c){return function(){return a.config.wai_aria_attributes?c.apply(this,arguments):" "}}(a._waiAria[f])})()}(i),i.utils=ee,i.$domHelpers=se,i.utils.dom=se,i.uid=ee.uid,i.mixin=ee.mixin,i.defined=ee.defined,i.assert=function(a){return function(o,l){o||a.config.show_errors&&a.callEvent("onError",[l])!==!1&&(a.message?a.message({type:"error",text:l,expire:-1}):console.log(l))}}(i),i.copy=ee.copy,i._createDatePicker=function(a,o){return new Da(i,a,o)},i._getFocusableNodes=se.getFocusableNodes,i._getClassName=se.getClassName,i._locate_css=se.locateCss;const t=Wt(i);var r,d,n;i.utils.mixin(i,t),i.env=i.$env=Yt,i.Promise=window.Promise,function(a){a.destructor=function(){for(var o in a.callEvent("onDestroy",[]),this.clearAll(),this.$container&&(this.$container.innerHTML=""),this._eventRemoveAll&&this._eventRemoveAll(),this.resetLightbox&&this.resetLightbox(),this._dp&&this._dp.destructor&&this._dp.destructor(),this.detachAllEvents(),this)o.indexOf("$")===0&&delete this[o];a.$destroyed=!0}}(i),function(a){function o(l,h){var v={method:l};if(h.length===0)throw new Error("Arguments list of query is wrong.");if(h.length===1)return typeof h[0]=="string"?(v.url=h[0],v.async=!0):(v.url=h[0].url,v.async=h[0].async||!0,v.callback=h[0].callback,v.headers=h[0].headers),h[0].data?typeof h[0].data!="string"?v.data=Oe(h[0].data):v.data=h[0].data:v.data="",v;switch(v.url=h[0],l){case"GET":case"DELETE":v.callback=h[1],v.headers=h[2];break;case"POST":case"PUT":h[1]?typeof h[1]!="string"?v.data=Oe(h[1]):v.data=h[1]:v.data="",v.callback=h[2],v.headers=h[3]}return v}a.Promise=window.Promise,a.ajax={cache:!0,method:"get",serializeRequestParams:Oe,parse:function(l){return typeof l!="string"?l:(l=l.replace(/^[\s]+/,""),typeof DOMParser>"u"||a.$env.isIE?window.ActiveXObject!==void 0&&((h=new window.ActiveXObject("Microsoft.XMLDOM")).async="false",h.loadXML(l)):h=new DOMParser().parseFromString(l,"text/xml"),h);var h},xmltop:function(l,h,v){if(h.status===void 0||h.status<400){var u=h.responseXML?h.responseXML||h:this.parse(h.responseText||h);if(u&&u.documentElement!==null&&!u.getElementsByTagName("parsererror").length)return u.getElementsByTagName(l)[0]}return v!==-1&&a.callEvent("onLoadXMLError",["Incorrect XML",arguments[1],v]),document.createElement("DIV")},xpath:function(l,h){if(h.nodeName||(h=h.responseXML||h),a.$env.isIE)return h.selectNodes(l)||[];for(var v,u=[],f=(h.ownerDocument||h).evaluate(l,h,null,XPathResult.ANY_TYPE,null);v=f.iterateNext();)u.push(v);return u},query:function(l){return this._call(l.method||"GET",l.url,l.data||"",l.async||!0,l.callback,l.headers)},get:function(l,h,v){var u=o("GET",arguments);return this.query(u)},getSync:function(l,h){var v=o("GET",arguments);return v.async=!1,this.query(v)},put:function(l,h,v,u){var f=o("PUT",arguments);return this.query(f)},del:function(l,h,v){var u=o("DELETE",arguments);return this.query(u)},post:function(l,h,v,u){arguments.length==1?h="":arguments.length==2&&typeof h=="function"&&(v=h,h="");var f=o("POST",arguments);return this.query(f)},postSync:function(l,h,v){h=h===null?"":String(h);var u=o("POST",arguments);return u.async=!1,this.query(u)},_call:function(l,h,v,u,f,c){return new a.Promise((function(p,m){var g=typeof XMLHttpRequest===void 0||a.$env.isIE?new window.ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest,y=navigator.userAgent.match(/AppleWebKit/)!==null&&navigator.userAgent.match(/Qt/)!==null&&navigator.userAgent.match(/Safari/)!==null;if(u&&g.addEventListener("readystatechange",function(){if(g.readyState==4||y&&g.readyState==3){if((g.status!=200||g.responseText==="")&&!a.callEvent("onAjaxError",[g]))return;setTimeout(function(){typeof f=="function"&&f.apply(window,[{xmlDoc:g,filePath:h}]),p(g),typeof f=="function"&&(f=null,g=null)},0)}}),l!="GET"||this.cache||(h+=(h.indexOf("?")>=0?"&":"?")+"dhxr"+new Date().getTime()+"=1"),g.open(l,h,u),c)for(var x in c)g.setRequestHeader(x,c[x]);else l.toUpperCase()=="POST"||l=="PUT"||l=="DELETE"?g.setRequestHeader("Content-Type","application/x-www-form-urlencoded"):l=="GET"&&(v=null);if(g.setRequestHeader("X-Requested-With","XMLHttpRequest"),g.send(v),!u)return{xmlDoc:g,filePath:h}}).bind(this))},urlSeparator:function(l){return l.indexOf("?")!=-1?"&":"?"}},a.$ajax=a.ajax}(i),Ut(i),function(a){a.config={default_date:"%j %M %Y",month_date:"%F %Y",load_date:"%Y-%m-%d",week_date:"%l",day_date:"%D %j",hour_date:"%H:%i",month_day:"%d",date_format:"%Y-%m-%d %H:%i",api_date:"%d-%m-%Y %H:%i",parse_exact_format:!1,preserve_length:!0,time_step:5,displayed_event_color:"#ff4a4a",displayed_event_text_color:"#ffef80",wide_form:0,day_column_padding:8,use_select_menu_space:!0,fix_tab_position:!0,start_on_monday:!0,first_hour:0,last_hour:24,readonly:!1,drag_resize:!0,drag_move:!0,drag_create:!0,drag_event_body:!0,dblclick_create:!0,details_on_dblclick:!0,edit_on_create:!0,details_on_create:!0,header:null,hour_size_px:44,resize_month_events:!1,resize_month_timed:!1,responsive_lightbox:!1,separate_short_events:!0,rtl:!1,cascade_event_display:!1,cascade_event_count:4,cascade_event_margin:30,multi_day:!0,multi_day_height_limit:200,drag_lightbox:!0,preserve_scroll:!0,select:!0,undo_deleted:!0,server_utc:!1,touch:!0,touch_tip:!0,touch_drag:500,touch_swipe_dates:!1,quick_info_detached:!0,positive_closing:!1,drag_highlight:!0,limit_drag_out:!1,icons_edit:["icon_save","icon_cancel"],icons_select:["icon_details","icon_edit","icon_delete"],buttons_left:["dhx_save_btn","dhx_cancel_btn"],buttons_right:["dhx_delete_btn"],lightbox:{sections:[{name:"description",map_to:"text",type:"textarea",focus:!0},{name:"time",height:72,type:"time",map_to:"auto"}]},highlight_displayed_event:!0,left_border:!1,ajax_error:"alert",delay_render:0,timeline_swap_resize:!0,wai_aria_attributes:!0,wai_aria_application_role:!0,csp:"auto",event_attribute:"data-event-id",show_errors:!0},a.config.buttons_left.$initial=a.config.buttons_left.join(),a.config.buttons_right.$initial=a.config.buttons_right.join(),a._helpers={parseDate:function(o){return(a.templates.xml_date||a.templates.parse_date)(o)},formatDate:function(o){return(a.templates.xml_format||a.templates.format_date)(o)}},a.templates={},a.init_templates=function(){var o=a.date.date_to_str,l=a.config;(function(h,v){for(var u in v)h[u]||(h[u]=v[u])})(a.templates,{day_date:o(l.default_date),month_date:o(l.month_date),week_date:function(h,v){return l.rtl?a.templates.day_date(a.date.add(v,-1,"day"))+" – "+a.templates.day_date(h):a.templates.day_date(h)+" – "+a.templates.day_date(a.date.add(v,-1,"day"))},day_scale_date:o(l.default_date),time_slot_text:function(h){return""},time_slot_class:function(h){return""},month_scale_date:o(l.week_date),week_scale_date:o(l.day_date),hour_scale:o(l.hour_date),time_picker:o(l.hour_date),event_date:o(l.hour_date),month_day:o(l.month_day),load_format:o(l.load_date),format_date:o(l.date_format,l.server_utc),parse_date:a.date.str_to_date(l.date_format,l.server_utc),api_date:a.date.str_to_date(l.api_date,!1,!1),event_header:function(h,v,u){return u._mode==="small"||u._mode==="smallest"?a.templates.event_date(h):a.templates.event_date(h)+" - "+a.templates.event_date(v)},event_text:function(h,v,u){return u.text},event_class:function(h,v,u){return""},month_date_class:function(h){return""},week_date_class:function(h){return""},event_bar_date:function(h,v,u){return a.templates.event_date(h)},event_bar_text:function(h,v,u){return u.text},month_events_link:function(h,v){return"View more("+v+" events)"},drag_marker_class:function(h,v,u){return""},drag_marker_content:function(h,v,u){return""},tooltip_date_format:a.date.date_to_str("%Y-%m-%d %H:%i"),tooltip_text:function(h,v,u){return"Event: "+u.text+"
Start date: "+a.templates.tooltip_date_format(h)+"
End date: "+a.templates.tooltip_date_format(v)},calendar_month:o("%F %Y"),calendar_scale_date:o("%D"),calendar_date:o("%d"),calendar_time:o("%d-%m-%Y")}),this.callEvent("onTemplatesReady",[])}}(i),function(a){a._events={},a.clearAll=function(){this._events={},this._loaded={},this._edit_id=null,this._select_id=null,this._drag_id=null,this._drag_mode=null,this._drag_pos=null,this._new_event=null,this.clear_view(),this.callEvent("onClearAll",[])},a.addEvent=function(o,l,h,v,u){if(!arguments.length)return this.addEventNow();var f=o;arguments.length!=1&&((f=u||{}).start_date=o,f.end_date=l,f.text=h,f.id=v),f.id=f.id||a.uid(),f.text=f.text||"",typeof f.start_date=="string"&&(f.start_date=this.templates.api_date(f.start_date)),typeof f.end_date=="string"&&(f.end_date=this.templates.api_date(f.end_date));var c=6e4*(this.config.event_duration||this.config.time_step);f.start_date.valueOf()==f.end_date.valueOf()&&f.end_date.setTime(f.end_date.valueOf()+c),f.start_date.setMilliseconds(0),f.end_date.setMilliseconds(0),f._timed=this.isOneDayEvent(f);var p=!this._events[f.id];return this._events[f.id]=f,this.event_updated(f),this._loading||this.callEvent(p?"onEventAdded":"onEventChanged",[f.id,f]),f.id},a.deleteEvent=function(o,l){var h=this._events[o];(l||this.callEvent("onBeforeEventDelete",[o,h])&&this.callEvent("onConfirmedBeforeEventDelete",[o,h]))&&(h&&(a.getState().select_id==o&&a.unselect(),delete this._events[o],this.event_updated(h),this._drag_id==h.id&&(this._drag_id=null,this._drag_mode=null,this._drag_pos=null)),this.callEvent("onEventDeleted",[o,h]))},a.getEvent=function(o){return this._events[o]},a.setEvent=function(o,l){l.id||(l.id=o),this._events[o]=l},a.for_rendered=function(o,l){for(var h=this._rendered.length-1;h>=0;h--)this._rendered[h].getAttribute(this.config.event_attribute)==o&&l(this._rendered[h],h)},a.changeEventId=function(o,l){if(o!=l){var h=this._events[o];h&&(h.id=l,this._events[l]=h,delete this._events[o]),this.for_rendered(o,function(v){v.setAttribute("event_id",l),v.setAttribute(a.config.event_attribute,l)}),this._select_id==o&&(this._select_id=l),this._edit_id==o&&(this._edit_id=l),this.callEvent("onEventIdChange",[o,l])}},function(){for(var o=["text","Text","start_date","StartDate","end_date","EndDate"],l=function(u){return function(f){return a.getEvent(f)[u]}},h=function(u){return function(f,c){var p=a.getEvent(f);p[u]=c,p._changed=!0,p._timed=this.isOneDayEvent(p),a.event_updated(p,!0)}},v=0;vv||h<=u)&&(l>=v||l24-(this.config.last_hour-this.config.first_hour)||lu))}return!1},a.isOneDayEvent=function(o){var l=new Date(o.end_date.valueOf()-1);return o.start_date.getFullYear()===l.getFullYear()&&o.start_date.getMonth()===l.getMonth()&&o.start_date.getDate()===l.getDate()&&o.end_date.valueOf()-o.start_date.valueOf()<864e5},a.get_visible_events=function(o){var l=[];for(var h in this._events)this.is_visible_events(this._events[h])&&(o&&!this._events[h]._timed||this.filter_event(h,this._events[h])&&l.push(this._events[h]));return l},a.filter_event=function(o,l){var h=this["filter_"+this._mode];return!h||h(o,l)},a._is_main_area_event=function(o){return!!o._timed},a.render_view_data=function(o,l){var h=!1;if(!o){if(h=!0,this._not_render)return void(this._render_wait=!0);this._render_wait=!1,this.clear_view(),o=this.get_visible_events(!(this._table_view||this.config.multi_day))}for(var v=0,u=o.length;vg){var y=g;1*this.config.max_month_events!==this.config.max_month_events||u[p]<=this.config.max_month_events?y=u[p]*h:(this.config.max_month_events+1)*h>g&&(y=(this.config.max_month_events+1)*h),c[p].style.height=y+this.xy.month_head_height+"px"}u[p]=(u[p-1]||0)+a._get_first_visible_cell(m).offsetHeight}u.unshift(0);const M=this.$container.querySelector(".dhx_cal_data");if(M.offsetHeightM.id?1:-1:N.start_date>M.start_date?1:-1});var h=[],v=[];this._min_mapped_duration=Math.floor(60*this.xy.min_event_height/this.config.hour_size_px);for(var u=0;uS&&(S=y[E]._sorder);f._sorder=S+1,f._inner=!1}else f._sorder=0;y.splice(b,b==y.length?0:1,f),y.length>(y.max_count||0)?(y.max_count=y.length,f._count=y.length):f._count=f._count?f._count:1}(m=this.config.last_hour)&&(v.push(f),o[u]=f=this._copy_event(f),m=this.config.last_hour&&(f.end_date.setMinutes(0),f.end_date.setHours(this.config.last_hour)),f.start_date>f.end_date||m==this.config.last_hour)&&(o.splice(u,1),u--)}}if(!l){for(u=0;uh.id?1:-1:l.start_date>h.start_date?1:-1})},a._is_any_multiday_cell_visible=function(o,l,h){var v=this._cols.length,u=!1,f=o,c=!0,p=new Date(l);for(a.date.day_start(new Date(l)).valueOf()!=l.valueOf()&&(p=a.date.day_start(p),p=a.date.add(p,1,"day"));fthis._max_date&&(x.last_chunk=!1,k=this._max_date);var E=this.locate_holder_day(b,!1,g);if(g._sday=E%c,!this._ignores[g._sday]||!g._timed){var D=this.locate_holder_day(k,!0,g)||c;if(g._eday=D%c||c,g._length=D-E,g._sweek=Math.floor((this._correct_shift(b.valueOf(),1)-this._min_date.valueOf())/(864e5*c)),a._is_any_multiday_cell_visible(b,k,g)){var w,S=u[g._sweek];for(w=0;w"+o.text+"",this._editor=N.querySelector("textarea"),a.event(this._editor,"keydown",function(P){if(P.shiftKey)return!0;var z=P.keyCode;z==a.keys.edit_save&&a.editStop(!0),z==a.keys.edit_cancel&&a.editStop(!1),z!=a.keys.edit_save&&z!=a.keys.edit_cancel||P.preventDefault&&P.preventDefault()}),a.event(this._editor,"selectstart",function(P){return P.cancelBubble=!0,!0}),a._focus(this._editor,!0),this._els.dhx_cal_data[0].scrollLeft=0}if(this.xy.menu_width!==0&&this._select_id==o.id){this.config.cascade_event_display&&this._drag_mode&&(w.style.zIndex=1);for(var M,T=this.config["icons_"+(this._edit_id==o.id?"edit":"select")],A="",H=0;H
`}var $=this._render_v_bar(o,b-v-1,p,v,null,"","
",A,!0);o.color&&$.style.setProperty("--dhx-scheduler-event-background",o.color),o.textColor&&$.style.setProperty("--dhx-scheduler-event-color",o.textColor),this._els.dhx_cal_data[0].appendChild($),this._rendered.push($)}this.config.drag_highlight&&this._drag_id==o.id&&this.highlightEventPosition(o)}}},a._render_v_bar=function(o,l,h,v,u,f,c,p,m){var g=document.createElement("div"),y=o.id,x=m?"dhx_cal_event dhx_cal_select_menu":"dhx_cal_event",b=a.getState();b.drag_id==o.id&&(x+=" dhx_cal_event_drag"),b.select_id==o.id&&(x+=" dhx_cal_event_selected");var k=a.templates.event_class(o.start_date,o.end_date,o);k&&(x=x+" "+k),this.config.cascade_event_display&&(x+=" dhx_cal_event_cascade");var E=v-1,D=`
`;g.innerHTML=D;var w=g.cloneNode(!0).firstChild;if(!m&&a.renderEvent(w,o,v,u,c,p))return o.color&&w.style.setProperty("--dhx-scheduler-event-background",o.color),o.textColor&&w.style.setProperty("--dhx-scheduler-event-color",o.textColor),w;w=g.firstChild,o.color&&w.style.setProperty("--dhx-scheduler-event-background",o.color),o.textColor&&w.style.setProperty("--dhx-scheduler-event-color",o.textColor);var S='
 
';S+='
'+c+"
",S+='
'+p+"
";var N="dhx_event_resize dhx_footer";return(m||o._drag_resize===!1)&&(N="dhx_resize_denied "+N),S+='
',w.innerHTML=S,w},a.renderEvent=function(){return!1},a.locate_holder=function(o){return this._mode=="day"?this._els.dhx_cal_data[0].firstChild:this._els.dhx_cal_data[0].childNodes[o]},a.locate_holder_day=function(o,l){var h=Math.floor((this._correct_shift(o,1)-this._min_date)/864e5);return l&&this.date.time_part(o)&&h++,h},a._get_dnd_order=function(o,l,h){if(!this._drag_event)return o;this._drag_event._orig_sorder?o=this._drag_event._orig_sorder:this._drag_event._orig_sorder=o;for(var v=l*o;v+l>h;)o--,v-=l;return Math.max(o,0)},a._get_event_bar_pos=function(o){var l=this.config.rtl,h=this._colsS,v=h[o._sday],u=h[o._eday];l&&(v=h[h.col_length]-h[o._eday]+h[0],u=h[h.col_length]-h[o._sday]+h[0]),u==v&&(u=h[o._eday+1]);var f=this.xy.bar_height,c=o._sorder;if(o.id==this._drag_id){var p=h.heights[o._sweek+1]-h.heights[o._sweek]-this.xy.month_head_height;c=a._get_dnd_order(c,f,p)}var m=c*f;return{x:v,x2:u,y:h.heights[o._sweek]+(h.height?this.xy.month_scale_height+2:2)+m}},a.render_event_bar=function(o){var l=this._rendered_location,h=this._get_event_bar_pos(o),v=h.y,u=h.x,f=h.x2,c="";if(f){var p=a.config.resize_month_events&&this._mode=="month"&&(!o._timed||a.config.resize_month_timed),m=document.createElement("div"),g=o.hasOwnProperty("_first_chunk")&&o._first_chunk,y=o.hasOwnProperty("_last_chunk")&&o._last_chunk,x=p&&(o._timed||g),b=p&&(o._timed||y),k=!0,E="dhx_cal_event_clear";o._timed&&!p||(k=!1,E="dhx_cal_event_line"),g&&(E+=" dhx_cal_event_line_start"),y&&(E+=" dhx_cal_event_line_end"),x&&(c+="
"),b&&(c+="
");var D=a.templates.event_class(o.start_date,o.end_date,o);D&&(E+=" "+D);var w=o.color?"--dhx-scheduler-event-background:"+o.color+";":"",S=o.textColor?"--dhx-scheduler-event-color:"+o.textColor+";":"",N=["position:absolute","top:"+v+"px","left:"+u+"px","width:"+(f-u-(k?1:0))+"px","height:"+(this.xy.bar_height-2)+"px",S,w,o._text_style||""].join(";"),M="
";p&&(M+=c),a.getState().mode=="month"&&(o=a.getEvent(o.id)),o._timed&&(M+=`${a.templates.event_bar_date(o.start_date,o.end_date,o)}`),M+="
",M+=a.templates.event_bar_text(o.start_date,o.end_date,o)+"
",M+="
",M+="
",m.innerHTML=M,this._rendered.push(m.firstChild),l.appendChild(m.firstChild)}},a._locate_event=function(o){for(var l=null;o&&!l&&o.getAttribute;)l=o.getAttribute(this.config.event_attribute),o=o.parentNode;return l},a.edit=function(o){this._edit_id!=o&&(this.editStop(!1,o),this._edit_id=o,this.updateEvent(o))},a.editStop=function(o,l){if(!l||this._edit_id!=l){var h=this.getEvent(this._edit_id);h&&(o&&(h.text=this._editor.value),this._edit_id=null,this._editor=null,this.updateEvent(h.id),this._edit_stop_event(h,o))}},a._edit_stop_event=function(o,l){this._new_event?(l?this.callEvent("onEventAdded",[o.id,o]):o&&this.deleteEvent(o.id,!0),this._new_event=null):l&&this.callEvent("onEventChanged",[o.id,o])},a.getEvents=function(o,l){var h=[];for(var v in this._events){var u=this._events[v];u&&(!o&&!l||u.start_dateo)&&h.push(u)}return h},a.getRenderedEvent=function(o){if(o){for(var l=a._rendered,h=0;h-1&&(y=y.split(a.config.section_delimiter)[0])}var x=p.getSectionTop(y),b=p.posFromDate(g.start_date),k=a.$container.querySelector(".dhx_timeline_data_wrapper");if(b-=(k.offsetWidth-p.dx)/2,x=x-k.offsetHeight/2+p.dy/2,p._smartRenderingEnabled())var E=p.attachEvent("onScroll",function(){D(),p.detachEvent(E)});p.scrollTo({left:b,top:x}),p._smartRenderingEnabled()||D()}}else D();a.callEvent("onAfterEventDisplay",[h,l])}function D(){h.color=f,h.textColor=c}}}(i),function(a){a._append_drag_marker=function(o){if(!o.parentNode){var l=a._els.dhx_cal_data[0].lastChild,h=a._getClassName(l);h.indexOf("dhx_scale_holder")<0&&l.previousSibling&&(l=l.previousSibling),h=a._getClassName(l),l&&h.indexOf("dhx_scale_holder")===0&&l.appendChild(o)}},a._update_marker_position=function(o,l){var h=a._calc_event_y(l,0);o.style.top=h.top+"px",o.style.height=h.height+"px"},a.highlightEventPosition=function(o){var l=document.createElement("div");l.setAttribute("event_id",o.id),l.setAttribute(this.config.event_attribute,o.id),this._rendered.push(l),this._update_marker_position(l,o);var h=this.templates.drag_marker_class(o.start_date,o.end_date,o),v=this.templates.drag_marker_content(o.start_date,o.end_date,o);l.className="dhx_drag_marker",h&&(l.className+=" "+h),v&&(l.innerHTML=v),this._append_drag_marker(l)}}(i),Vt(i),function(a){function o(){const l=a.config.csp===!0,h=!!window.Sfdc||!!window.$A||window.Aura||"$shadowResolver$"in document.body;return l||h?a.$root:document.body}a._lightbox_controls={},a.formSection=function(l){for(var h=this.config.lightbox.sections,v=0;v
"},set_value:function(l,h,v,u){l.innerHTML=h||""},get_value:function(l,h,v){return l.innerHTML||""},focus:function(l){}},textarea:{render:function(l){return`
`},set_value:function(l,h,v){a.form_blocks.textarea._get_input(l).value=h||""},get_value:function(l,h){return a.form_blocks.textarea._get_input(l).value},focus:function(l){var h=a.form_blocks.textarea._get_input(l);a._focus(h,!0)},_get_input:function(l){return l.getElementsByTagName("textarea")[0]}},select:{render:function(l){for(var h="
"},set_value:function(l,h,v,u){var f=l.firstChild;!f._dhx_onchange&&u.onchange&&(a.event(f,"change",u.onchange),f._dhx_onchange=!0),h===void 0&&(h=(f.options[0]||{}).value),f.value=h||""},get_value:function(l,h){return l.firstChild.value},focus:function(l){var h=l.firstChild;a._focus(h,!0)}},time:{render:function(l){l.time_format||(l.time_format=["%H:%i","%d","%m","%Y"]),l._time_format_order={};var h=l.time_format,v=a.config,u=a.date.date_part(a._currentDate()),f=1440,c=0;a.config.limit_time_select&&(f=60*v.last_hour+1,c=60*v.first_hour,u.setHours(v.first_hour));for(var p="",m=0;m0&&(p+=" ");var y="",x="";switch(g){case"%Y":var b,k,E;y="dhx_lightbox_year_select",l._time_format_order[3]=m,l.year_range&&(isNaN(l.year_range)?l.year_range.push&&(k=l.year_range[0],E=l.year_range[1]):b=l.year_range),b=b||10;var D=D||Math.floor(b/2);k=k||u.getFullYear()-D,E=E||k+b;for(var w=k;w"+w+"";break;case"%m":for(y="dhx_lightbox_month_select",l._time_format_order[2]=m,w=0;w<12;w++)x+="";break;case"%d":for(y="dhx_lightbox_day_select",l._time_format_order[1]=m,w=1;w<32;w++)x+="";break;case"%H:%i":y="dhx_lightbox_time_select",l._time_format_order[0]=m,w=c;var S=u.getDate();for(l._time_values=[];w"+this.templates.time_picker(u)+"",l._time_values.push(w),u.setTime(u.valueOf()+60*this.config.time_step*1e3),w=24*(u.getDate()!=S?1:0)*60+60*u.getHours()+u.getMinutes()}if(x){var N=a._waiAria.lightboxSelectAttrString(g);p+=" "}}return"
"+p+"  –  "+p+"
"},set_value:function(l,h,v,u){var f,c,p=a.config,m=l.getElementsByTagName("select"),g=u._time_format_order;if(p.full_day){if(!l._full_day){var y="";a.config.wide_form||(y=l.previousSibling.innerHTML+y),l.previousSibling.innerHTML=y,l._full_day=!0}var x=l.previousSibling.getElementsByTagName("input")[0];x.checked=a.date.time_part(v.start_date)===0&&a.date.time_part(v.end_date)===0,m[g[0]].disabled=x.checked,m[g[0]+m.length/2].disabled=x.checked,x.$_eventAttached||(x.$_eventAttached=!0,a.event(x,"click",function(){if(x.checked){var D={};a.form_blocks.time.get_value(l,D,u),f=a.date.date_part(D.start_date),(+(c=a.date.date_part(D.end_date))==+f||+c>=+f&&(v.end_date.getHours()!==0||v.end_date.getMinutes()!==0))&&(c=a.date.add(c,1,"day"))}else f=null,c=null;m[g[0]].disabled=x.checked,m[g[0]+m.length/2].disabled=x.checked,E(m,0,f||v.start_date),E(m,4,c||v.end_date)}))}if(p.auto_end_date&&p.event_duration)for(var b=function(){p.auto_end_date&&p.event_duration&&(f=new Date(m[g[3]].value,m[g[2]].value,m[g[1]].value,0,m[g[0]].value),c=new Date(f.getTime()+60*a.config.event_duration*1e3),E(m,4,c))},k=0;k<4;k++)m[k].$_eventAttached||(m[k].$_eventAttached=!0,a.event(m[k],"change",b));function E(D,w,S){for(var N=u._time_values,M=60*S.getHours()+S.getMinutes(),T=M,A=!1,H=0;H";for(var u=0;u
"+a.locale.labels[v[u]]+"
";v=this.config.buttons_right;var f=a.config.rtl;for(u=0;u
",h+="
"+a.locale.labels[v[u]]+"
";h+="
",h+="
",l.innerHTML=h,a.config.drag_lightbox&&(a.event(l.firstChild,"mousedown",a._ready_to_dnd),a.event(l.firstChild,"selectstart",function(b){return b.preventDefault(),!1}),l.firstChild.style.cursor="move",a._init_dnd_events()),this._waiAria.lightboxAttr(l),this.show_cover(),this._cover.insertBefore(l,this._cover.firstChild),this._lightbox=l;var c=this.config.lightbox.sections;for(h="",u=0;u
"+this.locale.labels["button_"+c[u].button]+"
"),this.config.wide_form&&(h+="
");var g=this.locale.labels["section_"+c[u].name];typeof g!="string"&&(g=c[u].name),h+="
"+m+"
"+p.render.call(this,c[u]),h+="
"}}var y=l.getElementsByTagName("div");for(u=0;u
  @@ -26,13 +26,13 @@ https://docs.dhtmlx.com/scheduler/minicalendar.html`)},a.exportToPNG=function(){
`}(i),Bt(i),function(a){a.getRootView=function(){return{view:{render:function(){return{tag:"div",type:1,attrs:{style:"width:100%;height:100%;"},hooks:{didInsert:function(){a.setCurrentView()}},body:[{el:this.el,type:1}]}},init:function(){var o=document.createElement("DIV");o.id="scheduler_"+a.uid(),o.style.width="100%",o.style.height="100%",o.classList.add("dhx_cal_container"),o.cmp="grid",o.innerHTML='
',a.init(o),this.el=o}},type:4}}}(i),Ft(i),window.jQuery&&(r=window.jQuery,d=0,n=[],r.fn.dhx_scheduler=function(a){if(typeof a!="string"){var o=[];return this.each(function(){if(this&&this.getAttribute)if(this.getAttribute("dhxscheduler"))o.push(window[this.getAttribute("dhxscheduler")]);else{var l="scheduler";d&&(l="scheduler"+(d+1),window[l]=Scheduler.getSchedulerInstance());var h=window[l];for(var v in this.setAttribute("dhxscheduler",l),a)v!="data"&&(h.config[v]=a[v]);this.getElementsByTagName("div").length||(this.innerHTML='
',this.className+=" dhx_cal_container"),h.init(this,h.config.date,h.config.mode),a.data&&h.parse(a.data),o.push(h),d++}}),o.length===1?o[0]:o}if(n[a])return n[a].apply(this,[]);r.error("Method "+a+" does not exist on jQuery.dhx_scheduler")}),function(a){(function(){var o=a.setCurrentView,l=a.updateView,h=null,v=null,u=function(p,m){var g=this;G.clearTimeout(v),G.clearTimeout(h);var y=g._date,x=g._mode;c(this,p,m),v=setTimeout(function(){a.$destroyed||(g.callEvent("onBeforeViewChange",[x,y,m||g._mode,p||g._date])?(l.call(g,p,m),g.callEvent("onViewChange",[g._mode,g._date]),G.clearTimeout(h),v=0):c(g,y,x))},a.config.delay_render)},f=function(p,m){var g=this,y=arguments;c(this,p,m),G.clearTimeout(h),h=setTimeout(function(){a.$destroyed||v||l.apply(g,y)},a.config.delay_render)};function c(p,m,g){m&&(p._date=m),g&&(p._mode=g)}a.attachEvent("onSchedulerReady",function(){a.config.delay_render?(a.setCurrentView=u,a.updateView=f):(a.setCurrentView=o,a.updateView=l)})})()}(i),function(a){a.createDataProcessor=function(o){var l,h;o instanceof Function?l=o:o.hasOwnProperty("router")?l=o.router:o.hasOwnProperty("event")&&(l=o),h=l?"CUSTOM":o.mode||"REST-JSON";var v=new Le(o.url);return v.init(a),v.setTransactionMode({mode:h,router:l},o.batchUpdate),v},a.DataProcessor=Le}(i),function(a){a.attachEvent("onSchedulerReady",function(){typeof dhtmlxError<"u"&&window.dhtmlxError.catchError("LoadXML",function(o,l,h){var v=h[0].responseText;switch(a.config.ajax_error){case"alert":G.alert(v);break;case"console":G.console.log(v)}})})}(i);const s=new ha({en:na,ar:Kt,be:Gt,ca:Xt,cn:Zt,cs:Qt,da:ea,de:ta,el:aa,es:ra,fi:ia,fr:oa,he:sa,hu:da,id:_a,it:la,jp:ca,nb:ua,nl:fa,no:pa,pl:ma,pt:va,ro:ga,ru:ya,si:ba,sk:xa,sv:ka,tr:wa,ua:Ea});i.i18n={addLocale:s.addLocale,setLocale:function(a){if(typeof a=="string"){var o=s.getLocale(a);o||(o=s.getLocale("en")),i.locale=o}else if(a)if(i.locale)for(var l in a)a[l]&&typeof a[l]=="object"?(i.locale[l]||(i.locale[l]={}),i.mixin(i.locale[l],a[l],!0)):i.locale[l]=a[l];else i.locale=a;var h=i.locale.labels;h.dhx_save_btn=h.icon_save,h.dhx_cancel_btn=h.icon_cancel,h.dhx_delete_btn=h.icon_delete,i.$container&&i.get_elements()},getLocale:s.getLocale},i.i18n.setLocale("en"),At(i),i.ext={};const _={};return i.plugins=function(a){(function(l,h,v){const u=[];for(const f in l)if(l[f]){const c=f.toLowerCase();h[c]&&h[c].forEach(function(p){const m=p.toLowerCase();l[m]||u.push(m)}),u.push(c)}return u.sort(function(f,c){const p=v[f]||0,m=v[c]||0;return p>m?1:p
';var d=document.createElement("DIV");return d.id="dhxSchedObj_"+this._genStr(12),d.innerHTML='
'+t+'
',document.body.appendChild(d.firstChild),this.attachObject(d.id,!1,!0),this.vs[this.av].sched=r,this.vs[this.av].schedId=d.id,r.setSizes=r.updateView,r.destructor=function(){},r.init(d.id,e,i),this.vs[this._viewRestore()].sched});const _e=(e,i)=>{i(!1,`The ${e} extension is not included in this version of dhtmlxScheduler.
You may need a Professional version of the component.
- Contact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`)};function Ma(e){(function(){var i=[];function t(){return!!i.length}function r(_){setTimeout(function(){if(e.$destroyed)return!0;t()||function(a,o){for(;a&&a!=o;)a=a.parentNode;return a==o}(document.activeElement,e.$container)||e.focus()},1)}function d(_){var a=(_=_||window.event).currentTarget;a==i[i.length-1]&&e.$keyboardNavigation.trapFocus(a,_)}if(e.attachEvent("onLightbox",function(){var _;_=e.getLightbox(),e.eventRemove(_,"keydown",d),e.event(_,"keydown",d),i.push(_)}),e.attachEvent("onAfterLightbox",function(){var _=i.pop();_&&e.eventRemove(_,"keydown",d),r()}),e.attachEvent("onAfterQuickInfo",function(){r()}),!e._keyNavMessagePopup){e._keyNavMessagePopup=!0;var n=null,s=null;const _=[];e.attachEvent("onMessagePopup",function(a){for(n=document.activeElement,s=n;s&&e._getClassName(s).indexOf("dhx_cal_data")<0;)s=s.parentNode;s&&(s=s.parentNode),e.eventRemove(a,"keydown",d),e.event(a,"keydown",d),_.push(a)}),e.attachEvent("onAfterMessagePopup",function(){var a=_.pop();a&&e.eventRemove(a,"keydown",d),setTimeout(function(){if(e.$destroyed)return!0;for(var o=document.activeElement;o&&e._getClassName(o).indexOf("dhx_cal_light")<0;)o=o.parentNode;o||(n&&n.parentNode?n.focus():s&&s.parentNode&&s.focus(),n=null,s=null)},1)})}e.$keyboardNavigation.isModal=t})()}function Ta(e){e._temp_key_scope=function(){e.config.key_nav=!0,e.$keyboardNavigation._pasteDate=null,e.$keyboardNavigation._pasteSection=null;var i=null,t={};function r(s){s=s||window.event,t.x=s.clientX,t.y=s.clientY}function d(){for(var s,_,a=document.elementFromPoint(t.x,t.y);a&&a!=e._obj;)a=a.parentNode;return s=a==e._obj,_=e.$keyboardNavigation.dispatcher.isEnabled(),s||_}function n(s){return e._lame_copy({},s)}document.body?e.event(document.body,"mousemove",r):e.event(window,"load",function(){e.event(document.body,"mousemove",r)}),e.attachEvent("onMouseMove",function(s,_){var a=e.getState();if(a.mode&&a.min_date){var o=e.getActionData(_);e.$keyboardNavigation._pasteDate=o.date,e.$keyboardNavigation._pasteSection=o.section}}),e._make_pasted_event=function(s){var _=e.$keyboardNavigation._pasteDate,a=e.$keyboardNavigation._pasteSection,o=s.end_date-s.start_date,l=n(s);if(function(v){delete v.rec_type,delete v.rec_pattern,delete v.event_pid,delete v.event_length}(l),l.start_date=new Date(_),l.end_date=new Date(l.start_date.valueOf()+o),a){var h=e._get_section_property();e.config.multisection?l[h]=s[h]:l[h]=a}return l},e._do_paste=function(s,_,a){e.callEvent("onBeforeEventPasted",[s,_,a])!==!1&&(e.addEvent(_),e.callEvent("onEventPasted",[s,_,a]))},e._is_key_nav_active=function(){return!(!this._is_initialized()||this._is_lightbox_open()||!this.config.key_nav)},e.event(document,"keydown",function(s){(s.ctrlKey||s.metaKey)&&s.keyCode==86&&e._buffer_event&&!e.$keyboardNavigation.dispatcher.isEnabled()&&(e.$keyboardNavigation.dispatcher.isActive=d())}),e._key_nav_copy_paste=function(s){if(!e._is_key_nav_active())return!0;if(s.keyCode==37||s.keyCode==39){s.cancelBubble=!0;var _=e.date.add(e._date,s.keyCode==37?-1:1,e._mode);return e.setCurrentView(_),!0}var a,o=(a=e.$keyboardNavigation.dispatcher.getActiveNode())&&a.eventId?a.eventId:e._select_id;if((s.ctrlKey||s.metaKey)&&s.keyCode==67)return o&&(e._buffer_event=n(e.getEvent(o)),i=!0,e.callEvent("onEventCopied",[e.getEvent(o)])),!0;if((s.ctrlKey||s.metaKey)&&s.keyCode==88&&o){i=!1;var l=e._buffer_event=n(e.getEvent(o));e.updateEvent(l.id),e.callEvent("onEventCut",[l])}if((s.ctrlKey||s.metaKey)&&s.keyCode==86&&d()){if(l=(l=e._buffer_event?e.getEvent(e._buffer_event.id):e._buffer_event)||e._buffer_event){var h=e._make_pasted_event(l);i?(h.id=e.uid(),e._do_paste(i,h,l)):e.callEvent("onBeforeEventChanged",[h,s,!1,l])&&(e._do_paste(i,h,l),i=!0)}return!0}}},e._temp_key_scope()}function Aa(e){e.$keyboardNavigation.attachSchedulerHandlers=function(){var i,t=e.$keyboardNavigation.dispatcher,r=function(a){if(e.config.key_nav)return t.keyDownHandler(a)},d=function(){t.keepScrollPosition(function(){t.focusGlobalNode()})};e.attachEvent("onDataRender",function(){e.config.key_nav&&t.isEnabled()&&!e.getState().editor_id&&(clearTimeout(i),i=setTimeout(function(){if(e.$destroyed)return!0;t.isEnabled()||t.enable(),n()}))});var n=function(){if(t.isEnabled()){var a=t.getActiveNode();a&&(a.isValid()||(a=a.fallback()),!a||a instanceof e.$keyboardNavigation.MinicalButton||a instanceof e.$keyboardNavigation.MinicalCell||t.keepScrollPosition(function(){a.focus(!0)}))}};function s(a){if(!e.config.key_nav)return!0;const o=e.getView();let l=!1;if(e.getState().mode==="month")l=e.$keyboardNavigation.isChildOf(a.target||a.srcElement,e.$container.querySelector(".dhx_cal_month_table"));else if(o&&o.layout==="timeline")l=e.$keyboardNavigation.isChildOf(a.target||a.srcElement,e.$container.querySelector(".dhx_timeline_data_col"));else{const u=e.$container.querySelectorAll(".dhx_scale_holder");l=Array.from(u).some(f=>f===a.target.parentNode)}var h,v=e.getActionData(a);e._locate_event(a.target||a.srcElement)?h=new e.$keyboardNavigation.Event(e._locate_event(a.target||a.srcElement)):l&&(h=new e.$keyboardNavigation.TimeSlot,v.date&&l&&(h=h.nextSlot(new e.$keyboardNavigation.TimeSlot(v.date,null,v.section)))),h&&(t.isEnabled()?v.date&&l&&t.delay(function(){t.setActiveNode(h)}):t.activeNode=h)}e.attachEvent("onSchedulerReady",function(){var a=e.$container;e.eventRemove(document,"keydown",r),e.eventRemove(a,"mousedown",s),e.eventRemove(a,"focus",d),e.config.key_nav?(e.event(document,"keydown",r),e.event(a,"mousedown",s),e.event(a,"focus",d),a.setAttribute("tabindex","0")):a.removeAttribute("tabindex")});var _=e.updateEvent;e.updateEvent=function(a){var o=_.apply(this,arguments);if(e.config.key_nav&&t.isEnabled()&&e.getState().select_id==a){var l=new e.$keyboardNavigation.Event(a);e.getState().lightbox_id||function(h){if(e.config.key_nav&&t.isEnabled()){var v=h,u=new e.$keyboardNavigation.Event(v.eventId);if(!u.isValid()){var f=u.start||v.start,c=u.end||v.end,p=u.section||v.section;(u=new e.$keyboardNavigation.TimeSlot(f,c,p)).isValid()||(u=new e.$keyboardNavigation.TimeSlot)}t.setActiveNode(u);var m=t.getActiveNode();m&&m.getNode&&document.activeElement!=m.getNode()&&t.focusNode(t.getActiveNode())}}(l)}return o},e.attachEvent("onEventDeleted",function(a){return e.config.key_nav&&t.isEnabled()&&t.getActiveNode().eventId==a&&t.setActiveNode(new e.$keyboardNavigation.TimeSlot),!0}),e.attachEvent("onClearAll",function(){if(!e.config.key_nav)return!0;t.isEnabled()&&t.getActiveNode()instanceof e.$keyboardNavigation.Event&&t.setActiveNode(new e.$keyboardNavigation.TimeSlot)})}}class Ca{constructor(i){this.map=null,this._markers=[],this.scheduler=i}onEventClick(i){if(this._markers&&this._markers.length>0){for(let t=0;t{this.infoWindow&&this.infoWindow.close(),this.infoWindow=new google.maps.InfoWindow({maxWidth:this.settings.info_window_max_width}),this.infoWindow.setContent(this.scheduler.templates.map_info_content(i)),this.infoWindow.open({anchor:d,map:this.map})});let n={event:i,...t,marker:d};this._markers.push(n)}removeEventMarker(i){for(let t=0;t0){for(let i=0;i{t.geocode({address:i},function(d,n){n==google.maps.GeocoderStatus.OK?r({lat:d[0].geometry.location.lat(),lng:d[0].geometry.location.lng()}):(console.error("Geocode was not successful for the following reason: "+n),r({}))})})}}class Oa{constructor(i){this.map=null,this._markers=[],this.scheduler=i}onEventClick(i){if(this._markers&&this._markers.length>0)for(let t=0;ta.json());if(_.address){let a=_.address.country;r.addEventNow({lat:s.latlng.lat,lng:s.latlng.lng,event_location:a,start_date:r.getState().date,end_date:r.date.add(r.getState().date,r.config.time_step,"minute")})}else console.error("unable recieve a position of the event",_.error)}),this.map=n,this.settings=t}destroy(i){for(this.map.remove();i.firstChild;)i.firstChild.remove();i.innerHTML=""}addEventMarker(i){const t=L.icon({iconUrl:"https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png",iconSize:[25,41],shadowSize:[30,65],iconAnchor:[12,41],shadowAnchor:[7,65]});let r={minWidth:180,maxWidth:this.settings.info_window_max_width};const d=L.popup(r).setContent(this.scheduler.templates.map_info_content(i)),n=L.tooltip().setContent(i.text);let s=[i.lat,i.lng];i.lat&&i.lng||(s=[this.settings.error_position.lat,this.settings.error_position.lng]);const _={event:i,marker:L.marker(s,{icon:t}).bindPopup(d).bindTooltip(n).addTo(this.map)};this._markers.push(_)}removeEventMarker(i){for(let t=0;td.json());return r&&r.length?(t.lat=+r[0].lat,t.lng=+r[0].lon):console.error(`Unable recieve a position of the event's location: ${i}`),t}}class La{constructor(i){this.map=null,this._markers=[],this.scheduler=i}onEventClick(i){if(this._markers&&this._markers.length>0)for(let t=0;t_.json());if(s.features){let _=s.features[0].place_name;r.addEventNow({lat:n.lngLat.lat,lng:n.lngLat.lng,event_location:_,start_date:r.getState().date,end_date:r.date.add(r.getState().date,r.config.time_step,"minute")})}else console.error("unable recieve a position of the event")}),this.map=d,this.settings=t}destroy(i){for(this.map.remove();i.firstChild;)i.firstChild.remove();i.innerHTML=""}addEventMarker(i){let t=[i.lng,i.lat];i.lat&&i.lng||(t=[this.settings.error_position.lng,this.settings.error_position.lat]);const r=new mapboxgl.Popup({offset:25,focusAfterOpen:!1}).setMaxWidth(`${this.settings.info_window_max_width}px`).setHTML(this.scheduler.templates.map_info_content(i)),d={event:i,marker:new mapboxgl.Marker().setLngLat(t).setPopup(r).addTo(this.map)};this._markers.push(d)}removeEventMarker(i){for(let t=0;td.json()),r={};return t&&t.features.length?(r.lng=t.features[0].center[0],r.lat=t.features[0].center[1]):console.error(`Unable recieve a position of the event's location: ${i}`),r}}var He=["MO","TU","WE","TH","FR","SA","SU"],W=function(){function e(i,t){if(t===0)throw new Error("Can't create weekday with n == 0");this.weekday=i,this.n=t}return e.fromStr=function(i){return new e(He.indexOf(i))},e.prototype.nth=function(i){return this.n===i?this:new e(this.weekday,i)},e.prototype.equals=function(i){return this.weekday===i.weekday&&this.n===i.n},e.prototype.toString=function(){var i=He[this.weekday];return this.n&&(i=(this.n>0?"+":"")+String(this.n)+i),i},e.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},e}(),Y=function(e){return e!=null},ae=function(e){return typeof e=="number"},at=function(e){return typeof e=="string"&&He.includes(e)},X=Array.isArray,ne=function(e,i){i===void 0&&(i=e),arguments.length===1&&(i=e,e=0);for(var t=[],r=e;r>=0,r.length>i?String(r):((i-=r.length)>t.length&&(t+=j(t,i/t.length)),t.slice(0,i)+String(r))}var Ha=function(e,i,t){var r=e.split(i);return t?r.slice(0,t).concat([r.slice(t).join(i)]):r},Q=function(e,i){var t=e%i;return t*i<0?t+i:t},$e=function(e,i){return{div:Math.floor(e/i),mod:Q(e,i)}},re=function(e){return!Y(e)||e.length===0},V=function(e){return!re(e)},R=function(e,i){return V(e)&&e.indexOf(i)!==-1},ue=function(e,i,t,r,d,n){return r===void 0&&(r=0),d===void 0&&(d=0),n===void 0&&(n=0),new Date(Date.UTC(e,i-1,t,r,d,n))},$a=[31,28,31,30,31,30,31,31,30,31,30,31],nt=864e5,rt=9999,it=ue(1970,1,1),za=[6,0,1,2,3,4,5],ge=function(e){return e%4==0&&e%100!=0||e%400==0},ot=function(e){return e instanceof Date},ye=function(e){return ot(e)&&!isNaN(e.getTime())},ze=function(e){return i=it,t=e.getTime()-i.getTime(),Math.round(t/nt);var i,t},st=function(e){return new Date(it.getTime()+e*nt)},qa=function(e){var i=e.getUTCMonth();return i===1&&ge(e.getUTCFullYear())?29:$a[i]},pe=function(e){return za[e.getUTCDay()]},dt=function(e,i){var t=ue(e,i+1,1);return[pe(t),qa(t)]},_t=function(e,i){return i=i||e,new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds()))},qe=function(e){return new Date(e.getTime())},lt=function(e){for(var i=[],t=0;tthis.maxDate;if(this.method==="between"){if(t)return!0;if(r)return!1}else if(this.method==="before"){if(r)return!1}else if(this.method==="after")return!!t||(this.add(i),!1);return this.add(i)},e.prototype.add=function(i){return this._result.push(i),!0},e.prototype.getValue=function(){var i=this._result;switch(this.method){case"all":case"between":return i;default:return i.length?i[i.length-1]:null}},e.prototype.clone=function(){return new e(this.method,this.args)},e}(),Ie=function(e,i){return Ie=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var d in r)Object.prototype.hasOwnProperty.call(r,d)&&(t[d]=r[d])},Ie(e,i)};function Re(e,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function t(){this.constructor=e}Ie(e,i),e.prototype=i===null?Object.create(i):(t.prototype=i.prototype,new t)}var Z=function(){return Z=Object.assign||function(e){for(var i,t=1,r=arguments.length;ti[0].length)&&(i=d,t=r)}if(i!=null&&(this.text=this.text.substr(i[0].length),this.text===""&&(this.done=!0)),i==null)return this.done=!0,this.symbol=null,void(this.value=null)}while(t==="SKIP");return this.symbol=t,this.value=i,!0},e.prototype.accept=function(i){if(this.symbol===i){if(this.value){var t=this.value;return this.nextSymbol(),t}return this.nextSymbol(),!0}return!1},e.prototype.acceptNumber=function(){return this.accept("number")},e.prototype.expect=function(i){if(this.accept(i))return!0;throw new Error("expected "+i+" but found "+this.symbol)},e}();function ft(e,i){i===void 0&&(i=we);var t={},r=new Ia(i.tokens);return r.start(e)?(function(){r.expect("every");var l=r.acceptNumber();if(l&&(t.interval=parseInt(l[0],10)),r.isDone())throw new Error("Unexpected end");switch(r.symbol){case"day(s)":t.freq=C.DAILY,r.nextSymbol()&&(n(),o());break;case"weekday(s)":t.freq=C.WEEKLY,t.byweekday=[C.MO,C.TU,C.WE,C.TH,C.FR],r.nextSymbol(),n(),o();break;case"week(s)":t.freq=C.WEEKLY,r.nextSymbol()&&(d(),n(),o());break;case"hour(s)":t.freq=C.HOURLY,r.nextSymbol()&&(d(),o());break;case"minute(s)":t.freq=C.MINUTELY,r.nextSymbol()&&(d(),o());break;case"month(s)":t.freq=C.MONTHLY,r.nextSymbol()&&(d(),o());break;case"year(s)":t.freq=C.YEARLY,r.nextSymbol()&&(d(),o());break;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":t.freq=C.WEEKLY;var h=r.symbol.substr(0,2).toUpperCase();if(t.byweekday=[C[h]],!r.nextSymbol())return;for(;r.accept("comma");){if(r.isDone())throw new Error("Unexpected end");var v=_();if(!v)throw new Error("Unexpected symbol "+r.symbol+", expected weekday");t.byweekday.push(C[v]),r.nextSymbol()}n(),function(){r.accept("on"),r.accept("the");var f=a();if(f)for(t.bymonthday=[f],r.nextSymbol();r.accept("comma");){if(!(f=a()))throw new Error("Unexpected symbol "+r.symbol+"; expected monthday");t.bymonthday.push(f),r.nextSymbol()}}(),o();break;case"january":case"february":case"march":case"april":case"may":case"june":case"july":case"august":case"september":case"october":case"november":case"december":if(t.freq=C.YEARLY,t.bymonth=[s()],!r.nextSymbol())return;for(;r.accept("comma");){if(r.isDone())throw new Error("Unexpected end");var u=s();if(!u)throw new Error("Unexpected symbol "+r.symbol+", expected month");t.bymonth.push(u),r.nextSymbol()}d(),o();break;default:throw new Error("Unknown symbol")}}(),t):null;function d(){var l=r.accept("on"),h=r.accept("the");if(l||h)do{var v=a(),u=_(),f=s();if(v)u?(r.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(C[u].nth(v))):(t.bymonthday||(t.bymonthday=[]),t.bymonthday.push(v),r.accept("day(s)"));else if(u)r.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(C[u]);else if(r.symbol==="weekday(s)")r.nextSymbol(),t.byweekday||(t.byweekday=[C.MO,C.TU,C.WE,C.TH,C.FR]);else if(r.symbol==="week(s)"){r.nextSymbol();var c=r.acceptNumber();if(!c)throw new Error("Unexpected symbol "+r.symbol+", expected week number");for(t.byweekno=[parseInt(c[0],10)];r.accept("comma");){if(!(c=r.acceptNumber()))throw new Error("Unexpected symbol "+r.symbol+"; expected monthday");t.byweekno.push(parseInt(c[0],10))}}else{if(!f)return;r.nextSymbol(),t.bymonth||(t.bymonth=[]),t.bymonth.push(f)}}while(r.accept("comma")||r.accept("the")||r.accept("on"))}function n(){if(r.accept("at"))do{var l=r.acceptNumber();if(!l)throw new Error("Unexpected symbol "+r.symbol+", expected hour");for(t.byhour=[parseInt(l[0],10)];r.accept("comma");){if(!(l=r.acceptNumber()))throw new Error("Unexpected symbol "+r.symbol+"; expected hour");t.byhour.push(parseInt(l[0],10))}}while(r.accept("comma")||r.accept("at"))}function s(){switch(r.symbol){case"january":return 1;case"february":return 2;case"march":return 3;case"april":return 4;case"may":return 5;case"june":return 6;case"july":return 7;case"august":return 8;case"september":return 9;case"october":return 10;case"november":return 11;case"december":return 12;default:return!1}}function _(){switch(r.symbol){case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return r.symbol.substr(0,2).toUpperCase();default:return!1}}function a(){switch(r.symbol){case"last":return r.nextSymbol(),-1;case"first":return r.nextSymbol(),1;case"second":return r.nextSymbol(),r.accept("last")?-2:2;case"third":return r.nextSymbol(),r.accept("last")?-3:3;case"nth":var l=parseInt(r.value[1],10);if(l<-366||l>366)throw new Error("Nth out of range: "+l);return r.nextSymbol(),r.accept("last")?-l:l;default:return!1}}function o(){if(r.symbol==="until"){var l=Date.parse(r.text);if(!l)throw new Error("Cannot parse until date:"+r.text);t.until=new Date(l)}else r.accept("for")&&(t.count=parseInt(r.value[0],10),r.expect("number"))}}function Ye(e){return e12){var r=Math.floor(this.month/12),d=Q(this.month,12);this.month=d,this.year+=r,this.month===0&&(this.month=12,--this.year)}},i.prototype.addWeekly=function(t,r){r>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-r))+7*t:this.day+=-(this.getWeekday()-r)+7*t,this.fixDay()},i.prototype.addDaily=function(t){this.day+=t,this.fixDay()},i.prototype.addHours=function(t,r,d){for(r&&(this.hour+=Math.floor((23-this.hour)/t)*t);;){this.hour+=t;var n=$e(this.hour,24),s=n.div,_=n.mod;if(s&&(this.hour=_,this.addDaily(s)),re(d)||R(d,this.hour))break}},i.prototype.addMinutes=function(t,r,d,n){for(r&&(this.minute+=Math.floor((1439-(60*this.hour+this.minute))/t)*t);;){this.minute+=t;var s=$e(this.minute,60),_=s.div,a=s.mod;if(_&&(this.minute=a,this.addHours(_,!1,d)),(re(d)||R(d,this.hour))&&(re(n)||R(n,this.minute)))break}},i.prototype.addSeconds=function(t,r,d,n,s){for(r&&(this.second+=Math.floor((86399-(3600*this.hour+60*this.minute+this.second))/t)*t);;){this.second+=t;var _=$e(this.second,60),a=_.div,o=_.mod;if(a&&(this.second=o,this.addMinutes(a,!1,d,n)),(re(d)||R(d,this.hour))&&(re(n)||R(n,this.minute))&&(re(s)||R(s,this.second)))break}},i.prototype.fixDay=function(){if(!(this.day<=28)){var t=dt(this.year,this.month-1)[1];if(!(this.day<=t))for(;this.day>t;){if(this.day-=t,++this.month,this.month===13&&(this.month=1,++this.year,this.year>rt))return;t=dt(this.year,this.month-1)[1]}}},i.prototype.add=function(t,r){var d=t.freq,n=t.interval,s=t.wkst,_=t.byhour,a=t.byminute,o=t.bysecond;switch(d){case P.YEARLY:return this.addYears(n);case P.MONTHLY:return this.addMonths(n);case P.WEEKLY:return this.addWeekly(n,s);case P.DAILY:return this.addDaily(n);case P.HOURLY:return this.addHours(n,r,_);case P.MINUTELY:return this.addMinutes(n,r,_,a);case P.SECONDLY:return this.addSeconds(n,r,_,a,o)}},i}(Ee);function pt(e){for(var i=[],t=0,r=Object.keys(e);t=-366&&n<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}if(!(i.byweekno||V(i.byweekno)||V(i.byyearday)||i.bymonthday||V(i.bymonthday)||Y(i.byweekday)||Y(i.byeaster)))switch(i.freq){case C.YEARLY:i.bymonth||(i.bymonth=i.dtstart.getUTCMonth()+1),i.bymonthday=i.dtstart.getUTCDate();break;case C.MONTHLY:i.bymonthday=i.dtstart.getUTCDate();break;case C.WEEKLY:i.byweekday=[pe(i.dtstart)]}if(Y(i.bymonth)&&!X(i.bymonth)&&(i.bymonth=[i.bymonth]),Y(i.byyearday)&&!X(i.byyearday)&&ae(i.byyearday)&&(i.byyearday=[i.byyearday]),Y(i.bymonthday))if(X(i.bymonthday)){var r=[],d=[];for(t=0;t0?r.push(n):n<0&&d.push(n)}i.bymonthday=r,i.bynmonthday=d}else i.bymonthday<0?(i.bynmonthday=[i.bymonthday],i.bymonthday=[]):(i.bynmonthday=[],i.bymonthday=[i.bymonthday]);else i.bymonthday=[],i.bynmonthday=[];if(Y(i.byweekno)&&!X(i.byweekno)&&(i.byweekno=[i.byweekno]),Y(i.byweekday))if(ae(i.byweekday))i.byweekday=[i.byweekday],i.bynweekday=null;else if(at(i.byweekday))i.byweekday=[W.fromStr(i.byweekday).weekday],i.bynweekday=null;else if(i.byweekday instanceof W)!i.byweekday.n||i.freq>C.MONTHLY?(i.byweekday=[i.byweekday.weekday],i.bynweekday=null):(i.bynweekday=[[i.byweekday.weekday,i.byweekday.n]],i.byweekday=null);else{var s=[],_=[];for(t=0;tC.MONTHLY?s.push(a.weekday):_.push([a.weekday,a.n])}i.byweekday=V(s)?s:null,i.bynweekday=V(_)?_:null}else i.bynweekday=null;return Y(i.byhour)?ae(i.byhour)&&(i.byhour=[i.byhour]):i.byhour=i.freq=4?(l=0,r=o.yearlen+Q(a-i.wkst,7)):r=n-l;for(var h=Math.floor(r/7),v=Q(r,7),u=Math.floor(h+v/4),f=0;f0&&c<=u){var p=void 0;c>1?(p=l+7*(c-1),l!==t&&(p-=7-t)):p=l;for(var m=0;m<7&&(o.wnomask[p]=1,p++,o.wdaymask[p]!==i.wkst);m++);}}if(R(i.byweekno,1)&&(p=l+7*u,l!==t&&(p-=7-t),p=4?(x=0,k=b+Q(y-i.wkst,7)):k=n-l,g=Math.floor(52+Q(k,7)/4)}if(R(i.byweekno,g))for(p=0;p=C.HOURLY&&V(M)&&!R(M,w.hour)||N>=C.MINUTELY&&V(T)&&!R(T,w.minute)||N>=C.SECONDLY&&V(A)&&!R(A,w.second)?[]:D.gettimeset(N)(w.hour,w.minute,w.second,w.millisecond)}(o,a,i);;){var h=o.getdayset(r)(a.year,a.month,a.day),v=h[0],u=h[1],f=h[2],c=hn(v,u,f,o,i);if(V(s))for(var p=ln(s,l,u,f,o,v),m=0;mn)return oe(e);if(g>=t){var y=bt(g,i);if(!e.accept(y)||_&&!--_)return oe(e)}}else for(m=u;mn||g>=t&&(y=bt(g,i),!e.accept(y)||_&&!--_))return oe(e)}}if(i.interval===0||(a.add(i,c),a.year>rt))return oe(e);Ye(r)||(l=o.gettimeset(r)(a.hour,a.minute,a.second,0)),o.rebuild(a.year,a.month)}}function cn(e,i,t){var r=t.bymonth,d=t.byweekno,n=t.byweekday,s=t.byeaster,_=t.bymonthday,a=t.bynmonthday,o=t.byyearday;return V(r)&&!R(r,e.mmask[i])||V(d)&&!e.wnomask[i]||V(n)&&!R(n,e.wdaymask[i])||V(e.nwdaymask)&&!e.nwdaymask[i]||s!==null&&!R(e.eastermask,i)||(V(_)||V(a))&&!R(_,e.mdaymask[i])&&!R(a,e.nmdaymask[i])||V(o)&&(i=e.yearlen&&!R(o,i+1-e.yearlen)&&!R(o,-e.nextyearlen+i-e.yearlen))}function bt(e,i){return new Se(e,i.tzid).rezonedDate()}function oe(e){return e.getValue()}function hn(e,i,t,r,d){for(var n=!1,s=i;s0&&f[0]===" "?(v[u-1]+=f.slice(1),v.splice(u,1)):u+=1:v.splice(u,1)}return v}(e,i.unfold);return o.forEach(function(l){var h;if(l){var v=function(m){var g=function(k){if(k.indexOf(":")===-1)return{name:"RRULE",value:k};var E=Ha(k,":",1),D=E[0],w=E[1];return{name:D,value:w}}(m),y=g.name,x=g.value,b=y.split(";");if(!b)throw new Error("empty property name");return{name:b[0].toUpperCase(),parms:b.slice(1),value:x}}(l),u=v.name,f=v.parms,c=v.value;switch(u.toUpperCase()){case"RRULE":if(f.length)throw new Error("unsupported RRULE parm: ".concat(f.join(",")));t.push(Ue(l));break;case"RDATE":var p=((h=/RDATE(?:;TZID=([^:=]+))?/i.exec(l))!==null&&h!==void 0?h:[])[1];p&&!a&&(a=p),r=r.concat(kt(c,f));break;case"EXRULE":if(f.length)throw new Error("unsupported EXRULE parm: ".concat(f.join(",")));d.push(Ue(c));break;case"EXDATE":n=n.concat(kt(c,f));break;case"DTSTART":break;default:throw new Error("unsupported property: "+u)}}}),{dtstart:_,tzid:a,rrulevals:t,rdatevals:r,exrulevals:d,exdatevals:n}}function Ne(e,i){return i===void 0&&(i={}),function(t,r){var d=fn(t,r),n=d.rrulevals,s=d.rdatevals,_=d.exrulevals,a=d.exdatevals,o=d.dtstart,l=d.tzid,h=r.cache===!1;if(r.compatible&&(r.forceset=!0,r.unfold=!0),r.forceset||n.length>1||s.length||_.length||a.length){var v=new pn(h);return v.dtstart(o),v.tzid(l||void 0),n.forEach(function(f){v.rrule(new C(Fe(f,o,l),h))}),s.forEach(function(f){v.rdate(f)}),_.forEach(function(f){v.exrule(new C(Fe(f,o,l),h))}),a.forEach(function(f){v.exdate(f)}),r.compatible&&r.dtstart&&v.rdate(o),v}var u=n[0]||{};return new C(Fe(u,u.dtstart||r.dtstart||o,u.tzid||r.tzid||l),h)}(e,function(t){var r=[],d=Object.keys(t),n=Object.keys(xt);if(d.forEach(function(s){R(n,s)||r.push(s)}),r.length)throw new Error("Invalid options: "+r.join(", "));return Z(Z({},xt),t)}(i))}function Fe(e,i,t){return Z(Z({},e),{dtstart:i,tzid:t})}function kt(e,i){return function(t){t.forEach(function(r){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(r))throw new Error("unsupported RDATE/EXDATE parm: "+r)})}(i),e.split(",").map(function(t){return Pe(t)})}function wt(e){var i=this;return function(t){if(t!==void 0&&(i["_".concat(e)]=t),i["_".concat(e)]!==void 0)return i["_".concat(e)];for(var r=0;rhttps://dhtmlx.com/docs/contact.shtml if you have any questions.`)};function Ma(e){(function(){var i=[];function t(){return!!i.length}function r(_){setTimeout(function(){if(e.$destroyed)return!0;t()||function(a,o){for(;a&&a!=o;)a=a.parentNode;return a==o}(document.activeElement,e.$container)||e.focus()},1)}function d(_){var a=(_=_||window.event).currentTarget;a==i[i.length-1]&&e.$keyboardNavigation.trapFocus(a,_)}if(e.attachEvent("onLightbox",function(){var _;_=e.getLightbox(),e.eventRemove(_,"keydown",d),e.event(_,"keydown",d),i.push(_)}),e.attachEvent("onAfterLightbox",function(){var _=i.pop();_&&e.eventRemove(_,"keydown",d),r()}),e.attachEvent("onAfterQuickInfo",function(){r()}),!e._keyNavMessagePopup){e._keyNavMessagePopup=!0;var n=null,s=null;const _=[];e.attachEvent("onMessagePopup",function(a){for(n=document.activeElement,s=n;s&&e._getClassName(s).indexOf("dhx_cal_data")<0;)s=s.parentNode;s&&(s=s.parentNode),e.eventRemove(a,"keydown",d),e.event(a,"keydown",d),_.push(a)}),e.attachEvent("onAfterMessagePopup",function(){var a=_.pop();a&&e.eventRemove(a,"keydown",d),setTimeout(function(){if(e.$destroyed)return!0;for(var o=document.activeElement;o&&e._getClassName(o).indexOf("dhx_cal_light")<0;)o=o.parentNode;o||(n&&n.parentNode?n.focus():s&&s.parentNode&&s.focus(),n=null,s=null)},1)})}e.$keyboardNavigation.isModal=t})()}function Ta(e){e._temp_key_scope=function(){e.config.key_nav=!0,e.$keyboardNavigation._pasteDate=null,e.$keyboardNavigation._pasteSection=null;var i=null,t={};function r(s){s=s||window.event,t.x=s.clientX,t.y=s.clientY}function d(){for(var s,_,a=document.elementFromPoint(t.x,t.y);a&&a!=e._obj;)a=a.parentNode;return s=a==e._obj,_=e.$keyboardNavigation.dispatcher.isEnabled(),s||_}function n(s){return e._lame_copy({},s)}document.body?e.event(document.body,"mousemove",r):e.event(window,"load",function(){e.event(document.body,"mousemove",r)}),e.attachEvent("onMouseMove",function(s,_){var a=e.getState();if(a.mode&&a.min_date){var o=e.getActionData(_);e.$keyboardNavigation._pasteDate=o.date,e.$keyboardNavigation._pasteSection=o.section}}),e._make_pasted_event=function(s){var _=e.$keyboardNavigation._pasteDate,a=e.$keyboardNavigation._pasteSection,o=s.end_date-s.start_date,l=n(s);if(function(v){delete v.rec_type,delete v.rec_pattern,delete v.event_pid,delete v.event_length}(l),l.start_date=new Date(_),l.end_date=new Date(l.start_date.valueOf()+o),a){var h=e._get_section_property();e.config.multisection?l[h]=s[h]:l[h]=a}return l},e._do_paste=function(s,_,a){e.callEvent("onBeforeEventPasted",[s,_,a])!==!1&&(e.addEvent(_),e.callEvent("onEventPasted",[s,_,a]))},e._is_key_nav_active=function(){return!(!this._is_initialized()||this._is_lightbox_open()||!this.config.key_nav)},e.event(document,"keydown",function(s){(s.ctrlKey||s.metaKey)&&s.keyCode==86&&e._buffer_event&&!e.$keyboardNavigation.dispatcher.isEnabled()&&(e.$keyboardNavigation.dispatcher.isActive=d())}),e._key_nav_copy_paste=function(s){if(!e._is_key_nav_active())return!0;if(s.keyCode==37||s.keyCode==39){s.cancelBubble=!0;var _=e.date.add(e._date,s.keyCode==37?-1:1,e._mode);return e.setCurrentView(_),!0}var a,o=(a=e.$keyboardNavigation.dispatcher.getActiveNode())&&a.eventId?a.eventId:e._select_id;if((s.ctrlKey||s.metaKey)&&s.keyCode==67)return o&&(e._buffer_event=n(e.getEvent(o)),i=!0,e.callEvent("onEventCopied",[e.getEvent(o)])),!0;if((s.ctrlKey||s.metaKey)&&s.keyCode==88&&o){i=!1;var l=e._buffer_event=n(e.getEvent(o));e.updateEvent(l.id),e.callEvent("onEventCut",[l])}if((s.ctrlKey||s.metaKey)&&s.keyCode==86&&d()){if(l=(l=e._buffer_event?e.getEvent(e._buffer_event.id):e._buffer_event)||e._buffer_event){var h=e._make_pasted_event(l);i?(h.id=e.uid(),e._do_paste(i,h,l)):e.callEvent("onBeforeEventChanged",[h,s,!1,l])&&(e._do_paste(i,h,l),i=!0)}return!0}}},e._temp_key_scope()}function Aa(e){e.$keyboardNavigation.attachSchedulerHandlers=function(){var i,t=e.$keyboardNavigation.dispatcher,r=function(a){if(e.config.key_nav)return t.keyDownHandler(a)},d=function(){t.keepScrollPosition(function(){t.focusGlobalNode()})};e.attachEvent("onDataRender",function(){e.config.key_nav&&t.isEnabled()&&!e.getState().editor_id&&(clearTimeout(i),i=setTimeout(function(){if(e.$destroyed)return!0;t.isEnabled()||t.enable(),n()}))});var n=function(){if(t.isEnabled()){var a=t.getActiveNode();a&&(a.isValid()||(a=a.fallback()),!a||a instanceof e.$keyboardNavigation.MinicalButton||a instanceof e.$keyboardNavigation.MinicalCell||t.keepScrollPosition(function(){a.focus(!0)}))}};function s(a){if(!e.config.key_nav)return!0;const o=e.getView();let l=!1;if(e.getState().mode==="month")l=e.$keyboardNavigation.isChildOf(a.target||a.srcElement,e.$container.querySelector(".dhx_cal_month_table"));else if(o&&o.layout==="timeline")l=e.$keyboardNavigation.isChildOf(a.target||a.srcElement,e.$container.querySelector(".dhx_timeline_data_col"));else{const u=e.$container.querySelectorAll(".dhx_scale_holder");l=Array.from(u).some(f=>f===a.target.parentNode)}var h,v=e.getActionData(a);e._locate_event(a.target||a.srcElement)?h=new e.$keyboardNavigation.Event(e._locate_event(a.target||a.srcElement)):l&&(h=new e.$keyboardNavigation.TimeSlot,v.date&&l&&(h=h.nextSlot(new e.$keyboardNavigation.TimeSlot(v.date,null,v.section)))),h&&(t.isEnabled()?v.date&&l&&t.delay(function(){t.setActiveNode(h)}):t.activeNode=h)}e.attachEvent("onSchedulerReady",function(){var a=e.$container;e.eventRemove(document,"keydown",r),e.eventRemove(a,"mousedown",s),e.eventRemove(a,"focus",d),e.config.key_nav?(e.event(document,"keydown",r),e.event(a,"mousedown",s),e.event(a,"focus",d),a.setAttribute("tabindex","0")):a.removeAttribute("tabindex")});var _=e.updateEvent;e.updateEvent=function(a){var o=_.apply(this,arguments);if(e.config.key_nav&&t.isEnabled()&&e.getState().select_id==a){var l=new e.$keyboardNavigation.Event(a);e.getState().lightbox_id||function(h){if(e.config.key_nav&&t.isEnabled()){var v=h,u=new e.$keyboardNavigation.Event(v.eventId);if(!u.isValid()){var f=u.start||v.start,c=u.end||v.end,p=u.section||v.section;(u=new e.$keyboardNavigation.TimeSlot(f,c,p)).isValid()||(u=new e.$keyboardNavigation.TimeSlot)}t.setActiveNode(u);var m=t.getActiveNode();m&&m.getNode&&document.activeElement!=m.getNode()&&t.focusNode(t.getActiveNode())}}(l)}return o},e.attachEvent("onEventDeleted",function(a){return e.config.key_nav&&t.isEnabled()&&t.getActiveNode().eventId==a&&t.setActiveNode(new e.$keyboardNavigation.TimeSlot),!0}),e.attachEvent("onClearAll",function(){if(!e.config.key_nav)return!0;t.isEnabled()&&t.getActiveNode()instanceof e.$keyboardNavigation.Event&&t.setActiveNode(new e.$keyboardNavigation.TimeSlot)})}}class Ca{constructor(i){this.map=null,this._markers=[],this.scheduler=i}onEventClick(i){if(this._markers&&this._markers.length>0){for(let t=0;t{this.infoWindow&&this.infoWindow.close(),this.infoWindow=new google.maps.InfoWindow({maxWidth:this.settings.info_window_max_width}),this.infoWindow.setContent(this.scheduler.templates.map_info_content(i)),this.infoWindow.open({anchor:d,map:this.map})});let n={event:i,...t,marker:d};this._markers.push(n)}removeEventMarker(i){for(let t=0;t0){for(let i=0;i{t.geocode({address:i},function(d,n){n==google.maps.GeocoderStatus.OK?r({lat:d[0].geometry.location.lat(),lng:d[0].geometry.location.lng()}):(console.error("Geocode was not successful for the following reason: "+n),r({}))})})}}class Oa{constructor(i){this.map=null,this._markers=[],this.scheduler=i}onEventClick(i){if(this._markers&&this._markers.length>0)for(let t=0;ta.json());if(_.address){let a=_.address.country;r.addEventNow({lat:s.latlng.lat,lng:s.latlng.lng,event_location:a,start_date:r.getState().date,end_date:r.date.add(r.getState().date,r.config.time_step,"minute")})}else console.error("unable recieve a position of the event",_.error)}),this.map=n,this.settings=t}destroy(i){for(this.map.remove();i.firstChild;)i.firstChild.remove();i.innerHTML=""}addEventMarker(i){const t=L.icon({iconUrl:"https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png",iconSize:[25,41],shadowSize:[30,65],iconAnchor:[12,41],shadowAnchor:[7,65]});let r={minWidth:180,maxWidth:this.settings.info_window_max_width};const d=L.popup(r).setContent(this.scheduler.templates.map_info_content(i)),n=L.tooltip().setContent(i.text);let s=[i.lat,i.lng];i.lat&&i.lng||(s=[this.settings.error_position.lat,this.settings.error_position.lng]);const _={event:i,marker:L.marker(s,{icon:t}).bindPopup(d).bindTooltip(n).addTo(this.map)};this._markers.push(_)}removeEventMarker(i){for(let t=0;td.json());return r&&r.length?(t.lat=+r[0].lat,t.lng=+r[0].lon):console.error(`Unable recieve a position of the event's location: ${i}`),t}}class La{constructor(i){this.map=null,this._markers=[],this.scheduler=i}onEventClick(i){if(this._markers&&this._markers.length>0)for(let t=0;t_.json());if(s.features){let _=s.features[0].place_name;r.addEventNow({lat:n.lngLat.lat,lng:n.lngLat.lng,event_location:_,start_date:r.getState().date,end_date:r.date.add(r.getState().date,r.config.time_step,"minute")})}else console.error("unable recieve a position of the event")}),this.map=d,this.settings=t}destroy(i){for(this.map.remove();i.firstChild;)i.firstChild.remove();i.innerHTML=""}addEventMarker(i){let t=[i.lng,i.lat];i.lat&&i.lng||(t=[this.settings.error_position.lng,this.settings.error_position.lat]);const r=new mapboxgl.Popup({offset:25,focusAfterOpen:!1}).setMaxWidth(`${this.settings.info_window_max_width}px`).setHTML(this.scheduler.templates.map_info_content(i)),d={event:i,marker:new mapboxgl.Marker().setLngLat(t).setPopup(r).addTo(this.map)};this._markers.push(d)}removeEventMarker(i){for(let t=0;td.json()),r={};return t&&t.features.length?(r.lng=t.features[0].center[0],r.lat=t.features[0].center[1]):console.error(`Unable recieve a position of the event's location: ${i}`),r}}var He=["MO","TU","WE","TH","FR","SA","SU"],W=function(){function e(i,t){if(t===0)throw new Error("Can't create weekday with n == 0");this.weekday=i,this.n=t}return e.fromStr=function(i){return new e(He.indexOf(i))},e.prototype.nth=function(i){return this.n===i?this:new e(this.weekday,i)},e.prototype.equals=function(i){return this.weekday===i.weekday&&this.n===i.n},e.prototype.toString=function(){var i=He[this.weekday];return this.n&&(i=(this.n>0?"+":"")+String(this.n)+i),i},e.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},e}(),Y=function(e){return e!=null},ae=function(e){return typeof e=="number"},at=function(e){return typeof e=="string"&&He.includes(e)},X=Array.isArray,ne=function(e,i){i===void 0&&(i=e),arguments.length===1&&(i=e,e=0);for(var t=[],r=e;r>=0,r.length>i?String(r):((i-=r.length)>t.length&&(t+=j(t,i/t.length)),t.slice(0,i)+String(r))}var Ha=function(e,i,t){var r=e.split(i);return t?r.slice(0,t).concat([r.slice(t).join(i)]):r},Q=function(e,i){var t=e%i;return t*i<0?t+i:t},$e=function(e,i){return{div:Math.floor(e/i),mod:Q(e,i)}},re=function(e){return!Y(e)||e.length===0},V=function(e){return!re(e)},R=function(e,i){return V(e)&&e.indexOf(i)!==-1},ue=function(e,i,t,r,d,n){return r===void 0&&(r=0),d===void 0&&(d=0),n===void 0&&(n=0),new Date(Date.UTC(e,i-1,t,r,d,n))},$a=[31,28,31,30,31,30,31,31,30,31,30,31],nt=864e5,rt=9999,it=ue(1970,1,1),za=[6,0,1,2,3,4,5],ge=function(e){return e%4==0&&e%100!=0||e%400==0},ot=function(e){return e instanceof Date},ye=function(e){return ot(e)&&!isNaN(e.getTime())},ze=function(e){return i=it,t=e.getTime()-i.getTime(),Math.round(t/nt);var i,t},st=function(e){return new Date(it.getTime()+e*nt)},qa=function(e){var i=e.getUTCMonth();return i===1&&ge(e.getUTCFullYear())?29:$a[i]},pe=function(e){return za[e.getUTCDay()]},dt=function(e,i){var t=ue(e,i+1,1);return[pe(t),qa(t)]},_t=function(e,i){return i=i||e,new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),i.getHours(),i.getMinutes(),i.getSeconds(),i.getMilliseconds()))},qe=function(e){return new Date(e.getTime())},lt=function(e){for(var i=[],t=0;tthis.maxDate;if(this.method==="between"){if(t)return!0;if(r)return!1}else if(this.method==="before"){if(r)return!1}else if(this.method==="after")return!!t||(this.add(i),!1);return this.add(i)},e.prototype.add=function(i){return this._result.push(i),!0},e.prototype.getValue=function(){var i=this._result;switch(this.method){case"all":case"between":return i;default:return i.length?i[i.length-1]:null}},e.prototype.clone=function(){return new e(this.method,this.args)},e}(),Pe=function(e,i){return Pe=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,r){t.__proto__=r}||function(t,r){for(var d in r)Object.prototype.hasOwnProperty.call(r,d)&&(t[d]=r[d])},Pe(e,i)};function Re(e,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function t(){this.constructor=e}Pe(e,i),e.prototype=i===null?Object.create(i):(t.prototype=i.prototype,new t)}var Z=function(){return Z=Object.assign||function(e){for(var i,t=1,r=arguments.length;ti[0].length)&&(i=d,t=r)}if(i!=null&&(this.text=this.text.substr(i[0].length),this.text===""&&(this.done=!0)),i==null)return this.done=!0,this.symbol=null,void(this.value=null)}while(t==="SKIP");return this.symbol=t,this.value=i,!0},e.prototype.accept=function(i){if(this.symbol===i){if(this.value){var t=this.value;return this.nextSymbol(),t}return this.nextSymbol(),!0}return!1},e.prototype.acceptNumber=function(){return this.accept("number")},e.prototype.expect=function(i){if(this.accept(i))return!0;throw new Error("expected "+i+" but found "+this.symbol)},e}();function ft(e,i){i===void 0&&(i=we);var t={},r=new Pa(i.tokens);return r.start(e)?(function(){r.expect("every");var l=r.acceptNumber();if(l&&(t.interval=parseInt(l[0],10)),r.isDone())throw new Error("Unexpected end");switch(r.symbol){case"day(s)":t.freq=C.DAILY,r.nextSymbol()&&(n(),o());break;case"weekday(s)":t.freq=C.WEEKLY,t.byweekday=[C.MO,C.TU,C.WE,C.TH,C.FR],r.nextSymbol(),n(),o();break;case"week(s)":t.freq=C.WEEKLY,r.nextSymbol()&&(d(),n(),o());break;case"hour(s)":t.freq=C.HOURLY,r.nextSymbol()&&(d(),o());break;case"minute(s)":t.freq=C.MINUTELY,r.nextSymbol()&&(d(),o());break;case"month(s)":t.freq=C.MONTHLY,r.nextSymbol()&&(d(),o());break;case"year(s)":t.freq=C.YEARLY,r.nextSymbol()&&(d(),o());break;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":t.freq=C.WEEKLY;var h=r.symbol.substr(0,2).toUpperCase();if(t.byweekday=[C[h]],!r.nextSymbol())return;for(;r.accept("comma");){if(r.isDone())throw new Error("Unexpected end");var v=_();if(!v)throw new Error("Unexpected symbol "+r.symbol+", expected weekday");t.byweekday.push(C[v]),r.nextSymbol()}n(),function(){r.accept("on"),r.accept("the");var f=a();if(f)for(t.bymonthday=[f],r.nextSymbol();r.accept("comma");){if(!(f=a()))throw new Error("Unexpected symbol "+r.symbol+"; expected monthday");t.bymonthday.push(f),r.nextSymbol()}}(),o();break;case"january":case"february":case"march":case"april":case"may":case"june":case"july":case"august":case"september":case"october":case"november":case"december":if(t.freq=C.YEARLY,t.bymonth=[s()],!r.nextSymbol())return;for(;r.accept("comma");){if(r.isDone())throw new Error("Unexpected end");var u=s();if(!u)throw new Error("Unexpected symbol "+r.symbol+", expected month");t.bymonth.push(u),r.nextSymbol()}d(),o();break;default:throw new Error("Unknown symbol")}}(),t):null;function d(){var l=r.accept("on"),h=r.accept("the");if(l||h)do{var v=a(),u=_(),f=s();if(v)u?(r.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(C[u].nth(v))):(t.bymonthday||(t.bymonthday=[]),t.bymonthday.push(v),r.accept("day(s)"));else if(u)r.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(C[u]);else if(r.symbol==="weekday(s)")r.nextSymbol(),t.byweekday||(t.byweekday=[C.MO,C.TU,C.WE,C.TH,C.FR]);else if(r.symbol==="week(s)"){r.nextSymbol();var c=r.acceptNumber();if(!c)throw new Error("Unexpected symbol "+r.symbol+", expected week number");for(t.byweekno=[parseInt(c[0],10)];r.accept("comma");){if(!(c=r.acceptNumber()))throw new Error("Unexpected symbol "+r.symbol+"; expected monthday");t.byweekno.push(parseInt(c[0],10))}}else{if(!f)return;r.nextSymbol(),t.bymonth||(t.bymonth=[]),t.bymonth.push(f)}}while(r.accept("comma")||r.accept("the")||r.accept("on"))}function n(){if(r.accept("at"))do{var l=r.acceptNumber();if(!l)throw new Error("Unexpected symbol "+r.symbol+", expected hour");for(t.byhour=[parseInt(l[0],10)];r.accept("comma");){if(!(l=r.acceptNumber()))throw new Error("Unexpected symbol "+r.symbol+"; expected hour");t.byhour.push(parseInt(l[0],10))}}while(r.accept("comma")||r.accept("at"))}function s(){switch(r.symbol){case"january":return 1;case"february":return 2;case"march":return 3;case"april":return 4;case"may":return 5;case"june":return 6;case"july":return 7;case"august":return 8;case"september":return 9;case"october":return 10;case"november":return 11;case"december":return 12;default:return!1}}function _(){switch(r.symbol){case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return r.symbol.substr(0,2).toUpperCase();default:return!1}}function a(){switch(r.symbol){case"last":return r.nextSymbol(),-1;case"first":return r.nextSymbol(),1;case"second":return r.nextSymbol(),r.accept("last")?-2:2;case"third":return r.nextSymbol(),r.accept("last")?-3:3;case"nth":var l=parseInt(r.value[1],10);if(l<-366||l>366)throw new Error("Nth out of range: "+l);return r.nextSymbol(),r.accept("last")?-l:l;default:return!1}}function o(){if(r.symbol==="until"){var l=Date.parse(r.text);if(!l)throw new Error("Cannot parse until date:"+r.text);t.until=new Date(l)}else r.accept("for")&&(t.count=parseInt(r.value[0],10),r.expect("number"))}}function Ye(e){return e12){var r=Math.floor(this.month/12),d=Q(this.month,12);this.month=d,this.year+=r,this.month===0&&(this.month=12,--this.year)}},i.prototype.addWeekly=function(t,r){r>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-r))+7*t:this.day+=-(this.getWeekday()-r)+7*t,this.fixDay()},i.prototype.addDaily=function(t){this.day+=t,this.fixDay()},i.prototype.addHours=function(t,r,d){for(r&&(this.hour+=Math.floor((23-this.hour)/t)*t);;){this.hour+=t;var n=$e(this.hour,24),s=n.div,_=n.mod;if(s&&(this.hour=_,this.addDaily(s)),re(d)||R(d,this.hour))break}},i.prototype.addMinutes=function(t,r,d,n){for(r&&(this.minute+=Math.floor((1439-(60*this.hour+this.minute))/t)*t);;){this.minute+=t;var s=$e(this.minute,60),_=s.div,a=s.mod;if(_&&(this.minute=a,this.addHours(_,!1,d)),(re(d)||R(d,this.hour))&&(re(n)||R(n,this.minute)))break}},i.prototype.addSeconds=function(t,r,d,n,s){for(r&&(this.second+=Math.floor((86399-(3600*this.hour+60*this.minute+this.second))/t)*t);;){this.second+=t;var _=$e(this.second,60),a=_.div,o=_.mod;if(a&&(this.second=o,this.addMinutes(a,!1,d,n)),(re(d)||R(d,this.hour))&&(re(n)||R(n,this.minute))&&(re(s)||R(s,this.second)))break}},i.prototype.fixDay=function(){if(!(this.day<=28)){var t=dt(this.year,this.month-1)[1];if(!(this.day<=t))for(;this.day>t;){if(this.day-=t,++this.month,this.month===13&&(this.month=1,++this.year,this.year>rt))return;t=dt(this.year,this.month-1)[1]}}},i.prototype.add=function(t,r){var d=t.freq,n=t.interval,s=t.wkst,_=t.byhour,a=t.byminute,o=t.bysecond;switch(d){case I.YEARLY:return this.addYears(n);case I.MONTHLY:return this.addMonths(n);case I.WEEKLY:return this.addWeekly(n,s);case I.DAILY:return this.addDaily(n);case I.HOURLY:return this.addHours(n,r,_);case I.MINUTELY:return this.addMinutes(n,r,_,a);case I.SECONDLY:return this.addSeconds(n,r,_,a,o)}},i}(Ee);function pt(e){for(var i=[],t=0,r=Object.keys(e);t=-366&&n<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}if(!(i.byweekno||V(i.byweekno)||V(i.byyearday)||i.bymonthday||V(i.bymonthday)||Y(i.byweekday)||Y(i.byeaster)))switch(i.freq){case C.YEARLY:i.bymonth||(i.bymonth=i.dtstart.getUTCMonth()+1),i.bymonthday=i.dtstart.getUTCDate();break;case C.MONTHLY:i.bymonthday=i.dtstart.getUTCDate();break;case C.WEEKLY:i.byweekday=[pe(i.dtstart)]}if(Y(i.bymonth)&&!X(i.bymonth)&&(i.bymonth=[i.bymonth]),Y(i.byyearday)&&!X(i.byyearday)&&ae(i.byyearday)&&(i.byyearday=[i.byyearday]),Y(i.bymonthday))if(X(i.bymonthday)){var r=[],d=[];for(t=0;t0?r.push(n):n<0&&d.push(n)}i.bymonthday=r,i.bynmonthday=d}else i.bymonthday<0?(i.bynmonthday=[i.bymonthday],i.bymonthday=[]):(i.bynmonthday=[],i.bymonthday=[i.bymonthday]);else i.bymonthday=[],i.bynmonthday=[];if(Y(i.byweekno)&&!X(i.byweekno)&&(i.byweekno=[i.byweekno]),Y(i.byweekday))if(ae(i.byweekday))i.byweekday=[i.byweekday],i.bynweekday=null;else if(at(i.byweekday))i.byweekday=[W.fromStr(i.byweekday).weekday],i.bynweekday=null;else if(i.byweekday instanceof W)!i.byweekday.n||i.freq>C.MONTHLY?(i.byweekday=[i.byweekday.weekday],i.bynweekday=null):(i.bynweekday=[[i.byweekday.weekday,i.byweekday.n]],i.byweekday=null);else{var s=[],_=[];for(t=0;tC.MONTHLY?s.push(a.weekday):_.push([a.weekday,a.n])}i.byweekday=V(s)?s:null,i.bynweekday=V(_)?_:null}else i.bynweekday=null;return Y(i.byhour)?ae(i.byhour)&&(i.byhour=[i.byhour]):i.byhour=i.freq=4?(l=0,r=o.yearlen+Q(a-i.wkst,7)):r=n-l;for(var h=Math.floor(r/7),v=Q(r,7),u=Math.floor(h+v/4),f=0;f0&&c<=u){var p=void 0;c>1?(p=l+7*(c-1),l!==t&&(p-=7-t)):p=l;for(var m=0;m<7&&(o.wnomask[p]=1,p++,o.wdaymask[p]!==i.wkst);m++);}}if(R(i.byweekno,1)&&(p=l+7*u,l!==t&&(p-=7-t),p=4?(x=0,k=b+Q(y-i.wkst,7)):k=n-l,g=Math.floor(52+Q(k,7)/4)}if(R(i.byweekno,g))for(p=0;p=C.HOURLY&&V(M)&&!R(M,w.hour)||N>=C.MINUTELY&&V(T)&&!R(T,w.minute)||N>=C.SECONDLY&&V(A)&&!R(A,w.second)?[]:D.gettimeset(N)(w.hour,w.minute,w.second,w.millisecond)}(o,a,i);;){var h=o.getdayset(r)(a.year,a.month,a.day),v=h[0],u=h[1],f=h[2],c=hn(v,u,f,o,i);if(V(s))for(var p=ln(s,l,u,f,o,v),m=0;mn)return oe(e);if(g>=t){var y=bt(g,i);if(!e.accept(y)||_&&!--_)return oe(e)}}else for(m=u;mn||g>=t&&(y=bt(g,i),!e.accept(y)||_&&!--_))return oe(e)}}if(i.interval===0||(a.add(i,c),a.year>rt))return oe(e);Ye(r)||(l=o.gettimeset(r)(a.hour,a.minute,a.second,0)),o.rebuild(a.year,a.month)}}function cn(e,i,t){var r=t.bymonth,d=t.byweekno,n=t.byweekday,s=t.byeaster,_=t.bymonthday,a=t.bynmonthday,o=t.byyearday;return V(r)&&!R(r,e.mmask[i])||V(d)&&!e.wnomask[i]||V(n)&&!R(n,e.wdaymask[i])||V(e.nwdaymask)&&!e.nwdaymask[i]||s!==null&&!R(e.eastermask,i)||(V(_)||V(a))&&!R(_,e.mdaymask[i])&&!R(a,e.nmdaymask[i])||V(o)&&(i=e.yearlen&&!R(o,i+1-e.yearlen)&&!R(o,-e.nextyearlen+i-e.yearlen))}function bt(e,i){return new Se(e,i.tzid).rezonedDate()}function oe(e){return e.getValue()}function hn(e,i,t,r,d){for(var n=!1,s=i;s0&&f[0]===" "?(v[u-1]+=f.slice(1),v.splice(u,1)):u+=1:v.splice(u,1)}return v}(e,i.unfold);return o.forEach(function(l){var h;if(l){var v=function(m){var g=function(k){if(k.indexOf(":")===-1)return{name:"RRULE",value:k};var E=Ha(k,":",1),D=E[0],w=E[1];return{name:D,value:w}}(m),y=g.name,x=g.value,b=y.split(";");if(!b)throw new Error("empty property name");return{name:b[0].toUpperCase(),parms:b.slice(1),value:x}}(l),u=v.name,f=v.parms,c=v.value;switch(u.toUpperCase()){case"RRULE":if(f.length)throw new Error("unsupported RRULE parm: ".concat(f.join(",")));t.push(Ue(l));break;case"RDATE":var p=((h=/RDATE(?:;TZID=([^:=]+))?/i.exec(l))!==null&&h!==void 0?h:[])[1];p&&!a&&(a=p),r=r.concat(kt(c,f));break;case"EXRULE":if(f.length)throw new Error("unsupported EXRULE parm: ".concat(f.join(",")));d.push(Ue(c));break;case"EXDATE":n=n.concat(kt(c,f));break;case"DTSTART":break;default:throw new Error("unsupported property: "+u)}}}),{dtstart:_,tzid:a,rrulevals:t,rdatevals:r,exrulevals:d,exdatevals:n}}function Ne(e,i){return i===void 0&&(i={}),function(t,r){var d=fn(t,r),n=d.rrulevals,s=d.rdatevals,_=d.exrulevals,a=d.exdatevals,o=d.dtstart,l=d.tzid,h=r.cache===!1;if(r.compatible&&(r.forceset=!0,r.unfold=!0),r.forceset||n.length>1||s.length||_.length||a.length){var v=new pn(h);return v.dtstart(o),v.tzid(l||void 0),n.forEach(function(f){v.rrule(new C(Fe(f,o,l),h))}),s.forEach(function(f){v.rdate(f)}),_.forEach(function(f){v.exrule(new C(Fe(f,o,l),h))}),a.forEach(function(f){v.exdate(f)}),r.compatible&&r.dtstart&&v.rdate(o),v}var u=n[0]||{};return new C(Fe(u,u.dtstart||r.dtstart||o,u.tzid||r.tzid||l),h)}(e,function(t){var r=[],d=Object.keys(t),n=Object.keys(xt);if(d.forEach(function(s){R(n,s)||r.push(s)}),r.length)throw new Error("Invalid options: "+r.join(", "));return Z(Z({},xt),t)}(i))}function Fe(e,i,t){return Z(Z({},e),{dtstart:i,tzid:t})}function kt(e,i){return function(t){t.forEach(function(r){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(r))throw new Error("unsupported RDATE/EXDATE parm: "+r)})}(i),e.split(",").map(function(t){return Ie(t)})}function wt(e){var i=this;return function(t){if(t!==void 0&&(i["_".concat(e)]=t),i["_".concat(e)]!==void 0)return i["_".concat(e)];for(var r=0;rd.bottom&&(s.bottom=d.bottom,s.top=s.bottom-s.height),s.leftd.right&&(s.right=d.right,s.left=s.right-s.width),l.x>=s.left&&l.x<=s.right&&(s.left=l.x-s.width-_,s.right=s.left+s.width),l.y>=s.top&&l.y<=s.bottom&&(s.top=l.y-s.height-a,s.bottom=s.top+s.height),s}_getViewPortSize(){const i=this._scheduler,t=i.$domHelpers,r=this._getViewPort();let d,n=r,s=window.scrollY+document.body.scrollTop,_=window.scrollX+document.body.scrollLeft;return r===i.$event_data?(n=i.$event,s=0,_=0,d=t.getNodePosition(i.$event)):d=t.getNodePosition(n),{left:d.x+_,top:d.y+s,width:d.width,height:d.height,bottom:d.y+d.height+s,right:d.x+d.width+_}}}class vn{constructor(i){this._listeners={},this.tooltip=new mn(i),this._scheduler=i,this._domEvents=i._createDomEventScope(),this._initDelayedFunctions()}destructor(){this.tooltip.hide(),this._domEvents.detachAll()}hideTooltip(){this.delayHide()}attach(i){let t=document.body;const r=this._scheduler,d=r.$domHelpers;i.global||(t=r.$root);let n=null;const s=_=>{const a=d.getTargetNode(_),o=d.closest(a,i.selector);if(d.isChildOf(a,this.tooltip.getNode()))return;const l=()=>{n=o,i.onmouseenter(_,o)};n?o&&o===n?i.onmousemove(_,o):(i.onmouseleave(_,n),n=null,o&&o!==n&&l()):o&&l()};this.detach(i.selector),this._domEvents.attach(t,"mousemove",s),this._listeners[i.selector]={node:t,handler:s}}detach(i){const t=this._listeners[i];t&&this._domEvents.detach(t.node,"mousemove",t.handler)}tooltipFor(i){const t=r=>{let d=r;return document.createEventObject&&!document.createEvent&&(d=document.createEventObject(r)),d};this._initDelayedFunctions(),this.attach({selector:i.selector,global:i.global,onmouseenter:(r,d)=>{const n=i.html(r,d);n&&this.delayShow(t(r),n)},onmousemove:(r,d)=>{const n=i.html(r,d);n?this.delayShow(t(r),n):(this.delayShow.$cancelTimeout(),this.delayHide())},onmouseleave:()=>{this.delayShow.$cancelTimeout(),this.delayHide()}})}_initDelayedFunctions(){const i=this._scheduler;this.delayShow&&this.delayShow.$cancelTimeout(),this.delayHide&&this.delayHide.$cancelTimeout(),this.tooltip.hide(),this.delayShow=ee.delay((t,r)=>{i.callEvent("onBeforeTooltip",[t])===!1?this.tooltip.hide():(this.tooltip.setContent(r),this.tooltip.show(t))},i.config.tooltip_timeout||1),this.delayHide=ee.delay(()=>{this.delayShow.$cancelTimeout(),this.tooltip.hide()},i.config.tooltip_hide_timeout||1)}}const gn={active_links:function(e){e.config.active_link_view="day",e._active_link_click=function(i){var t=i.target.getAttribute("data-link-date"),r=e.date.str_to_date(e.config.api_date,!1,!0);if(t)return e.setCurrentView(r(t),e.config.active_link_view),i&&i.preventDefault&&i.preventDefault(),!1},e.attachEvent("onTemplatesReady",function(){var i=function(r,d){d=d||r+"_scale_date",e.templates["_active_links_old_"+d]||(e.templates["_active_links_old_"+d]=e.templates[d]);var n=e.templates["_active_links_old_"+d],s=e.date.date_to_str(e.config.api_date);e.templates[d]=function(_){return""+n(_)+""}};if(i("week"),i("","month_day"),this.matrix)for(var t in this.matrix)i(t);this._detachDomEvent(this._obj,"click",e._active_link_click),e.event(this._obj,"click",e._active_link_click)})},agenda_legacy:function(e){e.date.add_agenda_legacy=function(i){return e.date.add(i,1,"year")},e.templates.agenda_legacy_time=function(i,t,r){return r._timed?this.day_date(r.start_date,r.end_date,r)+" "+this.event_date(i):e.templates.day_date(i)+" – "+e.templates.day_date(t)},e.templates.agenda_legacy_text=function(i,t,r){return r.text},e.templates.agenda_legacy_date=function(){return""},e.date.agenda_legacy_start=function(){return e.date.date_part(e._currentDate())},e.attachEvent("onTemplatesReady",function(){var i=e.dblclick_dhx_cal_data;e.dblclick_dhx_cal_data=function(){if(this._mode=="agenda_legacy")!this.config.readonly&&this.config.dblclick_create&&this.addEventNow();else if(i)return i.apply(this,arguments)};var t=e.render_data;e.render_data=function(n){if(this._mode!="agenda_legacy")return t.apply(this,arguments);d()};var r=e.render_view_data;function d(){var n=e.get_visible_events();n.sort(function(m,g){return m.start_date>g.start_date?1:-1});for(var s,_="
",a=0;a
"+(e.config.rtl?e.templates.agenda_time(o.end_date,o.start_date,o):e.templates.agenda_time(o.start_date,o.end_date,o))+"
",_+=`
+`)},i.prototype.clone=function(){var t=new i(!!this._cache);return this._rrule.forEach(function(r){return t.rrule(r.clone())}),this._exrule.forEach(function(r){return t.exrule(r.clone())}),this._rdate.forEach(function(r){return t.rdate(new Date(r.getTime()))}),this._exdate.forEach(function(r){return t.exdate(new Date(r.getTime()))}),t},i}(C);function Et(e,i){if(!(e instanceof C))throw new TypeError(String(e)+" is not RRule instance");R(i.map(String),String(e))||i.push(e)}function Dt(e,i){if(!(e instanceof Date))throw new TypeError(String(e)+" is not Date instance");R(i.map(Number),Number(e))||(i.push(e),be(i))}function St(e,i,t){var r=!t||t.toUpperCase()==="UTC",d=r?"".concat(e,":"):"".concat(e,";TZID=").concat(t,":"),n=i.map(function(s){return je(s.valueOf(),r)}).join(",");return"".concat(d).concat(n)}class mn{constructor(i){this._scheduler=i}getNode(){const i=this._scheduler;return this._tooltipNode||(this._tooltipNode=document.createElement("div"),this._tooltipNode.className="dhtmlXTooltip scheduler_tooltip tooltip",i._waiAria.tooltipAttr(this._tooltipNode)),i.config.rtl?this._tooltipNode.classList.add("dhtmlXTooltip_rtl"):this._tooltipNode.classList.remove("dhtmlXTooltip_rtl"),this._tooltipNode}setViewport(i){return this._root=i,this}show(i,t){const r=this._scheduler,d=r.$domHelpers,n=document.body,s=this.getNode();if(d.isChildOf(s,n)||(this.hide(),n.appendChild(s)),this._isLikeMouseEvent(i)){const _=this._calculateTooltipPosition(i);t=_.top,i=_.left}return s.style.top=t+"px",s.style.left=i+"px",r._waiAria.tooltipVisibleAttr(s),this}hide(){const i=this._scheduler,t=this.getNode();return t&&t.parentNode&&t.parentNode.removeChild(t),i._waiAria.tooltipHiddenAttr(t),this}setContent(i){return this.getNode().innerHTML=i,this}_isLikeMouseEvent(i){return!(!i||typeof i!="object")&&"clientX"in i&&"clientY"in i}_getViewPort(){return this._root||document.body}_calculateTooltipPosition(i){const t=this._scheduler,r=t.$domHelpers,d=this._getViewPortSize(),n=this.getNode(),s={top:0,left:0,width:n.offsetWidth,height:n.offsetHeight,bottom:0,right:0},_=t.config.tooltip_offset_x,a=t.config.tooltip_offset_y,o=document.body,l=r.getRelativeEventPosition(i,o),h=r.getNodePosition(o);l.y+=h.y,s.top=l.y,s.left=l.x,s.top+=a,s.left+=_,s.bottom=s.top+s.height,s.right=s.left+s.width;const v=window.scrollY+o.scrollTop;return s.topd.bottom&&(s.bottom=d.bottom,s.top=s.bottom-s.height),s.leftd.right&&(s.right=d.right,s.left=s.right-s.width),l.x>=s.left&&l.x<=s.right&&(s.left=l.x-s.width-_,s.right=s.left+s.width),l.y>=s.top&&l.y<=s.bottom&&(s.top=l.y-s.height-a,s.bottom=s.top+s.height),s}_getViewPortSize(){const i=this._scheduler,t=i.$domHelpers,r=this._getViewPort();let d,n=r,s=window.scrollY+document.body.scrollTop,_=window.scrollX+document.body.scrollLeft;return r===i.$event_data?(n=i.$event,s=0,_=0,d=t.getNodePosition(i.$event)):d=t.getNodePosition(n),{left:d.x+_,top:d.y+s,width:d.width,height:d.height,bottom:d.y+d.height+s,right:d.x+d.width+_}}}class vn{constructor(i){this._listeners={},this.tooltip=new mn(i),this._scheduler=i,this._domEvents=i._createDomEventScope(),this._initDelayedFunctions()}destructor(){this.tooltip.hide(),this._domEvents.detachAll()}hideTooltip(){this.delayHide()}attach(i){let t=document.body;const r=this._scheduler,d=r.$domHelpers;i.global||(t=r.$root);let n=null;const s=_=>{const a=d.getTargetNode(_),o=d.closest(a,i.selector);if(d.isChildOf(a,this.tooltip.getNode()))return;const l=()=>{n=o,i.onmouseenter(_,o)};r._mobile&&r.config.touch_tooltip&&(o?l():i.onmouseleave(_,o)),n?o&&o===n?i.onmousemove(_,o):(i.onmouseleave(_,n),n=null,o&&o!==n&&l()):o&&l()};this.detach(i.selector),this._domEvents.attach(t,"mousemove",s),this._listeners[i.selector]={node:t,handler:s}}detach(i){const t=this._listeners[i];t&&this._domEvents.detach(t.node,"mousemove",t.handler)}tooltipFor(i){const t=r=>{let d=r;return document.createEventObject&&!document.createEvent&&(d=document.createEventObject(r)),d};this._initDelayedFunctions(),this.attach({selector:i.selector,global:i.global,onmouseenter:(r,d)=>{const n=i.html(r,d);n&&this.delayShow(t(r),n)},onmousemove:(r,d)=>{const n=i.html(r,d);n?this.delayShow(t(r),n):(this.delayShow.$cancelTimeout(),this.delayHide())},onmouseleave:()=>{this.delayShow.$cancelTimeout(),this.delayHide()}})}_initDelayedFunctions(){const i=this._scheduler;this.delayShow&&this.delayShow.$cancelTimeout(),this.delayHide&&this.delayHide.$cancelTimeout(),this.tooltip.hide(),this.delayShow=ee.delay((t,r)=>{i.callEvent("onBeforeTooltip",[t])===!1?this.tooltip.hide():(this.tooltip.setContent(r),this.tooltip.show(t))},i.config.tooltip_timeout||1),this.delayHide=ee.delay(()=>{this.delayShow.$cancelTimeout(),this.tooltip.hide()},i.config.tooltip_hide_timeout||1)}}const gn={active_links:function(e){e.config.active_link_view="day",e._active_link_click=function(i){var t=i.target.getAttribute("data-link-date"),r=e.date.str_to_date(e.config.api_date,!1,!0);if(t)return e.setCurrentView(r(t),e.config.active_link_view),i&&i.preventDefault&&i.preventDefault(),!1},e.attachEvent("onTemplatesReady",function(){var i=function(r,d){d=d||r+"_scale_date",e.templates["_active_links_old_"+d]||(e.templates["_active_links_old_"+d]=e.templates[d]);var n=e.templates["_active_links_old_"+d],s=e.date.date_to_str(e.config.api_date);e.templates[d]=function(_){return""+n(_)+""}};if(i("week"),i("","month_day"),this.matrix)for(var t in this.matrix)i(t);this._detachDomEvent(this._obj,"click",e._active_link_click),e.event(this._obj,"click",e._active_link_click)})},agenda_legacy:function(e){e.date.add_agenda_legacy=function(i){return e.date.add(i,1,"year")},e.templates.agenda_legacy_time=function(i,t,r){return r._timed?this.day_date(r.start_date,r.end_date,r)+" "+this.event_date(i):e.templates.day_date(i)+" – "+e.templates.day_date(t)},e.templates.agenda_legacy_text=function(i,t,r){return r.text},e.templates.agenda_legacy_date=function(){return""},e.date.agenda_legacy_start=function(){return e.date.date_part(e._currentDate())},e.attachEvent("onTemplatesReady",function(){var i=e.dblclick_dhx_cal_data;e.dblclick_dhx_cal_data=function(){if(this._mode=="agenda_legacy")!this.config.readonly&&this.config.dblclick_create&&this.addEventNow();else if(i)return i.apply(this,arguments)};var t=e.render_data;e.render_data=function(n){if(this._mode!="agenda_legacy")return t.apply(this,arguments);d()};var r=e.render_view_data;function d(){var n=e.get_visible_events();n.sort(function(m,g){return m.start_date>g.start_date?1:-1});for(var s,_="
",a=0;a
"+(e.config.rtl?e.templates.agenda_time(o.end_date,o.start_date,o):e.templates.agenda_time(o.start_date,o.end_date,o))+"
",_+=`
`,_+=""+e.templates.agenda_text(o.start_date,o.end_date,o)+"
"}_+="
",e._els.dhx_cal_data[0].innerHTML=_,e._els.dhx_cal_data[0].childNodes[0].scrollTop=e._agendaScrollTop||0;var f=e._els.dhx_cal_data[0].childNodes[0];f.childNodes[f.childNodes.length-1].style.height=f.offsetHeight
"+_.date+"
"+_.description+"
",e._table_view=!0,e.set_sizes()}}(n),n?(e._cols=null,e._colsS=null,e._table_view=!0,d()):e._table_view=!1}})},agenda_view:function(e){e.date.add_agenda=function(d,n){return e.date.add(d,1*n,"month")},e.templates.agenda_time=function(d,n,s){return s._timed?`${this.event_date(d)} - ${this.event_date(n)}`:e.locale.labels.full_day},e.templates.agenda_text=function(d,n,s){return s.text};const i=e.date.date_to_str("%F %j"),t=e.date.date_to_str("%l");e.templates.agenda_day=function(d){return`
${i(d)}
${t(d)}
`},e.templates.agenda_date=function(d,n){return e.templates.month_date(e.getState().date)},e.date.agenda_start=function(d){return e.date.month_start(new Date(d))};let r=0;e.attachEvent("onTemplatesReady",function(){var d=e.dblclick_dhx_cal_data;e.dblclick_dhx_cal_data=function(){if(this._mode=="agenda")!this.config.readonly&&this.config.dblclick_create&&this.addEventNow();else if(d)return d.apply(this,arguments)};var n=e.render_data;e.render_data=function(o){if(this._mode!="agenda")return n.apply(this,arguments);_()};var s=e.render_view_data;function _(){const o=e.get_visible_events();o.sort(function(p,m){return p.start_date>m.start_date?1:-1});const l={};let h=e.getState().min_date;const v=e.getState().max_date;for(;h.valueOf(){let m=e.date.day_start(new Date(p.start_date));for(;m.valueOf()${e.locale.labels.agenda_tab}`;e._els.dhx_cal_data[0].scrollTop=r;let f=e._els.dhx_cal_data[0].querySelectorAll(".dhx_cal_agenda_event_line");e._rendered=[];for(var c=0;c
${c}
${g}
-`}(0,v)}),h+="",h}e.render_view_data=function(){return this._mode=="agenda"&&(r=e._els.dhx_cal_data[0].scrollTop,e._els.dhx_cal_data[0].scrollTop=0),s.apply(this,arguments)},e.agenda_view=function(o){o?(e._min_date=e.config.agenda_start||e.date.agenda_start(e._date),e._max_date=e.config.agenda_end||e.date.add_agenda(e._min_date,1),e._cols=null,e._colsS=null,e._table_view=!0,e._getNavDateElement().innerHTML=e.templates.agenda_date(e._date),_()):e._table_view=!1}})},all_timed:function(e){e.config.all_timed="short",e.config.all_timed_month=!1;var i=function(_){return!((_.end_date-_.start_date)/36e5>=24)||e._drag_mode=="resize"&&e._drag_id==_.id};e._safe_copy=function(_){var a=null,o=e._copy_event(_);return _.event_pid&&(a=e.getEvent(_.event_pid)),a&&a.isPrototypeOf(_)&&(delete o.event_length,delete o.event_pid,delete o.rec_pattern,delete o.rec_type),o};var t=e._pre_render_events_line,r=e._pre_render_events_table,d=function(_,a){return this._table_view?r.call(this,_,a):t.call(this,_,a)};e._pre_render_events_line=e._pre_render_events_table=function(_,a){if(!this.config.all_timed||this._table_view&&this._mode!="month"||this._mode=="month"&&!this.config.all_timed_month)return d.call(this,_,a);for(var o=0;o<_.length;o++){var l=_[o];if(!l._timed)if(this.config.all_timed!="short"||i(l)){var h=this._safe_copy(l);l._virtual?h._first_chunk=!1:h._first_chunk=!0,h._drag_resize=!1,h._virtual=!0,h.start_date=new Date(h.start_date),c(l)?(h.end_date=p(h.start_date),this.config.last_hour!=24&&(h.end_date=m(h.start_date,this.config.last_hour))):h.end_date=new Date(l.end_date);var v=!1;h.start_datethis._min_date&&h.start_date+y}function p(g){var y=e.date.add(g,1,"day");return y=e.date.date_part(y)}function m(g,y){var x=e.date.date_part(new Date(g));return x.setHours(y),x}};var n=e.get_visible_events;e.get_visible_events=function(_){return this.config.all_timed&&this.config.multi_day?n.call(this,!1):n.call(this,_)},e.attachEvent("onBeforeViewChange",function(_,a,o,l){return e._allow_dnd=o=="day"||o=="week"||e.getView(o),!0}),e._is_main_area_event=function(_){return!!(_._timed||this.config.all_timed===!0||this.config.all_timed=="short"&&i(_))};var s=e.updateEvent;e.updateEvent=function(_){var a,o,l=e.getEvent(_);l&&(a=e.config.all_timed&&!(e.isOneDayEvent(e._events[_])||e.getState().drag_id))&&(o=e.config.update_render,e.config.update_render=!0),s.apply(e,arguments),l&&a&&(e.config.update_render=o)}},collision:function(e){var i,t;function r(d){e._get_section_view()&&d&&(i=e.getEvent(d)[e._get_section_property()])}e.config.collision_limit=1,e.attachEvent("onBeforeDrag",function(d){return r(d),!0}),e.attachEvent("onBeforeLightbox",function(d){var n=e.getEvent(d);return t=[n.start_date,n.end_date],r(d),!0}),e.attachEvent("onEventChanged",function(d){if(!d||!e.getEvent(d))return!0;var n=e.getEvent(d);if(!e.checkCollision(n)){if(!t)return!1;n.start_date=t[0],n.end_date=t[1],n._timed=this.isOneDayEvent(n)}return!0}),e.attachEvent("onBeforeEventChanged",function(d,n,s){return e.checkCollision(d)}),e.attachEvent("onEventAdded",function(d,n){e.checkCollision(n)||e.deleteEvent(d)}),e.attachEvent("onEventSave",function(d,n,s){if((n=e._lame_clone(n)).id=d,!n.start_date||!n.end_date){var _=e.getEvent(d);n.start_date=new Date(_.start_date),n.end_date=new Date(_.end_date)}return n.rec_type&&e._roll_back_dates(n),e.checkCollision(n)}),e._check_sections_collision=function(d,n){var s=e._get_section_property();return d[s]==n[s]&&d.id!=n.id},e.checkCollision=function(d){var n=[],s=e.config.collision_limit;if(d.rec_type)for(var _=e.getRecDates(d),a=0;a<_.length;a++)for(var o=e.getEvents(_[a].start_date,_[a].end_date),l=0;l=s&&(c=!1)}else n.length>=s&&(c=!1);if(!c){var m=!e.callEvent("onEventCollision",[d,n]);return m||(d[f]=i||d[f]),m}return c}},container_autoresize:function(e){e.config.container_autoresize=!0,e.config.month_day_min_height=90,e.config.min_grid_size=25,e.config.min_map_size=400;var i=e._pre_render_events,t=!0,r=0,d=0;e._pre_render_events=function(l,h){if(!e.config.container_autoresize||!t)return i.apply(this,arguments);var v=this.xy.bar_height,u=this._colsS.heights,f=this._colsS.heights=[0,0,0,0,0,0,0],c=this._els.dhx_cal_data[0];if(l=this._table_view?this._pre_render_events_table(l,h):this._pre_render_events_line(l,h),this._table_view)if(h)this._colsS.heights=u;else{var p=c.firstChild;const E=p.querySelectorAll(".dhx_cal_month_row");if(E){for(var m=0;mthis._colsS.height-this.xy.month_head_height){var g=E[m].querySelectorAll(".dhx_cal_month_cell"),y=this._colsS.height-this.xy.month_head_height;1*this.config.max_month_events!==this.config.max_month_events||f[m]<=this.config.max_month_events?y=f[m]*v:(this.config.max_month_events+1)*v>this._colsS.height-this.xy.month_head_height&&(y=(this.config.max_month_events+1)*v),E[m].style.height=y+this.xy.month_head_height+"px";for(var x=0;xM&&(M=u.childNodes[T].offsetHeight);f=M}else f=Math.max(u.offsetHeight-1,u.scrollHeight);if(c=="month")e.config.month_day_min_height&&!l&&(f=u.querySelectorAll(".dhx_cal_month_row").length*e.config.month_day_min_height),l&&(u.style.height=f+"px");else if(c=="year")f=190*e.config.year_y;else if(c=="agenda"){if(f=0,u.childNodes&&u.childNodes.length)for(var p=0;py&&(y=m)}f=3*y}else if(c=="map"){f=0;var D=u.querySelectorAll(".dhx_map_line");for(p=0;p0){var f=document.cookie.indexOf(u);if(f!=-1){f+=u.length;var c=document.cookie.indexOf(";",f);return c==-1&&(c=document.cookie.length),document.cookie.substring(f,c)}}return""}(o);if(l){e._min_date||(e._min_date=_),(l=unescape(l).split("@"))[0]=this._helpers.parseDate(l[0]);var h=this.isViewExists(l[1])?l[1]:s;return _=isNaN(+l[0])?_:l[0],window.setTimeout(function(){e.$destroyed||e.setCurrentView(_,h)},1),!1}}return!0}),e.attachEvent("onViewChange",function(d,n){var s,_,a=i(e),o=escape(this._helpers.formatDate(n)+"@"+d);_=a+"="+o+((s="expires=Sun, 31 Jan 9999 22:00:00 GMT")?"; "+s:""),document.cookie=_});var r=e._load;e._load=function(){var d=arguments;if(e._date)r.apply(this,d);else{var n=this;window.setTimeout(function(){r.apply(n,d)},1)}}},daytimeline:function(e){_e("Day Timeline",e.assert)},drag_between:function(e){_e("Drag Between",e.assert)},editors:function(e){e.form_blocks.combo={render:function(i){i.cached_options||(i.cached_options={});var t="";return t+="
"},set_value:function(i,t,r,d){(function(){u();var v=e.attachEvent("onAfterLightbox",function(){u(),e.detachEvent(v)});function u(){if(i._combo&&i._combo.DOMParent){var f=i._combo;f.unload?f.unload():f.destructor&&f.destructor(),f.DOMParent=f.DOMelem=null}}})(),window.dhx_globalImgPath=d.image_path||"/",i._combo=new dhtmlXCombo(i,d.name,i.offsetWidth-8),d.onchange&&i._combo.attachEvent("onChange",d.onchange),d.options_height&&i._combo.setOptionHeight(d.options_height);var n=i._combo;if(n.enableFilteringMode(d.filtering,d.script_path||null,!!d.cache),d.script_path){var s=r[d.map_to];s?d.cached_options[s]?(n.addOption(s,d.cached_options[s]),n.disable(1),n.selectOption(0),n.disable(0)):e.ajax.get(d.script_path+"?id="+s+"&uid="+e.uid(),function(v){var u,f=v.xmlDoc.responseText;try{u=JSON.parse(f).options[0].text}catch{u=e.ajax.xpath("//option",v.xmlDoc)[0].childNodes[0].nodeValue}d.cached_options[s]=u,n.addOption(s,u),n.disable(1),n.selectOption(0),n.disable(0)}):n.setComboValue("")}else{for(var _=[],a=0;a`;for(var r=0;r "+i.options[r].label+""}return t+=""},set_value:function(i,t,r,d){for(var n=i.getElementsByTagName("input"),s=0;s':""},set_value:function(i,t,r,d){i=e._lightbox.querySelector(`#${d.id}`);var n=e.uid(),s=d.checked_value!==void 0?t==d.checked_value:!!t;i.className+=" dhx_cal_checkbox";var _="",a="";if(e.config.wide_form?(i.innerHTML=a,i.nextSibling.innerHTML=_):i.innerHTML=_+a,d.handler){var o=i.getElementsByTagName("input")[0];if(o.$_eventAttached)return;o.$_eventAttached=!0,e.event(o,"click",d.handler)}},get_value:function(i,t,r){var d=(i=e._lightbox.querySelector(`#${r.id}`)).getElementsByTagName("input")[0];return d||(d=i.nextSibling.getElementsByTagName("input")[0]),d.checked?r.checked_value||!0:r.unchecked_value||!1},focus:function(i){}}},expand:function(e){e.ext.fullscreen={toggleIcon:null},e.expand=function(){if(e.callEvent("onBeforeExpand",[])){var i=e._obj;do i._position=i.style.position||"",i.style.position="static";while((i=i.parentNode)&&i.style);(i=e._obj).style.position="absolute",i._width=i.style.width,i._height=i.style.height,i.style.width=i.style.height="100%",i.style.top=i.style.left="0px";var t=document.body;t.scrollTop=0,(t=t.parentNode)&&(t.scrollTop=0),document.body._overflow=document.body.style.overflow||"",document.body.style.overflow="hidden",e._maximize(),e.callEvent("onExpand",[])}},e.collapse=function(){if(e.callEvent("onBeforeCollapse",[])){var i=e._obj;do i.style.position=i._position;while((i=i.parentNode)&&i.style);(i=e._obj).style.width=i._width,i.style.height=i._height,document.body.style.overflow=document.body._overflow,e._maximize(),e.callEvent("onCollapse",[])}},e.attachEvent("onTemplatesReady",function(){var i=document.createElement("div");i.className="dhx_expand_icon",e.ext.fullscreen.toggleIcon=i,i.innerHTML=` +`}(0,v)}),h+="",h}e.render_view_data=function(){return this._mode=="agenda"&&(r=e._els.dhx_cal_data[0].scrollTop,e._els.dhx_cal_data[0].scrollTop=0),s.apply(this,arguments)},e.agenda_view=function(o){o?(e._min_date=e.config.agenda_start||e.date.agenda_start(e._date),e._max_date=e.config.agenda_end||e.date.add_agenda(e._min_date,1),e._cols=null,e._colsS=null,e._table_view=!0,e._getNavDateElement().innerHTML=e.templates.agenda_date(e._date),_()):e._table_view=!1}})},all_timed:function(e){e.config.all_timed="short",e.config.all_timed_month=!1;var i=function(_){return!((_.end_date-_.start_date)/36e5>=24)||e._drag_mode=="resize"&&e._drag_id==_.id};e._safe_copy=function(_){var a=null,o=e._copy_event(_);return _.event_pid&&(a=e.getEvent(_.event_pid)),a&&a.isPrototypeOf(_)&&(delete o.event_length,delete o.event_pid,delete o.rec_pattern,delete o.rec_type),o};var t=e._pre_render_events_line,r=e._pre_render_events_table,d=function(_,a){return this._table_view?r.call(this,_,a):t.call(this,_,a)};e._pre_render_events_line=e._pre_render_events_table=function(_,a){if(!this.config.all_timed||this._table_view&&this._mode!="month"||this._mode=="month"&&!this.config.all_timed_month)return d.call(this,_,a);for(var o=0;o<_.length;o++){var l=_[o];if(!l._timed)if(this.config.all_timed!="short"||i(l)){var h=this._safe_copy(l);l._virtual?h._first_chunk=!1:h._first_chunk=!0,h._drag_resize=!1,h._virtual=!0,h.start_date=new Date(h.start_date),c(l)?(h.end_date=p(h.start_date),this.config.last_hour!=24&&(h.end_date=m(h.start_date,this.config.last_hour))):h.end_date=new Date(l.end_date);var v=!1;h.start_datethis._min_date&&h.start_date+y}function p(g){var y=e.date.add(g,1,"day");return y=e.date.date_part(y)}function m(g,y){var x=e.date.date_part(new Date(g));return x.setHours(y),x}};var n=e.get_visible_events;e.get_visible_events=function(_){return this.config.all_timed&&this.config.multi_day?n.call(this,!1):n.call(this,_)},e.attachEvent("onBeforeViewChange",function(_,a,o,l){return e._allow_dnd=o=="day"||o=="week"||e.getView(o),!0}),e._is_main_area_event=function(_){return!!(_._timed||this.config.all_timed===!0||this.config.all_timed=="short"&&i(_))};var s=e.updateEvent;e.updateEvent=function(_){var a,o,l=e.getEvent(_);l&&(a=e.config.all_timed&&!(e.isOneDayEvent(e._events[_])||e.getState().drag_id))&&(o=e.config.update_render,e.config.update_render=!0),s.apply(e,arguments),l&&a&&(e.config.update_render=o)}},collision:function(e){var i,t;function r(d){e._get_section_view()&&d&&(i=e.getEvent(d)[e._get_section_property()])}e.config.collision_limit=1,e.attachEvent("onBeforeDrag",function(d){return r(d),!0}),e.attachEvent("onBeforeLightbox",function(d){var n=e.getEvent(d);return t=[n.start_date,n.end_date],r(d),!0}),e.attachEvent("onEventChanged",function(d){if(!d||!e.getEvent(d))return!0;var n=e.getEvent(d);if(!e.checkCollision(n)){if(!t)return!1;n.start_date=t[0],n.end_date=t[1],n._timed=this.isOneDayEvent(n)}return!0}),e.attachEvent("onBeforeEventChanged",function(d,n,s){return e.checkCollision(d)}),e.attachEvent("onEventAdded",function(d,n){e.checkCollision(n)||e.deleteEvent(d)}),e.attachEvent("onEventSave",function(d,n,s){if((n=e._lame_clone(n)).id=d,!n.start_date||!n.end_date){var _=e.getEvent(d);n.start_date=new Date(_.start_date),n.end_date=new Date(_.end_date)}return n.rec_type&&e._roll_back_dates(n),e.checkCollision(n)}),e._check_sections_collision=function(d,n){var s=e._get_section_property();return d[s]==n[s]&&d.id!=n.id},e.checkCollision=function(d){var n=[],s=e.config.collision_limit;if(d.rec_type)for(var _=e.getRecDates(d),a=0;a<_.length;a++)for(var o=e.getEvents(_[a].start_date,_[a].end_date),l=0;l=s&&(c=!1)}else n.length>=s&&(c=!1);if(!c){var m=!e.callEvent("onEventCollision",[d,n]);return m||(d[f]=i||d[f]),m}return c}},container_autoresize:function(e){e.config.container_autoresize=!0,e.config.month_day_min_height=90,e.config.min_grid_size=25,e.config.min_map_size=400;var i=e._pre_render_events,t=!0,r=0,d=0;e._pre_render_events=function(l,h){if(!e.config.container_autoresize||!t)return i.apply(this,arguments);var v=this.xy.bar_height,u=this._colsS.heights,f=this._colsS.heights=[0,0,0,0,0,0,0],c=this._els.dhx_cal_data[0];if(l=this._table_view?this._pre_render_events_table(l,h):this._pre_render_events_line(l,h),this._table_view)if(h)this._colsS.heights=u;else{var p=c.firstChild;const E=p.querySelectorAll(".dhx_cal_month_row");if(E&&E.length){for(var m=0;mthis._colsS.height-this.xy.month_head_height){var g=E[m].querySelectorAll(".dhx_cal_month_cell"),y=this._colsS.height-this.xy.month_head_height;1*this.config.max_month_events!==this.config.max_month_events||f[m]<=this.config.max_month_events?y=f[m]*v:(this.config.max_month_events+1)*v>this._colsS.height-this.xy.month_head_height&&(y=(this.config.max_month_events+1)*v),E[m].style.height=y+this.xy.month_head_height+"px";for(var x=0;xM&&(M=u.childNodes[T].offsetHeight);f=M}else f=Math.max(u.offsetHeight-1,u.scrollHeight);if(c=="month")e.config.month_day_min_height&&!l&&(f=u.querySelectorAll(".dhx_cal_month_row").length*e.config.month_day_min_height),l&&(u.style.height=f+"px");else if(c=="year")f=190*e.config.year_y;else if(c=="agenda"){if(f=0,u.childNodes&&u.childNodes.length)for(var p=0;py&&(y=m)}f=3*y}else if(c=="map"){f=0;var D=u.querySelectorAll(".dhx_map_line");for(p=0;p0){var f=document.cookie.indexOf(u);if(f!=-1){f+=u.length;var c=document.cookie.indexOf(";",f);return c==-1&&(c=document.cookie.length),document.cookie.substring(f,c)}}return""}(o);if(l){e._min_date||(e._min_date=_),(l=unescape(l).split("@"))[0]=this._helpers.parseDate(l[0]);var h=this.isViewExists(l[1])?l[1]:s;return _=isNaN(+l[0])?_:l[0],window.setTimeout(function(){e.$destroyed||e.setCurrentView(_,h)},1),!1}}return!0}),e.attachEvent("onViewChange",function(d,n){var s,_,a=i(e),o=escape(this._helpers.formatDate(n)+"@"+d);_=a+"="+o+((s="expires=Sun, 31 Jan 9999 22:00:00 GMT")?"; "+s:""),document.cookie=_});var r=e._load;e._load=function(){var d=arguments;if(e._date)r.apply(this,d);else{var n=this;window.setTimeout(function(){r.apply(n,d)},1)}}},daytimeline:function(e){_e("Day Timeline",e.assert)},drag_between:function(e){_e("Drag Between",e.assert)},editors:function(e){e.form_blocks.combo={render:function(i){i.cached_options||(i.cached_options={});var t="";return t+="
"},set_value:function(i,t,r,d){(function(){u();var v=e.attachEvent("onAfterLightbox",function(){u(),e.detachEvent(v)});function u(){if(i._combo&&i._combo.DOMParent){var f=i._combo;f.unload?f.unload():f.destructor&&f.destructor(),f.DOMParent=f.DOMelem=null}}})(),window.dhx_globalImgPath=d.image_path||"/",i._combo=new dhtmlXCombo(i,d.name,i.offsetWidth-8),d.onchange&&i._combo.attachEvent("onChange",d.onchange),d.options_height&&i._combo.setOptionHeight(d.options_height);var n=i._combo;if(n.enableFilteringMode(d.filtering,d.script_path||null,!!d.cache),d.script_path){var s=r[d.map_to];s?d.cached_options[s]?(n.addOption(s,d.cached_options[s]),n.disable(1),n.selectOption(0),n.disable(0)):e.ajax.get(d.script_path+"?id="+s+"&uid="+e.uid(),function(v){var u,f=v.xmlDoc.responseText;try{u=JSON.parse(f).options[0].text}catch{u=e.ajax.xpath("//option",v.xmlDoc)[0].childNodes[0].nodeValue}d.cached_options[s]=u,n.addOption(s,u),n.disable(1),n.selectOption(0),n.disable(0)}):n.setComboValue("")}else{for(var _=[],a=0;a`;for(var r=0;r "+i.options[r].label+""}return t+=""},set_value:function(i,t,r,d){for(var n=i.getElementsByTagName("input"),s=0;s':""},set_value:function(i,t,r,d){i=e._lightbox.querySelector(`#${d.id}`);var n=e.uid(),s=d.checked_value!==void 0?t==d.checked_value:!!t;i.className+=" dhx_cal_checkbox";var _="",a="";if(e.config.wide_form?(i.innerHTML=a,i.nextSibling.innerHTML=_):i.innerHTML=_+a,d.handler){var o=i.getElementsByTagName("input")[0];if(o.$_eventAttached)return;o.$_eventAttached=!0,e.event(o,"click",d.handler)}},get_value:function(i,t,r){var d=(i=e._lightbox.querySelector(`#${r.id}`)).getElementsByTagName("input")[0];return d||(d=i.nextSibling.getElementsByTagName("input")[0]),d.checked?r.checked_value||!0:r.unchecked_value||!1},focus:function(i){}}},expand:function(e){e.ext.fullscreen={toggleIcon:null},e.expand=function(){if(e.callEvent("onBeforeExpand",[])){var i=e._obj;do i._position=i.style.position||"",i.style.position="static";while((i=i.parentNode)&&i.style);(i=e._obj).style.position="absolute",i._width=i.style.width,i._height=i.style.height,i.style.width=i.style.height="100%",i.style.top=i.style.left="0px";var t=document.body;t.scrollTop=0,(t=t.parentNode)&&(t.scrollTop=0),document.body._overflow=document.body.style.overflow||"",document.body.style.overflow="hidden",e._maximize(),e.callEvent("onExpand",[])}},e.collapse=function(){if(e.callEvent("onBeforeCollapse",[])){var i=e._obj;do i.style.position=i._position;while((i=i.parentNode)&&i.style);(i=e._obj).style.width=i._width,i.style.height=i._height,document.body.style.overflow=document.body._overflow,e._maximize(),e.callEvent("onCollapse",[])}},e.attachEvent("onTemplatesReady",function(){var i=document.createElement("div");i.className="dhx_expand_icon",e.ext.fullscreen.toggleIcon=i,i.innerHTML=` @@ -61,13 +61,13 @@ https://docs.dhtmlx.com/scheduler/minicalendar.html`)},a.exportToPNG=function(){
Ends: ${e.templates.tooltip_date_format(s.end_date)}
`},e.date.map_start=function(s){return s},e.dblclick_dhx_map_area=function(s){let _=s.target.closest(`[${e.config.event_attribute}]`);if(_){let a=_.getAttribute(`${e.config.event_attribute}`);e.showLightbox(a)}this.config.readonly||!this.config.dblclick_create||_||this.addEventNow({start_date:e.config.map_start,end_date:e.date.add(e.config.map_start,e.config.time_step,"minute")})},e.attachEvent("onSchedulerReady",function(){e.config.map_initial_zoom!==void 0&&(e.config.map_settings.initial_zoom=e.config.map_initial_zoom),e.config.map_zoom_after_resolve!==void 0&&(e.config.map_settings.zoom_after_resolve=e.config.map_zoom_after_resolve),e.config.map_infowindow_max_width!==void 0&&(e.config.map_settings.info_window_max_width=e.config.map_infowindow_max_width),e.config.map_resolve_user_location!==void 0&&(e.config.map_settings.resolve_user_location=e.config.map_resolve_user_location),e.config.map_view_provider!==void 0&&(e.config.map_settings.view_provider=e.config.map_view_provider),e.config.map_type!==void 0&&(e.config.map_settings.type=e.config.map_type),e.config.map_resolve_event_location!==void 0&&(e.config.map_settings.resolve_event_location=e.config.map_resolve_event_location),e.ext.mapView.currentAdapter=e.config.map_view_provider;let s=document.createElement("div");s.className="mapContainer",s.id="mapContainer",s.style.display="none",s.style.zIndex="1",e._obj.appendChild(s);const _=e.render_data;function a(){let l=e.get_visible_events();l.sort(function(f,c){return f.start_date.valueOf()==c.start_date.valueOf()?f.id>c.id?1:-1:f.start_date>c.start_date?1:-1});let h="
";for(let f=0;f
"+e.templates.map_time(c.start_date,c.end_date,c)+"
",h+=`
-
`,h+="
"+e.templates.map_text(c.start_date,c.end_date,c)+"
"}h+="
",e._els.dhx_cal_data[0].scrollTop=0,e._els.dhx_cal_data[0].innerHTML=h;let v=e._els.dhx_cal_data[0].firstChild.childNodes,u=e._getNavDateElement();u&&(u.innerHTML=e.templates[e._mode+"_date"](e._min_date,e._max_date,e._mode)),e._rendered=[];for(let f=0;fi==null?void 0:i.addEventMarker(u)))}},e.map_view=function(l){e._els.dhx_cal_data[0].style.width=e.xy.map_date_width+e.xy.map_description_width+1+"px",e._min_date=e.config.map_start||e._currentDate(),e._max_date=e.config.map_end||e.date.add(e._currentDate(),1,"year"),e._table_view=!0,function(f){if(f){const c=e.locale.labels;e._els.dhx_cal_header[0].innerHTML="
"+c.date+"
"+c.description+"
",e._table_view=!0,e.set_sizes()}}(l);let h=document.getElementById("mapContainer");var v,u;(function(f){let c=document.getElementById(f);if(c){const p=e.$container.querySelector(".dhx_cal_navline").offsetHeight;let m=e.$container.querySelector(".dhx_cal_data").offsetHeight+e.$container.querySelector(".dhx_cal_header").offsetHeight;m<0&&(m=0);let g=e._x-e.xy.map_date_width-e.xy.map_description_width-1;g<0&&(g=0),c.style.height=m+"px",c.style.width=g+"px",c.style.position="absolute",c.style.top=p+"px",e.config.rtl?c.style.marginRight=e.xy.map_date_width+e.xy.map_description_width+1+"px":c.style.marginLeft=e.xy.map_date_width+e.xy.map_description_width+1+"px",c.style.marginTop=e.xy.nav_height+2+"px"}})("mapContainer"),l&&h?(s.style.display="block",a(),e.config.map_view_provider==e.ext.mapView.currentAdapter?(i==null||i.destroy(h),d(e),i==null||i.initialize(h,e.config.map_settings)):(i==null||i.destroy(h),d(e),i==null||i.initialize(h,e.config.map_settings),e.ext.mapView.currentAdapter=e.config.map_view_provider),i&&(v=e.config.map_settings,u=i,v.resolve_user_location?navigator.geolocation&&navigator.geolocation.getCurrentPosition(function(f){u.setView(f.coords.latitude,f.coords.longitude,v.zoom_after_resolve||v.initial_zoom)}):u.setView(v.initial_position.lat,v.initial_position.lng,v.initial_zoom))):(s.style.display="none",e._els.dhx_cal_data[0].style.width="100%",i&&h&&(i.destroy(h),i=null,e.ext.mapView.currentAdapter=e.config.map_view_provider),t.forEach(f=>e.detachEvent(f)),t=[])},e.attachEvent("onLocationError",function(l){return alert("Location can't be found"),google.maps.LatLng(51.47784,-.001492)});let o=async function(l){if(i){const h=await i.resolveAddress(l.event_location);h.lat&&h.lng?(l.lat=+h.lat,l.lng=+h.lng):(e.callEvent("onLocationError",[l.id]),l.lng=e.config.map_settings.error_position.lng,l.lat=e.config.map_settings.error_position.lat),e._latLngUpdate=!0,e.callEvent("onEventChanged",[l.id,l])}};e._event_resolve_delay=1500,e.attachEvent("onEventLoading",function(l){return l.lat&&l.lng&&(l.lat=+l.lat,l.lng=+l.lng),e.config.map_settings.resolve_event_location&&l.event_location&&!l.lat&&!l.lng&&(e._event_resolve_delay+=1500,function(h,v,u,f){setTimeout(function(){if(e.$destroyed)return!0;let c=h.apply(v,u);return h=v=u=null,c},f||1)}(o,this,[l],e._event_resolve_delay)),!0})})},minical:function(e){const i=e._createDomEventScope();e.config.minicalendar={mark_events:!0},e._synced_minicalendars=[],e.renderCalendar=function(t,r,d){var n=null,s=t.date||e._currentDate();if(typeof s=="string"&&(s=this.templates.api_date(s)),r)n=this._render_calendar(r.parentNode,s,t,r),e.unmarkCalendar(n);else{var _=t.container,a=t.position;if(typeof _=="string"&&(_=document.getElementById(_)),typeof a=="string"&&(a=document.getElementById(a)),a&&a.left===void 0&&a.right===void 0){var o=e.$domHelpers.getOffset(a);a={top:o.top+a.offsetHeight,left:o.left}}_||(_=e._get_def_cont(a)),(n=this._render_calendar(_,s,t)).$_eventAttached||(n.$_eventAttached=!0,i.attach(n,"click",(function(g){var y=g.target||g.srcElement,x=e.$domHelpers;if(x.closest(y,".dhx_month_head")&&!x.closest(y,".dhx_after")&&!x.closest(y,".dhx_before")){var b=x.closest(y,"[data-cell-date]").getAttribute("data-cell-date"),k=e.templates.parse_date(b);e.unmarkCalendar(this),e.markCalendar(this,k,"dhx_calendar_click"),this._last_date=k,this.conf.handler&&this.conf.handler.call(e,k,this)}}).bind(n)))}if(e.config.minicalendar.mark_events)for(var l=e.date.month_start(s),h=e.date.add(l,1,"month"),v=this.getEvents(l,h),u=this["filter_"+this._mode],f={},c=0;c=h.valueOf())););}}return this._markCalendarCurrentDate(n),n.conf=t,t.sync&&!d&&this._synced_minicalendars.push(n),n.conf._on_xle_handler||(n.conf._on_xle_handler=e.attachEvent("onXLE",function(){e.updateCalendar(n,n.conf.date)})),this.config.wai_aria_attributes&&this.config.wai_aria_application_role&&n.setAttribute("role","application"),n},e._get_def_cont=function(t){return this._def_count||(this._def_count=document.createElement("div"),this._def_count.className="dhx_minical_popup",e.event(this._def_count,"click",function(r){r.cancelBubble=!0}),document.body.appendChild(this._def_count)),t.left&&(this._def_count.style.left=t.left+"px"),t.right&&(this._def_count.style.right=t.right+"px"),t.top&&(this._def_count.style.top=t.top+"px"),t.bottom&&(this._def_count.style.bottom=t.bottom+"px"),this._def_count._created=new Date,this._def_count},e._locateCalendar=function(t,r){if(typeof r=="string"&&(r=e.templates.api_date(r)),+r>+t._max_date||+r<+t._min_date)return null;for(var d=t.querySelector(".dhx_year_body").childNodes[0],n=0,s=new Date(t._min_date);+this.date.add(s,1,"week")<=+r;)s=this.date.add(s,1,"week"),n++;var _=e.config.start_on_monday,a=(r.getDay()||(_?7:0))-(_?1:0);const o=d.querySelector(`.dhx_cal_month_row:nth-child(${n+1}) .dhx_cal_month_cell:nth-child(${a+1})`);return o?o.firstChild:null},e.markCalendar=function(t,r,d){var n=this._locateCalendar(t,r);n&&(n.className+=" "+d)},e.unmarkCalendar=function(t,r,d){if(d=d||"dhx_calendar_click",r=r||t._last_date){var n=this._locateCalendar(t,r);n&&(n.className=(n.className||"").replace(RegExp(d,"g")))}},e._week_template=function(t){for(var r=t||250,d=0,n=document.createElement("div"),s=this.date.week_start(e._currentDate()),_=0;_<7;_++)this._cols[_]=Math.floor(r/(7-_)),this._render_x_header(_,d,s,n),s=this.date.add(s,1,"day"),r-=this._cols[_],d+=this._cols[_];return n.lastChild.className+=" dhx_scale_bar_last",n},e.updateCalendar=function(t,r){t.conf.date=r,this.renderCalendar(t.conf,t,!0)},e._mini_cal_arrows=[" "," "],e._render_calendar=function(t,r,d,n){var s=e.templates,_=this._cols;this._cols=[];var a=this._mode;this._mode="calendar";var o=this._colsS;this._colsS={height:0};var l=new Date(this._min_date),h=new Date(this._max_date),v=new Date(e._date),u=s.month_day,f=this._ignores_detected;this._ignores_detected=0,s.month_day=s.calendar_date,r=this.date.month_start(r);var c,p=this._week_template(t.offsetWidth-1-this.config.minicalendar.padding);n?c=n:(c=document.createElement("div")).className="dhx_cal_container dhx_mini_calendar",c.setAttribute("date",this._helpers.formatDate(r)),c.innerHTML="
":"'>")+"
"+(p?p.innerHTML:"")+"
";var m=c.querySelector(".dhx_year_month"),g=c.querySelector(".dhx_year_week"),y=c.querySelector(".dhx_year_body");if(m.innerHTML=this.templates.calendar_month(r),d.navigation)for(var x=function(z,K){var U=e.date.add(z._date,K,"month");e.updateCalendar(z,U),e._date.getMonth()==z._date.getMonth()&&e._date.getFullYear()==z._date.getFullYear()&&e._markCalendarCurrentDate(z)},b=["dhx_cal_prev_button","dhx_cal_next_button"],k=["left:1px;top:4px;position:absolute;","left:auto; right:1px;top:4px;position:absolute;"],E=[-1,1],D=function(z){return function(){if(d.sync)for(var K=e._synced_minicalendars,U=0;U500)&&(t=this._def_count.firstChild),t&&(i.detachAll(),t.innerHTML="",t.parentNode&&t.parentNode.removeChild(t),this._def_count&&(this._def_count.style.top="-1000px"),t.conf&&t.conf._on_xle_handler&&e.detachEvent(t.conf._on_xle_handler))},e.isCalendarVisible=function(){return!!(this._def_count&&parseInt(this._def_count.style.top,10)>0)&&this._def_count},e.attachEvent("onTemplatesReady",function(){e.event(document.body,"click",function(){e.destroyCalendar()})},{once:!0}),e.form_blocks.calendar_time={render:function(t){var r="",d=e.config,n=this.date.date_part(e._currentDate()),s=1440,_=0;d.limit_time_select&&(_=60*d.first_hour,s=60*d.last_hour+1),n.setHours(_/60),t._time_values=[],r+=" ")+"  –  "+r+""},set_value:function(t,r,d,n){var s,_,a=t.getElementsByTagName("input"),o=t.getElementsByTagName("select"),l=function(m,g,y){e.event(m,"click",function(){e.destroyCalendar(null,!0),e.renderCalendar({position:m,date:new Date(this._date),navigation:!0,handler:function(x){m.value=e.templates.calendar_time(x),m._date=new Date(x),e.destroyCalendar(),e.config.event_duration&&e.config.auto_end_date&&y===0&&f()}})})};if(e.config.full_day){if(!t._full_day){var h="";e.config.wide_form||(h=t.previousSibling.innerHTML+h),t.previousSibling.innerHTML=h,t._full_day=!0}var v=t.previousSibling.getElementsByTagName("input")[0],u=e.date.time_part(d.start_date)===0&&e.date.time_part(d.end_date)===0;v.checked=u,o[0].disabled=v.checked,o[1].disabled=v.checked,v.$_eventAttached||(v.$_eventAttached=!0,e.event(v,"click",function(){if(v.checked===!0){var m={};e.form_blocks.calendar_time.get_value(t,m),s=e.date.date_part(m.start_date),(+(_=e.date.date_part(m.end_date))==+s||+_>=+s&&(d.end_date.getHours()!==0||d.end_date.getMinutes()!==0))&&(_=e.date.add(_,1,"day"))}var g=s||d.start_date,y=_||d.end_date;c(a[0],g),c(a[1],y),o[0].value=60*g.getHours()+g.getMinutes(),o[1].value=60*y.getHours()+y.getMinutes(),o[0].disabled=v.checked,o[1].disabled=v.checked}))}if(e.config.event_duration&&e.config.auto_end_date){var f=function(){e.config.auto_end_date&&e.config.event_duration&&(s=e.date.add(a[0]._date,o[0].value,"minute"),_=new Date(s.getTime()+60*e.config.event_duration*1e3),a[1].value=e.templates.calendar_time(_),a[1]._date=e.date.date_part(new Date(_)),o[1].value=60*_.getHours()+_.getMinutes())};o[0].$_eventAttached||o[0].addEventListener("change",f)}function c(m,g,y){l(m,g,y),m.value=e.templates.calendar_time(g),m._date=e.date.date_part(new Date(g))}function p(m){for(var g=n._time_values,y=60*m.getHours()+m.getMinutes(),x=y,b=!1,k=0;k=a.valueOf()))for(var o=d;o.valueOf()o&&e.markCalendar(t,o,"dhx_calendar_click"),o=e.date.add(o,1,"day")},e.attachEvent("onEventCancel",function(){e.destroyCalendar(null,!0)}),e.attachEvent("onDestroy",function(){e.destroyCalendar()})},monthheight:function(e){e.attachEvent("onTemplatesReady",function(){e.xy.scroll_width=0;var i=e.render_view_data;e.render_view_data=function(){var r=this._els.dhx_cal_data[0];r.firstChild._h_fix=!0,i.apply(e,arguments);var d=parseInt(r.style.height);r.style.height="1px",r.style.height=r.scrollHeight+"px",this._obj.style.height=this._obj.clientHeight+r.scrollHeight-d+"px"};var t=e._reset_month_scale;e._reset_month_scale=function(r,d,n,s){var _={clientHeight:100};t.apply(e,[_,d,n,s]),r.innerHTML=_.innerHTML}})},multisection:function(e){_e("Multisection",e.assert)},multiselect:function(e){e.form_blocks.multiselect={render:function(i){var t="dhx_multi_select_control dhx_multi_select_"+i.name;i.vertical&&(t+=" dhx_multi_select_control_vertical");for(var r="
",d=0;d"+i.options[d].label+"";return r+="
"},set_value:function(i,t,r,d){for(var n=i.getElementsByTagName("input"),s=0;s]*>","g"),d=new RegExp("]*>","g");function n(b){return b.replace(d,` + `,h+="
"+e.templates.map_text(c.start_date,c.end_date,c)+"
"}h+="
",e._els.dhx_cal_data[0].scrollTop=0,e._els.dhx_cal_data[0].innerHTML=h;let v=e._els.dhx_cal_data[0].firstChild.childNodes,u=e._getNavDateElement();u&&(u.innerHTML=e.templates[e._mode+"_date"](e._min_date,e._max_date,e._mode)),e._rendered=[];for(let f=0;fi==null?void 0:i.addEventMarker(u)))}},e.map_view=function(l){e._els.dhx_cal_data[0].style.width=e.xy.map_date_width+e.xy.map_description_width+1+"px",e._min_date=e.config.map_start||e._currentDate(),e._max_date=e.config.map_end||e.date.add(e._currentDate(),1,"year"),e._table_view=!0,function(f){if(f){const c=e.locale.labels;e._els.dhx_cal_header[0].innerHTML="
"+c.date+"
"+c.description+"
",e._table_view=!0,e.set_sizes()}}(l);let h=document.getElementById("mapContainer");var v,u;(function(f){let c=document.getElementById(f);if(c){const p=e.$container.querySelector(".dhx_cal_navline").offsetHeight;let m=e.$container.querySelector(".dhx_cal_data").offsetHeight+e.$container.querySelector(".dhx_cal_header").offsetHeight;m<0&&(m=0);let g=e._x-e.xy.map_date_width-e.xy.map_description_width-1;g<0&&(g=0),c.style.height=m+"px",c.style.width=g+"px",c.style.position="absolute",c.style.top=p+"px",e.config.rtl?c.style.marginRight=e.xy.map_date_width+e.xy.map_description_width+1+"px":c.style.marginLeft=e.xy.map_date_width+e.xy.map_description_width+1+"px",c.style.marginTop=e.xy.nav_height+2+"px"}})("mapContainer"),l&&h?(s.style.display="block",a(),e.config.map_view_provider==e.ext.mapView.currentAdapter?(i==null||i.destroy(h),d(e),i==null||i.initialize(h,e.config.map_settings)):(i==null||i.destroy(h),d(e),i==null||i.initialize(h,e.config.map_settings),e.ext.mapView.currentAdapter=e.config.map_view_provider),i&&(v=e.config.map_settings,u=i,v.resolve_user_location?navigator.geolocation&&navigator.geolocation.getCurrentPosition(function(f){u.setView(f.coords.latitude,f.coords.longitude,v.zoom_after_resolve||v.initial_zoom)}):u.setView(v.initial_position.lat,v.initial_position.lng,v.initial_zoom))):(s.style.display="none",e._els.dhx_cal_data[0].style.width="100%",i&&h&&(i.destroy(h),i=null,e.ext.mapView.currentAdapter=e.config.map_view_provider),t.forEach(f=>e.detachEvent(f)),t=[])},e.attachEvent("onLocationError",function(l){return alert("Location can't be found"),google.maps.LatLng(51.47784,-.001492)});let o=async function(l){if(i){const h=await i.resolveAddress(l.event_location);h.lat&&h.lng?(l.lat=+h.lat,l.lng=+h.lng):(e.callEvent("onLocationError",[l.id]),l.lng=e.config.map_settings.error_position.lng,l.lat=e.config.map_settings.error_position.lat),e._latLngUpdate=!0,e.callEvent("onEventChanged",[l.id,l])}};e._event_resolve_delay=1500,e.attachEvent("onEventLoading",function(l){return l.lat&&l.lng&&(l.lat=+l.lat,l.lng=+l.lng),e.config.map_settings.resolve_event_location&&l.event_location&&!l.lat&&!l.lng&&(e._event_resolve_delay+=1500,function(h,v,u,f){setTimeout(function(){if(e.$destroyed)return!0;let c=h.apply(v,u);return h=v=u=null,c},f||1)}(o,this,[l],e._event_resolve_delay)),!0})})},minical:function(e){const i=e._createDomEventScope();e.config.minicalendar={mark_events:!0},e._synced_minicalendars=[],e.renderCalendar=function(t,r,d){var n=null,s=t.date||e._currentDate();if(typeof s=="string"&&(s=this.templates.api_date(s)),r)n=this._render_calendar(r.parentNode,s,t,r),e.unmarkCalendar(n);else{var _=t.container,a=t.position;if(typeof _=="string"&&(_=document.getElementById(_)),typeof a=="string"&&(a=document.getElementById(a)),a&&a.left===void 0&&a.right===void 0){var o=e.$domHelpers.getOffset(a);a={top:o.top+a.offsetHeight,left:o.left}}_||(_=e._get_def_cont(a)),(n=this._render_calendar(_,s,t)).$_eventAttached||(n.$_eventAttached=!0,i.attach(n,"click",(function(g){var y=g.target||g.srcElement,x=e.$domHelpers;if(x.closest(y,".dhx_month_head")&&!x.closest(y,".dhx_after")&&!x.closest(y,".dhx_before")){var b=x.closest(y,"[data-cell-date]").getAttribute("data-cell-date"),k=e.templates.parse_date(b);e.unmarkCalendar(this),e.markCalendar(this,k,"dhx_calendar_click"),this._last_date=k,this.conf.handler&&this.conf.handler.call(e,k,this)}}).bind(n)))}if(e.config.minicalendar.mark_events)for(var l=e.date.month_start(s),h=e.date.add(l,1,"month"),v=this.getEvents(l,h),u=this["filter_"+this._mode],f={},c=0;c=h.valueOf())););}}return this._markCalendarCurrentDate(n),n.conf=t,t.sync&&!d&&this._synced_minicalendars.push(n),n.conf._on_xle_handler||(n.conf._on_xle_handler=e.attachEvent("onXLE",function(){e.updateCalendar(n,n.conf.date)})),this.config.wai_aria_attributes&&this.config.wai_aria_application_role&&n.setAttribute("role","application"),n},e._get_def_cont=function(t){return this._def_count||(this._def_count=document.createElement("div"),this._def_count.className="dhx_minical_popup",e.event(this._def_count,"click",function(r){r.cancelBubble=!0}),document.body.appendChild(this._def_count)),t.left&&(this._def_count.style.left=t.left+"px"),t.right&&(this._def_count.style.right=t.right+"px"),t.top&&(this._def_count.style.top=t.top+"px"),t.bottom&&(this._def_count.style.bottom=t.bottom+"px"),this._def_count._created=new Date,this._def_count},e._locateCalendar=function(t,r){if(typeof r=="string"&&(r=e.templates.api_date(r)),+r>+t._max_date||+r<+t._min_date)return null;for(var d=t.querySelector(".dhx_year_body").childNodes[0],n=0,s=new Date(t._min_date);+this.date.add(s,1,"week")<=+r;)s=this.date.add(s,1,"week"),n++;var _=e.config.start_on_monday,a=(r.getDay()||(_?7:0))-(_?1:0);const o=d.querySelector(`.dhx_cal_month_row:nth-child(${n+1}) .dhx_cal_month_cell:nth-child(${a+1})`);return o?o.firstChild:null},e.markCalendar=function(t,r,d){var n=this._locateCalendar(t,r);n&&(n.className+=" "+d)},e.unmarkCalendar=function(t,r,d){if(d=d||"dhx_calendar_click",r=r||t._last_date){var n=this._locateCalendar(t,r);n&&(n.className=(n.className||"").replace(RegExp(d,"g")))}},e._week_template=function(t){for(var r=t||250,d=0,n=document.createElement("div"),s=this.date.week_start(e._currentDate()),_=0;_<7;_++)this._cols[_]=Math.floor(r/(7-_)),this._render_x_header(_,d,s,n),s=this.date.add(s,1,"day"),r-=this._cols[_],d+=this._cols[_];return n.lastChild.className+=" dhx_scale_bar_last",n},e.updateCalendar=function(t,r){t.conf.date=r,this.renderCalendar(t.conf,t,!0)},e._mini_cal_arrows=[" "," "],e._render_calendar=function(t,r,d,n){var s=e.templates,_=this._cols;this._cols=[];var a=this._mode;this._mode="calendar";var o=this._colsS;this._colsS={height:0};var l=new Date(this._min_date),h=new Date(this._max_date),v=new Date(e._date),u=s.month_day,f=this._ignores_detected;this._ignores_detected=0,s.month_day=s.calendar_date,r=this.date.month_start(r);var c,p=this._week_template(t.offsetWidth-1-this.config.minicalendar.padding);n?c=n:(c=document.createElement("div")).className="dhx_cal_container dhx_mini_calendar",c.setAttribute("date",this._helpers.formatDate(r)),c.innerHTML="
":"'>")+"
"+(p?p.innerHTML:"")+"
";var m=c.querySelector(".dhx_year_month"),g=c.querySelector(".dhx_year_week"),y=c.querySelector(".dhx_year_body");if(m.innerHTML=this.templates.calendar_month(r),d.navigation)for(var x=function(z,K){var U=e.date.add(z._date,K,"month");e.updateCalendar(z,U),e._date.getMonth()==z._date.getMonth()&&e._date.getFullYear()==z._date.getFullYear()&&e._markCalendarCurrentDate(z)},b=["dhx_cal_prev_button","dhx_cal_next_button"],k=["left:1px;top:4px;position:absolute;","left:auto; right:1px;top:4px;position:absolute;"],E=[-1,1],D=function(z){return function(){if(d.sync)for(var K=e._synced_minicalendars,U=0;U500)&&(t=this._def_count.firstChild),t&&(i.detachAll(),t.innerHTML="",t.parentNode&&t.parentNode.removeChild(t),this._def_count&&(this._def_count.style.top="-1000px"),t.conf&&t.conf._on_xle_handler&&e.detachEvent(t.conf._on_xle_handler))},e.isCalendarVisible=function(){return!!(this._def_count&&parseInt(this._def_count.style.top,10)>0)&&this._def_count},e.attachEvent("onTemplatesReady",function(){e.event(document.body,"click",function(){e.destroyCalendar()})},{once:!0}),e.form_blocks.calendar_time={render:function(t){var r="",d=e.config,n=this.date.date_part(e._currentDate()),s=1440,_=0;d.limit_time_select&&(_=60*d.first_hour,s=60*d.last_hour+1),n.setHours(_/60),t._time_values=[],r+=" ")+"  –  "+r+""},set_value:function(t,r,d,n){var s,_,a=t.getElementsByTagName("input"),o=t.getElementsByTagName("select"),l=function(m,g,y){e.event(m,"click",function(){e.destroyCalendar(null,!0),e.renderCalendar({position:m,date:new Date(this._date),navigation:!0,handler:function(x){m.value=e.templates.calendar_time(x),m._date=new Date(x),e.destroyCalendar(),e.config.event_duration&&e.config.auto_end_date&&y===0&&f()}})})};if(e.config.full_day){if(!t._full_day){var h="";e.config.wide_form||(h=t.previousSibling.innerHTML+h),t.previousSibling.innerHTML=h,t._full_day=!0}var v=t.previousSibling.getElementsByTagName("input")[0],u=e.date.time_part(d.start_date)===0&&e.date.time_part(d.end_date)===0;v.checked=u,o[0].disabled=v.checked,o[1].disabled=v.checked,v.$_eventAttached||(v.$_eventAttached=!0,e.event(v,"click",function(){if(v.checked===!0){var m={};e.form_blocks.calendar_time.get_value(t,m),s=e.date.date_part(m.start_date),(+(_=e.date.date_part(m.end_date))==+s||+_>=+s&&(d.end_date.getHours()!==0||d.end_date.getMinutes()!==0))&&(_=e.date.add(_,1,"day"))}var g=s||d.start_date,y=_||d.end_date;c(a[0],g),c(a[1],y),o[0].value=60*g.getHours()+g.getMinutes(),o[1].value=60*y.getHours()+y.getMinutes(),o[0].disabled=v.checked,o[1].disabled=v.checked}))}if(e.config.event_duration&&e.config.auto_end_date){var f=function(){e.config.auto_end_date&&e.config.event_duration&&(s=e.date.add(a[0]._date,o[0].value,"minute"),_=new Date(s.getTime()+60*e.config.event_duration*1e3),a[1].value=e.templates.calendar_time(_),a[1]._date=e.date.date_part(new Date(_)),o[1].value=60*_.getHours()+_.getMinutes())};o[0].$_eventAttached||o[0].addEventListener("change",f)}function c(m,g,y){l(m,g,y),m.value=e.templates.calendar_time(g),m._date=e.date.date_part(new Date(g))}function p(m){for(var g=n._time_values,y=60*m.getHours()+m.getMinutes(),x=y,b=!1,k=0;k=a.valueOf()))for(var o=d;o.valueOf()o&&e.markCalendar(t,o,"dhx_calendar_click"),o=e.date.add(o,1,"day")},e.attachEvent("onEventCancel",function(){e.destroyCalendar(null,!0)}),e.attachEvent("onDestroy",function(){e.destroyCalendar()})},monthheight:function(e){e.attachEvent("onTemplatesReady",function(){e.xy.scroll_width=0;var i=e.render_view_data;e.render_view_data=function(){var r=this._els.dhx_cal_data[0];r.firstChild._h_fix=!0,i.apply(e,arguments);var d=parseInt(r.style.height);r.style.height="1px",r.style.height=r.scrollHeight+"px",this._obj.style.height=this._obj.clientHeight+r.scrollHeight-d+"px"};var t=e._reset_month_scale;e._reset_month_scale=function(r,d,n,s){var _={clientHeight:100};t.apply(e,[_,d,n,s]),r.innerHTML=_.innerHTML}})},multisection:function(e){_e("Multisection",e.assert)},multiselect:function(e){e.form_blocks.multiselect={render:function(i){var t="dhx_multi_select_control dhx_multi_select_"+i.name;i.vertical&&(t+=" dhx_multi_select_control_vertical");for(var r="
",d=0;d"+i.options[d].label+"";return r+="
"},set_value:function(i,t,r,d){for(var n=i.getElementsByTagName("input"),s=0;s]*>","g"),d=new RegExp("]*>","g");function n(b){return b.replace(d,` `).replace(r,"")}function s(b,k){b=parseFloat(b),k=parseFloat(k),isNaN(k)||(b-=k);var E=a(b);return b=b-E.width+E.cols*i,isNaN(b)?"auto":100*b/i}function _(b,k,E){b=parseFloat(b),k=parseFloat(k),!isNaN(k)&&E&&(b-=k);var D=a(b);return b=b-D.width+D.cols*i,isNaN(b)?"auto":100*b/(i-(isNaN(k)?0:k))}function a(b){for(var k=0,E=e._els.dhx_cal_header[0].childNodes,D=E[1]?E[1].childNodes:E[0].childNodes,w=0;wN))break;b-=N+1,k+=N+1}return{width:k,cols:w}}function o(b){return b=parseFloat(b),isNaN(b)?"auto":100*b/t}function l(b,k){return(window.getComputedStyle?window.getComputedStyle(b,null)[k]:b.currentStyle?b.currentStyle[k]:null)||""}function h(b,k){for(var E=parseInt(b.style.left,10),D=0;DE)return D;return k}function u(b){return b?"":""}function f(b,k,E,D){var w="<"+b+" profile='"+k+"'";return E&&(w+=" header='"+E+"'"),D&&(w+=" footer='"+D+"'"),w+=">"}function c(){var b="",k=e._mode;if(e.matrix&&e.matrix[e._mode]&&(k=e.matrix[e._mode].render=="cell"?"matrix":"timeline"),b+="",e._mode=="week_agenda")for(var E=e._els.dhx_cal_data[0].getElementsByTagName("DIV"),D=0;D"+n(E[D].innerHTML)+"");else if(e._mode=="agenda"||e._mode=="map")b+=""+n((E=e._els.dhx_cal_header[0].childNodes[0].childNodes)[0].innerHTML)+""+n(E[1].innerHTML)+"";else if(e._mode=="year")for(E=e._els.dhx_cal_data[0].childNodes,D=0;D",b+=m(E[D].querySelector(".dhx_year_week").childNodes),b+=p(E[D].querySelector(".dhx_year_body")),b+="";else{b+="",b+=m(E=e._els.dhx_cal_header[0].childNodes),b+="";var w=e._els.dhx_cal_data[0];if(e.matrix&&e.matrix[e._mode]){for(b+="",D=0;D";b+="",t=w.firstChild.rows[0].cells[0].offsetHeight}else if(w.firstChild.tagName=="TABLE")b+=p(w);else{for(w=w.childNodes[w.childNodes.length-1];w.className.indexOf("dhx_scale_holder")==-1;)w=w.previousSibling;for(w=w.childNodes,b+="",D=0;D";b+="",t=w[0].offsetHeight}}return b+=""}function p(b){for(var k="",E=b.querySelectorAll("tr"),D=0;D",t=S[0].offsetHeight}return k}function m(b){var k,E="";e.matrix&&e.matrix[e._mode]&&(e.matrix[e._mode].second_scale&&(k=b[1].childNodes),b=b[0].childNodes);for(var D=0;D";if(i=b[0].offsetWidth,k){var w=0,S=b[0].offsetWidth,N=1;for(D=0;D",(w+=k[D].offsetWidth)>=S&&(S+=b[N]?b[N].offsetWidth:0,N++),i=k[0].offsetWidth}return E}function g(b){var k="",E=e._rendered,D=e.matrix&&e.matrix[e._mode];if(e._mode=="agenda"||e._mode=="map")for(var w=0;w";else if(e._mode=="week_agenda")for(w=0;w"+n(E[w].innerHTML)+"";else if(e._mode=="year")for(E=e.get_visible_events(),w=0;w",(S=e.date.add(S,1,"day")).valueOf()>=e._max_date.valueOf())break}}else if(D&&D.render=="cell")for(E=e._els.dhx_cal_data[0].getElementsByTagName("TD"),w=0;w";else for(w=0;w";else for(w=0;w",U=="event"?(k+="
",T=b?l(E[w].childNodes[2],"color"):"",k+=""):(T=b?l(E[w],"color"):"",k+=""),k+=""}}}}return k}function y(b,k,E,D,w,S){var N=!1;D=="fullcolor"&&(N=!0,D="color"),D=D||"color";var M,T="";if(b){var A=e._date,H=e._mode;k=e.date[E+"_start"](k),k=e.date["get_"+E+"_end"]?e.date["get_"+E+"_end"](k):e.date.add(k,1,E),T=f("pages",D,w,S);for(var $=new Date(b);+$<+k;$=this.date.add($,1,E))this.setCurrentView($,E),T+=((M="page")?"<"+M+">":"")+c().replace("–","-")+g(N)+u("page");T+=u("pages"),this.setCurrentView(A,H)}else T=f("data",D,w,S)+c().replace("–","-")+g(N)+u("data");return T}function x(b,k,E,D,w,S,N){(function(M,T){var A=e.uid(),H=document.createElement("div");H.style.display="none",document.body.appendChild(H),H.innerHTML='
',document.getElementById(A).firstChild.value=encodeURIComponent(M),document.getElementById(A).submit(),H.parentNode.removeChild(H)})(typeof w=="object"?function(M){for(var T="",A=0;Ae._x/2?1:0,dy:s+d.offsetHeight/2>e._y/2?1:0,width:d.offsetWidth,height:d.offsetHeight}:0}e.attachEvent("onSchedulerReady",function(){const d=e.$container;d._$quickInfoHandler||(d._$quickInfoHandler=!0,e.event(d,"mousedown",function(n){const s=n.target.closest(`[${e.config.event_attribute}]`);s&&(i={id:s.getAttribute(e.config.event_attribute),position:r(s)})}),e.attachEvent("onDestroy",()=>{delete d._$quickInfoHandler}))}),e.attachEvent("onClick",function(d){if(e.config.show_quick_info)return e.showQuickInfo(d),!0}),function(){for(var d=["onEmptyClick","onViewChange","onLightbox","onBeforeEventDelete","onBeforeDrag"],n=function(){return e.hideQuickInfo(!0),!0},s=0;swindow.innerWidth&&(a=window.innerWidth-s),a=Math.max(0,a),n.style.left=a+"px",n.style.top=d.top-(d.dy?_:-d.height)+"px"}else{const o=e.$container.querySelector(".dhx_cal_data").offsetTop;n.style.top=o+20+"px",d.dx==1?(n.style.right="auto",n.style.left=-s+"px",setTimeout(function(){n.style.left="-10px"},1)):(n.style.left="auto",n.style.right=-s+"px",setTimeout(function(){n.style.right="-10px"},1)),n.className=n.className.replace(" dhx_qi_left","").replace(" dhx_qi_right","")+" dhx_qi_"+(d.dx==1?"left":"right")}n.ontransitionend=()=>{t(n),n.ontransitionend=null},setTimeout(()=>{t(n)},1)},e.attachEvent("onTemplatesReady",function(){if(e.hideQuickInfo(),this._quick_info_box){var d=this._quick_info_box;d.parentNode&&d.parentNode.removeChild(d),this._quick_info_box=null}}),e._quick_info_onscroll_handler=function(d){e.hideQuickInfo()},e._init_quick_info=function(){if(!this._quick_info_box){var d=this._quick_info_box=document.createElement("div");this._waiAria.quickInfoAttr(d),d.className="dhx_cal_quick_info",e.$testmode&&(d.className+=" dhx_no_animate"),e.config.rtl&&(d.className+=" dhx_quick_info_rtl");var n=`
@@ -157,6 +157,6 @@ PRODID:-//dhtmlXScheduler//NONSGML v2.2//EN DESCRIPTION:`+(t||"")+` `+n.join(` `)+` -END:VCALENDAR`}},timeline:function(e){_e("Timeline",e.assert)},tooltip:function(e){e.config.tooltip_timeout=30,e.config.tooltip_offset_y=20,e.config.tooltip_offset_x=10,e.config.tooltip_hide_timeout=30;const i=new vn(e);e.ext.tooltips=i,e.attachEvent("onSchedulerReady",function(){i.tooltipFor({selector:"["+e.config.event_attribute+"]",html:t=>{if(e._mobile&&!e.config.touch_tooltip)return;const r=e._locate_event(t.target);if(e.getEvent(r)){const d=e.getEvent(r);return e.templates.tooltip_text(d.start_date,d.end_date,d)}return null},global:!1})}),e.attachEvent("onDestroy",function(){i.destructor()}),e.attachEvent("onLightbox",function(){i.hideTooltip()}),e.attachEvent("onBeforeDrag",function(){return i.hideTooltip(),!0}),e.attachEvent("onEventDeleted",function(){return i.hideTooltip(),!0})},treetimeline:function(e){_e("Tree Timeline",e.assert)},units:function(e){_e("Units",e.assert)},url:function(e){e._get_url_nav=function(){for(var i={},t=(document.location.hash||"").replace("#","").split(","),r=0;r",u+="
"+(v[f]._timed?this.templates.event_date(v[f].start_date):"")+"
",u+="
 
",u+=this.templates.year_tooltip(v[f].start_date,v[f].end_date,v[f])+"
"}}this._tooltip.style.display="",this._tooltip.style.top="0px",document.body.offsetWidth-a.left-this._tooltip.offsetWidth<0?this._tooltip.style.left=a.left-this._tooltip.offsetWidth+"px":this._tooltip.style.left=a.left+l.offsetWidth+"px",this._tooltip.date=_,this._tooltip.innerHTML=u,document.body.offsetHeight-a.top-this._tooltip.offsetHeight<0?this._tooltip.style.top=a.top-this._tooltip.offsetHeight+l.offsetHeight+"px":this._tooltip.style.top=a.top+"px"},e._year_view_tooltip_handler=function(_){if(i()){var a=_.target||_.srcElement;a.tagName.toLowerCase()=="a"&&(a=a.parentNode),e._getClassName(a).indexOf("dhx_year_event")!=-1?e._showToolTip(e.templates.parse_date(a.getAttribute("data-year-date")),e.$domHelpers.getOffset(a),_,a):e._hideToolTip()}},e._init_year_tooltip=function(){e._detachDomEvent(e._els.dhx_cal_data[0],"mouseover",e._year_view_tooltip_handler),e.event(e._els.dhx_cal_data[0],"mouseover",e._year_view_tooltip_handler)},e._get_year_cell=function(_){for(var a=e.templates.format_date(_),o=this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date="${a}"]`),l=0;l=this._max_date.valueOf())return},e.year_view=function(_){if(e.set_sizes(),e._table_view=_,!this._load_mode||!this._load())if(_){if(e._init_year_tooltip(),e._reset_year_scale(),e._load_mode&&e._load())return void(e._render_wait=!0);e.render_view_data()}else e._hideToolTip()},e._reset_year_scale=function(){this._cols=[],this._colsS={};var _=[],a=this._els.dhx_cal_data[0],o=this.config;a.scrollTop=0,a.innerHTML="",Math.floor((parseInt(a.style.height)-e.xy.year_top)/o.year_y);var l=document.createElement("div"),h=this.date.week_start(e._currentDate());this._process_ignores(h,7,"day",1);for(var v=0;v<7;v++)this._ignores&&this._ignores[v]||(this._cols[v]="var(--dhx-scheduler-datepicker-cell-size)",this._render_x_header(v,0,h,l)),h=this.date.add(h,1,"day");for(l.lastChild.className+=" dhx_scale_bar_last",v=0;v
"+l.innerHTML+"
";var g=c.querySelector(".dhx_year_month"),y=c.querySelector(".dhx_year_grid"),x=c.querySelector(".dhx_year_body"),b=e.uid();this._waiAria.yearHeader(g,b),this._waiAria.yearGrid(y,b),g.innerHTML=this.templates.year_month(u);var k=this.date.week_start(u);this._reset_month_scale(x,u,k,6);for(var E=x.querySelectorAll("td"),D=0;D${this.templates.year_month(l)} +END:VCALENDAR`}},timeline:function(e){_e("Timeline",e.assert)},tooltip:function(e){e.config.tooltip_timeout=30,e.config.tooltip_offset_y=20,e.config.tooltip_offset_x=10,e.config.tooltip_hide_timeout=30;const i=new vn(e);e.ext.tooltips=i,e.attachEvent("onSchedulerReady",function(){i.tooltipFor({selector:"["+e.config.event_attribute+"]",html:t=>{if(e._mobile&&!e.config.touch_tooltip)return;const r=e._locate_event(t.target);if(e.getEvent(r)){const d=e.getEvent(r);return e.templates.tooltip_text(d.start_date,d.end_date,d)}return null},global:!1})}),e.attachEvent("onDestroy",function(){i.destructor()}),e.attachEvent("onLightbox",function(){i.hideTooltip()}),e.attachEvent("onBeforeDrag",function(){return e._mobile&&e.config.touch_tooltip||i.hideTooltip(),!0}),e.attachEvent("onEventDeleted",function(){return i.hideTooltip(),!0})},treetimeline:function(e){_e("Tree Timeline",e.assert)},units:function(e){_e("Units",e.assert)},url:function(e){e._get_url_nav=function(){for(var i={},t=(document.location.hash||"").replace("#","").split(","),r=0;r",u+="
"+(v[f]._timed?this.templates.event_date(v[f].start_date):"")+"
",u+="
 
",u+=this.templates.year_tooltip(v[f].start_date,v[f].end_date,v[f])+""}}this._tooltip.style.display="",this._tooltip.style.top="0px",document.body.offsetWidth-a.left-this._tooltip.offsetWidth<0?this._tooltip.style.left=a.left-this._tooltip.offsetWidth+"px":this._tooltip.style.left=a.left+l.offsetWidth+"px",this._tooltip.date=_,this._tooltip.innerHTML=u,document.body.offsetHeight-a.top-this._tooltip.offsetHeight<0?this._tooltip.style.top=a.top-this._tooltip.offsetHeight+l.offsetHeight+"px":this._tooltip.style.top=a.top+"px"},e._year_view_tooltip_handler=function(_){if(i()){var a=_.target||_.srcElement;a.tagName.toLowerCase()=="a"&&(a=a.parentNode),e._getClassName(a).indexOf("dhx_year_event")!=-1?e._showToolTip(e.templates.parse_date(a.getAttribute("data-year-date")),e.$domHelpers.getOffset(a),_,a):e._hideToolTip()}},e._init_year_tooltip=function(){e._detachDomEvent(e._els.dhx_cal_data[0],"mouseover",e._year_view_tooltip_handler),e.event(e._els.dhx_cal_data[0],"mouseover",e._year_view_tooltip_handler)},e._get_year_cell=function(_){for(var a=e.templates.format_date(_),o=this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date="${a}"]`),l=0;l=this._max_date.valueOf())return},e.year_view=function(_){if(e.set_sizes(),e._table_view=_,!this._load_mode||!this._load())if(_){if(e._init_year_tooltip(),e._reset_year_scale(),e._load_mode&&e._load())return void(e._render_wait=!0);e.render_view_data()}else e._hideToolTip()},e._reset_year_scale=function(){this._cols=[],this._colsS={};var _=[],a=this._els.dhx_cal_data[0],o=this.config;a.scrollTop=0,a.innerHTML="",Math.floor((parseInt(a.style.height)-e.xy.year_top)/o.year_y);var l=document.createElement("div"),h=this.date.week_start(e._currentDate());this._process_ignores(h,7,"day",1);for(var v=0;v<7;v++)this._ignores&&this._ignores[v]||(this._cols[v]="var(--dhx-scheduler-datepicker-cell-size)",this._render_x_header(v,0,h,l)),h=this.date.add(h,1,"day");for(l.lastChild.className+=" dhx_scale_bar_last",v=0;v
"+l.innerHTML+"
";var g=c.querySelector(".dhx_year_month"),y=c.querySelector(".dhx_year_grid"),x=c.querySelector(".dhx_year_body"),b=e.uid();this._waiAria.yearHeader(g,b),this._waiAria.yearGrid(y,b),g.innerHTML=this.templates.year_month(u);var k=this.date.week_start(u);this._reset_month_scale(x,u,k,6);for(var E=x.querySelectorAll("td"),D=0;D${this.templates.year_month(l)}
`;const c=f.querySelector(".dhx_year_grid"),p=e._createDatePicker(null,{date:l,minWeeks:6});p._renderDayGrid(c),p.destructor(),o.appendChild(f),l=this.date.add(l,1,"month")}_.appendChild(o);let h=this.date.add(a,1,"year");h.valueOf()!=this.date.week_start(new Date(h)).valueOf()&&(h=this.date.week_start(new Date(h)),h=this.date.add(h,1,"week")),this._max_date=h;var v=this._getNavDateElement();v&&(v.innerHTML=this.templates[this._mode+"_date"](a,h,this._mode))};var n=e.getActionData;e.getActionData=function(_){return i()?{date:t(_.target),section:null}:n.apply(e,arguments)};var s=e._locate_event;e._locate_event=function(_){var a=s.apply(e,arguments);if(!a){var o=t(_);if(!o)return null;var l=e.getEvents(o,e.date.add(o,1,"day"));if(!l.length)return null;a=l[0].id}return a},e.attachEvent("onDestroy",function(){e._hideToolTip()})}},Je=new class{constructor(e){this._seed=0,this._schedulerPlugins=[],this._bundledExtensions=e,this._extensionsManager=new Na(e)}plugin(e){this._schedulerPlugins.push(e),G.scheduler&&e(G.scheduler)}getSchedulerInstance(e){for(var i=Sa(this._extensionsManager),t=0;t {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_prepareDataItem: function(item) {\r\n\t\tvar processedItem = {};\r\n\t\tvar scheduler = this.$scheduler;\r\n\t\tvar copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (copy[i]) {\r\n\t\t\t\tif(copy[i].getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(copy[i]);\r\n\t\t\t\t} else if(typeof copy[i] == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareDataItem(copy[i]);\r\n\t\t\t\t} else if(copy[i] === null) {\r\n\t\t\t\t\tprocessedItem[i] = \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = copy[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\t\thtml+=\"
\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tif(last.style.visibility == \"hidden\"){\r\n\t\t\t\t\t\t\tlast.style.display = \"none\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tlast.style.display = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;"],"names":["global$1","window","global","dragHighlightPos","scheduler","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","createMarkerConfig","configSettings","sectionId","style","top","left","marginLeft","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","monthViewMarkersArray","weekDates","currDate","Date","valueOf","obj","push","week_start","cells","$container","querySelectorAll","event_attribute","id","i","length","cloneNode","unitMarkersArray","sectionPropertyName","y_property","map_to","multisection","formatedSections","String","split","section_delimiter","map","element","elems","columnViewMarkersArray","eventNodes","eventNodeClone","getAttribute","forEach","cfg","attachEvent","mode","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","get_resulting_options","days","zones","options","type","getZones","ev","timespans","day_index","day_value","timespan_type","s","containers","_props","matrix","container","property","view","linker","_add_timespan_zones","_get_blocked_zones","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","resultZones","concat","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","undefined","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","dates","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","d","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","max","min","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","firstChild","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","unit","_get_unit_index","day_ind","unitsPerDay","floor","_date","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","callback","console","error","$stateProvider","registerProvider","batch_update","noRedraw","dp_mode","call_dp","_dp","updateMode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","render","setCurrentView","updateView","render_data","render_view_data","updateEvent","sendData","initPlugins","deletedEvent","copy","undo_deleted","new_event","message","text","expire","addEvent","limit","batchUpdate","uidSeed","isDate","getFullYear","getMonth","utils","mixin","source","force","f","object","result","isArray","pop","Function","prototype","toString","constructor","Number","Boolean","varType","Object","defined","delay","timeout","timer","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","extend","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","renderCalendar","navigation","handler","calendar","html_element","renderElement","renderer","rows","cols","value","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","body","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","$destroyed","a","b","newSize","triggerSchedulerResize","$root","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","EventHost","_silent_mode","listeners","_silentEnd","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","attachAll","name","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","addEventListener","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","detach","detachAll","staticArray","createEventScope","_eventRemoveAll","_createDomEventScope","_trim","str","trim","replace","_isDate","_isObject","getClassName","node","baseVal","locateCss","classname","strict","trg","srcElement","ind","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","hasHref","nodeName","loLowerCase","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","contains","getFocusableNodes","nodes","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","cspEnabled","useCsp","csp","init","month_short","month_full","old","setSeconds","setMilliseconds","setTime","getTime","time_part","getTimezoneOffset","shift","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","convert_to_utc","getSerializator","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_load_mode","lf","templates","load_format","cache_line","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","_after_call","_tagvalue","_init_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","load","setLoadMode","array","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_pos","_pointerDragId","acc","dnd","timeline","original_render","drag_id","getEvents","_sorder","_count","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","checkIfMaterialSkin","_build_skin_info","clearInterval","monitorIntervalId","setInterval","csstheme","setSkin","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","_theme_info","theme","cssVarTheme","values","themeVariables","_configure","col","_skin_init","hour_scale","hour_date","_old_month_day","month_day","old_month_day","dhx_cal_today_button","tab","header","tabs","specialTabs","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","method","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","_prepareDataItem","item","processedItem","formatDate","dataItem","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","hour","minute","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProviders","internal","provider","unregisterProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","extend$l","_detachDomEvent","_init_once","scheduler_resize_listener","hasSchedulerMarkup","wai_aria_application_role","views","_grid","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","edit_save","edit_cancel","functor","scale_x","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","prepareValue","prepared","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","differenceInDays","_select_id","_close_not_saved","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","icon","def_step","dhx_cal_tab","deprecated_name","substring","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","base","duration","event_duration","time_step","start_hour","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","drag_event_body","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","hiddenWidth","c2","cc","hourScaleAttr","scroll_hour","now_date","n","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","lightbox","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","$initial","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_table","_pre_render_events_line","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","zIndex","color","setProperty","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","getLightboxRoot","cspEnvironment","salesforceEnvironment","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","listOfScales","some","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","clearEventMarkers","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","equals","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","toOrdinal","date2","differencems","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","clone","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","IterResult","_result","before","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","l","SuppressedError","Frequency","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","number","numberAsText","every","at","the","second","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","o","realCallback","delimiter","finalDelimiter","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","name_1","v","acceptNumber","expect","parseText","ttr","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","decodeNTH","MDAYs","decodeM","S","freqIsDailyOrGreater","fromText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","minutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","Days","parseIndividualNumber","optionKey","parts","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","all","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","rebuild","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","eastermask","g","yearStart","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","timeset","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","millisecondModulo","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","toText","isFullyConvertibleToText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","_b","parms","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rdateval","parm","createGetterSetter","fieldName","field","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","rule","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","_getViewPort","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderDay","calendarEvent","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","evs_dates","getRecDates","tevs","concurrent","checked_mode","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","year_y","cur_height","week_agenda_scale_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","EventHandler","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","renderMultiple","currentStart","currentEnd","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","setupMapView","createAdapter","unmodifiedEvent","_eventLocationChanged","map_settings","resolve_event_location","_latLngUpdate","addEventWithLocation","updateEventMarker","newIdEvent","removeEventMarker","addEventMarker","onEventClick","coordinates","resolveAddress","map_view_provider","currentAdapter","resolve_user_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","dblclick_dhx_map_area","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","_selected_event_id","ariaButtonAttr","map_end","mapContainer","adapter","elem_id","marginRight","marginTop","destroy","initialize","geolocation","getCurrentPosition","coords","_updateEventLocation","_event_resolve_delay","ret","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_children","_mark_inputs","_ids","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","fitQIInsideWindow","quickInfoPopup","popupRect","offsetBottom","getPositionInsideScheduler","_$quickInfoHandler","eventElement","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","_quick_info_onscroll_handler","$testmode","_qi_button_click","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","clearMilliseconds","isSeries","recurring_event_id","old_add_event","groupExceptions","exceptions","original_start","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","ev_id","_ignore_call","tev","_pid_changed","_is_modified_occurence","idTimestamp","nid","nev","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","repeat_date","old_update_event","toIcalString","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","non_render","maxCount","seriesExceptions","utcStart","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","jsDaysToRRULEDays","RruleDayNumsToJs","formatDayNumber","repeat_monthly_date","repeat_monthly_weekday","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","dayNum","dayLabel","dateOfMonth","nthWeekDayOfMonth","dateOfYear","nthWeekDayOfYear","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getFirstSectionOfType","rec","_get_node","_outer_html","loc","_init_set_value","_ds","weekly","monthly","yearly","_rec_init_done","rf","blocked","rruleset","topOption","rruleObj","untilDate","customFreq","actual_dates","timeControl","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","outerHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","date_str","register_els","inps","change_current_view","set_end_rule","_get_repeat_code","get_rcode","str_date","transpose_type","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","_set_repeat_code","MouseEvent","elements","_toggle_block","_get_button","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","hideTooltip","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"yOAUA,MAAAA,SAPUC,OAAW,IACNA,OAEAC,OCNA,SAASC,GAAiBC,EACrC,CAAA,IAAIC,EAAa,CAAA,EACbC,KACAC,EAAY,KACZC,EAAQ,KAEZ,SAASC,GAAAA,CACL,OAAOL,EAAUM,OAAOC,gBAAkBP,EAAUQ,YACvD,CAED,SAASC,EAAcC,EAAAA,CACnB,MAAMC,EAAUX,EAAUY,QAAQF,CAAAA,EAClC,OAAGC,EACQA,EAAQE,OAEZH,CACV,CA4BD,SAASI,EAAmBC,EACxB,CAAA,KAAA,CAAMX,MAAEA,EAAKS,OAAEA,EAAMH,SAAEA,EAAQM,UAAEA,EAASb,UAAEA,CAAcY,EAAAA,GAjB9D,SAAmCZ,EAAWU,EAAAA,CAC1C,OAAQA,EAAAA,CACJ,IAAK,QACDV,EAAUc,MAAMC,IAAM,GACtBf,EAAUc,MAAME,KAAO,GACvB,MACJ,IAAK,WACDhB,EAAUc,MAAME,KAAO,GACvBhB,EAAUc,MAAMG,WAAa,MAC7B,MACJ,QACIjB,EAAUc,MAAMC,IAAM,EAGjC,CAAA,GAI6Bf,EAAWU,GACrC,MAAMQ,EAAW,CAAA,EACjB,IAAIC,EAAe,CACfC,WAAYnB,EAAMmB,WAClBC,SAAUpB,EAAMoB,SAChBC,IAAK,2BACLC,KAAMvB,CAAAA,EAUV,OARIU,GAAU,YAAcA,GAAU,UAElCS,EAAe,CAAA,GAAIA,EAAcE,SAAUxB,EAAU2B,KAAKC,IAAIxB,EAAMmB,WAAY,EAAG,QAEnFP,CAAAA,GAAAA,IACAK,EAASX,CAAAA,EAAYM,EACrBM,EAAaD,SAAWA,GAErBC,CACV,CAED,SAASO,EAAiBC,EACtB,CAAA,KAAA,CAAMjB,OAAEA,CAAAA,EAAWiB,EACnB,IAAIC,EACJ,OAAQlB,EAAAA,CACJ,IAAK,QACDkB,EAsCZ,SAA6BD,EAAAA,CACzB,IAAIE,EAAwB,CAAA,EAC5B,KAAM5B,CAAAA,MAACA,EAAKS,OAAEA,EAAMH,SAAEA,EAAQM,UAAEA,CAAac,EAAAA,EACvCG,EAAY,CAAA,EAClB,IAAIC,EAAW,IAAIC,KAAK/B,EAAMmB,YAC9B,KAAMW,EAASE,QAAYhC,EAAAA,EAAMoB,SAASY,QAAU,GAAA,CAChD,IAAIC,EAAM,CAACd,WAAYW,CAAAA,EACvBD,EAAUK,KAAKD,GACfH,EAAWlC,EAAU2B,KAAKY,WAAWvC,EAAU2B,KAAKC,IAAIM,EAAU,EAAG,QACxE,CACD,IAAIM,EAAQxC,EAAUyC,WAAWC,iBAAiB,IAAI1C,EAAUM,OAAOqC,eAAoBvC,KAAAA,EAAMwC,EACjG,IAAA,EAAA,QAASC,EAAI,EAAGA,EAAIL,EAAMM,OAAQD,IAAK,CACnC,MAAM9B,EAAiB,CACnBX,MAAO6B,EAAUY,CACjBhC,EAAAA,OAAAA,EACAH,WACAM,UACAb,EAAAA,UAAWqC,EAAMK,CAAAA,EAAGE,YAExBf,CAAAA,EAAAA,EAAsBM,KAAKxB,EAAmBC,GACjD,CACD,OAAOiB,CACV,EA5D+CF,CACpC,EAAA,MACJ,IAAK,WACL,IAAK,QACDC,EA0DZ,SAAwCD,EAAAA,CACpC,IAAIkB,EAAmB,CAAA,EACvB,KAAM5C,CAAAA,MAACA,EAAKS,OAAEA,EAAMH,SAAEA,EAAQP,UAAEA,CAAa2B,EAAAA,EAC7C,IAAImB,EArHR,SAAkCvC,EAC9B,CAAA,MAAMC,EAAUX,EAAUY,QAAQF,CAClC,EAAA,OAAGC,EAAQuC,WACAvC,EAAQuC,WAEhBvC,EAAQwC,OACAxC,EAAQwC,aAEtB,EA6GsDzC,CAAAA,EAC/C,GAAIV,EAAUM,OAAO8C,cAAgBH,EAAoB,CACzD,MACMI,EADWC,OAAOlD,EAAM6C,CAAsBM,CAAAA,EAAAA,MAAMvD,EAAUM,OAAOkD,mBACzCC,IAAIC,GAAWJ,OAAOI,CAAAA,CAAAA,EAClDC,EAAQ,CACd,EAAA,QAASd,EAAI,EAAGA,EAAIQ,EAAiBP,OAAQD,IAAK,CAC9Cc,EAAMd,CAAAA,EAAK1C,EAAU4C,UAAAA,IACrB,MAAMhC,EAAiB,CACnBX,MAAAA,EACAS,SACAH,SACAM,EAAAA,UAAWqC,EAAiBR,CAAAA,EAC5B1C,UAAWwD,EAAMd,CAAAA,CAAAA,EAErBG,EAAiBV,KAAKxB,EAAmBC,CAC5C,CAAA,CAAA,CACJ,CACD,OAAOiC,CACV,EA/E0DlB,CAC/C,EAAA,MACJ,QACIC,EAQZ,SAA8BD,EAC1B,CAAA,KAAA,CAAM1B,MAACA,EAAKS,OAAEA,EAAMH,SAAEA,EAAQM,UAAEA,CAAAA,EAAac,EAC7C,IAAI8B,EAAyB,CACrBC,EAAAA,EAAa7D,EAAUyC,WAAWC,iBAAiB,IAAI1C,EAAUM,OAAOqC,oBAAoBvC,EAAMwC,EAAAA,oDAAAA,EACtG,GAAGiB,EACC,QAAShB,EAAI,EAAGA,EAAIgB,EAAWf,OAAQD,IAAK,CACxC,IAAIiB,EAAiBD,EAAWhB,CAAAA,EAAGE,UAAU,EAAA,EAI7C,MAAMhC,EAAiB,CACnBX,MAFQ,CAACmB,WAFG,IAAIY,KAAAA,CAAM2B,EAAeC,aAAa,mBAElBvC,SADtB,IAAIW,KAAM2B,CAAAA,EAAeC,aAAa,cAIhDlD,CAAAA,CAAAA,EAAAA,OAAAA,EACAH,SACAM,EAAAA,UAAAA,EACAb,UAAU2D,CAEdF,EAAAA,EAAuBtB,KAAKxB,EAAmBC,GAClD,CAET,OAAO6C,CACV,EA7BgD9B,CAG7CC,CAAAA,CAAAA,EAAciC,QAASC,GAAAA,CACnBhE,EAAWqC,KAAKtC,EAAUQ,aAAayD,CAAAA,CAAAA,CAAK,EAEnD,CAwEDjE,EAAUkE,YAAY,eAAgB,SAAUtB,EAAIuB,EAAMC,EACtD,CAAA,OAAI/D,MACAH,EAAAA,GACAE,EAAQJ,EAAUqE,SAASzB,CAC3BzC,EAAAA,EAAYiE,EAAEE,OAAOC,QAAQ,IAAIvE,EAAUM,OAAOqC,eAIpC,GAAA,EAFClC,EADET,EAAUwE,WAAWL,IAGbnE,GAAX,SAAWA,EAAUM,OAAOmE,wBACtCzE,EAAU0E,SAAS9B,CAAAA,EACnBzC,EAAYiE,EAAEE,OAAOC,QAAQ,IAAIvE,EAAUM,OAAOqC,sBAG1D,EACR,CAAA,EAEI3C,EAAUkE,YAAY,cAAe,SAAUtB,EAAIuB,EAAMC,EACrD,CAAA,GAAGlE,GAAeG,EAAAA,EAAY,CAC1BH,EAAc,GACd,MAAMQ,EAAWV,EAAUwE,SAAWL,EAAAA,KAChCtD,EAASJ,EAAcC,GACvBM,EAAYhB,EAAU2E,cAAcP,CAAAA,EAAGQ,QACzCxE,GAQAyB,EAPiB,CACbzB,MACAS,EAAAA,OAAAA,EACAH,SACAM,EAAAA,UAAAA,EACAb,aAIX,CACT,CAEIH,EAAAA,EAAUkE,YAAY,YAAa,SAAStB,EAAIuB,EAAMC,EAClD,CAAA,QAASvB,EAAI,EAAGA,EAAI5C,EAAW6C,OAAQD,IACnC7C,EAAU6E,eAAe5E,EAAW4C,CAExC5C,CAAAA,EAAAA,EAAa,GACbE,EAAY,KACZC,EAAQ,IAChB,EACA,CCtMe,SAAS0E,GAAY9E,EAAAA,CAGnCA,EAAUM,OAAOyE,SAAAA,GACjB/E,EAAUM,OAAO0E,yBAA2B,GAC5ChF,EAAUM,OAAO2E,8BAGjB,IAAIC,EAAiB,iBACjBC,EAAwB,UAWxBC,EAAwB,SAASC,EAAMC,EAAOjE,EACjD,CAAA,IAAIkE,EAA0B,OAARF,GAAQ,SAAYA,EAAO,CAAEA,KAAMA,CAAAA,EAQzD,OAPAE,EAAQC,KAAON,EACfK,EAAQ9D,IAAM,GACV6D,IACCjE,IACHkE,EAAQlE,SAAWA,GACpBkE,EAjBgB,SAASA,EAASF,EAAMC,EAQzC,CAAA,OAPID,aAAgBlD,MAAQmD,aAAiBnD,MAC5CoD,EAAQhE,WAAa8D,EACrBE,EAAQ/D,SAAW8D,IAEnBC,EAAQF,KAAOA,EACfE,EAAQD,MAAQA,GAEVC,CACT,EAQyBA,EAASF,EAAMC,IAE/BC,CACT,EAgJC,SAASE,EAASC,EAAIC,EAAWC,EAAWC,EAAWC,EAAAA,CACtD,IAAIC,EAAI/F,EAEJsF,EAAQ,CAAA,EACRU,EAAa,CAChBC,OAAS,SACTC,OAAS,cAEV,QAAQC,KAAaH,EAAW,CAC/B,IAAII,EAAWJ,EAAWG,CAAAA,EAC1B,GAAGJ,EAAEI,CAAAA,EACJ,QAAQE,KAAQN,EAAEI,CAAAA,EAAW,CAC5B,IACIG,EADcP,EAAEI,CAAAA,EAAWE,CACND,EAAAA,CAAAA,EACrBV,EAAGY,CACPhB,IAAAA,EAASS,EAAEQ,oBAAoBjB,EAC9BtF,EAAUwG,mBAAmBb,EAAUU,CAAAA,EAAOX,EAAGY,CAASV,EAAAA,EAAWC,EAAWC,CAAAA,CAAAA,EACjF,CAEF,CAGD,OADAR,EAAQS,EAAEQ,oBAAoBjB,EAAOtF,EAAUwG,mBAAmBb,EAAW,SAAUC,EAAWC,EAAWC,CAAAA,CAAAA,CAE7G,CAtKD9F,EAAUyG,UAAY,SAASpB,EAAMC,EAAOjE,EAC3C,CAAA,IAAIkE,EAAUH,EAAsBC,EAAMC,EAAOjE,CAAAA,EACjD,OAAOrB,EAAU0G,kBAAkBnB,CACrC,CAAA,EACCvF,EAAU2G,YAAc,SAAStB,EAAMC,EAAOjE,EAE7C,CAAA,IAAIkE,EAAUH,EAAsBC,EADpCC,EAAQA,GAAS,UACgCjE,CACjD,EAAA,OAAOrB,EAAU4G,qBAAqBrB,EACxC,EAECvF,EAAU6G,sBAAwB,SAASnB,EAAII,EAAegB,EAAAA,CAC7DhB,EAAgBA,GAAiBX,EAMjC,QAJI4B,EAAM,GACNC,EAAkB,IAAI7E,KAAKuD,EAAGnE,WAAWa,WACzC6E,EAAgBjH,EAAU2B,KAAKC,IAAIoF,EAAiB,EAAG,KAAA,EACvDrB,EAAY3F,EAAUkH,kBACnBF,EAAkBtB,EAAGlE,SAAUwF,EAAkBhH,EAAU2B,KAAKwF,UAAUF,CAAAA,EAAgBA,EAAgBjH,EAAU2B,KAAKC,IAAIoF,EAAiB,EAAG,KAAS,EAAA,CAChK,IAAInB,EAAAA,CAAa7F,EAAU2B,KAAKwF,UAAW,IAAIhF,KAAK6E,IAGhD1B,EAAQG,EAASC,EAAIC,EAFTqB,EAAgBI,OAEevB,EAAAA,EAAWC,CAC1D,EAAA,GAAIR,EACH,QAASzC,EAAI,EAAGA,EAAIyC,EAAMxC,OAAQD,GAAG,EAAG,CAGvC,IAAIwE,EAAarH,EAAUsH,kBAAkBN,GACzCO,EAAa7B,EAAGlE,SAASyF,GAAiBvB,EAAGlE,SAASgG,QAAAA,GAAaR,EAAgBQ,QAAAA,EAAc,KAAOxH,EAAUsH,kBAAkB5B,EAAGlE,QAAAA,EAEvIiG,EAAcnC,EAAMzC,CAAAA,EACpB6E,EAAYpC,EAAMzC,EAAE,CACxB,EAAA,GAAI4E,EAAYF,GAAYG,EAAUL,GAIpCN,EAAAA,EAHSD,OAAAA,GAAc,YAGjBA,EAAWpB,EAAI2B,EAAYE,EAAUE,EAAaC,CAKxD,GAAA,KAEF,CAEF,CACD,OAAQX,CACV,EACC/G,EAAU2H,oBAAsB,SAASvH,EACxC,CAEA,GAFA,CAAIA,GAECJ,CAAAA,EAAUM,OAAOsH,aACrB,SACD,IAAI7B,EAAI/F,EACJ6H,EAAI9B,EAAEzF,OACNwH,EAAM,CAAA,EACV,GAAK1H,EAAM2H,UAAY3H,EAAM4H,WAAe5H,EAAW,MAAG,CACzD,MAAM6H,EAAY7H,EAAM4H,WAAa5H,EAAMoB,SAE3C,MAAA,CAAKqG,EAAEK,aAAeL,CAAAA,EAAEM,WACAF,EAAU7F,WAAayF,EAAEK,YAAY9F,QAAahC,GAAAA,EAAMmB,WAAWa,QAAayF,GAAAA,EAAEM,UAAU/F,QAAAA,CAGvH,CACG0F,EAAM,CAAC1H,CAIR,EAAA,QADIgI,EAAe,GACVC,EAAE,EAAGA,EAAEP,EAAIhF,OAAQuF,IAAK,CAChC,IAAItB,EAAM,GACNrB,EAAKoC,EAAIO,CAEb3C,EAAAA,EAAG4C,OAAStI,EAAUuI,cAAc7C,CAEpCqB,GAAAA,EAAAA,CAAOc,EAAEK,aAAAA,CAAeL,EAAEM,WAAczC,EAAGnE,WAAWa,QAAAA,GAAayF,EAAEK,YAAY9F,QAAAA,GAAasD,EAAGlE,SAASY,WAAayF,EAAEM,UAAU/F,QAElI2E,KAAAA,EAAAA,CAAO/G,EAAU6G,sBAAsBnB,EAAIR,EAAgB,SAAS9E,EAAOiH,EAAYE,EAAUE,EAAaC,EAAAA,CAE7G,IAAIc,EAAQ,GAqBZ,OApBInB,GAAYK,GAAaL,GAAcI,KACtCC,GAAa,MAASH,GAAYG,KACrCc,EAAAA,IAGEpI,EAAMkI,QAAUvC,EAAE0C,UAAY1C,EAAE2C,YAAc,YAChDtI,EAAMmB,WAAWoH,SAAS,CAAA,EAC1BvI,EAAMmB,WAAWqH,WAAWlB,CAE5Bc,GAAAA,EAAAA,KAGGjB,GAAYE,GAAeF,GAAYG,GAAeL,EAAaI,GAAeF,EAAWG,KAC9FtH,EAAMkI,QAAUvC,EAAE0C,UAAY1C,EAAE2C,YAAc,YAChDtI,EAAMoB,SAASmH,SAAS,GACxBvI,EAAMoB,SAASoH,WAAWnB,CAAAA,GAE1Be,MAGKA,CACZ,CAEQzB,GAAAA,IACJA,EAAOhB,EAAE8C,WAAW,kBAAuB9C,EAAAA,EAAE+C,UAAU,mBAAmB,CAACpD,EAAG9C,GAAI8C,IAAOqB,GAE1FqB,EAAeA,GAAgBrB,CAC/B,CAKD,OAJIqB,IACHrC,EAAE0C,SAAW,KACb1C,EAAE2C,WAAa,MAETN,CAGT,EACCpI,EAAUwG,mBAAqB,SAASb,EAAWS,EAAUR,EAAWC,EAAWC,EAClF,CAAA,IAAIR,EAAO,CACX,EAAA,GAAIK,GAAaA,EAAUS,GAG1B,QAFI2C,EAAiBpD,EAAUS,GAC3B4C,EAAyBC,KAAKC,4BAA4BtD,EAAWC,EAAWkD,EAAgBjD,CAAAA,EAC3FjD,EAAE,EAAGA,EAAEmG,EAAuBlG,OAAQD,IAC9CyC,EAAQ2D,KAAK1C,oBAAoBjB,EAAO0D,EAAuBnG,CAAAA,EAAGyC,KAGpE,EAAA,OAAOA,CACT,EACCtF,EAAUkJ,4BAA8B,SAAStD,EAAWC,EAAWP,EAAOQ,EAC7E,CAAA,IAAIqD,EAeJ,OAdGnJ,EAAUM,OAAO2E,2BACnBkE,EAAe7D,EAAMO,IAAcP,EAAMO,CAAAA,EAAWC,CAAkBR,EAAAA,EAAMO,GAAWC,CACtFR,EAAAA,EAAMM,CAAcN,GAAAA,EAAMM,GAAWE,CAAkBR,EAAAA,EAAMM,CAAWE,EAAAA,CAAAA,EAAiB,IAE1FqD,EAAc,CAAA,EACX7D,EAAMO,CAAAA,GAAcP,EAAMO,CAAWC,EAAAA,CAAAA,IACvCqD,EAAcA,EAAYC,OAAO9D,EAAMO,CAAAA,EAAWC,CAG/CR,CAAAA,GAAAA,EAAMM,IAAcN,EAAMM,CAAAA,EAAWE,CACxCqD,IAAAA,EAAcA,EAAYC,OAAO9D,EAAMM,CAAWE,EAAAA,CAAAA,CAAAA,IAI7CqD,CACT,EA0BCnJ,EAAUqJ,UAAY,SAASC,GAE9B,IAAIC,EAAe,eACdN,KAAKO,KAAKD,CACdN,IAAAA,KAAKO,KAAKD,CAAAA,EAAgB,IAE3B,IAAIE,EAAMzJ,EAAU0J,aAAAA,EAChBzF,EAAMgF,KAAK3I,OAEf,GADAN,EAAU2J,iBACLL,EAAAA,CAAAA,GAAQrF,EAAIc,UAAY0E,EAAMR,KAAKW,WAAaH,EAAMR,KAAKY,WAAaJ,EAAIK,SAAAA,GAAc7F,EAAI8F,YAAcN,EAAIK,SAAW7F,EAAAA,EAAI+F,UAAW,CAC9I,IAAIpE,EAAYqD,KAAKgB,kBAAkBR,CAAAA,EACvCR,KAAKO,KAAKD,CAAAA,EAAgBvJ,EAAUkK,iBAAiBtE,EAAW6D,CAChE,CAAA,CACH,EACCzJ,EAAUkK,iBAAmB,SAAStE,EAAW6D,EAChD,CAAA,IAAIF,EAAe,eACfY,EAAYnK,EAAUsH,kBAAkBmC,GACxClE,EAAU,CACbD,MAAO,CAAC6E,EAAYA,EAAW,CAAA,EAC/B1I,IAAK8H,EACL/D,KAAM+D,CAEP,EAAA,GAAA,CAAKN,KAAKmB,YAAa,CACtB,GAAInB,KAAKhD,QAAUgD,KAAKhD,OAAOgD,KAAKoB,KAAAA,EAAQ,CAC3C,IAAIC,EACHC,EAEGlE,EAAO4C,KAAKhD,OAAOgD,KAAKoB,KAAAA,EACxBG,EAAUnE,EAAKoE,MAAQpE,EAAKd,QAAQzC,OACpCuD,EAAKhB,KAAO,GACZgB,EAAKoE,MAAQpE,EAAKd,QAAQzC,SAC5B8C,GAAcS,EAAKqE,SAAU9E,GAAaS,EAAKd,QAAQzC,OAAUuD,EAAKoE,MAEvEH,EAAc1E,EACd2E,EAAY3E,EAAY4E,GAIxBD,GADAD,EAAc,GACYE,EAK3B,QAFIG,EAAS,CAEJ9H,EAAAA,EAAIyH,EAAazH,EAAI0H,EAAW1H,IAAK,CAC7C,IAAI+H,EAAQ/H,EACZ0C,EAAQF,KAAOuF,EACf,IAAIC,EAAQ7K,EAAU8K,wBAAwBvF,EAAS,KAAMqF,CAAAA,EAAO,CACpED,EAAAA,EAAOrI,KAAKuI,CACZ,CAAA,CACD,OAAOF,CACX,CAEI,OADApF,EAAQF,KAAOO,EACR5F,EAAU8K,wBAAwBvF,EAAS,KAAMK,CAAAA,CAE5D,CACG,GAAIqD,KAAKoB,OAAS,QAEjB,OADA9E,EAAQF,KAAQrF,CAAAA,EAAU2B,KAAKwF,UAAUsC,CAAAA,EAClCzJ,EAAU8K,wBAAwBvF,EAAS,KAAM,IAAA,CAG5D,EACCvF,EAAU2J,iBAAmB,UAG5B,CAAA,QAFIJ,EAAe,eACfwB,EAAM9B,KAAKO,KAAKD,CAAAA,EACX1G,EAAE,EAAGA,EAAEkI,EAAIjI,OAAQD,IAAK,CAChC,IAAImI,EAAMD,EAAIlI,GACVoI,EAASD,EAAIE,WACbD,GACHA,EAAOE,YAAYH,CAAAA,CAEpB,CACD/B,KAAKO,KAAKD,CAAgB,EAAA,CAAA,CAC5B,EA4CCvJ,EAAUkH,kBAAoB,CAAEpH,OAAQ,CAAE,CAAA,EAE1CE,EAAUsH,kBAAoB,SAAS3F,EACtC,CAAA,MAAuB,IAAhBA,EAAKmI,SAAAA,EAAgBnI,EAAKyJ,WAAAA,CACnC,EACCpL,EAAUqL,0BAA4B,SAAS/K,EAAAA,CAC9C,IAAIgL,EAAY,CAAA,EACZC,EAAe,CAAA,EAKnB,GAHIjL,EAAO+E,MAAQ,aAClB/E,EAAO+E,KAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAA,GAExB/E,EAAO+E,gBAAgBmG,MAAO,CAEjC,QADIC,EAASnL,EAAO+E,KAAKqG,MAAAA,EAChB7I,EAAE,EAAGA,EAAE4I,EAAO3I,OAAQD,IAAK,CACnC,IAAI8I,EAAgB3L,EAAU4L,YAAYtL,CAC1CqL,EAAAA,EAActG,KAAOoG,EAAO5I,GAC5ByI,EAAUhJ,KAAKuJ,MAAMP,EAAWtL,EAAUqL,0BAA0BM,CAAAA,CAAAA,CACpE,CACD,OAAOL,CACP,CAED,GAAA,CAAMhL,GACFA,EAAAA,EAAOiB,YAAcjB,EAAOkB,UAAYlB,EAAOkB,SAAWlB,EAAOiB,YAAgBjB,EAAO+E,OAASyG,QAAaxL,EAAOgF,QAAYhF,CAAAA,EAAOkF,KAC3I,OAAO8F,EAIJhL,EAAOgF,OAAS,YACnBhF,EAAOgF,MAAQ,CAHN,EACA,IAGNhF,GAAAA,EAAOgF,OAAShF,EAAOyL,eAC1BzL,EAAOgF,MAAQtF,EAAUgM,YAAY1L,EAAOgF,KAAAA,GAG7ChF,EAAOsC,GAAK5C,EAAUiM,IACtB3L,EAAAA,EAAOmB,IAAMnB,EAAOmB,KAAK,GACzBnB,EAAOkF,KAAOlF,EAAOkF,MAAML,EAE3B,IAAI9D,EAAWf,EAAOe,SACtB,GAAIA,GACH,QAAS6K,KAAY7K,EACpB,GAAIA,EAAS8K,eAAeD,CAAAA,EAAW,CACtC,IAAIE,EAAM/K,EAAS6K,CAAAA,EAGnB,IAFME,aAAeZ,QACpBY,EAAM,CAACA,CAAAA,GACCvJ,EAAE,EAAGA,EAAEuJ,EAAItJ,OAAQD,KACvBwJ,EAAWrM,EAAUsM,WAAW,CAAE,EAAEhM,CAC/Be,GAAAA,SAAW,GACpBgL,EAAShL,SAAS6K,CAAAA,EAAYE,EAAIvJ,CAAAA,EAClC0I,EAAajJ,KAAK+J,CAAAA,CAEnB,OAGFd,EAAajJ,KAAKhC,CAAAA,EAGnB,QAASiM,EAAE,EAAGA,EAAEhB,EAAazI,OAAQyJ,IAAK,CACzC,IAAIC,EAAWjB,EAAagB,CAExBhL,EAAAA,EAAaiL,EAASjL,WACtBC,EAAWgL,EAAShL,SAExB,GAAID,GAAcC,EAIjB,QAHIiL,EAAOzM,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKZ,CAAAA,CAAAA,EACzCmL,EAAM1M,EAAU2B,KAAKC,IAAI6K,EAAM,EAAG,KAE/BA,EAAAA,EAAOjL,GAAU,CACvB,IAAI6K,EAAWrM,OAAAA,EAAAA,EAAUsM,WAAW,CAAE,EAAEE,CACxBjL,GAAAA,WAAAA,OACT8K,EAAS7K,SAChB6K,EAAShH,KAAOoH,EAAKrK,QACrB,EAAA,IAAI+H,EAAc5I,EAAakL,EAAQzM,EAAUsH,kBAAkB/F,GA9C5D,EA+CHoL,EAAanL,EAAWkL,GAAQlL,EAASgG,QAAaiF,GAAAA,EAAKjF,QA9CxD,EAAA,KA8C4ExH,EAAUsH,kBAAkB9F,CAAAA,EAC/G6K,EAAS/G,MAAQ,CAAC6E,EAAYwC,CAAAA,EAC9BrB,EAAUhJ,KAAK+J,GAEfI,EAAOC,EACPA,EAAO1M,EAAU2B,KAAKC,IAAI8K,EAAM,EAAG,MACnC,MAEGF,EAASnH,gBAAgBlD,OAC5BqK,EAASnH,KAAQrF,EAAU2B,KAAKwF,UAAUqF,EAASnH,IAAOjD,EAAAA,QAAAA,GAC3DoK,EAASlH,MAAQhF,EAAOgF,MAAMoG,MAAAA,EAC9BJ,EAAUhJ,KAAKkK,EAEhB,CACD,OAAOlB,CACT,EACCtL,EAAU4M,oBAAsB,SAASC,EAAOC,EAAOC,GACtD,IAAIC,EAAQ,CACZF,EAAAA,EAAQ9M,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAK2K,GAAO9M,EAAU6J,SAAAA,CAAAA,EAC3DkD,EAAM,IAAI5K,KAAK4K,GAAK/M,EAAU4J,SAI9B,EAAA,QAHIqD,EAAYH,EAAM1F,OAClB8F,EAAAA,EAASL,EAAMI,GAAa,EAAMJ,EAAMI,EAAc,EAAEH,EAAM1F,OAAAA,EAASyF,EACvEM,EAASnN,EAAU2B,KAAKC,IAAIkL,EAAOI,EAAO,OACvCC,EAASJ,EAAKI,EAASnN,EAAU2B,KAAKC,IAAIuL,EAAQ,EAAG,QAC3DH,EAAM1K,KAAK6K,CAEZ,EAAA,OAAOH,CACT,EACChN,EAAUoN,2BAA6B,SAAS9M,GAC/C,IAAI+M,EAAc,CAOlB,EAAA,OANI/M,EAAOkF,MAAQN,IAClBmI,EAAY/K,KAAK4C,GACb5E,EAAOmB,KACV4L,EAAY/K,KAAK4C,EAAe,QAElCmI,GAAAA,EAAY/K,KAAK,sBAAuBhC,EAAOmB,GACxC4L,EAAAA,EAAYC,KAAK,GAAA,CAC1B,EACCtN,EAAUuN,qBAAuB,SAASjN,EAAAA,CACzC,IAAIkN,EAASC,SAASC,cAAc,KAAA,EAOpC,OANIpN,EAAOoB,OACCpB,OAAAA,EAAOoB,MAAQ,SACzB8L,EAAMG,UAAYrN,EAAOoB,KAEzB8L,EAAMI,YAAYtN,EAAOoB,IAEpB8L,GAAAA,CACT,EACCxN,EAAU8K,wBAA0B,SAASvF,EAASsI,EAAMC,EAC3D,CAAA,IAAIC,EAAS,CAAA,EACTlG,EAAI7H,EAAUM,OACd0N,EAAW/E,KAAKY,UAChBoE,EAAWhF,KAAKW,UAChB/D,KAEJ,GAAA,CAAKgC,EAAE7C,yBACN,OAAO+I,EAGR,GAAA,CAAKD,GAAOA,IAAQ,EAAG,CACtB,GAAIvI,EAAQF,KAAO,EAClByI,EAAMvI,EAAQF,SACV,CACJ,IAAI6I,EAAkB,IAAI/L,KAAKoD,EAAQF,MAIvC,GAHAQ,EAAAA,CAAaqI,EAGLD,EAAAA,CAAAA,EAAAA,CAAYC,IAAoBF,GAAaE,CAAAA,GACpD,OAAOH,EAERD,EAAMI,EAAgB9G,OAAAA,CACtB,CAGD,IAAI+G,EAAUH,EAAS5G,OAAAA,EACnB+G,EAAUL,EACbA,EAAM,GAAKK,EAAQL,GAEnBA,GAAYK,CAEb,CACD,IAAI7I,EAAQC,EAAQD,MAChB+H,EAAcrN,EAAUoN,2BAA2B7H,CAAAA,EAEvD,GAAIvF,EAAUoK,aAAepK,EAAUqK,OAAS,QAAS,CACxD,IAAI+D,EAAQ,CAAA,EACR/I,EAAO,CAGX,EAAA,GAAKwI,EAMJO,EAAM9L,KAAKuL,CAAAA,EACXxI,EAAK/C,KAAKwL,OAPA,CACVzI,EAAOgJ,EAAc,CAACxI,GAAa7F,EAAU4M,oBAAoBkB,CACjE,EAAA,QAASjL,EAAE,EAAGA,EAAIwC,EAAKvC,OAAQD,IAC9BuL,EAAM9L,KAAM2G,KAAKqF,QAAQjJ,EAAKxC,CAAAA,CAAAA,CAAAA,CAEnC,CAKG,IAASA,EAAE,EAAGA,EAAIuL,EAAMtL,OAAQD,IAAK,CACpCgL,EAAOO,EAAMvL,CAAAA,EACbiL,EAAMzI,EAAKxC,CAAAA,EAEX,IAAI0L,EAAOtF,KAAKgB,kBAAkB6D,EAAAA,EAAc7E,EAAAA,KAAKuF,MAAM1L,OAE3D,GAAA,CAAGmG,KAAKwF,SAASF,GAAjB,CAEA,IAAIG,EAAc1O,EAAUuN,qBAAqBhI,CACjDmJ,EAAAA,EAAYC,UAAYtB,EACxBqB,EAAYzN,MAAMC,IAAM,MACxBwN,EAAYzN,MAAM2N,OAAS,OAE3B,QAASrC,EAAE,EAAGA,EAAIjH,EAAMxC,OAAQyJ,GAAG,EAAG,CACrC,IAAIO,EAAQxH,EAAMzC,CAAAA,EAElB,IADIkK,EAAMzH,EAAMzC,EAAE,CAAA,IACPiK,EACV,MAAO,IAEJU,EAAQkB,EAAY3L,UAAU,EAAA,GAE5B9B,MAAME,KAAO,MACnBqM,EAAMvM,MAAM4N,MAAQ,OAEpBhB,EAAKD,YAAYJ,CAAAA,EACjBO,EAAOzL,KAAKkL,CAAAA,CACZ,CApBgC,CAqBjC,CACJ,KAAS,CACN,IAAIX,EAAQiB,EAEZ,GAAG7E,KAAKwF,SAASxF,KAAKgB,kBAAkB6D,EAAK,EAAA,CAAA,EAAS,OAAOC,EAE7D,GAAI9E,KAAKhD,QAAUgD,KAAKhD,OAAOgD,KAAKoB,KAAU9E,GAAAA,EAAQlE,UAAYkE,EAAQlE,SAAS4H,KAAKoB,KAAAA,EAAQ,CAC/F,IAAIhE,EAAO4C,KAAKhD,OAAOgD,KAAKoB,KAAAA,EAC5BwC,EAAQxG,EAAKyI,MAAMvJ,EAAQlE,SAAS4H,KAAKoB,KAEzC,CAAA,EAAA,IAAI0E,EAAc1I,EAAKyI,MAAMvJ,EAAQlE,SAAS4H,KAAKoB,QAC9ChE,EAAKhB,KAAO,EAOhBwH,EAAQA,GADMxG,EAAKoE,MAAQpE,EAAKd,QAAQzC,QAChBiM,GANxBlC,EAAQkC,EACJ1I,EAAKoE,MAASoC,EAAQxG,EAAKqE,SAASrE,EAAKoE,OAC5CoC,EAAQ,GAMV,CAGD,IAFAgB,EAAOA,GAAc7N,EAAUgP,cAAcnC,CAAAA,EAEpChK,EAAI,EAAGA,EAAIyC,EAAMxC,OAAQD,GAAG,EAAE,CACtC,IACIkK,EAQAS,EAPJ,GAFIV,EAAQmC,KAAKC,IAAI5J,EAAMzC,CAAiB,EAAA,GAAbgF,EAAEkC,UAAAA,GAC7BgD,EAAMkC,KAAKE,IAAI7J,EAAMzC,EAAE,CAAgB,EAAA,GAAZgF,EAAEmC,SAAAA,IACtB8C,EAAO,CACjB,GAAIjK,EAAE,EAAIyC,EAAMxC,OACf,SAEA,MAAO,CAAA,CACR,EAEG0K,EAAQxN,EAAUuN,qBAAqBhI,CAAAA,GACrCoJ,UAAYtB,EAGlB,IAAI+B,EAA4C,GAAzBnG,KAAK3I,OAAO+O,aAAkB,EACjDC,EAAU,KACd9B,EAAMvM,MAAMC,IAAO+N,KAAKM,OAAa,GAANzC,EAAS,IAAK7D,KAAK3I,OAAOyJ,WAAWuF,GAASrG,KAAK3I,OAAO+O,aAAaC,CAAAA,EAAWF,EAAoB,KACrI5B,EAAMvM,MAAM2N,OAASK,KAAKC,IAAKD,KAAKM,MAAmB,IAAXxC,EAAID,GAAU,IAAM7D,KAAK3I,OAAO+O,aAAaC,CAAAA,EAAYF,EAAkB,CAAG,EAAA,KAE1HvB,EAAKD,YAAYJ,GACjBO,EAAOzL,KAAKkL,CACZ,CAAA,CACD,CACD,OAAOO,CACT,EAEC/N,EAAUwP,gBAAkB,UAC3B,CAAA,IAAIC,EAAOxG,KAAKO,KAAmB,aAAE,CAAA,EACjCkG,EAAO,CAAA,EACX,GAAI1P,EAAUoK,aAAepK,EAAUqK,OAAS,QAC/C,QAASyD,KAAO7E,KAAKqF,QAAS,CAC7B,IAAI3M,EAAO,IAAIQ,KAAM2L,CAAAA,CAAAA,EACrB4B,EAAKpN,KAAKuJ,MAAM6D,EAAM1P,EAAU2P,qBAAqB1G,KAAKqF,QAAQR,CAAKnM,EAAAA,CAAAA,CAAAA,CACvE,KAGD,CAAIA,EAAO,IAAIQ,KAAKnC,EAAU6J,SAAAA,EAC9B,QAAShH,EAAI,EAAG+M,EAAMH,EAAKI,WAAW/M,OAAQD,EAAI+M,EAAK/M,IAAK,CAC3D,IAAIgL,EAAO4B,EAAKI,WAAWhN,CACvBgL,EAAAA,EAAKiC,YAAc9P,EAAU+P,cAAclC,EAAKiC,UAAAA,EAAYE,QAAQ,gBAAA,EAAA,KAIxEN,EAAKpN,KAAKuJ,MAAM6D,EAAM1P,EAAU2P,qBAAqB9B,EAAMlM,CAC3DA,CAAAA,EAAAA,EAAO3B,EAAU2B,KAAKC,IAAID,EAAM,EAAG,OACnC,CATuC,CAWzC,OAAO+N,CACT,EAGC1P,EAAUQ,aAAe,SAASyP,EAAAA,CACjC,IAAIhH,KAAKO,KACR,MAAM,IAAI0G,MAAM,qIAAA,EAIjB,IAAIC,EAAAA,GACAlH,KAAKO,KAAmB,eAC3BxJ,EAAUoQ,eACVD,EAAc,IAKf,IAAIE,EAAgBrQ,EAAUsQ,sBAC7BC,EAAiBvQ,EAAUwQ,wBAC3B7K,EAAY3F,EAAUkH,kBAEvBlH,EAAU4G,qBAAAA,EAGV5G,EAAU0G,kBAAkBuJ,CAAAA,EAE5B,IAAIP,EAAO1P,EAAUwP,gBAUrB,EAAA,OARGW,IACFnQ,EAAUwJ,KAAO,CAGlBxJ,GAAAA,EAAUsQ,sBAAwBD,EAClCrQ,EAAUwQ,wBAA0BD,EACpCvQ,EAAUkH,kBAAoBvB,EAEvB+J,CACT,EACC1P,EAAU6E,eAAiB,SAAS6K,EACnC,CAAA,GAAKA,EAEL,QAAS7M,EAAE,EAAGA,EAAE6M,EAAK5M,OAAQD,IAAK,CACjC,IAAImI,EAAM0E,EAAK7M,CAEXmI,EAAAA,EAAIE,YACPF,EAAIE,WAAWC,YAAYH,CAAAA,CAE5B,CACH,EAGChL,EAAUyQ,yBAA2B,SAASnQ,EAC7C,CAAA,IAAIR,EAAS,SACT6F,EAAY3F,EAAUkH,kBACtBtE,EAAKtC,EAAOsC,GAEZwJ,EAAMpM,EAAUsQ,sBACflE,EAAIxJ,CACRwJ,IAAAA,EAAIxJ,GAAM,CAGX,GAAA,IAAIkL,EAAMxN,EAAO+E,KAEbhE,EAAWf,EAAOe,SAClBmE,EAAOlF,EAAOkF,KAGlB,GAFAlF,EAAOsC,GAAKA,EAERvB,GACH,QAAS6K,KAAY7K,EACpB,GAAIA,EAAS8K,eAAeD,CAAAA,EAAW,CACjCvG,EAAUuG,CAAAA,IACdvG,EAAUuG,CAAAA,EAAY,IACvB,IAAIwE,EAAUrP,EAAS6K,GACnByE,EAAiBhL,EAAUuG,CAC1ByE,EAAAA,EAAeD,KACnBC,EAAeD,CAAAA,EAAW,IACtBC,EAAeD,CAAS5C,EAAAA,CAAAA,IAC5B6C,EAAeD,CAAAA,EAAS5C,GAAO,CAAA,GAC3B6C,EAAeD,CAAAA,EAAS5C,GAAKtI,CACjCmL,IAAAA,EAAeD,CAAS5C,EAAAA,CAAAA,EAAKtI,GAAQ,CACjCxF,EAAAA,EAAUwQ,0BACbxQ,EAAUwQ,wBAA0B,IACjCxQ,EAAUwQ,wBAAwBhL,KACrCxF,EAAUwQ,wBAAwBhL,CAAQ,EAAA,KAE5C,IAAIoL,EAAcD,EAAeD,CAAS5C,EAAAA,CAAAA,EAAKtI,GAC/ClF,EAAOuQ,OAASD,EAChBA,EAAYtO,KAAKhC,CACjB8L,EAAAA,EAAIxJ,CAAIN,EAAAA,KAAKhC,EACb,OAGGqF,EAAU7F,CAAAA,EAAQgO,KACtBnI,EAAU7F,CAAAA,EAAQgO,CAAO,EAAA,CAAA,GACrBnI,EAAU7F,CAAAA,EAAQgO,CAAKtI,EAAAA,CAAAA,IAC3BG,EAAU7F,CAAQgO,EAAAA,CAAAA,EAAKtI,CAAQ,EAAA,CAAA,GAE5BxF,EAAUwQ,0BACbxQ,EAAUwQ,wBAA0B,IACjCxQ,EAAUwQ,wBAAwBhL,CACrCxF,IAAAA,EAAUwQ,wBAAwBhL,CAAQ,EAAA,IAEvCoL,EAAcjL,EAAU7F,GAAQgO,CAAKtI,EAAAA,CAAAA,EACzClF,EAAOuQ,OAASD,EAChBA,EAAYtO,KAAKhC,CACjB8L,EAAAA,EAAIxJ,GAAIN,KAAKhC,CAAAA,CAGhB,EAECN,EAAUsQ,sBAAwB,GAElCtQ,EAAU0G,kBAAoB,SAASuJ,EACtC,CAAA,IAAIa,EAAU9Q,EAAUqL,0BAA0B4E,CAClD,EAAA,GAAKa,EAAQhO,OAAb,CAIA,QADIF,EAAKkO,EAAQ,CAAA,EAAGlO,GACXC,EAAE,EAAGA,EAAEiO,EAAQhO,OAAQD,IAC/B7C,EAAUyQ,yBAAyBK,EAAQjO,CAE5C,CAAA,EAAA,OAAOD,CANC,CAOV,EAEC5C,EAAUuG,oBAAsB,SAASwK,EAAezL,EAAAA,CACvD,IAAI0L,EAAkBD,EAAcrF,MAGpC,EAAA,GAFApG,EAAQA,EAAMoG,SAETsF,EAAgBlO,OACpB,OAAOwC,EAER,QAASzC,EAAE,EAAGA,EAAEmO,EAAgBlO,OAAQD,GAAG,EAK1C,QAJIoO,EAAeD,EAAgBnO,CAC/BqO,EAAAA,EAAaF,EAAgBnO,EAAE,CAAA,EAC/BsO,EAAUtO,EAAE,GAAKmO,EAAgBlO,OAE5ByJ,EAAE,EAAGA,EAAEjH,EAAMxC,OAAQyJ,GAAG,EAAG,CACnC,IAAIpC,EAAa7E,EAAMiH,GACnBI,EAAWrH,EAAMiH,EAAE,CAAA,EACvB,GAAKI,EAAWuE,GAAc/G,GAAc+G,GAAgB/G,EAAa8G,GAAgBtE,GAAYsE,EACpGD,EAAgBnO,GAAKoM,KAAKE,IAAI8B,EAAc9G,CAAAA,EAC5C6G,EAAgBnO,EAAE,CAAA,EAAKoM,KAAKC,IAAIgC,EAAYvE,CAC5C9J,EAAAA,GAAK,MACC,CACN,IAAKsO,EACJ,SAED,IAAIC,EAAUH,EAAe9G,EAAY,EAAE,EAC3C6G,EAAgBK,OAAOxO,EAAEuO,EAAQ,EAAGjH,EAAYwC,EAChD,CACDrH,EAAM+L,OAAO9E,IAAI,GACjB,KACA,CAEF,OAAOyE,CACT,EACChR,EAAUsR,yBAA2B,SAASP,EAAezL,GAE5D,QADI0L,EAAkBD,EAAcrF,QAC3B7I,EAAE,EAAGA,EAAEmO,EAAgBlO,OAAQD,GAAG,EAG1C,QAFIoO,EAAeD,EAAgBnO,CAC/BqO,EAAAA,EAAaF,EAAgBnO,EAAE,CAAA,EAC1B0J,EAAE,EAAGA,EAAEjH,EAAMxC,OAAQyJ,GAAG,EAAG,CACnC,IAAIpC,EAAa7E,EAAMiH,CAAAA,EACnBI,EAAWrH,EAAMiH,EAAE,CACvB,EAAA,GAAII,EAAWsE,GAAgB9G,EAAa+G,EAAY,CACvD,IAAIK,EAAc,GACdN,GAAgB9G,GAAc+G,GAAcvE,GAC/CqE,EAAgBK,OAAOxO,EAAG,GAEvBoO,EAAe9G,IAClB6G,EAAgBK,OAAOxO,EAAG,EAAGoO,EAAc9G,CAC3CoH,EAAAA,EAAAA,IAEGL,EAAavE,GAChBqE,EAAgBK,OAAQG,EAAe3O,EAAE,EAAGA,EAAG2O,EAAc,EAAE,EAAG7E,EAAUuE,CAE7ErO,EAAAA,GAAK,EACL,KACL,CAGI,CAEF,OAAOmO,CACT,EACChR,EAAUgM,YAAc,SAAS1G,GAChC,OAAOtF,EAAUsR,yBAAyB,CAAC,EAAG,IAAA,EAAOhM,EAAMoG,MAAAA,CAAAA,CAC7D,EACC1L,EAAUyR,8BAAgC,SAAS7O,EAAAA,CAClD,IAAIkO,EAAU9Q,EAAUsQ,sBAAsB1N,CAAAA,EAC9C,GAAIkO,GACH,QAASjO,EAAE,EAAGA,EAAEiO,EAAQhO,OAAQD,IAG/B,QAFIvC,EAASwQ,EAAQjO,CAAAA,EACjB6O,EAAepR,EAAOuQ,OACjBtE,EAAE,EAAGA,EAAEmF,EAAa5O,OAAQyJ,IACpC,GAAImF,EAAanF,CAAMjM,GAAAA,EAAQ,CAC9BoR,EAAaL,OAAO9E,EAAG,CAAA,EACvB,KACA,EAIN,EACCvM,EAAU2R,kCAAoC,SAASrR,EAAAA,CACtD,IAIIsR,EAJAjM,EAAY3F,EAAUkH,kBACtB7F,EAAWf,EAAOe,SAClByM,EAAMxN,EAAO+E,KACbG,EAAOlF,EAAOkF,MAAML,EAExB,GAAI9D,GACH,QAAS6K,KAAY7K,EACpB,GAAIA,EAAS8K,eAAeD,CAAAA,GAAavG,EAAUuG,CAAAA,EAAW,CAC7D,IAAIwE,EAAUrP,EAAS6K,CAAAA,EACnBvG,EAAUuG,CAAAA,EAAUwE,KACvBkB,EAAYjM,EAAUuG,CAAUwE,EAAAA,CAAAA,EAEjC,OAGFkB,EAAYjM,EAAU7F,OAGvB,GAAG8R,GACF,GAAI9D,IAAQhC,OACP8F,EAAU9D,IAAQ8D,EAAU9D,CAAAA,EAAKtI,CACpCxF,IAAAA,EAAUyQ,yBAAyBnQ,CACnCN,EAAAA,EAAU6R,8BAA8BD,EAAU9D,GAAKtI,CAAOlF,EAAAA,CAAAA,OAI/D,SAAS+N,KAAKuD,EACb,GAAIA,EAAUvD,CAAAA,EAAG7I,GAAO,CACvB,IAAIsM,EAAY9R,EAAU4L,YAAYtL,CACtCA,EAAAA,EAAO+E,KAAOgJ,EACdrO,EAAUyQ,yBAAyBqB,CAAAA,EACnC9R,EAAU6R,8BAA8BD,EAAUvD,CAAG7I,EAAAA,CAAAA,EAAOlF,CAC5D,CAAA,EAIN,EACCN,EAAU6R,8BAAgC,SAASE,EAAezR,GACjE,QAASuC,EAAE,EAAGA,EAAEkP,EAAcjP,OAAQD,IAAK,CAC1C,IAAImP,EAAMD,EAAclP,CAAAA,EACpByC,EAAQtF,EAAUsR,yBAAyBU,EAAI1M,MAAOhF,EAAOgF,KACjE,EAAA,GAAIA,EAAMxC,OACTkP,EAAI1M,MAAQA,MACR,CACJyM,EAAcV,OAAOxO,EAAE,CAAA,EACvBA,IAGA,QADIoP,EAAgBjS,EAAUsQ,sBAAsB0B,EAAIpP,IAC/C2J,EAAE,EAAGA,EAAE0F,EAAcnP,OAAQyJ,IACrC,GAAI0F,EAAc1F,CAAAA,GAAMyF,EAAK,CAC5BC,EAAcZ,OAAO9E,EAAG,GACxB,KACA,CAEF,CACD,CACH,EACCvM,EAAU4G,qBAAuB,SAASqJ,EAAAA,CAQzC,GANKiC,UAAUpP,SACd9C,EAAUkH,kBAAoB,CAAEpH,OAAQ,CAAE,CAC1CE,EAAAA,EAAUsQ,sBAAwB,GAClCtQ,EAAUwQ,wBAA0B,IAGT,OAAjBP,GAAiB,SAC3BjQ,EAAUyR,8BAA8BxB,CAClC,MAAA,CAEDA,EAAc1O,YAAc0O,EAAczO,WAC3CyO,EAAc5K,OAD6B7D,QACNyO,EAAczK,OACrDyK,EAAc5K,KAAO,YAClB4K,EAAc3K,QACjB2K,EAAc3K,MAAQ,YAGxB,IAAI6M,EAAQ,CACZ,EAAA,GAAIlC,EAAczK,KAMjB2M,EAAM7P,KAAK2N,EAAczK,UAJzB,SAAQA,KAAQxF,EAAUwQ,wBACzB2B,EAAM7P,KAAKkD,CASb,EAAA,QAFIsL,EAAU9Q,EAAUqL,0BAA0B4E,CAAAA,EAEzCpN,EAAE,EAAGA,EAAEiO,EAAQhO,OAAQD,IAG/B,QADIvC,EAASwQ,EAAQjO,GACZuP,EAAE,EAAGA,EAAID,EAAMrP,OAAQsP,IAAI,CACnC,IAAIC,EAAcrS,EAAU4L,YAAYtL,CAAAA,EACxC+R,EAAY7M,KAAO2M,EAAMC,CACzBpS,EAAAA,EAAU2R,kCAAkCU,CAAAA,CAC5C,CAGF,CACH,EACCrS,EAAUsS,qBAAuB,SAASC,EAAQC,EAAAA,CACjD,IAAIC,EAAkBL,EAAWpS,EAAUsM,WAAW,GAAGiG,CAAU,EAAA,GACnE,QAAS/M,KAAQgN,GAAU,GACtBA,EAASrG,eAAe3G,CAAAA,IAC3BiN,EAAgBjN,CAAAA,EAAQgN,EAAShN,CAGnC,GAAA,OAAOiN,CACT,EACCzS,EAAU0S,uBAAyB,SAASP,EAC3C,CAAA,IAAIrB,EAAU,CACd,EAAA,QAAStL,KAAQ2M,EACZA,EAAMhG,eAAe3G,CACxBsL,GAAAA,EAAQxO,KAAKuJ,MAAMiF,EAASqB,EAAM3M,CAAAA,CAAAA,EAGpC,OAAOsL,CACT,EAEC9Q,EAAU2P,qBAAuB,SAAS9B,EAAMC,EAAAA,CAC/C,GAAI9N,CAAAA,EAAUoK,aAAepK,EAAUqK,OAAS,QAAhD,CAGA,IAAIzE,EAAYkI,EAAI1G,OAChBvB,EAAAA,EAAYiI,EAAI1L,QAChB+B,EAAAA,EAAO8E,KAAKoB,MACZ1E,EAAY3F,EAAUkH,kBACtBoE,EAAY,CAAA,EACZoE,EAAO,CACX,EAAA,GAAIzG,KAAKhD,QAAUgD,KAAKhD,OAAO9B,CAAO,EAAA,CACrC,IAAIkC,EAAO4C,KAAKhD,OAAO9B,CAAAA,EACnBwO,EAAQtM,EAAKd,QAEbqN,EAAOD,EADC3S,EAAU6S,gBAAgBxM,EAAMyH,CAG5C,CAAA,EAAA,GAAKzH,EAAKhB,KAAO,EAEZ,CACJ,IACIyN,EAAU7D,KAAKM,OAAOzB,EAAM9N,EAAU6J,WADjC,KAELkJ,EAAAA,EAAc1M,EAAKoE,MAAQkI,EAAM7P,OACrCgL,EAAM9N,EAAU2B,KAAKC,IAAI5B,EAAU6J,UAAWoF,KAAK+D,MAAMF,EAAQC,CAAc,EAAA,KAAA,EAC/EjF,EAAM9N,EAAU2B,KAAKwF,UAAU2G,CAAAA,CAC/B,MAPAA,EAAM9N,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAK8G,KAAKgK,KAW9C,CAAA,EAAA,GAHArN,EAAYkI,EAAI1G,SAChBvB,EAAYiI,EAAI1L,QAEZuD,EAAAA,EAAUxB,IAASwB,EAAUxB,CAAAA,EAAMyO,EAAKM,GAAAA,EAAM,CACjD,IAAIC,EAAaxN,EAAUxB,CAAAA,EAAMyO,EAAKM,GAAAA,EAClCE,EAAapT,EAAUsS,qBAAqBa,EAAWvN,CAAAA,EAAYuN,EAAWtN,CAAAA,CAAAA,EAClFyF,EAAUhJ,KAAKuJ,MAAMP,EAAWtL,EAAU0S,uBAAuBU,CACjE,CAAA,CAAA,CACD,CAED,IAAIC,EAAc1N,EAAkB,OAEpC,GAAG3F,EAAUM,OAAO2E,2BAA2B,CAC9C,IAAIqO,EAAYD,EAAYxN,CAAYwN,GAAAA,EAAYzN,CACpD0F,EAAAA,EAAUhJ,KAAKuJ,MAAMP,EAAWtL,EAAU0S,uBAAuBY,GACpE,MACMD,EAAYxN,CACdyF,GAAAA,EAAUhJ,KAAKuJ,MAAMP,EAAWtL,EAAU0S,uBAAuBW,EAAYxN,CAE3EwN,CAAAA,CAAAA,EAAAA,EAAYzN,CACd0F,GAAAA,EAAUhJ,KAAKuJ,MAAMP,EAAWtL,EAAU0S,uBAAuBW,EAAYzN,CAI/E,CAAA,CAAA,EAAA,QAAS/C,EAAE,EAAGA,EAAEyI,EAAUxI,OAAQD,IACjC6M,EAAKpN,KAAKuJ,MAAM6D,EAAO1P,EAAU8K,wBAAwBQ,EAAUzI,CAAAA,EAAIgL,EAAMC,CAAAA,CAAAA,EAE9E,OAAO4B,CAlDC,CAmDV,EACC1P,EAAUkE,YAAY,aAAc,UACnClE,CAAAA,EAAU2P,qBAAqB9D,MAAM7L,EAAWkS,SAClD,CAAA,CAAA,EAEClS,EAAUuT,6BAA+B,SAASnP,EAAEoP,EAAAA,CACnDxT,EAAU8I,UAAU,kBAAkB,CAAC9I,EAAU2E,cAAcP,CAAGzC,EAAAA,KAAK6R,EAAIpP,CAAAA,CAAAA,EAEvEpE,EAAUM,OAAOmT,iBACpBzT,EAAU0T,YAAY1T,EAAU2E,cAAcP,CAAAA,EAAGzC,KAAK,KAAKyC,EAE9D,CAEA,CC/8BA,SAASuP,GAAa3T,GACrB,IAAI4T,EAAU,CAAA,EACVC,KACJ,SAASC,EAAcC,EAAYC,GAClCA,EAAoC,OAAfA,GAAe,WAAaA,EAAc,WAAU,EAErEJ,EAAQG,CACXH,IAAAA,EAAQG,GAAc9K,KAAK8K,CAAAA,EAC3B9K,KAAK8K,CAAAA,EAAcC,EAEpB,CACD,SAASC,EAAcF,EAAAA,CACnBH,EAAQG,CACV9K,IAAAA,KAAK8K,CAAcH,EAAAA,EAAQG,CAC3BH,EAAAA,EAAQG,CAAc,EAAA,KAEvB,CACD,SAASG,EAAeC,EACvB,CAAA,QAAQtR,KAAKsR,EACZL,EAAcM,KAAKnL,KAAMpG,EAAGsR,EAAYtR,CAEzC,CAAA,CAAA,CACD,SAASwR,GACR,CAAA,QAAQxR,KAAK+Q,EACZK,EAAcG,KAAKnL,KAAMpG,CAAAA,CAE1B,CAED,SAASyR,EAAmBC,EAC3B,CAAA,GAAA,CACCA,GACA,OAAMnQ,EACNvE,CAAAA,OAAO2U,QAAQC,MAAMrQ,CAAAA,CACrB,CACD,CAQD,OANApE,EAAU0U,eAAeC,iBAAiB,cAAe,WACxD,MAAO,CACNC,aAAcf,CAAAA,CAEf,IAEM,EAAA,SAAqBU,EAAUM,EAAAA,CACrC,GAAGhB,EAGF,OAAA,KADAS,EAAmBC,CAAAA,EAIpB,IACIO,EADAC,EAAW9L,KAAK+L,KAAO/L,KAAK+L,IAAIC,YAAc,MAE9CF,IACHD,EAAU7L,KAAK+L,IAAIC,WACnBhM,KAAK+L,IAAIE,cAAc,KAKxB,GAAA,MAAMC,EAAQ,CACbC,YAAa,CAACzT,KAAM,KAAMwC,KAAM,IAAA,EAChCkR,WAAY,GACZC,kBACAC,cAAe,CAAE,CAAA,EAIZC,EAAmB,CAAC7T,EAAMwC,IAC5BxC,CAAAA,IACFwT,EAAMC,YAAYzT,KAAOA,GAEvBwC,IACFgR,EAAMC,YAAYjR,KAAOA,EACzB,EAGF,IAAIyP,EAAU,CACb6B,OAAO,CAAC9T,EAAMwC,IAAUgR,CAAAA,EAAME,WAAa,GAAMG,EAAiB7T,EAAMwC,CAAAA,CAAK,EAC7EuR,eAAe,CAAC/T,EAAMwC,IAAAA,CAAUgR,EAAME,WAAAA,GAAmBG,EAAiB7T,EAAMwC,CAAK,CAAA,EACrFwR,WAAW,CAAChU,EAAMwC,IAAUgR,CAAAA,EAAMG,kBAAuBE,EAAiB7T,EAAMwC,CAAAA,CAAK,EACrFyR,YAAY,IAAMT,EAAME,WAAAA,GACxBQ,iBAAkB/N,GAAAA,CACdA,GAAOA,EAAIhF,OACbgF,EAAI9D,QAASI,GAAM+Q,EAAMI,cAAcnR,EAAExB,EAAM,EAAA,EAAA,EAE/CuS,EAAME,WAAa,EACnB,CAgBH,EAAA,GAZAnB,EAAeE,KAAKnL,KAAM2K,CAE1BC,EAAAA,EAAAA,GACA5K,KAAKH,UAAU,sBAAuB,CAAA,CAAA,EAEtCwL,EAAmBC,CAEnBtL,EAAAA,KAAKH,UAAU,qBAAsB,IAErCuL,EAAeD,KAAKnL,IAEpB4K,EAAAA,EAAAA,IACIgB,EACH,GAAGM,EAAME,WACRrV,EAAUyV,OAAON,EAAMC,YAAYzT,KAAMwT,EAAMC,YAAYjR,IAAAA,UACnDgR,EAAMG,eACdtV,EAAU2V,WAAWR,EAAMC,YAAYzT,KAAMwT,EAAMC,YAAYjR,IAE/D,MAAA,WAAUtB,KAAKsS,EAAMI,cACpBvV,EAAU8V,YAAYjT,CAKrBkS,EAAAA,IACH9L,KAAK+L,IAAIE,cAAcJ,CACvB7L,EAAAA,KAAK+L,IAAIe,SAAAA,EAEZ,CACA,CCjHe,SAASC,GAAYhW,EAAAA,ECLrB,SAAoBA,EAAAA,CAClCA,EAAUkE,YAAY,iBAAkB,SAAUtB,EAAI8C,EACrD,CAAA,IAAIuQ,EAAejW,EAAUkW,KAAKxQ,CAC9B1F,EAAAA,EAAUM,OAAO6V,cAAiBnW,CAAAA,EAAUwE,SAAW4R,EAAAA,WAC1DpW,EAAUqW,QAAQ,CACjBC,KAAM;AAAA;AAAA,iFAEuE5Q,EAAG9C,EAEhF2T;AAAAA,gCAAAA,OAAQ,IACR/Q,KAAM,qBACN+O,SAAU,SAAUnQ,EACLA,CAAAA,EAAEE,OAAOC,QACtB,2BAA2BmB,EAAG9C,EAAAA,IAAAA,IAG9B5C,EAAUwW,SAASP,CAAAA,EACnBjW,EAAUyV,OAAAA,EAEX,GAGL,CACA,CAAA,GDjBezV,CAAAA,EACXD,GAAiBC,CACjByW,EAAAA,GAAMzW,CDgHK,EAAA,SAASA,GACvBA,EAAU0W,YAAc/C,GAAa3T,CAAAA,CACtC,ECjHgBA,CAAAA,CAChB,CEVA,IAAI2W,GAAUxU,KAAKsH,IAAAA,EAiCnB,SAASmN,GAAOvU,GACf,MAAIA,EAAAA,CAAAA,GAAcA,OAAAA,GAAQ,WAARA,CAAAA,EACPA,EAAIwU,aAAexU,EAAIyU,UAAYzU,EAAImF,QAInD,CAiCe,MAAAuP,GAAA,CACd9K,IAxED,UAAA,CACC,OAAO0K,IACR,EAuECK,MAAO,SAAgB1S,EAAQ2S,EAAQC,GACtC,QAASC,KAAKF,GACP3S,EAAO6S,CAAAA,IADAF,QACqBC,KAAQ5S,EAAO6S,GAAGF,EAAOE,CAAAA,GAC5D,OAAO7S,CACP,EACD4R,KAAM,SAASA,EAAKkB,EAAAA,CACnB,IAAIvU,EAAGwU,EA1EQhV,EA4Ef,GAAI+U,GAAiBA,OAAAA,GAAU,SAE9B,OAAQ,GAAA,CACP,KAAMR,GAAOQ,CAAAA,EACZC,EAAS,IAAIlV,KAAKiV,CAClB,EAAA,MACD,KAlFa/U,EAkFC+U,EAjFd5L,MAAM8L,QACD9L,MAAM8L,QAAQjV,GAGbA,GAAOA,EAAIS,SAAWgJ,QAAazJ,EAAIkV,KAAOlV,EAAIC,MA+EvD,IADA+U,EAAS,IAAI7L,MAAM4L,EAAOtU,MAAAA,EACtBD,EAAI,EAAGA,EAAIuU,EAAOtU,OAAQD,IAC7BwU,EAAOxU,CAAKqT,EAAAA,EAAKkB,EAAOvU,CAEzB,CAAA,EAAA,MACD,KA9EJ,SAAwBR,GACvB,OAAOA,GAAcA,OAAAA,GAAQ,UAC5BmV,SAASC,UAAUC,SAAStD,KAAK/R,EAAIsV,WACvC,IADwD,qCACxD,EA2EyBP,CAAAA,EACpBC,EAAS,IAAI/T,OAAO8T,CACpB,EAAA,MACD,KA3EJ,SAAwB/U,EAAAA,CACvB,OAAOA,UAAcA,GAAQ,UAC5BmV,SAASC,UAAUC,SAAStD,KAAK/R,EAAIsV,WACvC,IADwD,qCACxD,EAwEyBP,CACpBC,EAAAA,EAAS,IAAIO,OAAOR,GACpB,MACD,KAxEJ,SAAyB/U,EAAAA,CACxB,OAAOA,GAAsB,OAARA,GAAQ,UAC5BmV,SAASC,UAAUC,SAAStD,KAAK/R,EAAIsV,eAAiB,sCACxD,EAqE0BP,CACrBC,EAAAA,EAAS,IAAIQ,QAAQT,CAAAA,EACrB,MACD,QAEC,IAAKvU,KADLwU,EAAS,CAAA,EACCD,EAAQ,CACjB,MAAMU,EAAAA,OAAiBV,EAAOvU,CAEd,EAAZiV,IAAY,UAAYA,IAAY,UAAYA,IAAY,UAC/DT,EAAOxU,CAAAA,EAAKuU,EAAOvU,CACV+T,EAAAA,GAAOQ,EAAOvU,CAAAA,CAAAA,EACvBwU,EAAOxU,CAAK,EAAA,IAAIV,KAAKiV,EAAOvU,IACnBkV,OAAON,UAAUtL,eAAeN,MAAMuL,EAAQ,CAACvU,CAAAA,CAAAA,IACxDwU,EAAOxU,CAAAA,EAAKqT,EAAKkB,EAAOvU,CAAAA,CAAAA,EACzB,CAIJ,CAAA,OAAOwU,GAAUD,CACjB,EACDY,QA/ED,SAAiB3V,GAChB,OAAc,IAAQ,MACvB,EA8EAuU,OAACA,GACAqB,MA7ED,SAAgB1D,EAAU2D,GACzB,IAAIC,EAEAd,EAAS,UAAA,CACZA,EAAOe,eACPf,EAAAA,EAAOgB,SAAW,GAClB,IAAIC,EAAO9M,MAAMiM,UAAU/L,MAAM0I,KAAKlC,SACtCiG,EAAAA,EAAQI,WAAW,UAAA,CAClBhE,EAAS1I,MAAM5C,KAAMqP,CACrBjB,EAAAA,EAAOgB,SAAW,EAClB,EAAEH,CAAAA,CACL,EAaC,OAXAb,EAAOgB,SAAW,GAClBhB,EAAOe,eAAiB,UAAA,CACvBI,aAAaL,CAAAA,EACbd,EAAOgB,SAAW,EACpB,EACChB,EAAOoB,SAAW,UACjB,CAAA,IAAIH,EAAO9M,MAAMiM,UAAU/L,MAAM0I,KAAKlC,SACtCqC,EAAAA,EAAS1I,MAAM5C,KAAMqP,CAAAA,EACrBjB,EAAOe,eAAAA,CACT,EAEQf,CACR,CAAA,ECtEe,SAASqB,GAAO1Y,GAE/B,SAASgL,EAAI2D,EACZ,CAAA,IAAIjL,EAAU+J,SAASC,cAAc,KAKrC,EAAA,OAJeiB,GAAa,IAAIpL,MAAM,GAC9BS,EAAAA,QAAQ,SAAS2U,EACxBjV,CAAAA,EAAQkV,UAAUhX,IAAI+W,EACxB,CACQjV,EAAAA,CACR,CACA,IAAImV,EAAY,CACfC,eAAgB,UACf,CAAA,OAAO9N,EAAI,+BACX,CAAA,EACD+N,IAAK,UAAA,CACJ,OAAO/N,EAAI,oBAAA,CACX,EACD3E,KAAM,SAAU/F,EAAAA,CACf,IAAIoD,EAAUsH,EAAI,aAiBlB,EAAA,OAhBAtH,EAAQsV,aAAa,OAAQ1Y,EAAO+F,KAAO,MAC3C3C,EAAAA,EAAQsV,aAAa,WAAY1Y,EAAO+F,IAErCrG,EAAAA,EAAUM,OAAO2Y,mBAChB3Y,EAAO4Y,UACTxV,EAAQkV,UAAUhX,IAAI,mBAAA,EACdtB,EAAO6Y,SACfzV,EAAQkV,UAAUhX,IAAI,kBACG,EAAhBtB,EAAO+F,OAAS,QACzB3C,EAAQkV,UAAUhX,IAAI,0BAGpBtB,EAAO8Y,eACT1V,EAAQkV,UAAUhX,IAAI,uBAGjB8B,GAAAA,CACP,EACD/B,KAAM,WACL,OAAOqJ,EAAI,cACX,CAAA,EACDqO,OAAQ,SAAU/Y,EAAAA,CACjB,OAAO0K,EAAI,2DACX,EACDsO,cAAe,SAAUhZ,EAAAA,CACxB,OAAO0K,EAAI,WAAa1K,EAAO+F,KAAO,6BACtC,EACDkT,OAAQ,UACP,CAAA,OAAOvO,EAAI,qBACX,CAAA,EACDwO,mBAAoB,SAASlZ,EAC5B,CAAA,IAAImZ,EAAkBzO,EAAI,oBAmB1B,OAlBI1K,EAAOoZ,OAAUD,EAAgBE,iBAEpC3Z,EAAUI,MAAMqZ,EAAiB,QAAS,WACrCzZ,EAAU4Z,kBAAAA,EACb5Z,EAAU6Z,gBAAAA,EAEV7Z,EAAU8Z,eAAe,CACxBpP,SAAUzB,KACVtH,KAAM3B,EAAUwE,SAAAA,EAAW7C,KAC3BoY,WAAAA,GACAC,QAAS,SAAUrY,EAAMsY,EAAAA,CACxBja,EAAU0V,eAAe/T,CAAAA,EACzB3B,EAAU6Z,gBAAAA,CACV,GAGP,CAESJ,EAAAA,CACP,EACDS,aAAc,SAAU5Z,EACvB,CAAA,OAAO0K,EAAI,qBAAA,CACX,GAoCF,SAASmP,EAAc7Z,EACtB,CAAA,IAAI8Z,EAlCL,SAAsB9Z,EAAAA,CACrB,IAAI8Z,EACJ,GAAI9Z,EAAO+F,KACV,OAAQ/F,EAAO+F,MACd,IAAK,QACL,IAAK,OACL,IAAK,OACJ+T,EAAWvB,EAAUS,cACrB,MACD,IAAK,OACJc,EAAWvB,EAAUlX,KACrB,MACD,IAAK,SACJyY,EAAWvB,EAAUU,OACrB,MACD,IAAK,SACJa,EAAWvB,EAAUQ,OACrB,MACD,IAAK,eACJe,EAAWvB,EAAUW,mBACrB,MACD,QACCY,EAAWvB,EAAUxS,IAAAA,MAGd/F,EAAO+Z,KAChBD,EAAWvB,EAAUC,eACZxY,EAAOga,OAChBF,EAAWvB,EAAUE,KAEtB,OAAOqB,CACR,EAG6B9Z,CAAAA,EAC5B,GAAI8Z,EAAJ,CAGA,IAAI1W,EAAU0W,EAAS9Z,CAIvB,EAqBA,GAxBGA,EAAOmB,KACTiC,EAAQkV,UAAUhX,IAAItB,EAAOmB,GAAAA,EAE3BnB,EAAOuO,SACL0L,EAAQja,EAAOuO,SACE,EAAR0L,IACZA,GAAS,MAEV7W,EAAQzC,MAAM4N,MAAQ0L,GAEpBja,EAAOsO,UACL2L,EAAQja,EAAOsO,UACE,EAAR2L,IACZA,GAAS,MAEV7W,EAAQzC,MAAM2N,OAAS2L,GAEpBja,EAAOoZ,OACV1Z,EAAUI,MAAMsD,EAAS,QAASpD,EAAOoZ,KAEtCpZ,EAAAA,EAAOoB,OACVgC,EAAQiK,UAAYrN,EAAOoB,MAGxBpB,EAAOka,MAAO,CACjB,IAAID,EAAQ,GACRja,EAAOka,OAAS,QACnBD,EAAQ,WACCja,EAAOka,OAAS,SACzBD,EAAQ,cAET7W,EAAQzC,MAAMwZ,eAAiBF,CAC/B,CACD,OAAO7W,CAnCN,CAoCF,CAEA,SAASgX,EAAcpa,GAStB,OARsB,OAAXA,GAAW,WACrBA,EAAS,CACR+F,KAAM/F,CAAAA,GAGHA,EAAO+F,MAAS/F,EAAO+Z,MAAS/Z,EAAOga,OAC3Cha,EAAO+F,KAAO,UAER/F,CACR,CAEA,SAASqa,EAAara,EACrB,CAAA,IACIsa,EADAC,EAAWpN,SAASqN,uBAGvBF,EAAAA,EADEpP,MAAM8L,QAAQhX,GACRA,EAEA,CAACA,CAGV,EAAA,QAASuC,EAAI,EAAGA,EAAI+X,EAAM9X,OAAQD,IAAK,CACtC,IAkBKkY,EAlBD1U,EAAOqU,EAAcE,EAAM/X,CAAAA,CAAAA,EAE5BwD,EAAKA,OAAS,OAASuU,EAAM/X,EAAI,CAElB,KADbkY,EAAOL,EAAcE,EAAM/X,EAAI,CAAA,CAAA,GAC3BwD,OAAS,QAAU0U,EAAK1U,OAAS,UACxCA,EAAK6S,UAAY,GACjB7S,EAAK+S,cAAgB,KAIpB/S,EAAKA,OAAS,QAAUuU,EAAM/X,EAAI,CAAA,KAChCkY,EAAOL,EAAcE,EAAM/X,EAAI,KAC3BwD,OAAS,QAAU0U,EAAK1U,OAAS,UACxCA,EAAK+S,cAAgB,KAIpB/S,EAAKA,OAAS,SAAWuU,EAAM/X,EAAI,CAAA,KACjCkY,EAAOL,EAAcE,EAAM/X,EAAI,KAC3BwD,OAAS,QAAU0U,EAAK1U,OAAS,QACxCA,EAAK8S,SAAW,GAChB9S,EAAK+S,cAAAA,KAIP,IAAI1V,EAAUyW,EAAc9T,GAE5BwU,EAASjN,YAAYlK,CAClB2C,GAAAA,EAAKiU,MAAQjU,EAAKgU,OACpB3W,EAAQkK,YAAY+M,EAAatU,EAAKiU,MAAQjU,EAAKgU,IAAAA,CAAAA,CAEpD,CACD,OAAOQ,CACR,CAEA7a,EAAUgb,cAAgB,SAAUJ,EAAAA,CACnC,IAAIK,EAAShS,KAAKxG,WAAWyY,cAAc,kBAC3C,EAAA,OAAKD,KACJA,EAASxN,SAASC,cAAc,KAAA,GACzBiB,UAAY,uCACnB3O,EAAUmb,gBAAgBP,EAAOK,GAC1BA,EAGT,EAGA,IAAIG,EAAiB,KACrBpb,EAAUmb,gBAAkB,SAAU7a,EAAQ6F,GAE7C,GAAI7F,EAAJ,CAGA,IAAI+a,KAGAC,EAAYhb,EAAOsO,QAAU5O,EAAUub,GAAGC,WAE3CJ,IAAmB,MACnBA,IAAmBE,IACrBD,EAAAA,IAMEA,IACFrb,EAAUub,GAAGC,WAAaF,GAG1BnV,EAAUwH,UAAY,GACtBxH,EAAUyH,YAAY+M,EAAara,CAAAA,CAAAA,EAInCN,EAAUyb,cAAAA,EACVzb,EAAUwJ,KAAO,CAAA,EACjBxJ,EAAUoQ,aAAAA,EACVpQ,EAAU0b,YAIVvV,EAAAA,EAAUlF,MAAM0a,QADdL,IAAc,EACU,OAEA,GAG3BF,EAAiBE,CAnChB,CAoCF,CAEA,CCvQe,SAAS5C,GAAO1Y,EAE9B,CAAA,SAAS4b,EAAezV,EAAAA,CAGvB,QAFI0V,EAAOpO,SAASqO,KAEd3V,GAAaA,GAAa0V,GAC/B1V,EAAYA,EAAU+E,WAGvB,OAAU2Q,GAAQ1V,CAClB,CAED,SAAS4V,EAAclc,EAAAA,CACtB,MAAO,CACNmc,EAAInc,EAAOoc,YAAcxO,SAASyO,gBAAgBC,YAClDC,EAAIvc,EAAOwc,aAAe5O,SAASyO,gBAAgBI,YAEpD,CAAA,CAKD,SAASC,EAAmBvc,EAAWH,EACtC,CAAA,IACI2c,EADAC,EAAUV,EAAclc,CAE5BG,EAAAA,EAAUI,MAAMP,EAAQ,SAAU,UAAA,CACjC2Y,aAAagE,CAAAA,EACbA,EAAcjE,WAAW,UAAA,CAExB,GAAKqD,EAAe5b,EAAUyC,UAAezC,GAAAA,CAAAA,EAAU0c,WAAvD,CAGA,IAdaC,EAAEC,EAcXC,EAAUd,EAAclc,GAdb+c,EAiBMC,IAjBRF,EAiBDF,GAhBLT,GAAKY,EAAEZ,GAAKW,EAAEP,GAAKQ,EAAER,KAiB3BK,EAAUI,EACVC,EAAuB9c,GANvB,CAQD,EAAE,GACN,CAAA,CAAA,CACE,CAED,SAAS8c,EAAuB9c,EAC5BA,CAAAA,CAAAA,EAAU0c,YAAe1c,EAAU+c,OAAUnB,EAAe5b,EAAU+c,QAGrE/c,EAAU8I,UAAU,oBAAqB,CAAA,CAAA,IAC5C9I,EAAU2V,WACV3V,EAAAA,EAAU8I,UAAU,yBAA0B,IAE/C,EA2BD,SAA2B9I,EAC1B,CAAA,IAAI6b,EAAO7b,EAAUyC,WACC5C,OAAOmd,iBAAiBnB,CAC3BoB,EAAAA,iBAAiB,UACnCpB,GADkD,WAClDA,EAAK5a,MAAMyJ,SAAW,YAGvB,IAAIwS,EAAgBzP,SAASC,cAAc,QAC3CwP,EAAAA,EAAcvO,UAAY,qCAC1BuO,EAAcC,SAAY,GACvBnd,EAAUM,OAAO8c,sBACnBF,EAAclE,aAAa,OAAQ,MACnCkE,EAAAA,EAAclE,aAAa,cAAA,KAIGnZ,OAAa,MAAOA,OAAW,IAAKA,OAAa,KAzCjF,SAAyBG,EACxB,CAAA,IAAIob,EAAiBpb,EAAU+c,MAAMM,aACjCC,EAAgBtd,EAAU+c,MAAMQ,aAEpC,SAASC,GAAAA,CACLxd,EAAU0c,aAIV1c,EAAU+c,QACR/c,EAAU+c,MAAMM,cAAgBjC,GACnCpb,EAAU+c,MAAMQ,aAAeD,GAC/BR,EAAuB9c,CAGxBob,EAAAA,EAAiBpb,EAAU+c,MAAMM,aACjCC,EAAgBtd,EAAU+c,MAAMQ,aAGjChF,WAAWiF,EAAuB,GAAA,EAClC,GAGD,CAAA,EAoBiBxd,CAAAA,GAEhB6b,EAAKjO,YAAYsP,CAAAA,EACbA,EAAcO,cACjBlB,EAAmBvc,EAAWkd,EAAcO,aAG5C5B,GAAAA,EAAK1Q,YAAY+R,CAAAA,EACjBX,EAAmBvc,EAAWH,SAGhC,GAEiBG,CAEnB,CAAA,CC/GA,MAAM0d,EACL,CAAA,aACCzU,CAAAA,KAAK0U,gBACL1U,KAAK2U,UAAY,EACjB,CACD,cACC3U,CAAAA,KAAK0U,eACL,CACD,YAAAE,CACC5U,KAAK0U,aAAe,EACpB,CAGF,CAAA,MAAMG,GAAqB,SAASzb,EAAAA,CACnC,IAAI0b,EAAW,CAAA,EACXlR,EAAQ,EACZ,MAAMmR,EAAe,UACpB,CAAA,IAAIC,EAAiB,GACrB,UAAUpb,KAAKkb,EAAS,CACvB,MAAMG,EAAgBH,EAASlb,CAAGgJ,EAAAA,MAAMxJ,EAAK6P,SAC7C+L,EAAAA,EAAeA,GAAkBC,CACjC,CACD,OAAOD,CACT,EAgCC,OA/BAD,EAAaxH,SAAS,SAASwD,EAASlY,EAAAA,CACvC,GAAY,OAAAsC,GAAY,WAAW,CAClC,IAAI+Z,EAQJ,GAPGrc,GAAYA,EAASc,GACvBub,EAAYrc,EAASc,IAErBub,EAAYtR,EACZA,KAGE/K,GAAYA,EAASsc,KAAK,CAC5B,MAAMC,EAAkBrE,EACxBA,EAAU,WACTqE,EACAL,EAAAA,EAAaM,YAAYH,CAAAA,CAC9B,CACI,CAGD,OADAJ,EAASI,CAAAA,EAAanE,EACfmE,CACP,CACD,MAAO,EACT,EACCH,EAAaM,YAAY,SAAS1b,EAAAA,CAAAA,OAC1Bmb,EAASnb,CAClB,CAAA,EAECob,EAAaO,MAAQ,WACpBR,EAAW,CAAA,CACb,EAEQC,CACR,EAEA,SAASQ,GAAcnc,EAAAA,CAEtB,MAAMoc,EAAY,IAAIf,GACtBrb,EAAI6B,YAAY,SAASwa,EAAW1E,EAASlY,EAAAA,CAC5C4c,EAAY,MAAMA,EAAUC,YACvBF,EAAAA,EAAUb,UAAUc,CACxBD,IAAAA,EAAUb,UAAUc,CAAAA,EAAaZ,GAAmB7U,IAGlDnH,GAAAA,GAAYA,EAAS8c,aACvB5E,EAAUA,EAAQ6E,KAAK/c,EAAS8c,aAKjC,IAAIT,EAAaO,EAAU,IAFXD,EAAUb,UAAUc,CAAAA,EAAWlI,SAASwD,EAASlY,GAMjE,OAHGA,GAAYA,EAASc,KACvBub,EAAYrc,EAASc,IAEfub,CACT,EAEC9b,EAAIyc,UAAY,SAASvK,EACxBtL,CAAAA,KAAK/E,YAAY,aAAcqQ,CAAAA,CACjC,EAEClS,EAAIyG,UAAU,SAASiW,EAAMC,EAC5B,CAAA,GAAIP,EAAUd,aAAc,MAAA,GAE5B,MAAMsB,EAAc,MAAMF,EAAKJ,YAEzBf,EAAAA,EAAYa,EAAUb,UAK5B,OAJIA,EAAyB,eAC5BA,EAAyB,cAAE/R,MAAM5C,KAAM,CAAC8V,GAAM3V,OAAO4V,CAAAA,CAAAA,EAAAA,CAGlDpB,EAAUqB,CAAAA,GACNrB,EAAUqB,CAAapT,EAAAA,MAAM5C,KAAM+V,CAAAA,CAE7C,EAEC3c,EAAIwG,WAAW,SAASkW,EAAAA,CAEvB,QADkBN,EAAUb,UACR,MAAMmB,EAAKJ,cACjC,EAECtc,EAAI6c,YAAY,SAAStc,GACxB,GAAIA,EAAG,CACN,IAAIgb,EAAYa,EAAUb,UAC1B,UAAU/a,KAAK+a,EACdA,EAAU/a,CAAGyb,EAAAA,YAAY1b,GAG1B,MAAMuc,EAAOvc,EAAGW,MAAM,KAEtB,GADAqa,EAAYa,EAAUb,UACnBuB,EAAKrc,SAAW,EAAE,CACpB,MAAM4b,EAAYS,EAAK,CAAA,EACjBC,EAAUD,EAAK,GAClBvB,EAAUc,CAAAA,GACZd,EAAUc,CAAAA,EAAWJ,YAAYc,CAElC,CAAA,CACD,CACH,EACC/c,EAAIgd,gBAAkB,UAAA,CACrB,UAAWN,KAAQN,EAAUb,UAC5Ba,EAAUb,UAAUmB,GAAMR,MAE7B,CAAA,CAEA,CChIe,MAAAe,GAAA,CACdlf,MAAO,SAAUmf,EAAInf,EAAO4Z,EACvBuF,CAAAA,EAAGC,iBACND,EAAGC,iBAAiBpf,EAAO4Z,EAAAA,EAEnBuF,EAAAA,EAAGrb,aACXqb,EAAGrb,YAAY,KAAK9D,EAAO4Z,CAC5B,CAAA,EACDyF,YAAa,SAAUF,EAAInf,EAAO4Z,EAAAA,CAC7BuF,EAAGG,oBACNH,EAAGG,oBAAoBtf,EAAO4Z,EAAS,EAAA,EAE/BuF,EAAGL,aACXK,EAAGL,YAAY,KAAK9e,EAAO4Z,CAC5B,CAAA,CAAA,ECZa,SAAStB,GAAO1Y,GAG/B,IAAI2f,ECHW,UAEd,CAAA,IAAIA,EAAY,SAAUnJ,EAAU8H,EACnC9H,CAAAA,EAAWA,GAAY8I,GAAiBlf,MACxCke,EAAcA,GAAegB,GAAiBG,YAC9C,IAAI1B,EAAW,CAAA,EACX6B,EAAa,CAChBC,OAAQ,SAASN,EAAInf,EAAOmU,EAAUuL,EAAAA,CACrC/B,EAASzb,KAAK,CAACoB,QAAS6b,EAAInf,MAAMA,EAAOmU,SAAUA,EAAUuL,QAASA,CACtEtJ,CAAAA,EAAAA,EAAS+I,EAAInf,EAAOmU,EAAUuL,CAC9B,CAAA,EACDC,OAAQ,SAASR,EAAInf,EAAOmU,EAAUuL,EACrCxB,CAAAA,EAAYiB,EAAInf,EAAOmU,EAAUuL,CACjC,EAAA,QAAQjd,EAAI,EAAGA,EAAIkb,EAASjb,OAAQD,IAAI,CACvC,IAAImX,EAAU+D,EAASlb,CAAAA,EACnBmX,EAAQtW,UAAY6b,GAAMvF,EAAQ5Z,QAAUA,GAAS4Z,EAAQzF,WAAaA,GAAYyF,EAAQ8F,UAAYA,IAC7G/B,EAAS1M,OAAOxO,EAAG,GACnBA,IAED,CACD,EACDmd,UAAW,WAGV,QAFIC,EAAclC,EAASrS,QAElB7I,EAAI,EAAGA,EAAIod,EAAYnd,OAAQD,IAAI,CAC3C,IAAImX,EAAUiG,EAAYpd,CAC1B+c,EAAAA,EAAWG,OAAO/F,EAAQtW,QAASsW,EAAQ5Z,MAAO4Z,EAAQzF,SAAUyF,EAAQ8F,OAC5EF,EAAAA,EAAWG,OAAO/F,EAAQtW,QAASsW,EAAQ5Z,MAAO4Z,EAAQzF,SAAAA,QAC1DqL,EAAWG,OAAO/F,EAAQtW,QAASsW,EAAQ5Z,MAAO4Z,EAAQzF,SAAAA,IAC1DqL,EAAWG,OAAO/F,EAAQtW,QAASsW,EAAQ5Z,MAAO4Z,EAAQzF,SAAU,EAAA,CACpE,CACDwJ,EAAS1M,OAAO,EAAG0M,EAASjb,OAC5B,EACD4V,OAAQ,UACP,CAAA,OAAOiH,EAAU1W,KAAK7I,MAAO6I,KAAKwW,WAAAA,CAClC,GAEF,OAAOG,CACT,EAEC,OAAOD,GACR,EDtCgBO,EAEhBlgB,EAAUI,MAAQuf,EAAUE,OAC5B7f,EAAUyf,YAAcE,EAAUI,OAClC/f,EAAUmgB,gBAAkBR,EAAUK,UACtChgB,EAAUogB,qBAAuBT,EAAUjH,OAG3C1Y,EAAUqgB,MAAQ,SAASC,EAAAA,CAE1B,OADWhd,OAAOmU,UAAU8I,MAAQ,UAAA,CAAY,OAAOtX,KAAKuX,QAAQ,aAAc,EAAA,CAAI,GAC1E3U,MAAMyU,EACnB,EAEAtgB,EAAUygB,QAAU,SAASpe,GAC5B,MAAIA,EAAAA,CAAAA,GAAcA,OAAAA,GAAO,WAAPA,CAAAA,EACPA,EAAIwU,aAAexU,EAAIyU,UAAYzU,EAAImF,QAInD,EAEAxH,EAAU0gB,UAAY,SAASre,EAC9B,CAAA,OAAQA,GAAqB,OAAPA,GAAO,QAC9B,CAEA,CE8CA,SAASse,GAAaC,GACrB,GAAIA,CAAAA,EAAM,MAAO,GAEjB,IAAIjS,EAAYiS,EAAKjS,WAAa,GAOlC,OANGA,EAAUkS,UACZlS,EAAYA,EAAUkS,SAEnBlS,EAAUqB,UACbrB,EAAY,IAENA,GAAa,EACrB,CAgBA,SAASmS,GAAU1c,EAAG2c,EAAWC,EAAAA,CAC7BA,IAD6BA,SAE/BA,MAKD,QAHIC,EAAM7c,EAAEE,QAAUF,EAAE8c,WACpBzf,EAAM,GAEHwf,GAAI,CAGV,GAFAxf,EAAMkf,GAAaM,CAEZ,EAAA,CACN,IAAIE,EAAM1f,EAAIuO,QAAQ+Q,CAAAA,EACtB,GAAII,GAAO,EAAE,CACZ,GAAA,CAAKH,EACJ,OAAOC,EAGR,IAAI9f,EAAQggB,IAAQ,KAAU1f,EAAI2f,OAAOD,EAAM,CAAA,GAAI,IAAIZ,KACnDc,EAAAA,EAAUF,EAAMJ,EAAUje,QAAUrB,EAAIqB,QAAAA,CAAgBrB,EAAI2f,OAAOD,EAAMJ,EAAUje,MAAAA,EAASyd,KAEhG,EAAA,GAAIpf,GAAQkgB,EACX,OAAOJ,CACR,CACD,CAEDA,EAAIA,EAAI/V,UACR,CACD,OAAO,IACR,CAIA,SAASoW,GAAUV,GAClB,IAAIjF,EAAAA,GACH4F,EAAAA,GACD,GAAG1hB,OAAOmd,iBAAiB,CAC1B,IAAI/b,EAAQpB,OAAOmd,iBAAiB4D,EAAM,MAC1CjF,EAAU1a,EAAe,QACzBsgB,EAAatgB,EAAkB,UACjC,MAAU2f,EAAKY,eACb7F,EAAUiF,EAAKY,aAAsB,QACrCD,EAAaX,EAAKY,aAAyB,YAG5C,IAAIC,EAAAA,GACAC,EAAmBZ,GAAU,CAACxc,OAAOsc,CAAO,EAAA,kBAAA,EAMhD,EAAA,OALGc,IACFD,EAAmBC,EAAiBzgB,MAAM2N,QAAU,OAErD6S,EAAgBA,GAAAA,CAAmBb,EAAiB,aAE5CjF,GAAW,QAAU4F,GAAc,UAAaE,CAAAA,CACzD,CAEA,SAASE,GAAuBf,EAC/B,CAAA,MAAA,CAAQgB,MAAMhB,EAAK7c,aAAa,UAA+C,CAAA,GAAA,EAA9B6c,EAAK7c,aAAa,UAAA,GAAiB,CACrF,CAEA,SAAS8d,GAAQjB,EAAAA,CAEhB,MADkB,CAAA,CAACjE,KAAW9O,KAAAA,EACf+S,EAAAA,EAAKkB,SAASC,YACnBnB,CAAAA,GAAAA,CAAAA,CAAAA,EAAK7c,aAAa,MAAA,CAG7B,CAEA,SAAS1D,GAAUugB,EAElB,CAAA,MAAA,CADiB,CAACoB,MAAQ,GAAMC,OAAS,GAAMC,YAAiB7I,OAAAA,GAAejC,OAAAA,IACjEwJ,EAAKkB,SAASnD,YACnBiC,CAAAA,GAAAA,CAAAA,EAAKuB,aAAa,UAI5B,CAAA,CAyDA,SAASC,IAAAA,CACR,OAAO3U,SAAS4U,KAAKC,kBAAoB7U,SAAS4U,KAAKE,YACxD,CAwBA,SAASC,GAAY9e,EACpB,CAGA,GAHA,CAAKA,GAGL,CAAK0e,GACJ,EAAA,OAAO3U,SAASqO,KAEjB,KAAOpY,EAAQwH,aAAexH,EAAUA,EAAQwH,aAC/C,GAAIxH,aAAmB+e,WACtB,OAAO/e,EAAQgf,KAGjB,OAAOjV,SAASqO,IACjB,CAMe,MAAA6G,GAAA,CAOdC,gBAAiB,SAAyBC,EACzC,CAAA,OAAO5Z,KAAK6Z,UAAUD,CAAAA,EAAY1hB,IAClC,EAOD4hB,eAAgB,SAAwBF,EAAAA,CACvC,OAAO5Z,KAAK6Z,UAAUD,CAAY3hB,EAAAA,GAClC,EAED8hB,aAAc,SAAsBC,EAEnC,CAAA,QADI/hB,EAAI,EAAGC,EAAK,EACV8hB,GACL/hB,GAAYgiB,SAASD,EAAKE,SAAAA,EAC1BhiB,GAAc+hB,SAASD,EAAKG,UAC5BH,EAAAA,EAAOA,EAAKI,aAEb,MAAO,CAACniB,IAAKA,EAAKC,KAAMA,CACxB,CAAA,EAEDmiB,cAAe,SAAuBL,GACrC,IAAIM,EAAMN,EAAKO,sBAAAA,EAEXtiB,EAAM,EACTC,EAAO,EAGR,GAAK,OAAOsiB,KAAKC,UAAUC,SAUrB,EAAA,CAIL,IAAIC,EAAQnW,SAASC,cAAc,KAAA,EACnCkW,EAAM3iB,MAAMyJ,SAAS,WACrBkZ,EAAM3iB,MAAME,KAAK,MACjByiB,EAAM3iB,MAAMC,IAAI,MAChB0iB,EAAM3iB,MAAM4N,MAAM,MAClB+U,EAAM3iB,MAAM2N,OAAS,MAErBnB,SAASqO,KAAKlO,YAAYgW,CAC1B,EAAA,IAAIC,EAAWD,EAAMJ,sBAAAA,EACrBtiB,EAAOqiB,EAAIriB,IAAM2iB,EAAS3iB,IAC1BC,EAAOoiB,EAAIpiB,KAAO0iB,EAAS1iB,KAE3ByiB,EAAM1Y,WAAWC,YAAYyY,CAC7B,CAAA,KA3BsC,CACtC,IAAI9H,EAAOrO,SAASqO,KAChBgI,EAAUrW,SAASyO,gBACnB6H,EAAYlkB,OAAOmkB,aAAeF,EAAQC,WAAajI,EAAKiI,UAC5DE,EAAapkB,OAAOqkB,aAAeJ,EAAQG,YAAcnI,EAAKmI,WAC9DE,EAAYL,EAAQK,WAAarI,EAAKqI,WAAa,EACnDC,EAAaN,EAAQM,YAActI,EAAKsI,YAAc,EAE1DljB,EAAOqiB,EAAIriB,IAAO6iB,EAAYI,EAC9BhjB,EAAOoiB,EAAIpiB,KAAO8iB,EAAaG,CAClC,CAmBE,MAAO,CAAEljB,IAAK+N,KAAKM,MAAMrO,CAAAA,EAAMC,KAAM8N,KAAKM,MAAMpO,CAChD,CAAA,CAAA,EAED2hB,UAAW,SAAmBG,EAAAA,CAC7B,OAAIA,EAAKO,sBACDva,KAAKqa,cAAcL,CAEnBha,EAAAA,KAAK+Z,aAAaC,CAE1B,CAAA,EAED1e,QAAS,SAASb,EAAS2gB,EAC1B,CAAA,OAAI3gB,GAAY2gB,EAGT9f,GAAQb,EAAS2gB,CAAAA,EAFhB,IAGR,EACDC,YAAa,SAASC,EAASC,EAC3BA,CAAAA,EAAcC,YAChBD,EAActZ,WAAWwZ,aAAaH,EAASC,EAAcC,WAAAA,EAE7DD,EAActZ,WAAW0C,YAAY2W,CAEtC,CAAA,EACDI,OAAQ,SAAS/D,GACZA,GAAQA,EAAK1V,YAChB0V,EAAK1V,WAAWC,YAAYyV,CAAAA,CAE7B,EACDgE,UAAW,SAASC,EAAO5Z,EAAAA,CAC1B,OAAOA,EAAO6Z,SAASD,CACvB,CAAA,EACDE,kBArMD,SAA2BlJ,GAiB1B,QAhBImJ,EAAQnJ,EAAKnZ,iBAAiB,CACjC,UACA,aACA,QACA,SACA,WACA,SACA,SACA,SACA,QACA,aACA,mBAAA,EACC4K,KAAK,IAAA,CAAA,EAEH2X,EAAazZ,MAAMiM,UAAU/L,MAAM0I,KAAK4Q,EAAO,CAE3CniB,EAAAA,EAAI,EAAGA,EAAIoiB,EAAWniB,OAAQD,IACrCoiB,EAAWpiB,CAAAA,EAAGqiB,UAAYriB,EAwB3B,IAlBAoiB,EAAWE,KAAK,SAASxI,EAAGC,EAAAA,CAC3B,OAAGD,EAAEQ,WAAa,GAAKP,EAAEO,WAAa,EAC9B,EAELR,EAAEQ,WAAa,GAAKP,EAAEO,WAAa,EAAbA,GAIrBR,EAAEQ,WAAaP,EAAEO,SAEbR,EAAEuI,UAAYtI,EAAEsI,UAEpBvI,EAAEQ,SAAWP,EAAEO,YAGZ,CACT,CAESta,EAAAA,EAAI,EAAGA,EAAIoiB,EAAWniB,OAAQD,IAAI,CACzC,IAAI+d,EAAOqE,EAAWpiB,CAAAA,GACP8e,GAAuBf,CAAUvgB,GAAAA,GAAUugB,CAASiB,GAAAA,GAAQjB,KAAUU,GAAUV,CAAAA,IAE9FqE,EAAW5T,OAAOxO,EAAG,CACrBA,EAAAA,IAED,CACD,OAAOoiB,CACR,EAmJCtE,aAAAA,GACAG,UACA0B,GAAAA,YAAAA,GACA4C,gBA1GD,SAAyB1hB,EAAAA,CACxB,MAAS8e,CAAAA,CAAAA,GAAY9e,EACtB,EAyGC0e,qBAAAA,GACAiD,iBA5ID,UAAA,CACC,IAAIC,EAAgB7X,SAAS6X,cAQ7B,OAPIA,EAAcC,aACjBD,EAAgBA,EAAcC,WAAWD,eAEtCA,IAAkB7X,SAASqO,MAAQrO,SAAS+X,eAC/CF,EAAgB7X,SAAS+X,aAAAA,EAAeC,WAAahY,SAASqO,MAGxDwJ,CACR,EAmICI,yBA5VD,SAAkChgB,EAAIkb,EACrC,CAAA,IAAIvS,EAAIZ,SAASyO,gBACbqH,EApCL,SAAyBN,GACxB,IAAI/hB,EAAI,EAAGC,EAAK,EAAGkgB,EAAM,EAAGsE,EAAO,EACnC,GAAI1C,EAAKO,sBAAuB,CAC/B,IAAID,EAAMN,EAAKO,sBAAAA,EACX1H,EAAOrO,SAASqO,KAChBgI,EAAWrW,SAASyO,iBACvBzO,SAASqO,KAAK5Q,YACduC,SAASqO,KAENiI,EAAYlkB,OAAOmkB,aAAeF,EAAQC,WAAajI,EAAKiI,UAC5DE,EAAapkB,OAAOqkB,aAAeJ,EAAQG,YAAcnI,EAAKmI,WAC9DE,EAAYL,EAAQK,WAAarI,EAAKqI,WAAa,EACnDC,EAAaN,EAAQM,YAActI,EAAKsI,YAAc,EAC1DljB,EAAOqiB,EAAIriB,IAAO6iB,EAAYI,EAC9BhjB,EAAOoiB,EAAIpiB,KAAO8iB,EAAaG,EAE/B/C,EAAQ5T,SAASqO,KAAKyB,YAAcgG,EAAIlC,MACxCsE,EAASlY,SAASqO,KAAKuB,aAAekG,EAAIoC,MAC5C,KAAQ,CACN,KAAM1C,GACL/hB,GAAYgiB,SAASD,EAAKE,UAAU,EACpChiB,EAAAA,GAAc+hB,SAASD,EAAKG,WAAW,EACvCH,EAAAA,EAAOA,EAAKI,aAGbhC,EAAQ5T,SAASqO,KAAKyB,YAAc0F,EAAK1F,YAAcpc,EACvDwkB,EAASlY,SAASqO,KAAKuB,aAAe4F,EAAK5F,aAAenc,CAC1D,CACD,MAAO,CAAE0kB,EAAG3W,KAAKM,MAAMrO,GAAM2kB,EAAG5W,KAAKM,MAAMpO,CAAAA,EAAO0N,MAAMoU,EAAK1F,YAAa3O,OAAOqU,EAAK5F,aAAcgE,MAAOpS,KAAKM,MAAM8R,CAAAA,EAAQsE,OAAQ1W,KAAKM,MAAMoW,CAClJ,CAAA,CAAA,EAO2B/E,CAE1B,EAAA,MAAO,CACNiF,EAAGngB,EAAGogB,QAAUzX,EAAE+V,WAAab,EAAIsC,EAAIjF,EAAKqD,WAC5C2B,EAAGlgB,EAAGqgB,QAAU1X,EAAE8V,UAAYZ,EAAIqC,EAAIhF,EAAKmD,SAAAA,CAE7C,EAqVCiC,cAvSD,SAAuB5hB,EACtB,CAAA,IAAI6c,EAUJ,OATI7c,EAAE6hB,QACLhF,EAAM7c,GAGN6c,GADA7c,EAAIA,GAAKvE,OAAOO,OACRkE,QAAUF,EAAE8c,YACZqE,YAAcnhB,EAAE8hB,eACvBjF,EAAM7c,EAAE8hB,aAAAA,EAAe,CAGlBjF,GAAAA,CACR,EA4RCkF,gBApVD,SAAyBlD,EACxB,CAAA,IAAI/hB,EAAI,EAAGC,EAAK,EAAGkgB,EAAM,EAAGsE,EAAO,EACnC,GAAI1C,EAAKO,sBAAuB,CAC/B,IAAID,EAAMN,EAAKO,wBACX1H,EAAOrO,SAASqO,KAChBgI,EAAWrW,SAASyO,iBACvBzO,SAASqO,KAAK5Q,YACduC,SAASqO,KAENiI,EAAYlkB,OAAOmkB,aAAeF,EAAQC,WAAajI,EAAKiI,UAC5DE,EAAapkB,OAAOqkB,aAAeJ,EAAQG,YAAcnI,EAAKmI,WAC9DE,EAAYL,EAAQK,WAAarI,EAAKqI,WAAa,EACnDC,EAAaN,EAAQM,YAActI,EAAKsI,YAAc,EAC1DljB,EAAOqiB,EAAIriB,IAAO6iB,EAAYI,EAC9BhjB,EAAOoiB,EAAIpiB,KAAO8iB,EAAaG,EAE/B/C,EAAQ5T,SAASqO,KAAKyB,YAAcgG,EAAIlC,MACxCsE,EAASlY,SAASqO,KAAKuB,aAAekG,EAAIoC,MAC5C,KAAQ,CACN,KAAM1C,GACL/hB,GAAYgiB,SAASD,EAAKE,UAAU,EAAA,EACpChiB,GAAc+hB,SAASD,EAAKG,WAAW,EAAA,EACvCH,EAAOA,EAAKI,aAGbhC,EAAQ5T,SAASqO,KAAKyB,YAAc0F,EAAK1F,YAAcpc,EACvDwkB,EAASlY,SAASqO,KAAKuB,aAAe4F,EAAK5F,aAAenc,CAC1D,CACD,MAAO,CAAE0kB,EAAG3W,KAAKM,MAAMrO,CAAAA,EAAM2kB,EAAG5W,KAAKM,MAAMpO,CAAO0N,EAAAA,MAAMoU,EAAK1F,YAAa3O,OAAOqU,EAAK5F,aAAcgE,MAAOpS,KAAKM,MAAM8R,CAAQsE,EAAAA,OAAQ1W,KAAKM,MAAMoW,CAAAA,CAAAA,CAClJ,CA0TA,EAAA,IAAIphB,GACJ,GAAG6hB,QAAQ3O,UAAUlT,QACpBA,GAAU,SAASb,EAAS2gB,EAC3B,CAAA,OAAO3gB,EAAQa,QAAQ8f,CAAAA,CACzB,MACK,CACJ,IAAIgC,GAAUD,QAAQ3O,UAAU4O,SAAWD,QAAQ3O,UAAU6O,mBAAqBF,QAAQ3O,UAAU8O,sBACpGhiB,GAAU,SAASb,EAAS2gB,EAAAA,CAC3B,IAAI9E,EAAK7b,EACT,EAAG,CACF,GAAI2iB,GAAQjS,KAAKmL,EAAI8E,CAAAA,EACpB,OAAO9E,EAERA,EAAKA,EAAGiH,eAAiBjH,EAAGrU,UAC5B,OAAQqU,IAAO,MAAQA,EAAGkH,WAAa,GACxC,OAAO,IACT,CACA,CCpZA,IAAIC,UAA2B7mB,OAAW,IAI3B,MAAA8mB,GAAA,CACdC,KAAMF,KAAsBhD,UAAUC,UAAU3T,QAAQ,SAAW,GAAK0T,UAAUC,UAAU3T,QAAQ,YAAc,GAClH6W,QAASH,IAAsBhD,UAAUC,UAAU3T,QAAQ,OAAA,GAAY,EACvE8W,SAAUJ,IAAsBhD,UAAUC,UAAU3T,QAAQ,QAAA,GAAa,EACzE+W,QAASL,KAAsBhD,UAAUC,UAAU3T,QAAQ,QAAa,GAAA,GAAK0T,UAAUC,UAAU3T,QAAQ,WAAgB,GAAA,GACzHgX,KAAMN,IAAsBhD,UAAUC,UAAU3T,QAAQ,SAAc,GAAA,EACtEiX,OAAQP,IAAsBhD,UAAUC,UAAUuD,OAAO,WAAa,EACtEC,OAAQT,IAAsBhD,UAAUC,UAAU3T,QAAQ,MAC1DoX,GADoE,GACpEA,OAAAA,CAAUV,IAA4BhD,OAAAA,UAAa,GAAbA,ECbxB,SAAQ2D,GAAC5X,GACvB,GAAoB,OAATA,GAAS,UAA4B,OAATA,GAAS,SAC/C,OAAOA,EAER,IAAI4H,EAAS,GACb,QAASnE,KAAOzD,EAAM,CACrB,IAAI6X,EAAa,GACb7X,EAAKtD,eAAe+G,CAAAA,IAQvBoU,EAAapU,EAAM,KANlBoU,EADwB,OAAd7X,EAAKyD,CAAAA,GAAS,SACXqU,mBAAmB9X,EAAKyD,CAAAA,CAAAA,EACpBzD,OAAAA,EAAKyD,IAAS,SAClBzD,EAAKyD,CAAAA,EAELqU,mBAAmBC,KAAKC,UAAUhY,EAAKyD,CAAAA,CAAAA,CAAAA,GAIjDmE,EAAOvU,SACVwkB,EAAa,IAAMA,GAEpBjQ,GAAUiQ,EAEX,CACD,OAAOjQ,CACR,CCxBe,SAASqB,GAAO1Y,EAE/B,CAAA,IAAI0nB,EAAuB,SAAUC,EAAQC,EAG5C,CAAA,QAFIC,EAAO,4CACPC,EAAOH,EAAOI,MAAM,YAAA,EACfllB,EAAI,EAAGA,EAAIilB,EAAKhlB,OAAQD,IAChC,OAAQilB,EAAKjlB,CACZ,EAAA,CAAA,IAAK,KACL,IAAK,KAAMglB,GAAQ,eAAiBhlB,EAAI,QACvC,MACD,IAAK,KACL,IAAK,KAAMglB,GAAQ,gBAAkBhlB,EAAI,WACxC,MACD,IAAK,KAAMglB,GAAQ,eAAiBhlB,EAAI,aAAeA,EAAI,mBAC1D,MACD,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACJglB,GAAQ,eAAiBhlB,EAAI,QAC7B,MACD,IAAK,KACJglB,GAAQ,eAAiBhlB,EAAI,QAC7B,MACD,IAAK,KAAMglB,GAAQ,eAAiBhlB,EAAI,QACvC,MACD,IAAK,KACL,IAAK,KAAMglB,GAAQ,2BAA6BhlB,EAAI,oCACnD,MACD,IAAK,KAAMglB,GAAQ,eAAiBhlB,EAAI,QACvC,MACD,IAAK,KAAMglB,GAAQ,iDAAmDhlB,EAAI,SACzE,MACD,IAAK,KAAMglB,GAAQ,gDAAkDhlB,EAAI,QAAA,CAM3E,IAAImlB,EAAO,4CAEX,OADIJ,IAAKI,EAAO,aAAeA,EAAO,KAC/B,IAAIxQ,SAAS,OAAQ,0BAA4BqQ,EAAO,oBAAsBG,EAAO,KAC7F,EA6BIC,EAAkB,SAAUN,EAAQC,GACvC,MAAME,EAAOH,EAAOI,MAAM,cAC1B,OAAO,SAAUpmB,EAIhB,CAAA,QAHIumB,EAAM,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,CACtBC,EAAAA,EAAOxmB,EAAKomB,MAAM,mBAAA,EAEbllB,EAAI,EAAGA,EAAIilB,EAAKhlB,OAAQD,IAChC,OAAQilB,EAAKjlB,CACZ,EAAA,CAAA,IAAK,KACL,IAAK,KACJqlB,EAAI,CAAA,EAAKC,EAAKtlB,CAAAA,GAAM,EACpB,MACD,IAAK,KACL,IAAK,KACJqlB,EAAI,CAAA,GAAMC,EAAKtlB,CAAAA,GAAM,GAAK,EAC1B,MACD,IAAK,KACJqlB,EAAI,CAAe,EAAA,EAAVC,EAAKtlB,CAAAA,GAAUslB,EAAKtlB,CAAAA,EAAK,GAAK,KAAO,KAC9C,MACD,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACJqlB,EAAI,CAAKC,EAAAA,EAAKtlB,CAAM,GAAA,EACpB,MACD,IAAK,KACJqlB,EAAI,CAAA,EAAKC,EAAKtlB,CAAM,GAAA,EACpB,MACD,IAAK,KACJqlB,EAAI,CAAA,EAAKC,EAAKtlB,CAAAA,GAAM,EACpB,MACD,IAAK,KACL,IAAK,KACJqlB,EAAI,CAAA,EAAKA,EAAI,CAAA,EAAK,KAAOC,EAAKtlB,CAAM,GAAA,IAAI8b,eAAiB,KAAO,EAAI,IACpE,MACD,IAAK,KACJuJ,EAAI,CAAA,EAAKC,EAAKtlB,CAAAA,GAAM,EACpB,MACD,IAAK,KACJqlB,EAAI,GAAKloB,EAAUooB,OAAOzmB,KAAK0mB,iBAAiBF,EAAKtlB,CAAO,CAAA,GAAA,EAC5D,MACD,IAAK,KACJqlB,EAAI,CAAA,EAAKloB,EAAUooB,OAAOzmB,KAAK2mB,gBAAgBH,EAAKtlB,CAAAA,CAAAA,GAAO,EAO9D,OAAI+kB,EACI,IAAIzlB,KAAKA,KAAKomB,IAAIL,EAAI,CAAIA,EAAAA,EAAI,GAAIA,EAAI,CAAA,EAAIA,EAAI,CAAA,EAAIA,EAAI,CAAIA,EAAAA,EAAI,CAG/D,CAAA,CAAA,EAAA,IAAI/lB,KAAK+lB,EAAI,CAAA,EAAIA,EAAI,CAAA,EAAIA,EAAI,CAAIA,EAAAA,EAAI,CAAIA,EAAAA,EAAI,GAAIA,EAAI,CAAA,CAAA,CAC9D,CACA,EAEA,IAAIM,EAWJ,SAASC,GACR,CAAA,IAAIpR,KASJ,OARIrX,EAAUM,OAAOooB,MAAQ,QACzBF,IAAe1c,SACjB0c,EAdH,WACC,GACC,CAAA,IAAIhR,SAAS,qBAAA,EACbgR,IACA,MAAOpkB,CACPokB,IACA,CACD,OAAOA,CACR,EAQEnR,GAAAA,EAASmR,GAETnR,EAASrX,EAAUM,OAAOooB,IAEpBrR,CACR,CACArX,EAAU2B,KAAO,CAChBgnB,KAAK,WAGJ,QAFI5iB,EAAI/F,EAAUooB,OAAOzmB,KAAKinB,YAC1BxW,EAAIpS,EAAUooB,OAAOzmB,KAAK0mB,iBAAmB,CAAA,EACxCxlB,EAAI,EAAGA,EAAIkD,EAAEjD,OAAQD,IAC7BuP,EAAErM,EAAElD,CAAIA,CAAAA,EAAAA,EAIT,IAFIkD,EAAI/F,EAAUooB,OAAOzmB,KAAKknB,WAC1BzW,EAAIpS,EAAUooB,OAAOzmB,KAAK2mB,gBAAkB,CAAA,EACvCzlB,EAAI,EAAGA,EAAIkD,EAAEjD,OAAQD,IAC7BuP,EAAErM,EAAElD,CAAIA,CAAAA,EAAAA,CACT,EACDsE,UAAU,SAASxF,EAClB,CAAA,IAAImnB,EAAM,IAAI3mB,KAAKR,CAQnB,EAAA,OAPAA,EAAKgH,SAAS,GACdhH,EAAKiH,WAAW,CAChBjH,EAAAA,EAAKonB,WAAW,CAChBpnB,EAAAA,EAAKqnB,gBAAgB,CAAA,EACjBrnB,EAAKmI,SACPnI,IAAAA,EAAK6F,QAAYshB,EAAAA,EAAIthB,QAAa7F,GAAAA,EAAKmV,SAAagS,EAAAA,EAAIhS,YAAcnV,EAAKkV,YAAAA,EAAgBiS,EAAIjS,YAAAA,IAChGlV,EAAKsnB,QAAQtnB,EAAKunB,QAAY,EAAA,MAAkB,GAAKvnB,EAAKmI,SAAAA,EAAAA,EACpDnI,CACP,EACDwnB,UAAU,SAASxnB,EAAAA,CAClB,OAAQA,EAAKS,UAAU,IAAgC,GAAzBT,EAAKynB,kBAAAA,GAAwB,KAC3D,EACD7mB,WAAW,SAASZ,EAAAA,CACnB,IAAI0nB,EAAM1nB,EAAKyF,OAKf,EAAA,OAJIpH,EAAUM,OAAOgpB,kBAChBD,IAAQ,EAAGA,EAAM,EAChBA,KAECpgB,KAAK9B,UAAU8B,KAAKrH,IAAID,EAAAA,GAAQ0nB,EAAM,OAC7C,EACDE,YAAY,SAAS5nB,EAAAA,CAEpB,OADAA,EAAK6nB,QAAQ,CACNvgB,EAAAA,KAAK9B,UAAUxF,CACtB,CAAA,EACD8nB,WAAW,SAAS9nB,GAEnB,OADAA,EAAK+nB,SAAS,CAAA,EACPzgB,KAAKsgB,YAAY5nB,CAAAA,CACxB,EACDgoB,UAAU,SAAShoB,EAAAA,CAClB,OAAOsH,KAAK9B,UAAUxF,CACtB,CAAA,EACDioB,UAAU,SAASjoB,EAAMkoB,EACxB,CAAA,IAAIC,EAAQ,IAAI3nB,KAAKR,EAAKS,QAAAA,CAAAA,EAK1B,GAHA0nB,EAAMN,QAAQM,EAAMtiB,QAAAA,EAAYqiB,CAG7BA,EAAAA,GAAO5a,KAAKM,MAAMsa,CAAAA,GAAQA,EAAM,EAAE,CACpC,IACCE,GAAAA,CADgBD,EAASnoB,CAAAA,GACT,MACjB,GAAGooB,GAAQpoB,EAAKynB,kBAAAA,GAAuBU,EAAMV,kBAAoB,EAAA,CAChE,IAAIY,EAAQD,EAAI,KAChBD,EAAMb,QAAQa,EAAMZ,UAA2B,IAAd,GAAKc,GAAc,GAAK,IACzD,CACD,CAKD,OAHIH,GAAO,IAAOloB,EAAKmI,SAAAA,GAAcggB,EAAMhgB,SAAAA,IACzCggB,EAAMtiB,QAAY7F,EAAAA,EAAK6F,QAAasiB,GAAAA,EAAMhT,WAAanV,EAAKmV,SAAAA,GAAcgT,EAAMjT,YAAAA,EAAgBlV,EAAKkV,YACtGiT,IAAAA,EAAMb,QAAQa,EAAMZ,QAAY,EAAA,MAAkB,GAAKY,EAAMhgB,aACvDggB,CACP,EACDloB,IAAI,SAASD,EAAKkoB,EAAI1lB,EAAAA,CACrB,IAAI2lB,EAAM,IAAI3nB,KAAKR,EAAKS,QACxB,CAAA,EAAA,OAAO+B,GACN,IAAK,MACJ2lB,EAAQ9pB,EAAU2B,KAAKioB,UAAUE,EAAOD,CACxC,EAAA,MACD,IAAK,OACJC,EAAQ9pB,EAAU2B,KAAKioB,UAAUE,EAAa,EAAND,CACxC,EAAA,MACD,IAAK,QAASC,EAAMJ,SAASI,EAAMhT,WAAW+S,CAAM,EAAA,MACpD,IAAK,OAAQC,EAAMG,QAAQH,EAAMjT,YAAcgT,EAAAA,CAAAA,EAAM,MACrD,IAAK,OAKJC,EAAMb,QAAQa,EAAMZ,QAAkB,EAAA,GAANW,EAAW,GAAK,KAChD,MACD,IAAK,SACJC,EAAMb,QAAQa,EAAMZ,QAAAA,EAAkB,GAANW,EAAW,KAC3C,MACD,QACC,OAAO7pB,EAAU2B,KAAK,OAAOwC,CAAMxC,EAAAA,EAAKkoB,EAAI1lB,CAE9C,CAAA,CAAA,OAAO2lB,CACP,EACDI,SAAS,SAASC,EAAAA,CACjB,OAAIA,EAAI,GAAW,IAAIA,EAChBA,CACP,EACDjU,KAAK,SAASvU,EAAAA,CACb,OAAO,IAAIQ,KAAKR,EAAKS,QAAAA,CAAAA,CACrB,EACDgoB,YAAY,SAASzC,EAAOC,EAAAA,CAC3B,OAAIa,EAAAA,EA/MgB,SAAUd,EAAQC,EAAAA,CACvC,OAAO,SAASjmB,GACf,OAAOgmB,EAAOnH,QAAQ,aAAc,SAAU7D,EAC7C,CAAA,OAAQA,EACP,CAAA,IAAK,KAAM,OAAOiL,EAAM5nB,EAAU2B,KAAKuoB,SAASvoB,EAAK0oB,WAAAA,CAAAA,EAAgBrqB,EAAU2B,KAAKuoB,SAASvoB,EAAK6F,QAAAA,CAAAA,EAClG,IAAK,KAAM,OAAOogB,EAAM5nB,EAAU2B,KAAKuoB,SAAUvoB,EAAK2oB,YAAgB,EAAA,CAAA,EAAMtqB,EAAU2B,KAAKuoB,SAAUvoB,EAAKmV,SAAAA,EAAa,CACvH,EAAA,IAAK,KAAM,OAAO8Q,EAAMjmB,EAAK0oB,aAAe1oB,EAAK6F,QAAAA,EACjD,IAAK,KAAM,OAAOogB,EAAOjmB,EAAK2oB,YAAgB,EAAA,EAAM3oB,EAAKmV,SAAa,EAAA,EACtE,IAAK,KAAM,OAAO8Q,EAAM5nB,EAAU2B,KAAKuoB,SAASvoB,EAAK4oB,eAAmB,EAAA,GAAA,EAAOvqB,EAAU2B,KAAKuoB,SAASvoB,EAAKkV,YAAAA,EAAgB,GAC5H,EAAA,IAAK,KAAM,OAAO+Q,EAAMjmB,EAAK4oB,eAAAA,EAAmB5oB,EAAKkV,YACrD,EAAA,IAAK,KAAM,OAAO+Q,EAAM5nB,EAAUooB,OAAOzmB,KAAK6oB,UAAU7oB,EAAK8oB,UAAezqB,CAAAA,EAAAA,EAAUooB,OAAOzmB,KAAK6oB,UAAU7oB,EAAKyF,OAAAA,CAAAA,EACjH,IAAK,KAAM,OAAOwgB,EAAM5nB,EAAUooB,OAAOzmB,KAAK+oB,SAAS/oB,EAAK8oB,UAAAA,CAAAA,EAAezqB,EAAUooB,OAAOzmB,KAAK+oB,SAAS/oB,EAAKyF,OAC/G,CAAA,EAAA,IAAK,KAAM,OAAOwgB,EAAM5nB,EAAUooB,OAAOzmB,KAAKinB,YAAYjnB,EAAK2oB,YAAAA,CAAAA,EAAiBtqB,EAAUooB,OAAOzmB,KAAKinB,YAAYjnB,EAAKmV,YACvH,IAAK,KAAM,OAAO8Q,EAAM5nB,EAAUooB,OAAOzmB,KAAKknB,WAAWlnB,EAAK2oB,eAAiBtqB,EAAUooB,OAAOzmB,KAAKknB,WAAWlnB,EAAKmV,SACrH,CAAA,EAAA,IAAK,KAAM,OAAO8Q,EAAM5nB,EAAU2B,KAAKuoB,UAAUvoB,EAAKgpB,cAAgB,IAAM,GAAK,CAAK3qB,EAAAA,EAAU2B,KAAKuoB,UAAUvoB,EAAKmI,SAAa,EAAA,IAAM,GAAK,CAC5I,EAAA,IAAK,KAAM,OAAO8d,GAAQjmB,EAAKgpB,YAAAA,EAAgB,IAAM,GAAK,GAAOhpB,EAAKmI,SAAAA,EAAa,IAAM,GAAK,EAC9F,IAAK,KAAM,OAAO8d,EAAMjmB,EAAKgpB,YAAgBhpB,EAAAA,EAAKmI,SAClD,EAAA,IAAK,KAAM,OAAO8d,EAAM5nB,EAAU2B,KAAKuoB,SAASvoB,EAAKgpB,YAAAA,CAAAA,EAAiB3qB,EAAU2B,KAAKuoB,SAASvoB,EAAKmI,SACnG,CAAA,EAAA,IAAK,KAAM,OAAO8d,EAAM5nB,EAAU2B,KAAKuoB,SAASvoB,EAAKipB,cAAAA,CAAAA,EAAmB5qB,EAAU2B,KAAKuoB,SAASvoB,EAAKyJ,WAAAA,CAAAA,EACrG,IAAK,KAAM,OAAOwc,EAAOjmB,EAAKgpB,YAAgB,EAAA,GAAK,KAAO,KAAShpB,EAAKmI,SAAa,EAAA,GAAK,KAAO,KACjG,IAAK,KAAM,OAAO8d,EAAOjmB,EAAKgpB,YAAAA,EAAgB,GAAK,KAAO,KAAShpB,EAAKmI,SAAAA,EAAa,GAAK,KAAO,KACjG,IAAK,KAAM,OAAO8d,EAAM5nB,EAAU2B,KAAKuoB,SAASvoB,EAAKkpB,cAAAA,CAAAA,EAAmB7qB,EAAU2B,KAAKuoB,SAASvoB,EAAKmpB,WAAAA,CAAAA,EACrG,IAAK,KAAM,OAAOlD,EAAM5nB,EAAU2B,KAAKuoB,SAASlqB,EAAU2B,KAAKopB,cAAcppB,IAAS3B,EAAU2B,KAAKuoB,SAASlqB,EAAU2B,KAAKqpB,WAAWrpB,CAAAA,CAAAA,EACxI,QAAS,OAAOgb,CAEpB,CAAA,CAAA,CACA,CACA,EAqL0BgL,EAAOC,CAAAA,GAG/BD,EAAOA,EAAOnH,QAAQ,aAAa,SAAS7D,EAC3C,CAAA,OAAOA,GACN,IAAK,KAAM,MAAO,yCAClB,IAAK,KAAM,MAAO,8CAClB,IAAK,KAAM,MAAO,qBAClB,IAAK,KAAM,MAAO,0BAClB,IAAK,KAAM,MAAO,iDAClB,IAAK,KAAM,MAAO,yBAClB,IAAK,KAAM,MAAO,gDAClB,IAAK,KAAM,MAAO,+CAClB,IAAK,KAAM,MAAO,oDAClB,IAAK,KAAM,MAAO,mDAClB,IAAK,KAAM,MAAO,oDAClB,IAAK,KAAM,MAAO,kCAClB,IAAK,KAAM,MAAO,sBAClB,IAAK,KAAM,MAAO,0CAClB,IAAK,KAAM,MAAO,4CAClB,IAAK,KAAM,MAAO,qCAClB,IAAK,KAAM,MAAO,qCAClB,IAAK,KAAM,MAAO,4CAClB,IAAK,KAAM,MAAO,qDAClB,QAAS,OAAOA,CAAAA,CAEpB,GACMiL,IAAKD,EAAOA,EAAOnH,QAAQ,aAAa,aACjC,GAAA,IAAIhJ,SAAS,OAAO,WAAYmQ,EAAO,IAAA,EAEtC9I,KAAK7e,CAAAA,EACjB,EACDirB,YAAY,SAAStD,EAAQC,EAAKsD,GACjC,IAAIC,EAAqB1C,EAAWR,EAAAA,EAAkBP,EAClD0D,EAAmBD,EAAmBxD,EAAQC,CAAAA,EAE9CyD,EAAiB,qFAIjBC,EAAiB,yEAGjBC,EAAiB,2EAEjBC,EAAU,8RAgBVC,EAAWN,EAAmB,oBAAqBvD,CACnD8D,EAAAA,EAAWP,EAAmB,oBAAqBvD,GACnD+D,EAAWR,EAAmB,oBAAqBvD,CAAAA,EAEvD,OAAO,SAAUgE,EAAAA,CAEhB,GAAKV,CAAAA,GAAAA,CAAgBlrB,EAAUM,OAAOurB,mBAAoB,CACzD,GAAID,GAAcA,EAAWZ,WAC5B,OAAO,IAAI7oB,KAAKypB,CAAAA,EACV,GAA0B,OAAfA,GAAe,SAChC,OAAO,IAAIzpB,KAAKypB,CAAAA,EACV,GAzBiBE,EAyBHF,EAxBfP,EAAe5H,KAAKngB,OAAOwoB,CAyBhC,CAAA,EAAA,OAAOL,EAASG,CAAAA,EACV,GAvBO,SAAUE,EAAAA,CACzB,OAAOR,EAAe7H,KAAKngB,OAAOwoB,CAAAA,CAAAA,CACrC,EAqByBF,GACpB,OAAOF,EAASE,CACV,EAAA,GAtBO,SAAUE,EACzB,CAAA,OAAOP,EAAe9H,KAAKngB,OAAOwoB,CACrC,CAAA,CAAA,EAoByBF,CAAAA,EACpB,OAAOD,EAASC,CAAAA,EACV,GArBO,SAAUE,GACzB,OAAON,EAAQ/H,KAAKqI,CAAAA,CACvB,EAmByBF,CAAAA,EACpB,OAAO,IAAIzpB,KAAKypB,CAEjB,CAAA,CAlCc,IAAUE,EAoCzB,OAAOV,EAAiBhX,KAAKpU,EAAW4rB,CAAAA,CAC3C,CACE,EACDZ,WAAY,SAASlB,EAAAA,CACpB,IAAIA,EAAO,MAAA,GAEX,IAAIiC,GADJjC,EAAQ7gB,KAAK9B,UAAU,IAAIhF,KAAK2nB,CAAAA,CAAAA,GACf1iB,OACJ,EAAT2kB,IAAS,IACZA,EAAO,GAER,IAAIC,EAAiB,IAAI7pB,KAAK2nB,EAAM1nB,QACpC4pB,CAAAA,EAAAA,EAAexC,QAAQM,EAAMtiB,QAAAA,GAAa,EAAIukB,EAAAA,EAC9C,IAAIE,EAAcD,EAAenV,YAC7BqV,EAAAA,EAAejd,KAAKM,OAAQyc,EAAe9C,QAAY,EAAA,IAAI/mB,KAAK8pB,EAAa,EAAG,CAAG/C,EAAAA,QAAAA,GAAa,OAEpG,MADkB,GAAIja,KAAK+D,MAAOkZ,EAAe,CAEjD,CAAA,EACDnB,cAAe,SAASjB,GACvB,OAAO7gB,KAAK+hB,WAAW/hB,KAAKkjB,eAAerC,CAC3C,CAAA,CAAA,EACDqC,eAAgB,SAASxqB,GACxB,OAAO,IAAIQ,KAAKR,EAAK4oB,iBAAkB5oB,EAAK2oB,YAAAA,EAAe3oB,EAAK0oB,WAAAA,EAAc1oB,EAAKgpB,YAAehpB,EAAAA,EAAKipB,cAAiBjpB,EAAAA,EAAKkpB,gBAC7H,CAGF,CAAA,CCvWe,SAAQuB,GAACpsB,EACvB,CAAA,OAAO,UACN,CAAA,IAAI+G,EAAM,CAAA,EACV,QAAS4V,KAAK1T,KAAKojB,QAAQ,CAC1B,IAAI3mB,EAAKuD,KAAKojB,QAAQ1P,CACgB,EAAlCjX,EAAG9C,GAAG8U,SAAAA,EAAW1H,QAAQ,GAAA,GAAS,KACrCjJ,EAAIrB,EAAG9C,EAAAA,EAAM8C,EAEd,CACD,OAAOqB,CACP,GAAE8X,KAAK7e,CAAAA,CACT,CCNe,SAAS0Y,GAAO1Y,EAE/BA,CAAAA,EAAUssB,QAAU,CAAA,EACpBtsB,EAAUusB,MAAQ,SAASC,EAAKC,EAAAA,CAG/B,GAFAD,EAAMA,GAAOvjB,KAAKyjB,UAElB,CAOA,IAAIC,EAMJ,GARAH,IAAQA,EAAIxc,QAAQ,GAAa,GAAjCwc,GAAiC,IAAM,KAAO,aAAe,IAAKrqB,OAAQinB,kBAAAA,EACtEngB,KAAK3I,OAAOssB,gBAAkBJ,GAAO,QAAUvjB,KAAKgD,IAAAA,GAExDwgB,EAAOA,GAAQxjB,KAAKgK,MAKhBhK,KAAK4jB,WAAY,CACpB,IAAIC,EAAK7jB,KAAK8jB,UAAUC,YAGxB,IADAP,EAAOxjB,KAAKtH,KAAKsH,KAAK4jB,WAAa,QAAA,EAAU,IAAI1qB,KAAKsqB,EAAKrqB,QACpDqqB,CAAAA,CAAAA,EAAAA,EAAOxjB,KAAKY,WAAW4iB,EAAOxjB,KAAKtH,KAAKC,IAAI6qB,EAAO,GAAGxjB,KAAK4jB,UAAAA,EAClEF,EAAKF,EAGL,QADIQ,EAAAA,GACGN,EAAK1jB,KAAKW,WAChB+iB,EAAK1jB,KAAKtH,KAAKC,IAAI+qB,EAAI,EAAG1jB,KAAK4jB,UAC3B5jB,EAAAA,KAAKqjB,QAAQQ,EAAGL,KAAUQ,EAC7BR,EAAOxjB,KAAKtH,KAAKC,IAAI6qB,EAAM,EAAGxjB,KAAK4jB,UAAAA,EAAkBI,KAGvD,IAAIC,EAAUP,EACd,GACCA,EAAKO,EACLA,EAAUjkB,KAAKtH,KAAKC,IAAI+qB,EAAAA,GAAQ1jB,KAAK4jB,kBAC7BK,EAAUT,GAAQxjB,KAAKqjB,QAAQQ,EAAGI,CAAAA,CAAAA,GAE3C,GAAIP,GAAMF,EACT,MAAO,GAIR,IAFAzsB,EAAUmtB,KAAKC,IAAIZ,EAAM,SAAWM,EAAGL,GAAQ,OAASK,EAAGH,CAAKU,EAAAA,CAAAA,EAEzDZ,EAAOE,GACb1jB,KAAKqjB,QAAQQ,EAAGL,OAChBA,EAAOxjB,KAAKtH,KAAKC,IAAI6qB,EAAM,EAAGxjB,KAAK4jB,UAAAA,CAEtC,MACE7sB,EAAUmtB,KAAKC,IAAIZ,EAAKa,GAMzB,OAFApkB,KAAKH,UAAU,QAAS,IACxBG,KAAKH,UAAU,cAAe,CAAA,CAAA,EAAA,EA7C7B,CAMD,SAASukB,EAAaC,EAAAA,CACrBttB,EAAUutB,QAAQD,CAAAA,EAClBttB,EAAU8I,UAAU,YAAa,CACjC,CAAA,CAAA,CAsCF,EAEA9I,EAAUwtB,SAAW,CAAA,EC/DN,SAAgBxtB,EAAAA,CAG/BA,EAAUwtB,SAASC,IAAM,CACxBC,SAAU,SAASje,EAAMke,EAAAA,CAExB,GAAGA,EAAIC,aAAeD,EAAIC,YAAY9d,WACrC,SAGD,GAAA,CACC,IAAI+d,EAAS7tB,EAAUmtB,KAAKW,MAAMH,EAAII,YAAAA,EAClCC,EAAahuB,EAAUmtB,KAAKc,OAAO,OAAQJ,GAC/C,GAAGG,GAAcA,EAAW/H,UAAY,OACvC,MAAO,EAER,OACA,CACD,MAAA,EACA,EACD6H,MAAO,SAASI,EAAAA,CACf,IAAIT,EAOJ,GALKS,EAAOL,OAAOD,cAClBM,EAAOL,OAAOD,YAAc5tB,EAAUmtB,KAAKW,MAAMI,EAAOL,OAAOE,YAAAA,IAGhEN,EAAMztB,EAAUmtB,KAAKc,OAAO,OAAQC,EAAOL,SACnC5H,SAAW,OAAQ,OAAO,KAClC,IAAIkI,EAAYV,EAAI1pB,aAAa,cAC7BoqB,EAAAA,IACCtuB,OAAOuuB,SACVvuB,OAAOuuB,OAAOC,aAAeF,GAE9BnuB,EAAUquB,aAAeF,GAI1B,QADIG,EAAOtuB,EAAUmtB,KAAKoB,MAAM,iBAAkBL,EAAOL,MAChDhrB,EAAAA,EAAI,EAAGA,EAAIyrB,EAAKxrB,OAAQD,IAAK,CACrC,IAAIgc,EAAOyP,EAAKzrB,CAAAA,EAAGkB,aAAa,KAC5ByqB,EAAAA,EAAMxuB,EAAUyuB,WAAW5P,GAC1B2P,IACJxuB,EAAUyuB,WAAW5P,CAAAA,EAAQ2P,EAAM,CAEpCA,GAAAA,EAAInd,OAAO,EAAGmd,EAAI1rB,MAElB,EAAA,QADI4rB,EAAO1uB,EAAUmtB,KAAKoB,MAAM,UAAWD,EAAKzrB,IACvC8rB,EAAI,EAAGA,EAAID,EAAK5rB,OAAQ6rB,IAAK,CAIrC,QAFIC,EADMF,EAAKC,CAAAA,EACCE,WACZxsB,EAAM,CAAE6Q,IAAKwb,EAAKC,CAAG5qB,EAAAA,aAAa,SAAU+qB,MAAOJ,EAAKC,CAAG5qB,EAAAA,aAAa,UACnEwI,EAAI,EAAGA,EAAIqiB,EAAM9rB,OAAQyJ,IAAK,CACtC,IAAIwiB,EAAOH,EAAMriB,CAAAA,EACbwiB,EAAKjN,UAAY,SAAWiN,EAAKjN,UAAY,UAEjDzf,EAAI0sB,EAAKjN,QAAYiN,EAAAA,EAAKC,UAC1B,CACDR,EAAIlsB,KAAKD,CAAAA,CACT,CACD,CACGisB,EAAKxrB,QACR9C,EAAU8I,UAAU,gBAAiB,IAEtC,IAAImmB,EAAKjvB,EAAUmtB,KAAKoB,MAAM,aAAcL,EAAOL,MACnD,EAAA,IAAShrB,EAAI,EAAGA,EAAIosB,EAAGnsB,OAAQD,IAAK,CACnC,IAAIqsB,EAAMlvB,EAAUmvB,eAAeF,EAAGpsB,CAAAA,CAAAA,EACtC7C,EAAUovB,UAAUF,EAAInQ,IAAQmQ,EAAAA,EAAI5Y,IACpC,CAED,IAAIxO,EAAM,CAAA,EAGV,IAFA2lB,EAAMztB,EAAUmtB,KAAKoB,MAAM,UAAWL,EAAOL,QAEpChrB,EAAI,EAAGA,EAAI4qB,EAAI3qB,OAAQD,IAAK,CACpC,IAAI6C,EAAKoC,EAAIjF,CAAK7C,EAAAA,EAAUmvB,eAAe1B,EAAI5qB,CAC/C7C,CAAAA,EAAAA,EAAUqvB,YAAY3pB,CAAAA,CACtB,CACD,OAAOoC,CACP,CAGF,CAAA,EDbU9H,CElEK,EAAA,SAAgBA,EAG/BA,CAAAA,EAAUsvB,KAAOtvB,EAAUwtB,SAAS8B,KAAO,CAC1C5B,SAAU,SAASje,EAAAA,CAClB,GAAGA,UAAeA,GAAS,SAC1B,MAAA,GACM,UAAUA,GAAS,SACzB,GAAA,CACC,IAAI4H,EAASmQ,KAAKsG,MAAMre,CAAAA,EACxB,OAAOsI,OAAON,UAAUC,SAAStD,KAAKiD,CAAAA,IAAY,mBAChDU,OAAON,UAAUC,SAAStD,KAAKiD,KAAY,gBAC7C,MACA,CAAA,MAAA,EACA,CAEF,MAAA,EACA,EACDyW,MAAO,SAASre,EAAAA,CACf,IAAI8f,EAAS,GAEF9f,OAAAA,GAAQ,WAClBA,EAAO+X,KAAKsG,MAAMre,CAE0B,GAAzCsI,OAAON,UAAUC,SAAStD,KAAK3E,CAAAA,IAAU,iBAC5C8f,EAAS9f,EAENA,IACCA,EAAK8f,OACPA,EAAS9f,EAAK8f,OACN9f,EAAKA,OACb8f,EAAS9f,EAAKA,OAIjB8f,EAASA,GAAU,CAAA,EAEf9f,EAAK+f,eACJ3vB,OAAOuuB,SACVvuB,OAAOuuB,OAAOC,aAAe5e,EAAK+f,cAEnCxvB,EAAUquB,aAAe5e,EAAK+f,cAG/B,IAAIC,EAAehgB,GAAQA,EAAKggB,YAAehgB,EAAKggB,YAAc,GAC9DC,EAAAA,GACJ,QAASxc,KAAOuc,EACf,GAAIA,EAAYtjB,eAAe+G,CAAM,EAAA,CACpCwc,EAAqB,GACrB,IAAIC,EAAaF,EAAYvc,CACzBsb,EAAAA,EAAMxuB,EAAUyuB,WAAWvb,CAAAA,EAC1Bsb,IACJxuB,EAAUyuB,WAAWvb,CAAOsb,EAAAA,EAAM,CAEnCA,GAAAA,EAAInd,OAAO,EAAGmd,EAAI1rB,MAClB,EAAA,QAAS6rB,EAAI,EAAGA,EAAIgB,EAAW7sB,OAAQ6rB,IAAK,CAC3C,IAAIiB,EAASD,EAAWhB,CAAAA,EACpBtsB,EAAM,CAAE6Q,IAAK0c,EAAOrV,MAAOuU,MAAOc,EAAOd,OAC7C,QAASe,KAAcD,EACtB,GAAIA,EAAOzjB,eAAe0jB,CAAa,EAAA,CACtC,GAAIA,GAAc,SAAWA,GAAc,QAC1C,SACDxtB,EAAIwtB,CAAAA,EAAcD,EAAOC,CAAAA,CACzB,CAEFrB,EAAIlsB,KAAKD,CACT,CAAA,CACD,CAEEqtB,GACH1vB,EAAU8I,UAAU,gBAAiB,IAGtC,QADIhB,EAAM,CAAA,EACDjF,EAAI,EAAGA,EAAI0sB,EAAOzsB,OAAQD,IAAK,CACvC,IAAIzC,EAAQmvB,EAAO1sB,GACnB7C,EAAUqvB,YAAYjvB,CACtB0H,EAAAA,EAAIxF,KAAKlC,CACT,CAAA,CACD,OAAO0H,CACP,EAGF,EFfW9H,CGnEI,EAAA,SAAgBA,GAG/BA,EAAU8vB,KAAO9vB,EAAUwtB,SAASsC,KAAO,CAC1CpC,SAAU,SAASje,EAAAA,CAClB,OAAmB,OAATA,GAAS,UACX,IAAIsgB,OAAO,kBAAoBtM,EAAAA,KAAKhU,CAI5C,CAAA,EACDqe,MAAM,SAASxN,EAAAA,CACd,IAAI7Q,EAAO6Q,EAAIyH,MAAMgI,OAAO9mB,KAAK+mB,QAAQ,SAAS/mB,KAAKgnB,MAAM,EAC7D,CAAA,EAAA,GAAKxgB,EAAK3M,OAAV,CAGA2M,EAAK,CAAA,EAAGA,EAAK,CAAG+Q,EAAAA,QAAQ,YAAY,EAAA,EAGpC/Q,EAAK,CAAGA,EAAAA,EAAK,CAAG+Q,EAAAA,QAAQ,uBAAuB,GAE/C/Q,EAAAA,EAAK,CAAGA,EAAAA,EAAK,GAAG+Q,QAAQ,eAAe,GAMvC,EAAA,QAFIuH,EADAmI,EAAS,CAETC,EAAAA,EAAUJ,OAAO,MAAM9mB,KAAKmnB,QAAQ,gBAAgBnnB,KAAKonB,MAAM,IAAI,GACjC,GAA9BtI,EAAMoI,EAAQG,KAAK7gB,CAAgB,KAAL,MAAK,CAI1C,QAFI8gB,EADAnsB,EAAE,CAAA,EAEFosB,EAAU,oBACND,EAAMC,EAAQF,KAAKvI,EAAM,CAAA,CAAA,KAAS,MACzC9e,KAAKwnB,YAAYF,EAAM7Y,SAAWtT,EAAAA,CAAAA,EAC/BA,EAAE6H,KAAQ7H,CAAAA,EAAExB,KAAIwB,EAAExB,GAAKwB,EAAE6H,KAC7BikB,EAAS5tB,KAAK8B,EACd,CACD,OAAO8rB,CAvBkB,CAwBzB,EACDO,YAAY,SAASnQ,EAAIje,EAAAA,CACxB,IAAIgM,EAAIiS,EAAItQ,QAAQ,GAAA,EACnB,GAAI3B,MAAJ,CAED,IAAI0Q,EAAOuB,EAAIoQ,OAAO,EAAEriB,CAAAA,EAAGsQ,cACvBpE,EAAQ+F,EAAIoQ,OAAOriB,EAAE,GAAGmS,QAAQ,OAAO,GAAKA,EAAAA,QAAQ,WAAW,EACzD,EAANzB,GAAM,UACTA,EAAK,OACGA,GAAM,WACdA,EAAO,aACPxE,EAAQtR,KAAK0nB,WAAWpW,EAAM,EAAE,IAExBwE,GAAM,UACdA,EAAO,WACPxE,EAAQtR,KAAK0nB,WAAWpW,EAAM,EAAE,CAEjClY,GAAAA,EAAI0c,CAAMxE,EAAAA,CAdS,CAenB,EACDoW,WAAW,SAASpW,EAAMqW,EAAGC,EAC5B,CAAA,IAAIze,EAAImI,EAAMhX,MAAM,GAEhButB,EAAAA,EAAAA,GACA1e,EAAE,KACLwe,EAAGxe,EAAE,CAAGse,EAAAA,OAAO,EAAE,CACjBG,EAAAA,EAAGze,EAAE,CAAA,EAAGse,OAAO,EAAE,CAAA,EACjBI,EAAa1e,EAAE,CAAG,EAAA,CAAA,GAAM,KAEzB,IAAI2e,EAAK3e,EAAE,CAAGse,EAAAA,OAAO,EAAE,CAAA,EACnBM,EAAK9N,SAAS9Q,EAAE,CAAGse,EAAAA,OAAO,EAAE,CAAG,EAAA,EAAA,EAAI,EACnCO,EAAK7e,EAAE,CAAGse,EAAAA,OAAO,EAAE,CAAA,EAEvB,OAAG1wB,EAAUM,OAAO4wB,YAAcJ,EAC1B,IAAI3uB,KAAKA,KAAKomB,IAAIwI,EAAGC,EAAGC,EAAGL,EAAGC,CAE9B,CAAA,EAAA,IAAI1uB,KAAK4uB,EAAGC,EAAGC,EAAGL,EAAGC,CAE7B,CAAA,EACDb,QAAQ,kBACRI,QAAQ,eACRC,MAAM,aACNJ,MAAM,gBAGP,EHbWjwB,CAEXA,EAAAA,EAAUutB,QAAU,SAAUW,EAAAA,CAG7B,IAAIpmB,EAFJmB,KAAKH,UAAU,gBAAiB,CAGhC,CAAA,EAAA,IAAI2L,KAEA0c,EAAAA,GACJ,QAAQtuB,KAAKoG,KAAKukB,SAAS,CAC1B,IAAI4D,EAASnoB,KAAKukB,SAAS3qB,CAAAA,EAC3B,GAAGuuB,EAAO1D,SAASQ,EAAOL,OAAOE,aAAcG,EAAOL,MAAAA,EAAQ,CAC7D,GAAA,CACC,IAAI0C,EAAQrC,EAAOL,OAAOE,aACvBlrB,IAAM,QACR0tB,EAAQrC,IAETpmB,EAAMspB,EAAOtD,MAAMyC,CAAAA,KAElB9b,EAAQ,GAET,MAAMrQ,CACNqQ,EAAQ,EACR,CACD0c,EAAc,GACd,KACA,CACD,CAED,GAAIA,CAAAA,EACH,GAAGloB,KAAKooB,UAAYpoB,KAAKA,KAAKooB,QAC7B,EAAA,GAAA,CACCvpB,EAAMmB,KAAKA,KAAKooB,QAAUvD,EAAAA,MAAMI,EAAOL,OAAOE,YAAAA,CAC9C,OACAtZ,EAAQ,EACR,MAEDA,EAAAA,IAICA,GAAUyZ,EAAOL,OAAOyD,QAAUpD,EAAOL,OAAOyD,QAAU,OAC5DroB,KAAKH,UAAU,cAAe,CAAColB,EAAOL,MAAAA,CAAAA,EACtC/lB,EAAM,CAGPmB,GAAAA,KAAKsoB,iBAAiBzpB,CAAAA,EAGtBmB,KAAKH,UAAU,QAAS,CACxBG,CAAAA,EAAAA,KAAKH,UAAU,UAAW,CAAA,CAAA,CAC3B,EACA9I,EAAUuxB,iBAAmB,SAASzpB,EAAAA,CACrCmB,KAAKuoB,SAAAA,GACLvoB,KAAKwoB,YAAAA,GACL,QAAS5uB,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC1BoG,KAAKH,UAAU,iBAAkB,CAAChB,EAAIjF,CAAAA,CAAAA,CAAAA,GAC3CoG,KAAKuN,SAAS1O,EAAIjF,CAEnBoG,CAAAA,EAAAA,KAAKwoB,YAAc,GACfxoB,KAAKyoB,cAAczoB,KAAK4M,iBAAAA,EAE5B5M,KAAKuoB,SAAW,GACZvoB,KAAK0oB,aAAa1oB,KAAK0oB,YAC3B1oB,EAAAA,KAAK0oB,YAAc,IACpB,EACA3xB,EAAUqvB,YAAc,SAASjvB,EAAAA,CAChCA,EAAMkW,KAAQlW,EAAMkW,MAAQlW,EAAMwxB,WAAc,GAChDxxB,EAAMmB,WAAavB,EAAU6xB,WAAWzxB,EAAMmB,UAAAA,EAC9CnB,EAAMoB,SAAWxB,EAAU6xB,WAAWzxB,EAAMoB,QAC7C,CAAA,EAEAxB,EAAU6xB,WAAa,SAASlwB,EAC/B,CAAA,OAAIA,EAEOA,OAAAA,GAAQ,SACX3B,EAAU8xB,SAASC,UAAUpwB,CAEzB,EAAA,IAAIQ,KAAKR,CAAAA,EAJb,IAKT,EAEA,MAAMqwB,EAAsBC,GAAmBjyB,GAC/CA,EAAUkyB,UAAY,UACrB,CAAA,MAAMC,EAAU,CACVC,EAAAA,EAAYJ,EAClB,EAAA,QAASrV,KAAKyV,EAAU,CAEvB,MAAMC,EAAgB,CAAA,EACtB,IAAI3sB,EAAK0sB,EAAUzV,CAAAA,EAEnB,QAAQzJ,KAAOxN,EAAG,CACjB,GAAIwN,EAAIkO,OAAO,CAAA,GAAM,KAAOlO,EAAIkO,OAAO,CACtC,GAD4C,IAC5C,SAGD,IAAIkR,EACJ,MAAMC,EAAW7sB,EAAGwN,CAEnBof,EAAAA,EADEtyB,EAAU+W,MAAMH,OAAO2b,CACXvyB,EAAAA,EAAUgY,QAAQhY,EAAU+sB,UAAUyF,UAAcxyB,EAAAA,EAAU+sB,UAAUyF,WAAWD,CAAAA,EAAYvyB,EAAU+sB,UAAU0F,YAAYF,CAE/HA,EAAAA,EAGfF,EAAcnf,CAAAA,EAAOof,CACrB,CAEDH,EAAQ7vB,KAAK+vB,CAAAA,CACb,CACD,OAAOF,CACR,EAmEAnyB,EAAU8tB,MAAQ,SAASre,EAAMjK,EAChCyD,CAAAA,KAAKooB,SAAW7rB,EAChByD,KAAKskB,QAAQ,CAACM,OAAQ,CAACE,aAActe,CACtC,CAAA,CAAA,CAAA,EACAzP,EAAU0yB,KAAO,SAASlG,EAAKpY,EAAAA,QACnBA,GAAQ,WAClBnL,KAAKooB,SAAWjd,EAChBA,EAAOlC,UAAU,CAGlBjJ,GAAAA,KAAKyjB,UAAYF,EACjBvjB,KAAK0oB,YAAcvd,EACnBnL,KAAKsjB,MAAMC,EAAKvjB,KAAKgK,KAAAA,CACtB,EAEAjT,EAAU2yB,YAAc,SAASxuB,EAAAA,CAC5BA,GAAQ,QAAOA,EAAO,IAC1B8E,KAAK4jB,WAAa1oB,CACnB,EAEAnE,EAAUyuB,WAAa,SAAS1P,EAAM6T,EAAAA,CACrC,OAAIA,GACH3pB,KAAKwlB,WAAW1P,CAAAA,EAAQ6T,EAAMlnB,MAAM,GAC7BzC,KAAKwlB,WAAW1P,CAExB9V,IAAAA,KAAKwlB,WAAW1P,CAAS9V,EAAAA,KAAKwlB,WAAW1P,CAAAA,GAAS,GAC3C9V,KAAKwlB,WAAW1P,CACxB,EAAA,EACA/e,EAAUovB,UAAY,CAAA,EAEtBpvB,EAAUmvB,eAAiB,SAASvO,EAAAA,CAEnC,QADIxO,EAAI,CAAA,EACCvP,EAAI,EAAGA,EAAI+d,EAAKiO,WAAW/rB,OAAQD,IAC3CuP,EAAEwO,EAAKiO,WAAWhsB,CAAGkc,EAAAA,IAAAA,EAAQ6B,EAAKiO,WAAWhsB,CAAG0X,EAAAA,MAEjD,IAAS1X,EAAI,EAAGA,EAAI+d,EAAK/Q,WAAW/M,OAAQD,IAAK,CAChD,IAAIgiB,EAAQjE,EAAK/Q,WAAWhN,CACN,EAAlBgiB,EAAM4B,UAAY,IACrBrU,EAAEyS,EAAMoB,OAAAA,EAAWpB,EAAM/U,WAAa+U,EAAM/U,WAAWkf,UAAY,GACpE,CAID,OAFK5c,EAAEkE,OAAMlE,EAAEkE,KAAOsK,EAAK9Q,WAAa8Q,EAAK9Q,WAAWkf,UAAY,IAE7D5c,CACR,EACApS,EAAUkE,YAAY,QAAS,UAE7B,CAAA,IAAIkO,EADDnJ,KAAK3I,OAAOuyB,qBAEfzgB,EAAInJ,KAAK3I,OAAOuyB,aAAeplB,SAASC,cAAc,KACpDiB,GAAAA,UAAY,cACdyD,EAAEnR,MAAME,KAAO8N,KAAKM,OAAOtG,KAAK6pB,GAAK,KAAO,CAAA,EAAK,KACjD1gB,EAAEnR,MAAMC,IAAM+N,KAAKM,OAAOtG,KAAK8pB,GAAK,IAAM,CAAK,EAAA,KAC/C9pB,KAAK+pB,KAAKplB,YAAYwE,CAExB,EAAA,CAAA,EACApS,EAAUkE,YAAY,QAAS,UAC9B,CAAA,IAAIkO,EAAInJ,KAAK3I,OAAOuyB,aAChBzgB,UAAYA,GAAK,WACjBA,EAAElH,YACJkH,EAAElH,WAAWC,YAAYiH,CAAAA,EAE1BnJ,KAAK3I,OAAOuyB,gBAEd,CAAA,CAGA,CItTe,SAASna,GAAO1Y,EAG/BA,CAAAA,EAAUizB,mBAAqB,UAAA,CAa9B,IAZahqB,KAAK3I,OAAO4yB,QACpBxP,UAAUC,UAAU3T,QAAQ,QACQ,GADI,IAC1C0T,UAAUC,UAAU3T,QAAQ,MACa,GADH,IACtC0T,UAAUC,UAAU3T,QAAQ,SACW,GADE,IACzC0T,UAAUC,UAAU3T,QAAQ,OAAmBnQ,GAAR,KAAQA,CAAAA,OAAOszB,UACrDzP,UAAU0P,WAAa,YAAc1P,UAAU2P,eAAiB,KAGnEpqB,KAAKsS,GAAG+X,aAAe,EACvBrqB,KAAKsqB,QAAAA,IAGHtqB,KAAK3I,OAAO4yB,MAAM,CAEpB,IAAIM,KACJ,GAAA,CACC/lB,SAASgmB,YAAY,aACrB,MACAD,CAAAA,EAAAA,EACA,CAEGA,EACHvqB,KAAKyqB,cAAc,CAAC,YAAa,aAAc,UAAa,EAAA,SAAUhuB,GACrE,OAAIA,EAAGiuB,SAAWjuB,EAAGiuB,QAAQ7wB,OAAS,EAAU,KAC5C4C,EAAGiuB,QAAQ,CACP,EAAA,CACNrvB,OAAQoB,EAAGpB,OACXsvB,MAAOluB,EAAGiuB,QAAQ,CAAA,EAAGC,MACrBC,MAAOnuB,EAAGiuB,QAAQ,CAAA,EAAGE,MACrB/N,QAASpgB,EAAGiuB,QAAQ,CAAA,EAAG7N,QACvBC,QAASrgB,EAAGiuB,QAAQ,CAAA,EAAG5N,SAGjBrgB,CACZ,EAAM,UACF,CAAA,MAAA,EACJ,CACa7F,EAAAA,OAAOi0B,cAAgBj0B,OAAO6jB,UAAUqQ,eAClD9qB,KAAKyqB,cAAc,CAAC,cAAe,cAAe,WAAA,EAAc,SAAUhuB,EAAAA,CACzE,OAAIA,EAAGsuB,aAAe,QAAgB,KAC/BtuB,CACP,EAAE,SAAUA,EAAAA,CACZ,OAASA,GAAOA,EAAGsuB,aAAe,OACtC,GACan0B,OAAO6jB,UAAUuQ,kBAC3BhrB,KAAKyqB,cAAc,CAAC,gBAAiB,gBAAiB,aAAA,EAAgB,SAAUhuB,EAC/E,CAAA,OAAIA,EAAGsuB,aAAetuB,EAAGwuB,qBAA6B,KAC/CxuB,CACP,EAAE,SAAUA,EACZ,CAAA,MAAA,CAASA,GAAMA,EAAGsuB,aAAetuB,EAAGwuB,oBACxC,CAEE,CAAA,CACF,EAEAl0B,EAAU0zB,cAAgB,SAASS,EAAOC,EAAUC,EAGnD,CAAA,IAAIpd,EAAQqd,EAASnc,EAAOoc,EAAWC,EAAaC,EAChDC,EAAe,EAEnB,SAASC,EAAiBjxB,EAASqb,EAAMxK,GAExCvU,EAAUI,MAAMsD,EAASqb,EAAM,SAAS3a,EACvC,CAAA,MAAA,CAAA,CAAGpE,EAAU40B,kBAAAA,IAGRP,EAAOjwB,CAAX,EAAA,OACOmQ,EAASnQ,CAAAA,EAEpB,EAAK,CAAEywB,QAAS,EAAA,CAAA,CACd,CAqND,SAASC,EAAY1wB,EAChBiwB,CAAAA,EAAOjwB,KACXpE,EAAU+0B,iBAAAA,EACNR,IACHv0B,EAAUg1B,aAAcZ,EAAShwB,CAAAA,CAAAA,EACjCpE,EAAUi1B,kBAAAA,IAEXj1B,EAAUyI,SAAW,KACrBzI,EAAU0I,WAAW,KACrB1I,EAAUk1B,UAAU,KACpBl1B,EAAUm1B,eAAiB,KAC3B3c,aAAaL,CAAAA,EACboc,EAAYE,EAAc,GAC1BD,EAAc,GACd,CAvJDG,EAAiBlnB,SAASqO,KAAMqY,EAAM,GAAI,SAAS/vB,EAAAA,CAClD,GAAIiwB,CAAAA,EAAOjwB,GAAX,CAEA,IAAIgxB,EAAMhB,EAAShwB,GACnB,GAAIgxB,EAAJ,CACA,GAAIb,EAOH,OArDF,SAAqBnwB,EACpB,CAAA,GAAA,CAAIiwB,EAAOjwB,CAAX,EAAA,CACA,IAAIixB,EAAMr1B,EAAUwE,SAAW+vB,EAAAA,UAC9Be,EAAWt1B,CAAAA,CAAAA,EAAUkG,QAASlG,EAAUkG,OAAOlG,EAAUqK,KAAAA,EAEtDkrB,EAAkBv1B,EAAU6V,iBAC7Bwf,GAAO,UAAYC,IAErBt1B,EAAU6V,iBAAmB,UAAA,CAM5B,QALIjT,EAAK5C,EAAUwE,SAAAA,EAAWgxB,QAC1B9vB,EAAK1F,EAAUqE,SAASzB,CAAAA,EACxBwD,EAAWkvB,EAASpyB,WAEpB4E,EAAM9H,EAAUy1B,UAAU/vB,EAAGnE,WAAYmE,EAAGlE,QAAAA,EACxCqB,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC3BiF,EAAIjF,CAAAA,EAAGuD,CAAaV,GAAAA,EAAGU,KACzB0B,EAAIuJ,OAAOxO,EAAG,CAAA,EACdA,KAGF6C,EAAGgwB,QAAU5tB,EAAIhF,OAAS,EAC1B4C,EAAGiwB,OAAS7tB,EAAIhF,OAEhBmG,KAAK2M,YAAY,CAAClQ,CAAK1F,EAAAA,EAAUwE,WAAWL,IAEhD,CAAA,GAGEnE,EAAU41B,eAAexxB,GAEtBixB,GAAO,UAAYC,IACrBt1B,EAAU6V,iBAAmB0f,GAG1BnxB,EAAEyxB,gBACLzxB,EAAEyxB,iBACHzxB,EAAE0xB,aAAAA,EAnCoB,CAqCtB,EASaV,CAERhxB,EAAAA,EAAEyxB,gBACLzxB,EAAEyxB,eAAAA,EACHzxB,EAAE0xB,aAAAA,GACF91B,EAAU+1B,mBAAAA,EAAAA,GAOXzB,EAAUF,EAAShwB,CAEdqwB,EAAAA,IAGAH,GAODrd,EAAO3S,QAAUgwB,EAAQhwB,QAAW2K,KAAK+mB,IAAI/e,EAAO2c,MAAQU,EAAQV,KAAS,EAAA,GAAO3kB,KAAK+mB,IAAI/e,EAAO4c,MAAQS,EAAQT,OAAS,KAChIW,EAAAA,GACAhc,aAAaL,IARbqc,EAAc,GApBC,CAHM,CAkCxB,GAGCG,EAAiB1rB,KAAKO,KAAmB,aAAE,GAAI,cAAesrB,CAAAA,EAC9DH,EAAiB1rB,KAAKO,KAAmB,aAAE,CAAA,EAAI,cAAe,SAASpF,GACtE,GAAIiwB,CAAAA,EAAOjwB,CACX,EAAA,OAAIqwB,GACCrwB,GAAKA,EAAEyxB,gBACVzxB,EAAEyxB,iBACHzxB,EAAE0xB,aAAAA,GACK,IAAA,MAEV,CAGCnB,EAAAA,EAAiB1rB,KAAK+pB,KAAMmB,EAAM,CAAA,EAAI,SAAS/vB,EAAAA,CAS9C,IAAI6xB,EAHJ,GAJGxoB,UAAYA,SAASqO,MACvBrO,SAASqO,KAAKlD,UAAUhX,IAAI,yBAGzByyB,EAAOjwB,CAAAA,EAQX,GAPApE,EAAUm1B,eAAiB/wB,EAAE8xB,UAG7B3B,EAAYC,EAAAA,GACZC,EAAc,GACdwB,EAAa3B,EAAUF,EAAShwB,CAEhC,EAAA,CAMA,IAAIqF,EAAM,IAAItH,KAEd,GAAA,CAAKqyB,GAAgBD,CAAAA,GAAa9qB,EAAMirB,EAAe,IActD,OAbA10B,EAAUm2B,OAAOC,aAAaH,CAAAA,EAC9Bp2B,OAAO0Y,WAAW,WACdvY,EAAU0c,YAIb1c,EAAUq2B,cAAcJ,EACxB,EAAE,EAAA,EAEC7xB,EAAEyxB,gBACLzxB,EAAEyxB,eACHzxB,EAAAA,EAAE0xB,aAAe,GACjB91B,EAAUs2B,iBAAmB,GAAA,GAO9B,GAJA5B,EAAejrB,EAIX+qB,CAAAA,GAAAA,CAAeD,GAAcv0B,EAAUM,OAAOi2B,WAAlD,CAGA,IAAIC,EAAUx2B,EAAUy2B,cAAchpB,SAAS6X,aAAAA,EAC3CoR,EAAW12B,EAAUy2B,cAAcR,EAAW3xB,MAAAA,EAC9CqyB,EAAa1f,EAAQjX,EAAUy2B,cAAcxf,EAAO3S,QAAU,KAElE,GAAGkyB,GAAWE,GAAYF,GAAWE,GAAYF,GAAWG,EAS3D,OAPGvyB,EAAEyxB,gBACJzxB,EAAEyxB,eAEHzxB,EAAAA,EAAE0xB,gBACF91B,EAAU42B,mBAAqB,GAC/B52B,EAAUm2B,OAAOC,aAAaH,CAC9Bhf,EAAAA,EAASgf,KAIV9d,EAAQI,WAAW,UAAA,CAClB,IAAGvY,EAAU0c,WAAb,CAGA6X,EAAAA,GACA,IAAIjwB,EAAS2S,EAAO3S,OAChBqK,EAAY3O,EAAU+P,cAAczL,CACpCA,EAAAA,GAAUqK,EAAUqB,QAAQ,UAC/B1L,GADGA,KACHA,EAASA,EAAOuyB,iBAEjB72B,EAAU82B,eAAe7f,EAAQ3S,GAC7BtE,EAAU0I,YAAc1I,EAAU0I,YAAc,UACnD1I,EAAU+2B,aAAa/2B,EAAUyI,SAAU,SAASmY,EAAM/d,EACzD+d,CAAAA,EAAK3f,MAAM0a,QAAQ,OACnB3b,EAAUg3B,UAAU3lB,OAAOxO,EAAG,CAAA,CACnC,CAGO7C,EAAAA,EAAUM,OAAO22B,WACpBj3B,EAAUk3B,iBAEXl3B,EAAAA,EAAU8V,YAAY9V,EAAUyI,QAAAA,CAlB/B,CAmBJ,EAAIzI,EAAUM,OAAOi2B,UAAAA,EAEnBtf,EAASgf,CA1CD,CA1BP,MAFAzB,EAAAA,EAuEH,CAAA,EAkBCG,EAAiB1rB,KAAKO,KAAmB,aAAE,CAAA,EAAI2qB,EAAM,CAAI,EAAA,SAAS/vB,EAKjE,CAAA,GAJGqJ,UAAYA,SAASqO,MACvBrO,SAASqO,KAAKlD,UAAU+L,OAAO,sBAAA,EAAA,CAG5B0P,EAAOjwB,CAAAA,EAgBX,OAdGpE,EAAUM,OAAO62B,mBACd5C,CAAAA,GA5OP,SAA+B6C,EAAMC,EAAMC,EAAMC,EAAAA,CAChD,IAAKH,GAASC,CAAAA,EAAM,MAAO,GAG3B,QADIjlB,EAAIglB,EAAK9yB,OACP8N,GAAKA,GAAKpS,EAAUgzB,MACzB5gB,EAAIA,EAAElH,WAQP,GANGkH,GAAKpS,EAAUgzB,MAMfhzB,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUwE,WAAWL,IAC7CnE,GAAAA,EAAUkG,OAAOlG,EAAUwE,WAAWL,IACzCqzB,EAAAA,WACX,MAAO,GAIT,IAAIzG,EAAK9hB,KAAK+mB,IAAIoB,EAAKvD,MAAQwD,EAAKxD,KAAAA,EAChC4D,EAAKxoB,KAAK+mB,IAAIoB,EAAKxD,MAAQyD,EAAKzD,KAAAA,EACpC,OAAI7C,EAAKwG,GAAUE,EAAGH,IAAAA,CAAUvG,GAAO0G,EAAG1G,EAAK,KAC1CqG,EAAKxD,MAAQyD,EAAKzD,MACrB5zB,EAAUm2B,OAAOuB,sBAEjB13B,EAAUm2B,OAAOwB,oBAEX,EAAA,GAGR,EA6MyC1gB,EAAQqd,EAAS,IAAK,OAC7Dt0B,EAAUs2B,iBAAAA,IAIR/B,IACHv0B,EAAU42B,mBAAqB,GAC/Bre,WAAW,UAAA,CACVvY,EAAU42B,mBAAqB,EAC/B,EAAE,GAAA,GAGJ9B,EAAY1wB,CAAAA,EACRpE,EAAUs2B,kBACbt2B,EAAUs2B,iBAAmB,GACzBlyB,EAAEyxB,gBACLzxB,EAAEyxB,eACHzxB,EAAAA,EAAE0xB,aAAe,GAAA,UAGpB,CAAA,EAEC91B,EAAUI,MAAMqN,SAASqO,KAAMqY,EAAM,CAAIW,EAAAA,CAAAA,CAC1C,EAEA90B,EAAUk3B,iBAAmB,UAC5Bl3B,CAAAA,EAAU+0B,mBAEV,IAAI6C,EAAS53B,EAAU63B,YAAcpqB,SAASC,cAAc,KAAA,EAC5DkqB,EAAOjpB,UAAU,iBAEjB3O,EAAU+1B,mBAAmB,CAE7BtoB,EAAAA,SAASqO,KAAKlO,YAAYgqB,CAAAA,CAC3B,EACA53B,EAAU+1B,mBAAqB,SAASpN,EAAAA,CACvC,IAAIiP,EAAS53B,EAAU63B,YACvB,GAAID,EAAO,CACV,IAAIE,EAAO,GACX,GAAI93B,EAAUyI,WAAakgB,EAAK,CAC/B,IAAIjjB,EAAK1F,EAAUqE,SAASrE,EAAUyI,QAClC/C,EAAAA,IACHoyB,EAAO,SAAWpyB,EAAG4C,OAAStI,EAAU+sB,UAAUgL,aAAaryB,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAI1F,EAAAA,EAAU+sB,UAAUiL,SAAStyB,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,GAAO,SAChK,CAEG1F,EAAU0I,YAAc,UAAY1I,EAAU0I,YAAc,WAC/DkvB,EAAOjqB,WAAa3N,EAAUooB,OAAO6P,OAAOC,gBAAkB,kBAAkBJ,EAEhFF,EAAOjqB,WAAa3N,EAAUooB,OAAO6P,OAAOE,cAAgB,gBAAgBL,CAC7E,CACF,EACA93B,EAAU+0B,iBAAmB,UAC5B,CAAA,IAAI6C,EAAS53B,EAAU63B,YACnBD,GAAUA,EAAO1sB,aACpB0sB,EAAO1sB,WAAWC,YAAYysB,CAAAA,EAC9B53B,EAAU63B,YAAc,EAE1B,CAGA,CCrXe,SAASnf,GAAO1Y,EAAAA,CAuF/B,IAAIo4B,EA+BAC,EACJ,SAASC,GAAAA,CACR,GAAGt4B,EAAUu4B,oBACZ,MAAO,GAEP,GAAGF,IAAyBvsB,OAuB3B,OAAOusB,EAtBP,IAAIG,EAAQ/qB,SAASC,cAAc,KACnC8qB,EAAAA,EAAMv3B,MAAMyJ,SAAW,WACvB8tB,EAAMv3B,MAAME,KAAO,UACnBq3B,EAAMv3B,MAAMC,IAAM,UAClBs3B,EAAM7qB,UAAY,8HAMlBF,SAASqO,KAAKlO,YAAY4qB,CAAAA,EAC1B,IACIC,EADS54B,OAAOmd,iBAAiBwb,EAAMtd,cAAc,WAAA,CAAA,EAClC+B,iBAAiB,YACxCxP,EAAAA,SAASqO,KAAK3Q,YAAYqtB,IAC1BH,EAA0BI,IAAc,eAGvClgB,WAAW,WACV8f,EAAuBvsB,MACvB,EAAE,GAAA,CAMP,CAEA,SAAS4sB,GAAAA,CACR,GAAG14B,CAAAA,EAAUu4B,sBAAuBv4B,EAAU24B,mBAAAA,EAA9C,CAIA,IAAIC,EAAaP,EACjBA,EAAAA,OACAD,EAAAA,OAKGQ,IAJcN,EAAAA,GAIet4B,EAAUyC,YAAczC,EAAUwE,SAAWL,EAAAA,MAC5EnE,EAAU0V,eAAAA,CAVV,CAYF,CAyBA,SAASmjB,EAAkBl3B,EAAAA,CAC1B,IAAIwN,EAAMxN,EAAKyJ,WAIf,EAAA,OAHA+D,EAAMA,EAAM,GAAK,IAAIA,EAAMA,EAChB,6BAA8BxN,EAAKmI,SAAAA,EAAnC,0CAC0BqF,EAAK,SAE3C,CAlMAnP,EAAU84B,eAAiB,UAC1BrrB,CAAAA,SAASyO,gBAAgBlD,aAAa,uBAAwBhZ,EAAU+4B,IAAAA,CACzE,EAEA/4B,EAAUg5B,eAAiB,CAC1B/f,iBAAkB,CAAC,EAAE,GACrBggB,sBAAuB,CAAC,EAAE,CAAA,EAC1BC,UAAW,CAAC,EAAE,CAEd7pB,EAAAA,aAAc,CAAC,GAAG,EAAA,EAClB8pB,sBAAuB,CAAC,UAAW,QACnCC,EAAAA,2BAA4B,CAAC,UAAW,WAGzCp5B,EAAUq5B,SAAW,CACpBC,2BAA4B,CAAC,GAAG,EAAA,EAChC9d,WAAY,CAAC,GAAG,EAChB+d,EAAAA,WAAY,CAAC,GAAG,KAOjBv5B,EAAUu4B,kBAAoB,UAC7B,CAAA,OAAIv4B,EAAU+4B,MAGJ/4B,EAAU+4B,KAAO,IAAI/oB,QAAQ,UAAe,EAAA,GAyDvD,UACC,CAAA,GAAGooB,IAAH,OAAoC,CACnC,IAAII,EAAQ/qB,SAASC,cAAc,KACnC8qB,EAAAA,EAAMv3B,MAAMyJ,SAAW,WACvB8tB,EAAMv3B,MAAME,KAAO,UACnBq3B,EAAMv3B,MAAMC,IAAM,UAClBs3B,EAAM7qB,UAAY,oFAIlBF,SAASqO,KAAKlO,YAAY4qB,CAAAA,EAC1B,IACI9tB,EADS7K,OAAOmd,iBAAiBwb,EAAMtd,cAAc,4BAAA,CAAA,EACnC+B,iBAAiB,UAGtCmb,EAAAA,EAFE1tB,IAAa,WAOhB6N,WAAW,UACV6f,CAAAA,EAAqB,KAClBI,GAASA,EAAMttB,YACjBstB,EAAMttB,WAAWC,YAAYqtB,EAE9B,EAAE,GAAA,CACH,CACD,OAAOJ,CACR,EAvFSoB,CAIT,EAYAx5B,EAAUy5B,iBAAmB,UA2J7B,EAAA,UAAA,CACC,MAAMtzB,EAAYnG,EAAUyC,WAE5Bi3B,cAAcC,CACXxzB,EAAAA,IACFwzB,EAAoBC,YAAY,IAAA,CAC/B,MAAMC,EAAW7c,iBAAiB7W,CAAW8W,EAAAA,iBAAiB,uBAC3D4c,EAAAA,GAAYA,IAAa75B,EAAU+4B,MACrC/4B,EAAU85B,QAAQD,CAClB,CAAA,EAEC,GAEL,EAAA,KAtKC,MAAME,EAAS/c,iBAAiB/T,KAAKxG,YAC/Bu3B,EAAWD,EAAO9c,iBAAiB,uBAAA,EAEzC,IACIgd,EADAC,EAAAA,CAAAA,CAAkBF,EAElBG,EAAY,CAAA,EACZC,EAAAA,GAEJ,GAAGF,EAAc,CAChBD,EAAYD,EACZ,QAAQn3B,KAAK7C,EAAUub,GACtB4e,EAAUt3B,GAAKk3B,EAAO9c,iBAAiB,sBAAsBpa,CAAAA,EAAAA,EAG9Ds3B,EAAU9qB,aAAe0qB,EAAO9c,iBAAiB,qCAAA,EACjDkd,EAAUjB,UAAYa,EAAO9c,iBAAiB,kCAAA,CAEhD,MACEgd,EA9BF,UAAA,CAEC,QADII,EAAQ5sB,SAAS6sB,qBAAqB,MACjCz3B,EAAAA,EAAI,EAAGA,EAAIw3B,EAAMv3B,OAAQD,IAAK,CACtC,IAAIkE,EAAMszB,EAAMx3B,CAAAA,EAAG03B,KAAKxS,MAAM,8BAAA,EAC9B,GAAIhhB,EACH,OAAOA,EAAI,CAEZ,CAAA,CACF,EAuBEqzB,EAAAA,EAAmBp6B,EAAUu4B,kBAAAA,EAW9B,GAPAv4B,EAAUw6B,YAAc,CACvBC,MAAOR,EACPS,YAAaR,EACbE,iBAAkBA,EAClBO,OAAQR,CAGNn6B,EAAAA,EAAUw6B,YAAYE,YAAY,CACpC,MAAME,EAAiB3xB,KAAKuxB,YAAYG,OACxC,QAAQ93B,KAAK7C,EAAUub,GAClBqG,MAAMsB,SAAS0X,EAAe/3B,CAAAA,CAAAA,CAAAA,IACjC7C,EAAUub,GAAG1Y,CAAAA,EAAKqgB,SAAS0X,EAAe/3B,IAG5C,CACF,EAkFA7C,EAAUI,MAAMP,OAAQ,mBAAoB64B,CAAAA,EAC5C14B,EAAUI,MAAMP,OAAQ,OAAQ64B,CAAAA,EAEhC14B,EAAU24B,mBAAqB,WAC9B,OAAOL,EAAAA,CACR,EAEAt4B,EAAU66B,WAAa,SAASC,EAAKrrB,EAAMspB,EAAAA,CAC1C,QAAS7lB,KAAOzD,EACJqrB,EAAI5nB,CACd4nB,IADsB,SACtBA,EAAI5nB,CAAOzD,EAAAA,EAAKyD,CAAK6lB,EAAAA,CAAAA,EACxB,EAEA/4B,EAAU85B,QAAU,SAASvf,EAAAA,CAC5BtR,KAAK8vB,KAAOxe,EACZva,EAAU84B,eAAAA,EACP94B,EAAUyC,aACZwG,KAAK8xB,WACL9xB,EAAAA,KAAKwM,OAIP,EAAA,EAUA,IAAIkkB,EAAoB,KAexB35B,EAAUkE,YAAY,YAAa,UAClCw1B,CAAAA,cAAcC,CACf,CAAA,CAAA,EAEA35B,EAAU+6B,WAAa,UAAA,CACtB9xB,KAAKwwB,iBAAAA,EAEAxwB,KAAK8vB,OACT9vB,KAAK8vB,KAAO9vB,KAAKuxB,YAAYC,OAE9Bz6B,EAAU84B,eACa,EAAnB94B,EAAU+4B,OAAS,OAEtB/4B,EAAU+sB,UAAUiO,WAAanC,EACxB74B,EAAU+sB,UAAUiO,aAAenC,IAC5C74B,EAAU+sB,UAAUiO,WAAah7B,EAAU2B,KAAKyoB,YAAYpqB,EAAUM,OAAO26B,SAM9Ej7B,GAAAA,EAAUkE,YAAY,mBAAoB,UAAA,CAEzC,IAAIkmB,EAAcpqB,EAAU2B,KAAKyoB,YAAY,IACzCpqB,EAAAA,EAAU+sB,UAAUmO,iBACvBl7B,EAAU+sB,UAAUmO,eAAiBl7B,EAAU+sB,UAAUoO,WAE1D,IAAIC,EAAgBp7B,EAAU+sB,UAAUmO,eACxCl7B,EAAU+sB,UAAUoO,UAAY,SAASx5B,EAAAA,CACxC,GAAIsH,KAAKoB,OAAS,QAAS,CAC1B,IAAIykB,EAAQ1E,EAAYzoB,CAOxB,EAAA,OANIA,EAAK6F,QAAAA,GAAa,IACrBsnB,EAAQ9uB,EAAUooB,OAAOzmB,KAAKknB,WAAWlnB,EAAKmV,SAAAA,CAAAA,EAAc,IAAMgY,GAE9DntB,CAAAA,GAAAA,CAAS3B,EAAU2B,KAAKwF,UAAU8B,KAAKS,aAAAA,CAAAA,IAC3ColB,EAAQ9uB,EAAUooB,OAAO6P,OAAOoD,qBAAuB,IAAMvM,GAEvDA,CACX,CACI,OAAOsM,EAAchnB,KAAKnL,KAAMtH,CAEpC,CAAA,EAGK3B,EAAUM,OAAO2Y,mBACNjZ,EAAUwJ,KAAsB,gBAAE,GAAG9G,iBAAiB,YAAA,EAC9DsB,QAASs3B,GAAAA,CAGb,OAFaA,EAAIv3B,aAAa,UAAeu3B,GAAAA,EAAIv3B,aAAa,MAG7D,EAAA,CAAA,IAAK,MACL,IAAK,UACJu3B,EAAI1iB,UAAUhX,IAAI,qBAClB05B,EAAI1iB,UAAUhX,IAAI,uBAAA,EAClB,MACD,IAAK,OACL,IAAK,WACJ05B,EAAI1iB,UAAUhX,IAAI,uBAClB,EAAA,MACD,IAAK,QACL,IAAK,YACJ05B,EAAI1iB,UAAUhX,IAAI,kBAAA,EAClB05B,EAAI1iB,UAAUhX,IAAI,uBAClB,EAAA,MACD,QACC05B,EAAI1iB,UAAUhX,IAAI,wBAAA,CAAA,CAEnB,CAQJ,EAAA,SAAqBuE,GAGpB,GAAGnG,EAAUM,OAAOi7B,OACnB,OAGD,MAAMC,EAAOhwB,MAAMihB,KAAKtmB,EAAUzD,iBAAiB,cAAA,CAAA,EAK7C+4B,EAFQ,CAAC,MAAO,OAAQ,OAAA,EAEJh4B,IAAIi4B,GAC7BF,EAAKG,KAAKL,GAAOA,EAAIv3B,aAAa,cAAgB23B,CACjDE,CAAAA,EAAAA,OAAON,GAAOA,IAAQxvB,QAExB,IAAI+vB,EAAWL,EAAK14B,OAAS,EAAI04B,EAAK,CAAA,EAAK,KAE3CC,EAAYK,QAAU93B,EAAAA,QAAQs3B,GAC7Bn1B,CAAAA,EAAUue,aAAa4W,EAAKO,CAAAA,EAC5BA,EAAWP,CAAG,EAEf,EA3Bat7B,EAAUwJ,KAAsB,gBAAE,CAE9C,CAAA,EACH,EAAI,CAAC4U,OA8BL,CAAA,CAAA,CAIA,CCjUe,SAAS2d,GAAoB/7B,EAAWg8B,EAAAA,CACtD/yB,KAAKgzB,WAAaj8B,EAClBiJ,KAAKizB,IAAMF,EACX/yB,KAAKkzB,uBAAyB,CAE9BlzB,EAAAA,KAAK4W,OAAS,UAAA,CACb,IAAImc,EAAK/yB,KAAKizB,IACVl8B,EAAYiJ,KAAKgzB,WAErBhzB,KAAKkzB,uBAAuB75B,KAAKtC,EAAUkE,YAAY,eAAgB,SAAStB,EAAAA,CAAAA,CAC1EqG,KAAKuoB,UAAYvoB,KAAKmzB,SAASx5B,CAAAA,GACpCo5B,EAAGK,WAAWz5B,EAAAA,GAAQ,UAAA,CACtB,IAEDqG,KAAKkzB,uBAAuB75B,KAAKtC,EAAUkE,YAAY,+BAAgC,SAAStB,EAC/F,CAAA,GAAKqG,KAAKmzB,SAASx5B,CAAAA,EAAnB,CACA,IAAI05B,EAAEN,EAAGx3B,SAAS5B,CAAAA,EAElB,OAAI05B,GAAG,YAAcrzB,KAAKszB,YAAcP,EAAGK,WAAWz5B,EAAAA,EAAkB,EAAA,IACpE05B,GAAG,YACHA,GAAG,iBAEPN,EAAGK,WAAWz5B,EAAG,GAAK,SACf,EAAA,IARwB,CAS/B,CAEDqG,CAAAA,EAAAA,KAAKkzB,uBAAuB75B,KAAKtC,EAAUkE,YAAY,iBAAkB,SAAStB,EAAAA,CAAAA,CAC5EqG,KAAKuoB,UAAYvoB,KAAKmzB,SAASx5B,CAAAA,GACpCo5B,EAAGK,WAAWz5B,EAAAA,GAAQ,SAAA,CACtB,IAEDqG,KAAKkzB,uBAAuB75B,KAAKtC,EAAUkE,YAAY,aAAc,UAAA,CAEpE83B,EAAGQ,aAAa,GAChBR,EAAGS,SAAS,GACZT,EAAGU,YAAc,CACjBV,EAAAA,EAAGW,UAAY,CACf,CAAA,CAAA,EAEDX,EAAG93B,YAAY,iBAAkBlE,EAAU48B,gBAAAA,EAC3CZ,EAAG93B,YAAY,iBAAkBlE,EAAU48B,gBAAAA,EAC3CZ,EAAG93B,YAAY,iBAAkB,SAAS24B,EAAKj6B,EAAAA,CAC1C5C,EAAUqE,SAASzB,CAAAA,GACtB5C,EAAU88B,YAAYl6B,EAAIqG,KAAK8zB,aAAc,cAC7C/8B,EAAAA,EAAUg9B,YAAYp6B,CACZ5C,GAAAA,EAAUi9B,iBACpBj9B,EAAU48B,iBAAiBC,EAAKj6B,CAAAA,CACpC,CACA,CAAA,EAECqG,KAAK8W,OAAS,UAAA,CACb,QAAS7M,KAAOjK,KAAKkzB,uBAAwB,CAC5C,IAAIniB,EAAU/Q,KAAKkzB,uBAAuBjpB,CAC1CjK,EAAAA,KAAKgzB,WAAW/c,YAAYlF,CAAAA,CAC5B,CACD/Q,KAAKkzB,uBAAyB,CAChC,CAAA,CACA,CC/CO,SAASe,GAAcC,EA+B7B,CAAA,OA9BAl0B,KAAKm0B,gBAAkBD,EACvBl0B,KAAK8zB,aAAe,uBAEpB9zB,KAAKmO,OAAS,KACdnO,KAAKyzB,YAAc,CAAA,EAEnBzzB,KAAKo0B,WAAa,GAClBp0B,KAAKgM,WAAa,OAClBhM,KAAKq0B,OAAS,MACdr0B,KAAKs0B,SAAW,KAChBt0B,KAAKu0B,SAAW,KAChBv0B,KAAKw0B,WAAa,IAElBx0B,KAAK0zB,UAAY,EACjB1zB,KAAKuzB,aAAe,GACpBvzB,KAAKwzB,SAAW,GAChBxzB,KAAKy0B,SAAW,CAAA,EAEhBz0B,KAAK8wB,OAAS,CACb4D,QAAS,oBACTC,SAAU,oBACVC,QAAS,kCACTC,QAAS,2BACTC,aAAc,+BACdtpB,MAAO,aACP8J,MAAO,0CAAA,EAERtV,KAAK+0B,kBAAkB,EAAA,EACvBC,GAAUh1B,IAAAA,EAEHA,IACR,CCtCe,SAAQoN,GAACrW,EAAAA,CAEvB,IAAIk+B,EAAe,cAEfC,EAAe,KAEnB,SAAS5pB,EAASjU,EAAQ+W,EACzB,CAAA,IAAI+mB,EAAW99B,EAAOiU,SACtB8pB,EAAS/0B,KAAKhJ,EAAOijB,GAErB4a,EAAAA,EAAe79B,EAAOijB,IAAM,KACzB6a,GACFA,EAAS/mB,CACV,CAAA,CAED,SAASinB,EAAUl+B,EAAAA,CAClB,GAAI+9B,EAAc,CAEjB,IAAInW,EAAO5nB,EAAMm+B,OAASn+B,EAAMo+B,QAC5B3I,EAAiB,GAErB,GAAI4I,EAAWC,SAAU,CACxB,GAAI1W,GAAQ,IAAMA,GAAQ,GAAI,CAG7B,IAAI1jB,EAASlE,EAAMkE,QAAUlE,EAAM8gB,WAC/Byd,GAAWhe,aAAarc,CAAQ0L,EAAAA,QAAQ,8BAAkC1L,EAAOoV,MACpFpV,EAAOoV,SAEPnF,EAAS4pB,EAAAA,EACTtI,EAAAA,EAAAA,GAED,CAEG7N,GAAQ,KACXzT,EAAS4pB,IACTtI,EAAAA,EAAAA,GAED,CAED,OAAIA,GACCz1B,EAAMy1B,gBACTz1B,EAAMy1B,mBAEEz1B,EAAM01B,aAAAA,KAEhB,MACA,CACD,CAID,SAAS8I,EAASz6B,EAAAA,CACZy6B,EAASC,QACbD,EAASC,MAAQpxB,SAASC,cAAc,KAExC1N,EAAAA,EAAUI,MAAMw+B,EAASC,MAAO,UAAWP,CAAAA,EAC3CM,EAASC,MAAMlwB,UAAY,kBAC3BlB,SAASqO,KAAKlO,YAAYgxB,EAASC,KAAAA,GAGpCD,EAASC,MAAM59B,MAAM0a,QAAUxX,EAAO,eAAiB,MACvD,CAED,SAASkV,EAAO/C,EAAMwoB,EAAYznB,GACjC,IAAI0nB,EAAkB/+B,EAAUg/B,SAASC,wBAAwB3oB,CAC7DyI,EAAAA,GAAQ+f,GAAc,IAAIngB,cAAc6B,QAAQ,KAAM,GAE1D,EAAA,MAAO,QAAQue,CADC,sDAAA,aAAahgB,CAAsBA,kBAAAA,CAAAA,SAAAA,kBAC4D1H,cAAmBA,CAAiBf,WAAAA,CAAAA,cACnJ,CAyCD,SAAS4oB,IAGR,QAFIvE,EAAS,CAAA,EAAGjvB,MAAMG,MAAMqG,UAAW,CAAC,CAAA,CAAA,EAE/BrP,EAAI,EAAGA,EAAI83B,EAAO73B,OAAQD,IAClC,GAAI83B,EAAO93B,CACV,EAAA,OAAO83B,EAAO93B,CAIhB,CAAA,CAqED,SAASs8B,EAAW7+B,EAAQ8+B,EAAIC,EAAAA,CAC/B,IAAI9b,EAAMjjB,EAAO2lB,QAAU3lB,EApE5B,SAAuBA,EAAQ8+B,EAAIC,EAClC,CAAA,IAAI9b,EAAM9V,SAASC,cAAc,KAAA,EAE7B4xB,EAAYvoB,GAAM9K,MACtBjM,EAAUg/B,SAASO,iBAAiBhc,EAAK+b,GAGzC/b,EAAI5U,UAAY,mDAAqDrO,EAAOkF,KAAO,WAAalF,EAAOkF,KACvG+d,EAAIvK,aAAaklB,EAAc,CAAA,EAE/B,IAAIsB,EAAQ,GAcZ,GAZIl/B,EAAOuO,QACV0U,EAAItiB,MAAM4N,MAAQvO,EAAOuO,OACtBvO,EAAOsO,SACV2U,EAAItiB,MAAM2N,OAAStO,EAAOsO,QACvBtO,EAAOm/B,QACVD,GAAS,yDAA2Dl/B,EAAOm/B,MAAQ,UACpFD,GAAS,2DAA6DF,EAAY,YAAch/B,EAAOo/B,QAAU,GAAKp/B,EAAOgW,MAAQ,6EACjI8oB,IACHI,GAASnmB,EAAO6lB,EAAgB5+B,EAAO8+B,GAAIp/B,EAAUooB,OAAO6P,OAAO0H,WAAY,IAAO,EAAA,KAAA,KACnFN,IACHG,GAASnmB,EAAO6lB,EAAgB5+B,EAAO++B,OAAQr/B,EAAUooB,OAAO6P,OAAO2H,eAAgB,QAAA,EAAW,SAAU,EAAA,GAEzGt/B,EAAOu/B,QACV,QAASh9B,EAAI,EAAGA,EAAIvC,EAAOu/B,QAAQ/8B,OAAQD,IAAK,CAC/C,IAAIi9B,EAAMx/B,EAAOu/B,QAAQh9B,CAMxB28B,EAAAA,GALUM,OAAAA,GAAO,SAKRzmB,EAHGymB,EAAIhR,MACNgR,EAAIr+B,KAAQ,aAAeq+B,EAAIhR,MAAMnQ,YAAgB,EAAA,kBAAoBmhB,EAAIhR,MAAMnQ,YAAAA,EAAgB,UACjGmhB,EAAIvlB,OAAS1X,CAGhBwW,EAAAA,EAAOymB,EAAKA,EAAKj9B,EAE3B,CAMF,GAHA28B,GAAS,SACTjc,EAAI5V,UAAY6xB,EAEZl/B,EAAOo/B,QAAS,CACnB,IAAI9e,EAAOtgB,EAAOo/B,eACP9e,GAAQ,WAClBA,EAAOnT,SAASsyB,eAAenf,IAC5BA,EAAK3f,MAAM0a,SAAW,SACzBiF,EAAK3f,MAAM0a,QAAU,IACtB4H,EAAI1T,WAAWvP,EAAOm/B,MAAQ,EAAI,CAAA,EAAG7xB,YAAYgT,CAAAA,CACjD,CAeD,OAbA5gB,EAAUI,MAAMmjB,EAAK,QAAS,SAAUnjB,GACvC,IAAI6W,EAAS7W,EAAMkE,QAAUlE,EAAM8gB,WAEnC,GADKjK,EAAOtI,YAAWsI,EAASA,EAAO/L,YACnCyzB,GAAWp6B,QAAQ0S,EAAQ,yBAA4B,EAAA,CAC1D,IAAII,EAASJ,EAAOlT,aAAa,aAAA,EAEjCwQ,EAASjU,EADT+W,EAAUA,GAAU,QAAYA,GAAU,SAAkBA,EAE5D,CACJ,CAAA,EACE/W,EAAOijB,IAAMA,GACT6b,GAAMC,KACTlB,EAAe79B,GAETijB,CACP,EAGkDjjB,EAAQ8+B,EAAIC,GAEzD/+B,EAAO0/B,QACXpB,EAAS,EAAA,EACVnxB,SAASqO,KAAKlO,YAAY2V,CAC1B,EAAA,IAAIsC,EAAI5W,KAAK+mB,IAAI/mB,KAAK+D,QAAQnT,OAAOoc,YAAcxO,SAASyO,gBAAgBqB,aAAegG,EAAIhG,aAAe,CAAA,CAAA,EAC1GqI,EAAI3W,KAAK+mB,IAAI/mB,KAAK+D,QAAQnT,OAAOwc,aAAe5O,SAASyO,gBAAgBmB,cAAgBkG,EAAIlG,cAAgB,CAejH,CAAA,EAAA,OAdI/c,EAAOoK,UAAY,MACtB6Y,EAAItiB,MAAMC,IAAM,OAEhBqiB,EAAItiB,MAAMC,IAAM0kB,EAAI,KACrBrC,EAAItiB,MAAME,KAAO0kB,EAAI,KAErB7lB,EAAUI,MAAMmjB,EAAK,UAAW+a,CAAAA,EAEhCD,EAAS4B,MAAM1c,CAAAA,EAEXjjB,EAAO0/B,QACV3B,EAAS/0B,KAAKia,CAAAA,EAEfvjB,EAAU8I,UAAU,iBAAkB,CAACya,CAAAA,CAAAA,EAChCA,CACP,CAED,SAAS2c,EAAW5/B,EAAAA,CACnB,OAAO6+B,EAAW7+B,KAAc,EAAA,CAChC,CAED,SAAS6/B,EAAa7/B,EACrB,CAAA,OAAO6+B,EAAW7+B,EAAAA,KAClB,CAAA,CAED,SAAS8/B,EAAS9/B,GACjB,OAAO6+B,EAAW7+B,CAClB,CAAA,CAED,SAAS+/B,EAAW/pB,EAAM9Q,EAAM+O,EAAAA,CAQ/B,OAPmB,OAAR+B,GAAQ,WACC,OAAR9Q,GAAQ,aAClB+O,EAAW/O,EACXA,EAAO,IAER8Q,EAAO,CAACA,KAAMA,EAAM9Q,KAAMA,EAAM+O,SAAUA,CAAAA,GAEpC+B,CACP,CAED,SAASgqB,EAAOhqB,EAAM9Q,EAAM+Q,EAAQ3T,EAAI2R,EAKvC,CAAA,OAJW+B,OAAAA,GAAQ,WAClBA,EAAO,CAACA,KAAMA,EAAM9Q,KAAMA,EAAM+Q,OAAQA,EAAQ3T,GAAIA,EAAI2R,SAAUA,CACnE+B,GAAAA,EAAK1T,GAAK0T,EAAK1T,IAAMmU,GAAM9K,IAAAA,EAC3BqK,EAAKC,OAASD,EAAKC,QAAUkoB,EAAWloB,OACjCD,CACP,CAhMDtW,EAAUI,MAAMqN,SAAU,UAAW6wB,IAkMrC,EAAA,IAUID,EAAW,UAAA,CACd,IAAI/nB,EAAO+pB,EAAWx0B,MAAM5C,KAAMiJ,WAElC,OADAoE,EAAK9Q,KAAO8Q,EAAK9Q,MAAQ,QAClB46B,EAAS9pB,CAClB,CAAA,EACC+nB,EAAS/0B,KAAO,SAAUsX,EAAAA,CACzB,KAAOA,GAAQA,EAAK7c,cAAiB6c,CAAAA,EAAK7c,aAAam6B,CACtDtd,GAAAA,EAAOA,EAAK1V,WACT0V,IACHA,EAAK1V,WAAWC,YAAYyV,CAAAA,EAC5Bge,IAEA5+B,EAAAA,EAAU8I,UAAU,sBAAuB,CAAC8X,CAE/C,CAAA,EAAA,EAECyd,EAAS4B,MAAQ,SAAUrf,EAC1BrI,CAAAA,WAAW,UACV,CAAA,IAAIgoB,EAAY5B,GAAW5Z,kBAAkBnE,CACzC2f,EAAAA,EAAUz9B,QACTy9B,EAAU,CAAA,EAAGN,OAAOM,EAAU,GAAGN,MAEtC,CAAA,EAAE,CACL,CAAA,EAEC,IAAIxB,EAAa,SAAUnoB,EAAM9Q,EAAM+Q,EAAQ3T,EAK9C,CAAA,QAJA0T,EAAOgqB,EAAOz0B,MAAM5C,KAAMiJ,SAAAA,GACrB1M,KAAO8Q,EAAK9Q,MAAQ,OAEX8Q,EAAK9Q,KAAKjC,MAAM,KAAK,CAElC,EAAA,CAAA,IAAK,QACJ,OAAO28B,EAAW5pB,CACnB,EAAA,IAAK,UACJ,OAAO6pB,EAAa7pB,CAAAA,EACrB,IAAK,WACJ,OAAO8pB,EAAS9pB,CAAAA,EACjB,QACC,OA7NH,SAAcA,EACRmoB,CAAAA,EAAW5wB,OACf4wB,EAAW5wB,KAAOJ,SAASC,cAAc,KACzC+wB,EAAAA,EAAW5wB,KAAKc,UAAY,6CAC5B8vB,EAAW5wB,KAAK5M,MAAMw9B,EAAW/zB,QAAAA,EAAY,MAC7C+C,SAASqO,KAAKlO,YAAY6wB,EAAW5wB,IAGtC4wB,GAAAA,EAAWn1B,KAAKgN,EAAK1T,EAAAA,EACrB,IAAIyT,EAAU5I,SAASC,cAAc,KAAA,EA2BrC,OA1BA2I,EAAQ1I,UAAY,QAAU2I,EAAKA,KAAO,SAC1CD,EAAQ1H,UAAY,wCAA0C2H,EAAK9Q,KAAO,WAAa8Q,EAAK9Q,KAC5FxF,EAAUI,MAAMiW,EAAS,QAAQ,SAAUjS,EAC9BkS,CAAAA,EAAK/B,UACJ+B,EAAK/B,SAASH,KAAKnL,KAAM7E,GAEtCq6B,EAAWn1B,KAAKgN,EAAK1T,EAAAA,EACrB0T,EAAO,IACV,CAAA,EAEEtW,EAAUg/B,SAASwB,gBAAgBnqB,CAAAA,EAE/BooB,EAAW/zB,UAAY,UAAY+zB,EAAW5wB,KAAKiC,WACtD2uB,EAAW5wB,KAAK6W,aAAarO,EAASooB,EAAW5wB,KAAKiC,YAEtD2uB,EAAW5wB,KAAKD,YAAYyI,CAAAA,EAEzBC,EAAKC,OAAS,IACjBkoB,EAAWgC,OAAOnqB,EAAK1T,EAAM/C,EAAAA,OAAO0Y,WAAW,UAAA,CAE1CkmB,GAAYA,EAAWn1B,KAAKgN,EAAK1T,EAAAA,CACzC,EAAM0T,EAAKC,MAAAA,GAETkoB,EAAWiC,KAAKpqB,EAAK1T,EAAMyT,EAAAA,EAC3BA,EAAU,KAEHC,EAAK1T,EACZ,EAwLc0T,CAAAA,CAAAA,CAEhB,EAECmoB,EAAWkC,KAAO,IAAKx+B,OAAQC,UAC/Bq8B,EAAWxyB,IAAM8K,GAAM9K,IACvBwyB,EAAWloB,OAAS,IACpBkoB,EAAWC,SAAAA,GACXD,EAAW/zB,SAAW,MACtB+zB,EAAWiC,KAAO,GAClBjC,EAAWgC,OAAS,GAEpBhC,EAAWmC,QAAU,UAAA,CACpB,QAAS1tB,KAAOurB,EAAWiC,KAC1BjC,EAAWn1B,KAAK4J,CACnB,CAAA,EACCurB,EAAWn1B,KAAO,SAAU1G,EAC3B,CAAA,IAAIP,EAAMo8B,EAAWiC,KAAK99B,CACtBP,EAAAA,GAAOA,EAAI6I,aACdrL,OAAO0Y,WAAW,UAAA,CACjBlW,EAAI6I,WAAWC,YAAY9I,CAC3BA,EAAAA,EAAM,IACN,EAAE,GAAA,EACHA,EAAIsM,WAAa,UAEb8vB,EAAWgC,OAAO79B,CACrB/C,GAAAA,OAAO2Y,aAAaimB,EAAWgC,OAAO79B,CAChC67B,CAAAA,EAAAA,OAAAA,EAAWiC,KAAK99B,CAE1B,EAAA,EAEC,IAAIi+B,EAAS,GA+Bb,OA9BA7gC,EAAUkE,YAAY,iBAAkB,SAASqf,EAChDsd,CAAAA,EAAOv+B,KAAKihB,CAAAA,CACd,GACCvjB,EAAUkE,YAAY,sBAAuB,SAASqf,GACrD,QAAQ1gB,EAAI,EAAGA,EAAIg+B,EAAO/9B,OAAQD,IAC9Bg+B,EAAOh+B,KAAO0gB,IAChBsd,EAAOxvB,OAAOxO,EAAG,CACjBA,EAAAA,IAGJ,CAEC7C,EAAAA,EAAUkE,YAAY,YAAa,UAAA,CAC/B06B,EAASC,OAASD,EAASC,MAAM3zB,YACnC0zB,EAASC,MAAM3zB,WAAWC,YAAYyzB,EAASC,KAGhD,EAAA,QAAQh8B,EAAI,EAAGA,EAAIg+B,EAAO/9B,OAAQD,IAC9Bg+B,EAAOh+B,CAAGqI,EAAAA,YACZ21B,EAAOh+B,CAAGqI,EAAAA,WAAWC,YAAY01B,EAAOh+B,IAG1Cg+B,EAAS,KAENpC,EAAW5wB,MAAQ4wB,EAAW5wB,KAAK3C,YACrCuzB,EAAW5wB,KAAK3C,WAAWC,YAAYszB,EAAW5wB,IAEnD4wB,EAAAA,EAAa,IACf,CAEQ,EAAA,CACNqC,MA/Gc,UAAA,CACd,IAAIxqB,EAAO+pB,EAAWx0B,MAAM5C,KAAMiJ,WAElC,OADAoE,EAAK9Q,KAAO8Q,EAAK9Q,MAAQ,UAClB06B,EAAW5pB,CACpB,CAAA,EA4GEyqB,QA3GgB,UAChB,CAAA,IAAIzqB,EAAO+pB,EAAWx0B,MAAM5C,KAAMiJ,SAAAA,EAElC,OADAoE,EAAK9Q,KAAO8Q,EAAK9Q,MAAQ,QAClB26B,EAAa7pB,CACtB,CAAA,EAwGED,QAASooB,EACTuC,SAAU3C,CAEZ,CAAA,CDjUAnB,GAAczlB,UAAY,CACzBwpB,mBAAoB,SAAU98B,EAAM+8B,EAAAA,QACxB/8B,GAAQ,UAClB8E,KAAKq0B,OAASn5B,EAAKA,MAAQ8E,KAAKq0B,OAE5Bn5B,EAAKg9B,UAFuB7D,SAG/Br0B,KAAKs0B,SAAWp5B,EAAKg9B,SAGlBh9B,EAAKi9B,UAHaD,SAIrBl4B,KAAKu0B,SAAWr5B,EAAKi9B,SAEtBn4B,KAAKo4B,OAAWH,CAAAA,CAAAA,IAEhBj4B,KAAKq0B,OAASn5B,EACd8E,KAAKo4B,OAASH,GAGXj4B,KAAKq0B,QAAU,SAClBr0B,KAAKo4B,UACLp4B,KAAKq4B,OAAS,IAGXr4B,KAAKq0B,SAAW,QAAUr0B,KAAKq0B,SAAW,aAC7Cr0B,KAAKo4B,OAAAA,GACLp4B,KAAKq4B,UACLr4B,KAAKs4B,iBAAmB,GACxBt4B,KAAKs0B,SAAWt0B,KAAKs0B,UAAY,CAAA,EACjCt0B,KAAKs0B,SAAS,cAAA,EAAkB,oBAE7Bt0B,KAAKs0B,UAAAA,CAAat0B,KAAKs0B,SAAS,kBAClCt0B,KAAKs0B,SAAS,cAAkB,EAAA,qCAI9Bt0B,KAAKq0B,SAAW,WACnBr0B,KAAKo4B,OAAAA,GACLp4B,KAAKq4B,OAAAA,GACLr4B,KAAKu4B,QAAUr9B,EAAKs9B,OAErB,EACDC,OAAQ,SAAUjyB,EACjB,CAAA,OAAIxG,KAAK04B,KACDpa,mBAAmB9X,CAEnBiyB,EAAAA,OAAOjyB,CACf,CAAA,EAMDuuB,kBAAmB,SAAU75B,EAAAA,CAC5B8E,KAAK04B,KAAAA,CAAAA,CAASx9B,CACd,EAMDy9B,eAAgB,SAAUC,EAAAA,CACzB54B,KAAK64B,SAA0B,OAAPD,GAAO,SAAYA,EAAIt+B,MAAM,GAAOs+B,EAAAA,CAC5D,EAMDE,aAAc,WACb,MAAQ94B,CAAAA,KAAKyzB,YAAY55B,MACzB,EAMDk/B,gBAAiB,SAAU79B,EAC1B8E,CAAAA,KAAKq4B,SAAWn9B,CAChB,EAMD89B,sBAAuB,SAAU99B,GAChC8E,KAAKi5B,SAAAA,CAAAA,CAAa/9B,CAClB,EAMD+Q,cAAe,SAAU/Q,EAAMkxB,EAAAA,CAC9BpsB,KAAKo0B,WAAcl5B,GAAQ,OAC3B8E,KAAKgM,WAAa9Q,EAClB8E,KAAKosB,IAAMA,CACX,EACDhB,OAAQ,SAAUrM,EAAMma,EAAAA,CACvBl5B,KAAK0U,aAAe,GACpBqK,EAAK5T,KAAK+tB,GAAUtiC,MACpBoJ,EAAAA,KAAK0U,aAAe,EACpB,EAQD0e,WAAY,SAAU+F,EAAOC,EAAOl+B,GACnC,GAAI8E,CAAAA,KAAK0U,aAAT,CACA,IAAIwD,EAAMlY,KAAKq5B,QAAQF,CAAAA,EAEvBj+B,EAAOA,GAAQ,UACf,IAAIo+B,EAAWt5B,KAAKgzB,WAAWuG,YAAYJ,EAAOn5B,KAAK8zB,cACnDwF,GAAYp+B,GAAQ,YAAWA,EAAOo+B,GACtCF,GACHp5B,KAAKw5B,YAAYL,EAAAA,IACjBn5B,KAAKyzB,YAAYvb,CAAOihB,EAAAA,EACxBn5B,KAAKgzB,WAAWa,YAAYsF,EAAOn5B,KAAK8zB,aAAc54B,CAClD8E,EAAAA,KAAKuzB,aAAa4F,CAAAA,IACrBn5B,KAAKuzB,aAAa4F,CAAS,EAAA,SAEvBn5B,KAAKy5B,WAAWN,CAAAA,IACpBn5B,KAAKyzB,YAAYrrB,OAAO8P,EAAK,CAAA,EAC7BlY,KAAKgzB,WAAWa,YAAYsF,EAAOn5B,KAAK8zB,aAAc,EAAA,GAIxD9zB,KAAK05B,QAAQP,EAAOC,EAAOl+B,CAAAA,EACvBk+B,GAASp5B,KAAKo0B,YAAYp0B,KAAK8M,SAASqsB,EApBd,CAqB9B,EAEDO,QAAS,SAAU//B,EAAIy/B,EAAOl+B,EAAAA,CAC7B,IAAImc,EAAM,GACNwd,EAAU70B,KAAKy5B,WAAW9/B,CAAAA,EAK9B,GAJIk7B,IACHxd,EAAMrX,KAAK8wB,OAAO+D,GAClBuE,EAAQ,IAELp5B,KAAKH,UAAU,YAAa,CAAClG,EAAIy/B,EAAOl+B,EAAM25B,MAEjDxd,EAAMrX,KAAK8wB,OAAOsI,EAAQl+B,EAAO,OAAWmc,EAAAA,EAE5CrX,KAAKgzB,WAAWhzB,KAAK25B,SAAS,CAAA,CAAA,EAAIhgC,EAAI0d,CAAAA,EAElCwd,GAAWA,EAAQ+E,SAAS,CAC/BviB,GAAOrX,KAAK8wB,OAAO+D,EAAU,OAAA,EAC7B,QAASj7B,EAAI,EAAGA,EAAIi7B,EAAQ+E,QAAQ//B,OAAQD,IACvCi7B,EAAQ+E,QAAQhgC,CACnBoG,GAAAA,KAAKgzB,WAAWhzB,KAAK25B,SAAS,CAAIhgC,CAAAA,EAAAA,EAAIC,EAAGyd,CAAAA,CAC3C,CAEF,EACDwiB,iBAAkB,SAAST,EAAAA,CAC1B,OAAIA,IAAU,WACN,SAEJA,IAAU,UACN,SAEJA,IAAU,UACN,SAED,QACP,EAED79B,SAAU,SAAU5B,EAAAA,CACnB,OAAOqG,KAAKgzB,WAAWuG,YAAY5/B,EAAIqG,KAAK8zB,YAC5C,CAAA,EACD2F,WAAY,SAAU9/B,GACrB,OAAOqG,KAAKwzB,SAAS75B,CAAAA,CACrB,EACD6/B,YAAa,SAAU7/B,EAAIuB,EAAM0+B,GAC5BA,IAAS1+B,EAAO,CACnBoW,MAAOpW,EAAM0+B,QAASA,EAASnrB,SAAU,UAAA,CACxC,OAAOzO,KAAKsR,MAAM7C,SAClB,CAAA,CAAA,GAEFzO,KAAKwzB,SAAS75B,CAAMuB,EAAAA,CACpB,EAMD4+B,kBAAmB,SAAUX,EAC5B,CAAA,MAAA,EACA,EAMDrsB,SAAU,SAAUqsB,EAAAA,CAGnB,OAFIn5B,KAAKgzB,WAAW+G,UAAU/5B,KAAKgzB,WAAW+G,SAE1B,EAATZ,IAAS,QAAen5B,KAAKo4B,OAAep4B,KAAKg6B,YAAAA,EAAAA,CACxDh6B,KAAKuzB,aAAa4F,KAEtBn5B,KAAKy0B,SAAW,CACXz0B,EAAAA,EAAAA,CAAAA,KAAK85B,kBAAkBX,CAAUn5B,GAAAA,KAAKH,UAAU,oBAAqB,CAACs5B,EAAOn5B,KAAKy0B,QACvFz0B,CAAAA,IAAAA,KAAAA,KAAKi6B,gBAAgBj6B,KAAKk6B,YAAYf,CAAQA,EAAAA,CAAAA,EAC9C,EACDc,gBAAiB,SAAUzzB,EAAM2yB,EAAAA,CAChC,IAAKn5B,KAAKH,UAAU,iBAAkB,CAACs5B,EAAOn5B,KAAKzE,SAAS49B,CAAQ3yB,EAAAA,CAAAA,CAAAA,EAAQ,SAC5ExG,KAAKm6B,UAAU3zB,EAAM2yB,EACrB,EACDlQ,UAAW,SAAUziB,EAAM7M,GAC1B,GAAIqG,KAAKs4B,iBACR,OAAQt4B,KAAKo6B,iBAAiB5zB,CAG/B,EAAA,UAAWA,GAAQ,SAClB,OAAOA,EACR,GAAW7M,IAAX,OACC,OAAOqG,KAAKq6B,cAAc7zB,EAAM,EAEhC,EAAA,IAAI8zB,EAAQ,CAAA,EACRC,EAAO,CACX,EAAA,QAAStwB,KAAOzD,EACXA,EAAKtD,eAAe+G,CACvBqwB,IAAAA,EAAMjhC,KAAK2G,KAAKq6B,cAAc7zB,EAAKyD,CAAAA,EAAMA,EAAMjK,KAAKw0B,UAAAA,CAAAA,EACpD+F,EAAKlhC,KAAK4Q,IAKZ,OAHAqwB,EAAMjhC,KAAK,OAAS2G,KAAKy4B,OAAO8B,EAAKl2B,KAAK,GAAA,CAAA,CAAA,EACtCrE,KAAKgzB,WAAW5N,cACnBkV,EAAMjhC,KAAK,gBAAmB2G,KAAKgzB,WAAuB,YACpDsH,EAAAA,EAAMj2B,KAAK,GAEnB,CAAA,EACDg2B,cAAe,SAAU7zB,EAAMg0B,EAC9B,CAAA,GAAWh0B,OAAAA,GAAQ,SAClB,OAAOA,EACR,IAAI8zB,EAAQ,CAAA,EACRjc,EAAa,GACjB,QAASpU,KAAOzD,EACf,GAAIA,EAAKtD,eAAe+G,CAAAA,EAAM,CAC7B,IAAKA,GAAO,MAAQA,GAAOjK,KAAK8zB,eAAiB9zB,KAAKq0B,QAAU,OAAQ,SAEvEhW,EADwB,OAAd7X,EAAKyD,CAAAA,GAAS,iBAAmBzD,EAAKyD,CAAAA,GAAS,SAC5CzD,EAAKyD,CAAAA,EAELsU,KAAKC,UAAUhY,EAAKyD,CAElCqwB,CAAAA,EAAAA,EAAMjhC,KAAK2G,KAAKy4B,QAAQ+B,GAAQ,IAAMvwB,GAAO,IAAMjK,KAAKy4B,OAAOpa,CAAAA,CAAAA,CAC/D,CACF,OAAOic,EAAMj2B,KAAK,GAAA,CAClB,EACDo2B,cAAe,SAAUlX,EACxB,CAAA,IAAIW,EAAOlkB,KAAKgzB,WAAW9O,KAC3B,GAAIlkB,KAAKu0B,SACR,QAAStqB,KAAOjK,KAAKu0B,SACpBhR,EAAMA,EAAMW,EAAKwW,aAAanX,CAAOvjB,EAAAA,KAAKy4B,OAAOxuB,CAAAA,EAAO,IAAMjK,KAAKy4B,OAAOz4B,KAAKu0B,SAAStqB,IAC1F,OAAOsZ,CACP,EACD4W,UAAW,SAAUQ,EAAYxB,EAChC,CAAA,GAAKwB,EAAL,CAGA,GAAA,CAAK36B,KAAKH,UAAU,sBAAuBs5B,EAAQ,CAACA,EAAOn5B,KAAKzE,SAAS49B,CAAQwB,EAAAA,CAAAA,EAAc,CAAC,KAAM,KAAMA,CAC3G,CAAA,EAAA,MAAA,GAGGxB,IACHn5B,KAAKuzB,aAAa4F,CAAAA,EAAS,IAAKjgC,OAAQC,WAGzC,IAAIyhC,EAAO56B,KACPkkB,EAAOlkB,KAAKgzB,WAAW9O,KAE3B,GAAIlkB,KAAKq0B,SAAW,SAApB,CAqEA,IAmBI7tB,EAnBAq0B,EAAc,CACjBvvB,SAAU,SAASkZ,EAAAA,CAClB,IAAIrhB,EAAM,CAAA,EAEV,GAAIg2B,EACHh2B,EAAI9J,KAAK8/B,CAAAA,UACCwB,EACV,QAAS1wB,KAAO0wB,EACfx3B,EAAI9J,KAAK4Q,CAIX,EAAA,OAAO2wB,EAAKE,YAAYF,EAAMpW,EAAKrhB,CAAAA,CACnC,EACD+0B,QAAS0C,EAAKtG,QAGXyG,EAAAA,EAAY/6B,KAAKm0B,iBAAmBn0B,KAAKg7B,MAAS9W,EAAKwW,aAAa16B,KAAKm0B,eAAmB,EAAA,CAAC,YAAcn0B,KAAKg7B,MAAO,eAAiBh7B,KAAKgzB,WAAWuG,YAAY,EAAG,SAAYl1B,CAAAA,EAAAA,KAAK,GAAQ,EAAA,IAChMkf,EAAMvjB,KAAKy6B,cAAcM,CAG7B,EAAA,OAAQ/6B,KAAKq0B,OACZ,CAAA,IAAK,MACJ7tB,EAAOxG,KAAKi7B,4BAA4BN,CAAAA,EACxCE,EAAYtX,IAAMA,EAAMW,EAAKwW,aAAanX,CAAOvjB,EAAAA,KAAKipB,UAAUziB,EAAM2yB,CAAAA,EACtE0B,EAAYK,OAAS,MACrB,MACD,IAAK,OACJ10B,EAAOxG,KAAKi7B,4BAA4BN,CAAAA,EACxCE,EAAYtX,IAAMA,EAClBsX,EAAYK,OAAS,OACrBL,EAAYr0B,KAAOxG,KAAKipB,UAAUziB,EAAM2yB,CAAAA,EACxC,MACD,IAAK,OACJ3yB,EAAO,CAAA,EACP,IAAI20B,EAAmBn7B,KAAKo7B,uBAAuBT,GACnD,QAAS1wB,KAAOkxB,EACXlxB,IAAQjK,KAAK8zB,cAAgB7pB,IAAQ,MAAQA,IAAQ,UAGzDzD,EAAKyD,CAAAA,EAAOkxB,EAAiBlxB,CAG9B4wB,GAAAA,EAAYtX,IAAMA,EAClBsX,EAAYK,OAAS,OACrBL,EAAYr0B,KAAO+X,KAAKC,UAAU,CACjC7kB,GAAIw/B,EACJkC,OAAQV,EAAW36B,KAAK8zB,YACxBttB,EAAAA,KAAMA,IAEP,MACD,IAAK,OACL,IAAK,YAIJ,OAHA+c,EAAMwX,EAAUxjB,QAAQ,qBAAsB,EAC9C/Q,EAAAA,EAAO,GAECxG,KAAKzE,SAAS49B,CACrB,EAAA,CAAA,IAAK,WACJ0B,EAAYK,OAAS,OACrBL,EAAYr0B,KAAOxG,KAAKipB,UAAU0R,EAAYxB,CAAAA,EAC9C,MACD,IAAK,UACJ0B,EAAYK,OAAS,SACrB3X,EAAMA,GAAOA,EAAI9gB,MAAO,EAAA,IAAO,IAAM,GAAK,KAAO02B,EACjD,MACD,QACC0B,EAAYK,OAAS,MACrBL,EAAYr0B,KAAOxG,KAAKipB,UAAU0R,EAAYxB,CAAAA,EAC9C5V,EAAMA,GAAOA,EAAI9gB,MAAAA,MAAc,IAAM,GAAK,KAAO02B,CAGnD0B,CAAAA,EAAYtX,IAAMvjB,KAAKy6B,cAAclX,CAKvC,CAAA,CAAA,OADAvjB,KAAK0zB,YACExP,EAAKoX,MAAMT,CAAAA,CA9EjB,CAnED,CACC,IAAIzB,EAAQp5B,KAAKzE,SAAS49B,CACtBkC,EAAAA,EAASr7B,KAAK65B,iBAAiBT,GAC/BmC,EAA0B,SAAUC,EACvC,CAAA,IAAIC,EAAcrC,EAClB,GAAGoC,GAAOA,EAAI1W,cAAgB0W,EAAIE,iBAAiB,CAC/CF,EAAInT,SAAW,MACjBoT,EAAc,SAEf,GAAA,CACCD,EAAMjd,KAAKsG,MAAM2W,EAAI1W,YAAAA,CAC3B,MAAc3pB,CAAI,CACb,CAEDsgC,EAAcA,GAAe,UAC7B,IAAIE,EAAMxC,EACNyC,EAAMzC,EAENqC,IACHC,EAAcD,EAAIH,QAAUI,EAC5BE,EAAMH,EAAIG,KAAOA,EACjBC,EAAMJ,EAAI7hC,IAAM6hC,EAAII,KAAOA,GAE5BhB,EAAKiB,oBAAoBF,EAAKC,EAAKH,EAAaD,CAAAA,CACpD,EAEG,MAAMM,EAAa,QACnB,IAAIC,EACJ,GAAI/7B,KAAKu4B,mBAAmBhqB,SAC3BwtB,EAAgB/7B,KAAKu4B,QAAQuD,EAAYT,EAAQV,EAAYxB,CAE7D,MAAA,QAAQC,EACP,CAAA,IAAK,WACJ2C,EAAgB/7B,KAAKu4B,QAAQuD,CAAAA,EAAYE,OAAOrB,CAChD,EAAA,MACD,IAAK,UACJoB,EAAgB/7B,KAAKu4B,QAAQuD,CAAYG,EAAAA,OAAO9C,GAChD,MACD,QACC4C,EAAgB/7B,KAAKu4B,QAAQuD,CAAYI,EAAAA,OAAOvB,EAAYxB,CAAAA,CAAAA,CAK/D,GAAG4C,EAAc,CAEhB,GAAIA,CAAAA,EAAcI,MAChBJ,EAAcpiC,aAAoBoiC,EAAcH,MAAQ/4B,QAAak5B,EAAcV,SAAWx4B,OAC/F,MAAM,IAAIoE,MAAM,2EAGd80B,EAAAA,EAAcI,KAChBJ,EAAcI,KAAKZ,CAAAA,EAAyBa,MAAM,SAAS5wB,EAAAA,CACvDA,GAASA,EAAM6vB,OACjBE,EAAwB/vB,CAAAA,EAExB+vB,EAAwB,CAAEF,OAAQ,QAAS/pB,MAAO9F,CAEzD,CAAA,CAAA,CAAA,EAGK+vB,EAAwBQ,CAE7B,CAAA,MACIR,EAAwB,IAAA,CAGzB,CA/EA,CA8JD,EACDvB,YAAa,UAAA,CACZ,GAAKh6B,KAAKyzB,YAAY55B,QAAUmG,KAAKgM,aAAe,MAApD,CAIAhM,KAAKy0B,SAAW,GAChB,IAAI4H,EAAAA,GAMJ,GAJAr8B,KAAKs8B,mBAAmB,SAASnD,EAChCkD,CAAAA,EAAQA,GAASr8B,KAAK85B,kBAAkBX,CAC3C,CAAA,CAAA,EAAA,CAEOkD,IAAUr8B,KAAKH,UAAU,oBAAqB,CAAC,GAAIG,KAAKy0B,QAAAA,CAAAA,EAC5D,MAAO,GAGJz0B,KAAKo4B,OACRp4B,KAAKm6B,UAAUn6B,KAAKu8B,eAEpBv8B,KAAKs8B,mBAAmB,SAASnD,EAAAA,CAChC,IAAKn5B,KAAKuzB,aAAa4F,CAAQ,EAAA,CAC9B,GAAIn5B,KAAKy5B,WAAWN,CAAAA,EACnB,OAEDn5B,KAAKi6B,gBAAgBj6B,KAAKk6B,YAAYf,GAAQA,CAC9C,CAAA,CACL,CAvBG,CAAA,CAyBD,EAEDoD,YAAa,SAAUpD,EACtB,CAAA,IAAIqD,EAAM,CAAA,EACNC,EAAU,GAad,OAZAz8B,KAAKs8B,mBAAmB,SAAS3iC,EAAAA,CAChC,IAAIqG,KAAKuzB,aAAa55B,CAAOqG,GAAAA,CAAAA,KAAKy5B,WAAW9/B,CAA7C,EAAA,CAGA,IAAImW,EAAM9P,KAAKk6B,YAAYvgC,CAAAA,EACtBqG,KAAKH,UAAU,iBAAkB,CAAClG,EAAIqG,KAAKzE,SAAS5B,GAAKmW,CAG9D0sB,CAAAA,IAAAA,EAAI7iC,CAAMmW,EAAAA,EACV2sB,KACAz8B,KAAKuzB,aAAa55B,CAAAA,EAAM,IAAKT,OAAQC,QAAAA,EAPpC,CAQJ,CAAA,EACSsjC,EAAUD,EAAM,IACvB,EAEDnD,QAAS,SAAUqD,EAClB,CAAA,IAAI9iC,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIoG,KAAKyzB,YAAY55B,QAC5B6iC,GAAW18B,KAAKyzB,YAAY75B,CADQA,EAAAA,IAAAA,CAEzC,OAAOA,CACP,EAQD+iC,aAAc,SAAU7mB,EAAM/E,EAAAA,CACxB/Q,KAAK48B,YAAW58B,KAAK48B,UAAY,CAAA,GACtC58B,KAAK48B,UAAU9mB,CAAQ/E,EAAAA,CACvB,EAUD8qB,oBAAqB,SAAUF,EAAKC,EAAKP,EAAQwB,EAChD,CAAA,GAAI78B,KAAKgzB,WAAT,CAKA,IAAI8J,EAASnB,EACToB,EAAW1B,IAAW,SAAWA,IAAW,UAIhD,GAHK0B,GACJ/8B,KAAKw5B,YAAYmC,EAAKN,CAAAA,EAElBr7B,KAAc,WAAMA,KAAK48B,UAAUvB,CAAAA,GAAAA,CAAcr7B,KAAK48B,UAAUvB,CAAAA,EAAQwB,CAC5E,EAAA,OAAA,OAAe78B,KAAKuzB,aAAauJ,CAAAA,EAG9B98B,KAAKuzB,aAAauJ,CACrB98B,IADiC,QACjCA,KAAKozB,WAAWuI,EAAAA,IAGjB,IAAIqB,EAAcrB,EAElB,OAAQN,GACP,IAAK,WACL,IAAK,SACAO,GAAOD,IACV37B,KAAKozB,WAAWuI,IAChB37B,EAAAA,KAAKgzB,WAAWhzB,KAAK25B,SAAS,CAAIgC,CAAAA,EAAAA,EAAKC,CACvCD,EAAAA,EAAMC,GAEP,MACD,IAAK,SACL,IAAK,UAIJ,OAHA57B,KAAKgzB,WAAWa,YAAY8H,EAAK37B,KAAK8zB,aAAc,cACpD9zB,EAAAA,KAAKgzB,WAAWhzB,KAAK25B,SAAS,CAAIgC,CAAAA,EAAAA,EAAKC,UAChC57B,KAAKuzB,aAAauJ,CAClB98B,EAAAA,KAAKH,UAAU,gBAAiB,CAAC87B,EAAKN,EAAQO,EAAKiB,CAG1B,CAAA,CAAA,CAA9B78B,KAAKuzB,aAAauJ,KAAY,QAC7BC,GACH/8B,KAAKgzB,WAAWa,YAAY8H,EAAK37B,KAAK8zB,aAAc,EAE9C9zB,EAAAA,OAAAA,KAAKuzB,aAAauJ,CAElB98B,IAAAA,OAAAA,KAAKuzB,aAAauJ,CAAAA,EACzB98B,KAAKozB,WAAWwI,EAAAA,GAAW57B,KAAKgzB,WAAWuG,YAAYoC,EAAK37B,KAAK8zB,YAAAA,CAAAA,GAGlE9zB,KAAKH,UAAU,gBAAiB,CAACm9B,EAAa3B,EAAQO,EAAKiB,CA5C1D,CAAA,CAAA,CA6CD,EAEDI,eAAgB,SAAUzY,EAAK7qB,EAAAA,CAI9B,OAHGqG,KAAKgzB,YAAchzB,KAAKgzB,WAAWnzB,WACrCG,KAAKgzB,WAAWnzB,UAAU,cAAe,CAAClG,EAAI6qB,EAAII,MAE5C5kB,CAAAA,EAAAA,KAAKk9B,YAAYvjC,CACxB,CAAA,EAEDwjC,2BAA4B,UAAA,CACvBn9B,KAAKm0B,kBACRn0B,KAAKg4B,mBAAmB,OAAA,IACxBh4B,KAAKm0B,kBAAoBn0B,KAAKm0B,gBAAgBptB,QAAQ,GAAA,IAAjDotB,GAA+D,IAAM,KAAO,eACjFn0B,KAAKo9B,iBAAmBp9B,KAAKm0B,gBAE9B,EAOD2G,YAAa,SAAUuC,EAAM7Y,EAAK7qB,GACjC,IAAIuqB,EAAOlkB,KAAKgzB,WAAW9O,KAE3B,GAAIM,EAAII,OAAOyD,SAAW,IAA1B,CAMA,IAAImT,EACJ,GAAA,CACCA,EAAMjd,KAAKsG,MAAML,EAAII,OAAOE,aAC5B,MAEKN,CAAAA,EAAII,OAAOE,aAAajrB,SAC5B2hC,EAAM,CAAA,EAEP,CAED,GAAIA,EAAK,CACR,IAAIH,EAASG,EAAIH,QAAUr7B,KAAKzE,SAAS5B,CAAAA,GAAO,UAC5CgiC,EAAMH,EAAIG,KAAOhiC,EAAG,CACpBiiC,EAAAA,EAAMJ,EAAII,KAAOjiC,EAAG,CAGxB,EAAA,OAFA0jC,EAAKxB,oBAAoBF,EAAKC,EAAKP,EAAQG,QAC3C6B,EAAKC,eAAAA,CAEL,CAGD,IAAIrlC,EAAMisB,EAAKc,OAAO,OAAQR,EAAII,QAClC,GAAK3sB,CAAAA,EACJ,OAAO+H,KAAKi9B,eAAezY,EAAK7qB,CAAAA,EAEjC,IAAI4jC,EAAOrZ,EAAKoB,MAAM,gBAAiBrtB,CACvC,EAAA,GAAA,CAAKslC,EAAK1jC,OACT,OAAOmG,KAAKi9B,eAAezY,EAAK7qB,CAGjC,EAAA,QAASC,EAAI,EAAGA,EAAI2jC,EAAK1jC,OAAQD,IAAK,CACrC,IAAIijC,EAAOU,EAAK3jC,CAAAA,EACZyhC,EAASwB,EAAK/hC,aAAa,MAAA,EAC3B6gC,EAAMkB,EAAK/hC,aAAa,KACxB8gC,EAAAA,EAAMiB,EAAK/hC,aAAa,KAAA,EAE5BuiC,EAAKxB,oBAAoBF,EAAKC,EAAKP,EAAQwB,CAC3C,CAAA,CACDQ,EAAKC,eAxCJ,CAAA,MAFAt9B,KAAKi9B,eAAezY,EAAK7qB,CA2C1B,CAAA,EACDujC,YAAa,SAAUvjC,GACtB,GAAIA,EACH,QAASC,EAAI,EAAGA,EAAID,EAAGE,OAAQD,WACvBoG,KAAKuzB,aAAa55B,EAAGC,CAAAA,CAAAA,CAC9B,EACD0jC,eAAgB,UAAA,CACXt9B,KAAK0zB,WAAW1zB,KAAK0zB,YAEzB1zB,KAAKH,UAAU,sBAAuB,IACjCG,KAAKyzB,YAAY55B,QACrBmG,KAAKH,UAAU,aAAc,CAAA,CAAA,CAC9B,EAOD6f,KAAM,SAAU3oB,EACf,CAAA,GAAA,CAAIiJ,KAAKw9B,aAAT,CAGAx9B,KAAKgzB,WAAaj8B,EACdiJ,KAAKgzB,WAAWyK,UACnBz9B,KAAKgzB,WAAWyK,SAASz9B,IAG1BA,EAAAA,KAAKm9B,2BAELn9B,EAAAA,KAAK25B,SAAS35B,KAAK25B,UAAU,CAAC,wBAAwB,GAAG,sBAAsB,iBAAA,ED/mB1E,SAAyB5iC,EAAWg8B,GAC1Ch8B,EAAUo8B,SAAS,SAASx5B,EAAAA,CAC3B,OAAGqG,KAAK09B,mBAAAA,CACC19B,KAAK09B,kBAAkB/jC,EAGlC,EACC5C,EAAU88B,YAAY,SAASl6B,EAAGmc,EAAKxE,EAAAA,CACtC,GAAI3X,EAAG,CACN,IAAI8C,EAAKuD,KAAK5E,SAASzB,GACpB8C,IAAIA,EAAGqZ,CAAMxE,EAAAA,EACnB,MACGtR,KAAKmmB,UAAUrQ,CAAMxE,EAAAA,CAExB,EACCva,EAAUwiC,YAAY,SAAS5/B,EAAGmc,GACjC,GAAInc,EAAG,CACN,IAAI8C,EAAKuD,KAAK5E,SAASzB,CACvB,EAAA,OAAG8C,EACKA,EAAGqZ,CAAAA,EAEH,IACX,CACG,OAAO9V,KAAKmmB,UAAUrQ,CAEzB,CAAA,EACC/e,EAAU4mC,sBAAsB,SAAShkC,EAAG3B,EAAAA,CAC3C,GAAIjB,EAAUqE,SAASzB,CAAAA,EAAvB,CAEAqG,KAAK8tB,aAAan0B,EAAG,SAASikC,GAC7BA,EAAE5lC,MAAM6lC,SAAS,IAAI7lC,CACxB,CACE,EAAA,IAAIyE,EAAKuD,KAAK5E,SAASzB,CACvB8C,EAAAA,EAAgB,YAAEzE,EAClBgI,KAAK89B,cAAcrhC,CAAAA,CANX,CAOV,EACC1F,EAAU48B,iBAAmB,SAASC,EAAIj6B,EAAAA,CACzC,IAAI6M,EAAOzP,EAAUmvB,eAAe0N,EAAI/sB,YAEpCL,EAAK1H,UAAY,SAAQ0H,EAAKu3B,YAAc,QAChDv3B,EAAK6G,KAAO7G,EAAK6G,MAAM7G,EAAKmiB,UAC5BniB,EAAKlO,WAAavB,EAAU8xB,SAASC,UAAUtiB,EAAKlO,UAAAA,EACpDkO,EAAKjO,SAAWxB,EAAU8xB,SAASC,UAAUtiB,EAAKjO,QAClDxB,EAAAA,EAAUwW,SAAS/G,CAAAA,EACfzP,EAAUi9B,iBACbj9B,EAAU0V,eACb,CAAA,EACC1V,EAAUinC,oBAAsB,SAASrkC,EAAIskC,EAAAA,CACxClnC,EAAUqE,SAASzB,CAEvB5C,GAAAA,EAAUmnC,cAAcvkC,EAAIskC,CAAAA,CAC9B,EACClnC,EAAUonC,gBAAkB,SAASxkC,EAAIskC,EACxC,CAAA,GAAIlnC,EAAUqE,SAASzB,CAAAA,EASvB,OANGskC,GAAUtkC,GAAMskC,IACfj+B,KAAKu5B,YAAY5/B,EAAIo5B,EAAGe,YAAAA,GAAiB,gBAC3C9zB,KAAK6zB,YAAYl6B,EAAIo5B,EAAGe,aAAc,SAEvC9zB,EAAAA,KAAKk+B,cAAcvkC,EAAIskC,CAAAA,GAEjBj+B,KAAK+zB,YAAYkK,IAC1B,CAAA,EAEClnC,EAAUqnC,MAAQ,WACjBp+B,KAAK+L,IAAMgnB,CACb,EACCh8B,EAAUqnC,MACX,CAAA,EC2iBkBp+B,KAAKgzB,WAAYhzB,IACjC,EAAA,IAAIq+B,EAAsB,IAAIvL,GAAoB9yB,KAAKgzB,WAAYhzB,IACnEq+B,EAAAA,EAAoBznB,SACpB5W,KAAK/E,YAAY,YAAa,UAAA,CAAA,OACtB+E,KAAKk6B,YAELl6B,OAAAA,KAAKgzB,WAAWjnB,IAAAA,OAChB/L,KAAKgzB,WAAWsL,eAAAA,OAChBt+B,KAAKgzB,WAAW2K,6BAChB39B,KAAKgzB,WAAWgL,oBAChBh+B,OAAAA,KAAKgzB,WAAWmL,gBAChBn+B,OAAAA,KAAKgzB,WACZqL,EAAoBvnB,QACvB,CACE9W,EAAAA,KAAKgzB,WAAWnzB,UAAU,uBAAwB,CAACG,IAAAA,CAAAA,EACnDA,KAAKw9B,aAAAA,GAELzmC,EAAUunC,eAAet+B,IA1BxB,CA2BD,EAEDu+B,iBAAkB,SAAU9hC,EAC3BuD,CAAAA,KAAK/E,YAAY,gBAAiBwB,CAAAA,CAClC,EACD+hC,yBAA0B,SAAUC,EACnCz+B,CAAAA,KAAK/E,YAAY,sBAAuBwjC,EACxC,EAKDC,cAAe,SAAUC,EAAUC,GAClCD,EAAWA,GAAY,IAEvB3+B,KAAKg7B,MAAQ4D,GAAQ,IAAK1lC,OAAQC,QAAAA,EAClC6G,KAAK6+B,aAAe,GAEpB7+B,KAAK8+B,aAAAA,GAEL9+B,KAAK/E,YAAY,gBAAiB,SAAU0gC,EAAKN,EAAQO,EAAKmD,EAC7D/+B,CAAAA,KAAKg/B,gBAAgBrD,EAAKN,EAAQO,EAAKmD,CAAAA,CAC1C,GACE/+B,KAAK/E,YAAY,aAAc,UAAA,CAC9B+E,KAAKi/B,SAAAA,CACR,CAEE,EAAA,IAAIrE,EAAO56B,KACX,IAAIk/B,EAAaroC,EAAO85B,YAAY,UACnCiK,CAAAA,EAAKuE,WACL,CAAA,EAAER,GACH3+B,KAAK/E,YAAY,YAAa,UAAA,CAC7Bw1B,cAAcyO,CACjB,CAAA,CAAA,CACE,EAMDF,gBAAiB,SAAUrD,EAAKN,EAAQO,EAAKmD,EAAAA,CAC5C,OAAI1D,GAAU,cACbr7B,KAAK6+B,aAAAA,MAKN,EAKDI,SAAU,UAAA,CAKT,OAJIj/B,KAAK6+B,eACR7+B,KAAK6+B,aAAAA,GACL7+B,KAAKm/B,WAAAA,GAAAA,EAGN,EAIDC,WAAY,SAAU7b,EAAKjY,EAC1B,CAAA,IAAI4Y,EAAOlkB,KAAKgzB,WAAW9O,KAC3B,GAAIlkB,KAAK8+B,aACR,MAAA,GAEA9+B,KAAK8+B,gBAEN5a,EAAKC,IAAIZ,EAAKjY,EACd,EAMD+zB,iBAAkB,SAAS1nB,EAAAA,CAC1B,OAAIA,EAAK9Q,WACD8Q,EAAK9Q,WAAWkf,UAEjB,EACP,EAIDoZ,WAAY,WACX,IAAIvE,EAAO56B,KACPkkB,EAAOlkB,KAAKgzB,WAAW9O,KACvBob,EAAUt/B,KAAKgzB,WAAWuG,YAAY,EAAG,SACzChW,EAAAA,EAAMvjB,KAAKm0B,gBAAkBjQ,EAAKwW,aAAa16B,KAAKm0B,iBAAmB,CAAC,YAAcn0B,KAAKg7B,MAAO,eAAiBsE,CAASj7B,EAAAA,KAAK,GACrIkf,EAAAA,EAAMA,EAAIhM,QAAQ,gBAAiB,EACnCvX,EAAAA,KAAKo/B,WAAW7b,EAAK,SAAUiB,EAC9B,CAAA,IAAI+a,EAAOrb,EAAKoB,MAAM,aAAcd,CAAAA,EACpCoW,EAAK5H,WAAWa,YAAY,EAAG,UAAW+G,EAAKyE,iBAAiBE,EAAK,CAErE,CAAA,CAAA,EAAA,IAAIC,EAAUtb,EAAKoB,MAAM,WAAYd,CAAAA,EACrC,GAAIgb,EAAQ3lC,OAAQ,CACnB+gC,EAAKlmB,gBAEL,QAAS9a,EAAI,EAAGA,EAAI4lC,EAAQ3lC,OAAQD,IAAK,CACxC,IAAIyuB,EAASmX,EAAQ5lC,GAAGkB,aAAa,QAAA,EACjCnB,EAAK6lC,EAAQ5lC,GAAGkB,aAAa,IAAA,EAC7BkH,EAASw9B,EAAQ5lC,GAAGkB,aAAa,QAAA,EACrC,OAAQutB,EAAAA,CACP,IAAK,WACJroB,KAAKH,UAAU,iBAAkB,CAAC2/B,EAAQ5lC,CAAAA,EAAID,EAAIqI,CAAAA,CAAAA,EAClD,MACD,IAAK,UACJhC,KAAKH,UAAU,iBAAkB,CAAC2/B,EAAQ5lC,CAAID,EAAAA,EAAIqI,IAClD,MACD,IAAK,UACJhC,KAAKH,UAAU,iBAAkB,CAAC2/B,EAAQ5lC,CAAAA,EAAID,EAAIqI,CAGpD,CAAA,CAAA,CAAA,CACD44B,EAAKlmB,aAAAA,EACL,CACDkmB,EAAKkE,aAAe,GACpBlE,EAAO,IACV,CAAA,CACE,EAED6E,WAAY,WACXz/B,KAAKH,UAAU,YAAa,CAAA,CAAA,EAC5BG,KAAKoW,gBAELpW,EAAAA,KAAKyzB,YAAc,CAAA,EACnBzzB,KAAKuzB,aAAe,GACpBvzB,KAAKwzB,SAAW,GAChBxzB,KAAKs0B,SAAW,KAChBt0B,KAAKu0B,SAAW,KAAA,OACTv0B,KAAKw9B,YACZ,EAEDja,IAAK,SAASA,GACbvjB,KAAKm0B,gBAAkBn0B,KAAKo9B,iBAAmB7Z,CAC/C,EAED6W,iBAAkB,SAAS5zB,EAAAA,CAC1B,GAAWA,OAAAA,GAAS,SACnB,OAAOA,EAGR,IAAIyG,EAAOjN,KAAKgzB,WAAWllB,MAAMb,KAAKzG,CAMtC,EAAA,OALIxG,KAAKq0B,SAAW,qBACZpnB,EAAKtT,GAAAA,OACLsT,EAAKjN,KAAK8zB,eAGXvV,KAAKC,UAAUvR,CACtB,CAAA,EAIDguB,4BAA6B,SAASN,EAAAA,CACrC,IAAI+E,EACJ,GAAG/E,EAAW36B,KAAK8zB,YAAAA,WAElB,QAAQl6B,KADR8lC,EAAgB,CAAA,EACH/E,EACZ+E,EAAc9lC,CAAKoG,EAAAA,KAAKi7B,4BAA4BN,EAAW/gC,CAAAA,CAAAA,OAGhE8lC,EAAgB1/B,KAAKo7B,uBAAuBT,CAE7C,EAAA,OAAO+E,CACP,EACDtE,uBAAwB,SAASuE,EAChC,CAAA,IAAIC,EAAS,KAUb,OATGD,IACCA,EAAY3/B,KAAK8zB,YAAAA,IAAkB,YACrC8L,EAAS,CAAA,GACFjmC,GAAKgmC,EAAYhmC,GACxBimC,EAAO5/B,KAAK8zB,YAAgB6L,EAAAA,EAAY3/B,KAAK8zB,YAAAA,GAE7C8L,EAASD,GAGJC,CACP,EAEDtD,mBAAoB,SAASvd,EAE5B,CAAA,QADI0U,EAAczzB,KAAKyzB,YAAYhxB,MAAAA,EAC1B7I,EAAI,EAAGA,EAAI65B,EAAY55B,OAAQD,IAAK,CAC5C,IAAIu/B,EAAQ1F,EAAY75B,CACpBoG,EAAAA,KAAKgzB,WAAWuG,YAAYJ,EAAOn5B,KAAK8zB,YAAAA,GAC3C/U,EAAK5T,KAAKnL,KAAMm5B,CAEjB,CAAA,CACD,EAED0G,iBAAkB,SAASC,EAC1B,CAAA,IAAIC,EAAgB,CAAA,EAChBhpC,EAAYiJ,KAAKgzB,WACjB/lB,EAAOlW,EAAU+W,MAAMb,KAAK6yB,GAChC,QAASlmC,KAAKqT,EACTrT,EAAEmN,QAAQ,GAAA,IAAS,GAEZkG,EAAKrT,CACZqT,IAAAA,EAAKrT,CAAG0nB,EAAAA,eACVye,EAAcnmC,CAAK7C,EAAAA,EAAU8xB,SAASmX,WAAW/yB,EAAKrT,CAC3B,CAAA,EAAA,OAAXqT,EAAKrT,CAAAA,GAAM,SAC3BmmC,EAAcnmC,CAAKoG,EAAAA,KAAK6/B,iBAAiB5yB,EAAKrT,IACrCqT,EAAKrT,CACdmmC,IADqB,KACrBA,EAAcnmC,GAAK,GAEnBmmC,EAAcnmC,CAAKqT,EAAAA,EAAKrT,IAK3B,OADAmmC,EAAc//B,KAAK8zB,YAAAA,EAAgB/8B,EAAUwiC,YAAYuG,EAAKnmC,GAAIqG,KAAK8zB,cAChEiM,CACP,EACD7F,YAAa,SAASvgC,GACrB,IAAIsmC,EAAWjgC,KAAKgzB,WAAW53B,SAASzB,CAIxC,EAAA,OAHKsmC,IACJA,EAAW,CAAEtmC,GAAIA,CAAAA,GAEXqG,KAAK6/B,iBAAiBI,EAC7B,CEv5Ba,EAAA,MAAAC,GAAA,CACdxnC,KAAM,CACLknB,WAAY,CAAC,eAAgB,OAAQ,OAAQ,QAAS,OAAQ,SAAU,OAAQ,KAAM,QAAS,cAAe,eAAgB,aAC9HD,EAAAA,YAAa,CAAC,QAAS,SAAU,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,UACnH8B,SAAU,CAAC,QAAS,UAAW,WAAY,WAAY,SAAU,SAAU,OAAA,EAC3EF,UAAW,CAAC,MAAO,QAAS,SAAU,SAAU,OAAQ,OAAQ,KAEjEyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,QACtB+N,QAAS,MACTC,SAAU,QACVC,UAAW,MACXlzB,UAAW,WACXmzB,UAAW,OACXC,YAAa,QACbC,aAAc,SACdC,UAAW,QACXC,YAAa,MACbC,gBAAiB,oCACjBC,iBAAkB,0CAClBC,oBAAqB,QACrBC,aAAc,iBACdC,SAAU,aAEVC,kBAAmB,kDACnBC,kBAAmB,cACnBC,iBAAkB,QAClBC,sBAAuB,QACvBC,mBAAoB,cACpBC,uBAAwB,aAGxBC,SAAU,OAGVrS,eAAgB,iBAChBC,aAAc,eAGdwH,WAAY,KACZC,eAAgB,SAGhB7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAM,OACNC,OAAQ,SAGRC,iBAAkB,OAClBC,kBAAmB,SACnBC,mBAAoB,OACpBC,kBAAmB,OACnBC,sBAAuB,KACvBC,sBAAuB,MACvBC,uBAAwB,aACxBC,YAAa,YACbC,uBAAwB,2BACxBC,wBAAyB,QACzBC,yBAA0B,KAC1BC,sBAAuB,SACvBC,wBAAyB,MACzBC,gCAAiC,KACjCC,+BAAgC,MAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,MACtBC,kBAAmB,MACnBC,iBAAkB,oBAClBC,6BAA8B,UAC9BC,kBAAmB,MACnBC,kBAAmB,WAEnBC,aAAc,QACdC,aAAc,SACdC,gBAAiB,aACjBC,cAAe,WACfC,eAAgB,SAChBC,cAAe,SACfC,cAAe,QACfC,gBAAiB,MACjBC,iBAAkB,QAClBC,kBAAmB,MACnBC,iBAAkB,MAClBC,eAAgB,aAChBC,YAAa,QAEbC,oBAAqB,CAAC,QAAS,SAAU,OAAQ,QAAS,OAAQ,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,QAAA,EAC3HC,kBAAmB,CAAC,QAAS,UAAW,WAAY,WAAY,SAAU,SAAU,OCxFvEC,CAAAA,CAAAA,EAAAA,GAAA,CACdxrC,KAAM,CACLknB,WAAY,CAAC,WAAY,OAAQ,UAAW,WAAY,MAAO,UAAW,SAAU,UAAW,WAAY,aAAc,WAAY,SACrID,EAAAA,YAAa,CAAC,QAAS,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,OAAQ,QACjG8B,SAAU,CAAE,UAAW,aAAc,UAAW,SAAU,SAAU,UAAW,UAC/EF,UAAW,CAAC,KAAM,KAAM,MAAO,KAAM,MAAO,KAAM,IAAA,CAAA,EAEnDyN,OAAQ,CACPoD,qBAAsB,QACtB+N,QAAS,QACTC,SAAU,UACVC,UAAW,QACXlzB,UAAW,eACXmzB,UAAW,WACXC,YAAa,WACbC,aAAc,SACdC,UAAW,UACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,gDAClBC,oBAAqB,WACrBC,aAAc,cACdC,SAAU,cAEVC,kBAAmB,mDACnBC,kBAAmB,aACnBC,iBAAkB,YAClBC,sBAAuB,WACvBC,mBAAoB,mBACpBC,uBAAwB,qBAGxB8C,WAAY,OACZzrC,KAAM,OACN0rC,YAAa,WAGbC,SAAU,MAGVC,gBAAiB,OAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,QAClBC,kBAAmB,UACnBC,mBAAoB,QACpBC,kBAAmB,MACnBC,sBAAuB,QACvBC,sBAAuB,QACvBC,uBAAwB,uBACxBC,YAAa,mBACbC,uBAAwB,UACxBC,wBAAyB,YACzBC,yBAA0B,GAC1BC,sBAAuB,iBACvBC,wBAAyB,SACzBC,gCAAiC,SACjCC,+BAAgC,QAChCC,kBAAmB,GACnBC,iBAAkB,GAClBC,qBAAsB,QACtBC,kBAAmB,GACnBC,iBAAkB,sBAClBC,6BAA8B,WAC9BC,kBAAmB,GACnBC,kBAAmB,MAEnBC,aAAc,SACdC,aAAc,cACdC,gBAAiB,uBACjBC,cAAe,gBACfC,eAAgB,cAChBC,cAAe,YACfC,cAAe,eACfC,gBAAiB,QACjBC,iBAAkB,UAClBC,kBAAmB,QACnBC,iBAAkB,MAClBC,eAAgB,UAChBC,YAAa,eAEbC,oBAAqB,CAAC,WAAY,SAAU,WAAY,YAAa,MAAO,UAAW,SAAU,SAAU,UAAW,cAAe,YAAa,UAClJC,kBAAmB,CAAC,UAAW,aAAc,UAAW,SAAU,SAAU,UAAW,QAAA,CAAA,CAAA,ECtG1EM,GAAA,CACd7rC,KAAM,CACLknB,WAAY,CAAC,QAAS,SAAU,OAAQ,QAAS,OAAQ,OAAQ,SAAU,QAAS,WAAY,UAAW,WAAY,UAAA,EACvHD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,WAAY,UAAW,UAAW,WAAY,SAAU,YAAa,YAChFF,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAA,CAAA,EAEjDyN,OAAQ,CACPoD,qBAAsB,MACtB+N,QAAS,MACTC,SAAU,UACVC,UAAW,MACXlzB,UAAW,mBACXmzB,UAAW,UACXC,YAAa,aACbC,aAAc,UACdC,UAAW,SACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,yDAClBC,oBAAqB,aACrBC,aAAc,mBACdC,SAAU,aAEVC,kBAAmB,0DACnBC,kBAAmB,4BACnBC,iBAAkB,UAClBC,sBAAuB,SACvBC,mBAAoB,aACpBC,uBAAwB,kBAGxB8C,WAAY,SACZzrC,KAAM,OACN0rC,YAAa,aAGbC,SAAU,MAGVC,gBAAiB,SAGjBhD,SAAU,QAGVrS,eAAgB,iBAChBC,aAAc,eAGdwH,WAAY,KACZC,eAAgB,SAGhB7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAM,OACNC,OAAQ,SAGRC,iBAAkB,QAClBC,kBAAmB,WACnBC,mBAAoB,UACpBC,kBAAmB,QACnBC,sBAAuB,OACvBC,sBAAuB,MACvBC,uBAAwB,qBACxBC,YAAa,gBACbC,uBAAwB,6BACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,WACvBC,wBAAyB,MACzBC,gCAAiC,OACjCC,+BAAgC,MAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,MACtBC,kBAAmB,MACnBC,iBAAkB,6BAClBC,6BAA8B,cAC9BC,kBAAmB,UACnBC,kBAAmB,gBAEnBC,aAAc,MACdC,aAAc,WACdC,gBAAiB,qBACjBC,cAAe,eACfC,eAAgB,WAChBC,cAAe,WACfC,cAAe,gBACfC,gBAAiB,MACjBC,iBAAkB,UAClBC,kBAAmB,MACnBC,iBAAkB,MAClBC,eAAgB,aAChBC,YAAa,YAEbC,oBAAqB,CAAC,QAAS,SAAU,OAAQ,QAAS,OAAQ,OAAQ,SAAU,QAAS,WAAY,UAAW,WAAY,UAChIC,EAAAA,kBAAmB,CAAC,WAAY,UAAW,UAAW,WAAY,SAAU,YAAa,cClG5EO,GAAA,CACd9rC,KAAM,CACLknB,WAAY,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAChFD,EAAAA,YAAa,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAA,EAClF8B,SAAU,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KACrDF,EAAAA,UAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAE3CyN,OAAQ,CACPoD,qBAAsB,KACtB+N,QAAS,IACTC,SAAU,IACVC,UAAW,IACXlzB,UAAW,OACXmzB,UAAW,KACXC,YAAa,KACbC,aAAc,KACdC,UAAW,KACXC,YAAa,KACbC,gBAAiB,aACjBC,iBAAkB,UAClBC,oBAAqB,KACrBC,aAAc,OACdC,SAAU,KAEVC,kBAAkB,kBAClBC,kBAAkB,OAClBC,iBAAiB,KACjBC,sBAAsB,KACtBC,mBAAoB,OACpBC,uBAAwB,OAGxB8C,WAAW,KACXzrC,KAAK,KACL0rC,YAAY,KAGZC,SAAS,KAGTC,gBAAiB,KAGjBhD,SAAS,KAGTrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,KAClBC,kBAAmB,KACnBC,mBAAoB,KACpBC,kBAAmB,KACnBC,sBAAuB,IACvBC,sBAAuB,IACvBC,uBAAwB,QACxBC,YAAa,QACbC,uBAAwB,OACxBC,wBAAyB,KACzBC,yBAA0B,IAC1BC,sBAAuB,MACvBC,wBAAyB,IACzBC,gCAAiC,IACjCC,+BAAgC,IAChCC,kBAAmB,IACnBC,iBAAkB,IAClBC,qBAAsB,IACtBC,kBAAmB,IACnBC,iBAAkB,QAClBC,6BAA8B,MAC9BC,kBAAmB,KACnBC,kBAAmB,MAEnBC,aAAc,KACdC,aAAc,KACdC,gBAAiB,QACjBC,cAAe,KACfC,eAAgB,KAChBC,cAAe,KACfC,cAAe,MACfC,gBAAiB,IACjBC,iBAAkB,IAClBC,kBAAmB,IACnBC,iBAAkB,IAClBC,eAAgB,MAChBC,YAAa,KAEbC,oBAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,OACzFC,kBAAmB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,CAAA,CAAA,EC7GjDQ,GAAA,CACd/rC,KAAM,CACLknB,WAAY,CAAC,QAAS,OAAQ,SAAU,QAAS,SAAU,SAAU,WAAY,QAAS,OAAQ,QAAS,WAAY,UACvHD,EAAAA,YAAa,CAAC,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,KAAA,EAC5F8B,SAAU,CAAC,SAAU,UAAW,QAAS,SAAU,UAAW,QAAS,QACvEF,EAAAA,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDyN,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,QACVC,UAAW,QACXlzB,UAAW,eACXmzB,UAAW,SACXC,YAAa,OACbC,aAAc,SACdC,UAAW,SACXC,YAAa,SACbC,gBAAiB,GACjBC,iBAAkB,wCAClBC,oBAAqB,WACrBC,aAAc,iBAGdE,kBAAmB,sDACnBC,kBAAmB,qBACnBC,iBAAkB,UAClBC,sBAAuB,UACvBC,mBAAoB,cACpBC,uBAAwB,mBAGxB8C,WAAY,UACZzrC,KAAM,QACN0rC,YAAa,WAGbC,SAAU,MACVtD,SAAU,WAGVuD,gBAAiB,UAGjBhD,SAAU,SAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,QAClBC,kBAAmB,QACnBC,mBAAoB,UACpBC,kBAAmB,QACnBC,sBAAuB,QACvBC,sBAAuB,MACvBC,uBAAwB,eACxBC,YAAa,kBACbC,uBAAwB,YACxBC,wBAAyB,YACzBC,yBAA0B,KAC1BC,sBAAuB,cACvBC,wBAAyB,QACzBC,gCAAiC,QACjCC,+BAAgC,QAChCC,kBAAmB,KACnBC,iBAAkB,IAClBC,qBAAsB,QACtBC,kBAAmB,GACnBC,iBAAkB,oBAClBC,6BAA8B,WAC9BC,kBAAmB,KACnBC,kBAAmB,QAEnBC,aAAc,QACdC,aAAc,YACdC,gBAAiB,qBACjBC,cAAe,cACfC,eAAgB,cAChBC,cAAe,YACfC,cAAe,UACfC,gBAAiB,MACjBC,iBAAkB,QAClBC,kBAAmB,QACnBC,iBAAkB,MAClBC,eAAgB,WAChBC,YAAa,QAEbC,oBAAqB,CAAC,QAAS,OAAQ,SAAU,QAAS,SAAU,SAAU,WAAY,QAAS,OAAQ,QAAS,WAAY,UAChIC,EAAAA,kBAAmB,CAAC,UAAW,UAAW,QAAS,SAAU,UAAW,QAAS,YCvGpES,GAAA,CACdhsC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAA,EACzHD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,QAAA,EACzEF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEvDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,MACVC,UAAW,QACXlzB,UAAW,gBACXmzB,UAAW,MACXC,YAAa,UACbC,aAAc,WACdC,UAAW,SACXC,YAAa,OACbC,gBAAiB,6CACjBC,iBAAkB,0DAClBC,oBAAqB,cACrBC,aAAc,cAGdE,kBAAmB,wDACnBC,kBAAmB,oBACnBC,iBAAkB,YAClBC,sBAAuB,YACvBC,mBAAoB,iBACpBC,uBAAwB,kBAGxB8C,WAAY,YACZzrC,KAAM,OACN0rC,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,YAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,UACnBC,mBAAoB,WACpBC,kBAAmB,QACnBC,sBAAuB,OACvBC,sBAAuB,MACvBC,uBAAwB,qBACxBC,YAAa,qBACbC,uBAAwB,wBACxBC,wBAAyB,WACzBC,yBAA0B,MAC1BC,sBAAuB,UACvBC,wBAAyB,QACzBC,gCAAiC,OACjCC,+BAAgC,QAChCC,kBAAmB,MACnBC,iBAAkB,IAClBC,qBAAsB,QACtBC,kBAAmB,GACnBC,iBAAkB,iBAClBC,6BAA8B,aAC9BC,kBAAmB,QACnBC,kBAAmB,OAEnBC,aAAc,SACdC,aAAc,WACdC,gBAAiB,eACjBC,cAAe,WACfC,eAAgB,aAChBC,cAAe,WACfC,cAAe,kBACfC,gBAAiB,MACjBC,iBAAkB,MAClBC,kBAAmB,QACnBC,iBAAkB,KAClBC,eAAgB,UAChBC,YAAa,UAEbC,oBAAqB,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACjIC,kBAAmB,CAAC,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,QAAA,CAAA,CAAA,ECtGrEU,GAAA,CACdjsC,KAAM,CACLknB,WAAY,CAAC,UAAW,WAAY,SAAU,SAAU,OAAQ,QAAS,QAAS,UAAW,cAAe,WAAY,aAAc,WAAA,EACtID,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAE,UAAW,SAAU,WAAY,YAAa,cAAe,UAAW,SACpFF,EAAAA,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDyN,OAAQ,CACPoD,qBAAsB,QACtB+N,QAAS,MACTC,SAAU,QACVC,UAAW,QACXlzB,UAAW,gBACXmzB,UAAW,YACXC,YAAa,YACbC,aAAc,UACdC,UAAW,SACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,4BAClBC,oBAAqB,eACrBC,aAAc,aACdC,SAAU,aAEVC,kBAAmB,yEACnBC,kBAAmB,eACnBC,iBAAkB,MAClBC,sBAAuB,KACvBC,mBAAoB,2BACpBC,uBAAwB,4BAGxB8C,WAAY,SACZzrC,KAAM,QACN0rC,YAAa,eAGbC,SAAU,QAGVC,gBAAiB,SAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,UAClBC,kBAAmB,cACnBC,mBAAoB,YACpBC,kBAAmB,WACnBC,sBAAuB,QACvBC,sBAAuB,MACvBC,uBAAwB,sBACxBC,YAAa,wBACbC,uBAAwB,YACxBC,wBAAyB,WACzBC,yBAA0B,KAC1BC,sBAAuB,kBACvBC,wBAAyB,SACzBC,gCAAiC,QACjCC,+BAAgC,SAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,SACtBC,kBAAmB,GACnBC,iBAAkB,gBAClBC,6BAA8B,cAC9BE,kBAAmB,SACnBD,kBAAmB,OAEnBE,aAAc,MACdC,aAAc,YACdC,gBAAiB,gBACjBC,cAAe,aACfC,eAAgB,cAChBC,cAAe,aACfC,cAAe,oBACfC,gBAAiB,MACjBC,iBAAkB,QAClBC,kBAAmB,QACnBC,iBAAkB,OAClBC,eAAgB,WAChBC,YAAa,QAEbC,oBAAqB,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UACjIC,EAAAA,kBAAmB,CAAC,UAAW,SAAU,WAAY,WAAY,aAAc,UAAW,aCtG7E3tB,GAAA,CACd5d,KAAM,CACLknB,WAAY,CAAC,aAAc,cAAe,UAAW,WAAY,QAAS,UAAW,UAAW,YAAa,cAAe,YAAa,YAAa,YACtJD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,KAAA,EAC7F8B,SAAU,CAAC,UAAW,UAAW,QAAS,UAAW,SAAU,YAAa,SAC5EF,EAAAA,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAEjDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,SACtB+N,QAAS,QACTC,SAAU,WACVC,UAAW,QACXlzB,UAAW,WACXmzB,UAAW,aACXC,YAAa,QACbC,aAAc,eACdC,UAAW,cACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,uDAClBC,oBAAqB,YACrBC,aAAc,mBACdC,SAAU,eAGVC,kBAAmB,2EACnBC,kBAAmB,wBACnBC,iBAAkB,WAClBC,sBAAuB,SACvBC,mBAAoB,0BACpBC,uBAAwB,4BAGxB8C,WAAY,mBACZzrC,KAAM,aACN0rC,YAAa,YAGbC,SAAU,OAGVC,gBAAiB,mBAGjBhD,SAAU,SAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,YAClBC,kBAAmB,eACnBC,mBAAoB,WACpBC,kBAAmB,UACnBC,sBAAuB,OACvBC,sBAAuB,QACvBC,uBAAwB,gBACxBC,YAAa,kBACbC,uBAAwB,gCACxBC,wBAAyB,YACzBC,yBAA0B,MAC1BC,sBAAuB,aACvBC,wBAAyB,OACzBC,gCAAiC,OACjCC,+BAAgC,OAChCC,kBAAmB,MACnBC,iBAAkB,MAClBC,qBAAsB,QACtBC,kBAAmB,OACnBC,iBAAkB,0BAClBC,6BAA8B,cAC9BE,kBAAmB,YACnBD,kBAAmB,WAEnBE,aAAc,OACdC,aAAc,YACdC,gBAAiB,qBACjBC,cAAe,gBACfC,eAAgB,YAChBC,cAAe,aACfC,cAAe,gBACfC,gBAAiB,QACjBC,iBAAkB,WAClBC,kBAAmB,QACnBC,iBAAkB,SAClBC,eAAgB,gBAChBC,YAAa,QAEbC,oBAAqB,CAAC,aAAc,cAAe,UAAW,WAAY,QAAS,UAAW,UAAW,YAAa,cAAe,YAAa,YAAa,YAAA,EAC/JC,kBAAmB,CAAC,UAAW,UAAW,QAAS,UAAW,SAAU,YAAa,SCvGxEW,CAAAA,CAAAA,EAAAA,GAAA,CACdlsC,KAAK,CACJknB,WAAW,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAA,EAC1HD,YAAY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC1F8B,EAAAA,SAAS,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,UAAA,EAC5EF,UAAU,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEtDyN,CAAAA,EAAAA,OAAO,CACNoD,qBAAqB,QACrB+N,QAAQ,MACRC,SAAS,OACTC,UAAU,QACVlzB,UAAU,YACVmzB,UAAU,OACVC,YAAY,SACZC,aAAa,UACbC,UAAU,OACVC,YAAY,SACZC,gBAAgB,GAChBC,iBAAiB,mDACjBC,oBAAoB,cACpBC,aAAa,cACbC,SAAS,WAGTC,kBAAkB,wDAClBC,kBAAkB,eAClBC,iBAAiB,WACjBC,sBAAsB,UACtBC,mBAAoB,cACpBC,uBAAwB,kBAGxB8C,WAAW,SACXzrC,KAAK,OACL0rC,YAAY,cAGZC,SAAS,OAGTC,gBAAiB,SAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,QAClBC,kBAAmB,SACnBC,mBAAoB,UACpBC,kBAAmB,SACnBC,sBAAuB,QACvBC,sBAAuB,MACvBC,uBAAwB,gBACxBC,YAAa,gBACbC,uBAAwB,kBACxBC,wBAAyB,SACzBC,yBAA0B,KAC1BC,sBAAuB,YACvBC,wBAAyB,QACzBC,gCAAiC,QACjCC,+BAAgC,QAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,MACtBC,kBAAmB,QACnBC,iBAAkB,cAClBC,6BAA8B,cAC9BC,kBAAmB,QACnBC,kBAAmB,SAEnBC,aAAc,QACdC,aAAc,YACdC,gBAAiB,gBACjBC,cAAe,aACfC,eAAgB,cAChBC,cAAe,aACfC,cAAe,SACfC,gBAAiB,MACjBC,iBAAkB,OAClBC,kBAAmB,QACnBC,iBAAkB,OAClBC,eAAgB,UAChBC,YAAa,OAEbC,oBAAqB,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAA,EACpIC,kBAAmB,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,UAAA,CAAA,CAAA,ECpGzEY,GAAA,CACdnsC,KAAM,CACLknB,WAAY,CAAC,QAAS,UAAW,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,aAAc,UAAW,YAAa,aAC7HD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAC,UAAW,QAAS,SAAU,YAAa,SAAU,UAAW,QAC3EF,EAAAA,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,CAAA,EAEvDyN,OAAQ,CACPoD,qBAAsB,MACtB+N,QAAS,MACTC,SAAU,SACVC,UAAW,MACXlzB,UAAW,eACXmzB,UAAW,UACXC,YAAa,WACbC,aAAc,WACdC,UAAW,SACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,oDAClBC,oBAAqB,cACrBC,aAAc,UACdC,SAAU,cAEVC,kBAAmB,qDACnBC,kBAAmB,mBACnBC,iBAAkB,WAClBC,sBAAuB,YACvBC,mBAAoB,kBACpBC,uBAAwB,qBAGxB8C,WAAY,MACZzrC,KAAM,QACN0rC,YAAa,cAGbC,SAAU,MAGVC,gBAAiB,MAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,cAClBC,kBAAmB,eACnBC,mBAAoB,eACpBC,kBAAmB,aACnBC,sBAAuB,OACvBC,sBAAuB,MACvBC,uBAAwB,0BACxBC,YAAa,gBACbC,uBAAwB,UACxBC,wBAAyB,SACzBC,yBAA0B,KAC1BC,sBAAuB,YACvBC,wBAAyB,MACzBC,gCAAiC,OACjCC,+BAAgC,MAChCC,kBAAmB,KACnBC,iBAAkB,MAClBC,qBAAsB,MACtBC,kBAAmB,MACnBC,iBAAkB,4BAClBC,6BAA8B,cAC9BE,kBAAmB,MACnBD,kBAAmB,aAEnBE,aAAc,QACdC,aAAc,WACdC,gBAAiB,qBACjBC,cAAe,cACfC,eAAgB,WAChBC,cAAe,WACfC,cAAe,gBACfC,gBAAiB,MACjBC,iBAAkB,SAClBC,kBAAmB,MACnBC,iBAAkB,MAClBC,eAAgB,cAChBC,YAAa,UAEbC,oBAAqB,CAAC,QAAS,UAAW,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,YAAa,UAAW,YAAa,WACrIC,EAAAA,kBAAmB,CAAC,UAAW,QAAS,SAAU,YAAa,SAAU,UAAW,QAAA,CAAA,CAAA,ECzGvEa,GAAA,CACdpsC,KAAM,CACLknB,WAAY,CAAC,WAAY,WAAY,YAAa,WAAY,WAAY,eAAgB,gBAAiB,SAAU,UAAW,UAAW,YAAa,UACxJD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3F8B,SAAU,CAAC,YAAa,YAAa,UAAW,cAAe,UAAW,YAAa,UAAA,EACvFF,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAEjDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,SACtB+N,QAAS,QACTC,SAAU,SACVC,UAAW,WACXlzB,UAAW,iBACXmzB,UAAW,WACXC,YAAa,OACbC,aAAc,SACdC,UAAW,UACXC,YAAa,SACbC,gBAAiB,GACjBC,iBAAkB,wCAClBC,oBAAqB,SACrBC,aAAc,YACdC,SAAU,aAEVC,kBAAmB,kEACnBC,kBAAmB,mBACnBC,iBAAkB,6BAClBC,sBAAuB,0BACvBC,mBAAoB,gBACpBC,uBAAwB,gBAGxB8C,WAAY,cACZzrC,KAAM,aACN0rC,YAAa,SAGbC,SAAU,SAGVC,gBAAiB,cAGjBhD,SAAU,SAGVrS,eAAe,qBACfC,aAAa,mBAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,uBAClBC,kBAAmB,cACnBC,mBAAoB,gBACpBC,kBAAmB,aACnBC,sBAAuB,OACvBC,sBAAuB,kBACvBC,uBAAwB,2BACxBC,YAAa,cACbC,uBAAwB,4CACxBC,wBAAyB,SACzBC,yBAA0B,GAC1BC,sBAAuB,8BACvBC,wBAAyB,WACzBC,gCAAiC,OACjCC,+BAAgC,WAChCC,kBAAmB,GACnBC,iBAAkB,GAClBC,qBAAsB,kBACtBC,kBAAmB,WACnBC,iBAAkB,mBAClBC,6BAA8B,uBAC9BE,kBAAmB,SACnBD,kBAAmB,GAEnBE,aAAc,aACdC,aAAc,aACdC,gBAAiB,iBACjBC,cAAe,cACfC,eAAgB,gBAChBC,cAAe,aACfC,cAAe,aACfC,gBAAiB,QACjBC,iBAAkB,SAClBC,kBAAmB,WACnBC,iBAAkB,QAClBC,eAAgB,mBAChBC,YAAa,UAEbC,oBAAqB,CAAC,WAAY,WAAY,YAAa,WAAY,WAAY,eAAgB,gBAAiB,SAAU,UAAW,UAAW,YAAa,UAAA,EACjKC,kBAAmB,CAAC,YAAa,YAAa,UAAW,cAAe,UAAW,YAAa,UCtGnFc,CAAAA,CAAAA,EAAAA,GAAA,CACdrsC,KAAM,CACLknB,WAAY,CAAC,UAAW,UAAW,OAAQ,QAAS,MAAO,OAAQ,UAAW,OAAQ,YAAa,UAAW,WAAY,UAC1HD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,MAAO,MAAO,MAAO,MAAO,KAC7F8B,EAAAA,SAAU,CAAC,WAAY,QAAS,QAAS,WAAY,QAAS,WAAY,UAC1EF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,CAAA,EAEvDyN,OAAQ,CACPoD,qBAAsB,cACtB+N,QAAS,OACTC,SAAU,UACVC,UAAW,OACXlzB,UAAW,mBACXmzB,UAAW,cACXC,YAAa,UACbC,aAAc,UACdC,UAAW,WACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,sDAClBC,oBAAqB,cACrBC,aAAc,UACdC,SAAU,mBAEVC,kBAAmB,2DACnBC,kBAAmB,cACnBC,iBAAkB,YAClBC,sBAAuB,SACvBC,mBAAoB,oBACpBC,uBAAwB,qBAGxB8C,WAAY,OACZzrC,KAAM,OACN0rC,YAAa,cAGbC,SAAU,QAGVC,gBAAiB,OAGjBhD,SAAU,SAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,cAClBC,kBAAmB,eACnBC,mBAAoB,YACpBC,kBAAmB,WACnBC,sBAAuB,SACvBC,sBAAuB,OACvBC,uBAAwB,4BACxBC,YAAa,sBACbC,uBAAwB,WACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,cACvBC,wBAAyB,OACzBC,gCAAiC,SACjCC,+BAAgC,OAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,OACtBC,kBAAmB,OACnBC,iBAAkB,gCAClBC,6BAA8B,cAC9BE,kBAAmB,MACnBD,kBAAmB,QAEnBE,aAAc,SACdC,aAAc,cACdC,gBAAiB,uBACjBC,cAAe,iBACfC,eAAgB,cAChBC,cAAe,eACfC,cAAe,eACfC,gBAAiB,OACjBC,iBAAkB,UAClBC,kBAAmB,OACnBC,iBAAkB,QAClBC,eAAgB,YAChBC,YAAa,aAEbC,oBAAqB,CAAC,UAAW,UAAW,OAAQ,QAAS,MAAO,OAAQ,UAAW,OAAQ,YAAa,UAAW,WAAY,YACnIC,kBAAmB,CAAC,WAAY,QAAS,QAAS,WAAY,QAAS,WAAY,QAAA,CAAA,CAAA,ECtGtEe,GAAA,CACdtsC,KAAM,CACLknB,WAAY,CAAC,QAAS,SAAU,MAAO,QAAS,MAAO,OAAQ,OAAQ,SAAU,SAAU,UAAW,SAAU,OAAA,EAChHD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,QAAS,MAAO,QAAS,QAAS,QAAS,OAAQ,KAC9DF,EAAAA,UAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,MAE3CyN,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,OACVC,UAAW,OACXlzB,UAAW,WACXmzB,UAAW,OACXC,YAAa,MACbC,aAAc,QACdC,UAAW,OACXC,YAAa,MACbC,gBAAiB,GACjBC,iBAAkB,0BAClBC,oBAAqB,QACrBC,aAAc,QAEdE,kBAAmB,2CACnBC,kBAAmB,cACnBC,iBAAkB,UAClBC,sBAAuB,OACvBJ,SAAU,UACVK,mBAAoB,gBACpBC,uBAAwB,aAGxB8C,WAAY,UACZzrC,KAAM,QACN0rC,YAAa,QAGbC,SAAU,OAGVC,gBAAiB,UAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,iBAGbwH,WAAW,KACXC,eAAe,MAGf7kB,KAAM,MACNyvB,KAAM,QACNC,KAAM,MACNC,MAAO,OACP58B,IAAK,MACL68B,KAAK,MACLC,OAAQ,MAGRC,iBAAkB,OAClBC,kBAAmB,QACnBC,mBAAoB,QACpBC,kBAAmB,OACnBC,sBAAuB,UACvBC,sBAAuB,OACvBC,uBAAwB,oBACxBC,YAAa,WACbC,uBAAwB,iBACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,UACvBC,wBAAyB,SACzBC,gCAAiC,UACjCC,+BAAgC,OAChCC,kBAAmB,KACnBC,iBAAkB,QAClBC,qBAAsB,OACtBC,kBAAmB,OACnBC,iBAAkB,kBAClBC,6BAA8B,UAC9BE,kBAAmB,WACnBD,kBAAmB,OAEnBE,aAAc,SACdC,aAAc,SACdC,gBAAiB,eACjBC,cAAe,UACfC,eAAgB,UAChBC,cAAe,SACfC,cAAe,cACfC,gBAAiB,MACjBC,iBAAkB,OAClBC,kBAAmB,OACnBC,iBAAkB,MAClBC,eAAgB,SAChBC,YAAa,SAEbC,oBAAqB,CAAC,QAAS,SAAU,MAAO,QAAS,MAAO,OAAQ,OAAQ,SAAU,SAAU,UAAW,SAAU,OACzHC,EAAAA,kBAAmB,CAAC,QAAS,MAAO,QAAS,QAAS,QAAS,OAAQ,SCtG1DgB,GAAA,CACdvsC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,SAAU,YAAa,aAAc,UAAW,WAAY,UACvID,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAC,WAAY,QAAS,OAAQ,SAAU,YAAa,SAAU,SACzEF,EAAAA,UAAW,CAAC,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAEnDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,KACtB+N,QAAS,MACTC,SAAU,MACVC,UAAW,QACXlzB,UAAW,aACXmzB,UAAW,SACXC,YAAa,QACbC,aAAc,YACdC,UAAW,cACXC,YAAa,SACbC,gBAAiB,GACjBC,iBAAkB,+CAClBC,oBAAqB,SACrBC,aAAc,UACdC,SAAU,cAGVC,kBAAmB,wEACnBC,kBAAmB,oBACnBC,iBAAkB,SAClBC,sBAAuB,eACvBC,mBAAoB,cACpBC,uBAAwB,sBAGxB8C,WAAY,WACZzrC,KAAM,QACN0rC,YAAa,SAGbC,SAAU,KAGVpV,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,OAClBC,kBAAmB,OACnBC,mBAAoB,OACpBC,kBAAmB,OACnBC,sBAAuB,SACvBC,sBAAuB,MACvBC,uBAAwB,kBACxBC,YAAa,wBACbC,uBAAwB,6BACxBC,wBAAyB,WACzBC,yBAA0B,QAC1BC,sBAAuB,aACvBC,wBAAyB,WACzBC,gCAAiC,SACjCC,+BAAgC,WAChCC,kBAAmB,QACnBC,iBAAkB,UAClBC,qBAAsB,MACtBC,kBAAmB,QACnBC,iBAAkB,yBAClBC,6BAA8B,UAC9BC,kBAAmB,OACnBC,kBAAmB,iBAEnBC,aAAc,OACdC,aAAc,aACdC,gBAAiB,kBACjBC,cAAe,eACfC,eAAgB,kBAChBC,cAAe,eACfC,cAAe,SACfC,gBAAiB,MACjBC,iBAAkB,MAClBC,kBAAmB,QACnBC,iBAAkB,KAClBC,eAAgB,gBAChBC,YAAa,cAEbC,oBAAqB,CAAC,SAAU,UAAW,UAAW,UAAW,QAAS,SAAU,SAAU,YAAa,aAAc,UAAW,WAAY,UAChJC,EAAAA,kBAAmB,CAAC,WAAY,QAAS,OAAQ,SAAU,YAAa,SAAU,SAAA,CAAA,CAAA,ECjGrEtqC,GAAA,CACdjB,KAAM,CACLknB,WAAY,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YAC5HD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAC,SAAU,QAAS,SAAU,OAAQ,QAAS,QAAS,OAClEF,EAAAA,UAAW,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,CAAA,EAExDyN,OAAQ,CACPoD,qBAAsB,WACtB+N,QAAS,OACTC,SAAU,SACVC,UAAW,QACXlzB,UAAW,aACXmzB,UAAW,SACXC,YAAa,QACbC,aAAc,SACdC,UAAW,OACXC,YAAa,QACbC,gBAAiB,GACjBC,iBAAkB,qBAClBC,oBAAqB,aACrBC,aAAc,UACdC,SAAU,aAGVC,kBAAmB,kCACnBC,kBAAmB,cACnBC,iBAAkB,oBAClBC,sBAAuB,cACvBC,mBAAoB,gBACpBC,uBAAwB,mBAGxB8C,WAAY,SACZzrC,KAAM,UACN0rC,YAAa,aAGbC,SAAU,QAGVC,gBAAiB,SAGjBhD,SAAU,QAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,WACnBC,mBAAoB,UACpBC,kBAAmB,UACnBC,sBAAuB,SACvBC,sBAAuB,OACvBC,uBAAwB,oBACxBC,YAAa,iBACbC,uBAAwB,4BACxBC,wBAAyB,SACzBC,yBAA0B,OAC1BC,sBAAuB,cACvBC,wBAAyB,QACzBC,gCAAiC,SACjCC,+BAAgC,QAChCC,kBAAmB,OACnBC,iBAAkB,OAClBC,qBAAsB,OACtBC,kBAAmB,QACnBC,iBAAkB,sBAClBC,6BAA8B,WAC9BC,kBAAmB,UACnBC,kBAAmB,gBAEnBC,aAAc,eACdC,aAAc,cACdC,gBAAiB,oBACjBC,cAAe,gBACfC,eAAgB,eAChBC,cAAe,eACfC,cAAe,SACfC,gBAAiB,OACjBC,iBAAkB,SAClBC,kBAAmB,QACnBC,iBAAkB,QAClBC,eAAgB,eAChBC,YAAa,WAEbC,oBAAqB,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,UAAA,EACrIC,kBAAmB,CAAC,SAAU,QAAS,SAAU,OAAQ,QAAS,QAAS,OCvG9DiB,CAAAA,CAAAA,EAAAA,GAAA,CACdxsC,KAAM,CACLknB,WAAY,CAAC,UAAW,WAAY,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,UAAW,WAAY,YACnID,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAC,WAAY,SAAU,UAAW,YAAa,UAAW,UAAW,QAC/EF,EAAAA,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,CAAA,EAEvDyN,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,SACTC,SAAU,YACVC,UAAW,OACXlzB,UAAW,eACXmzB,UAAW,QACXC,YAAa,SACbC,aAAc,WACdC,UAAW,WACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,yCAClBC,oBAAqB,cACrBC,aAAc,mBACdC,SAAU,kBAEVC,kBAAmB,4CACnBC,kBAAmB,oBACnBC,iBAAkB,cAClBC,sBAAuB,WACvBC,mBAAoB,sBACpBC,uBAAwB,uBAGxB8C,WAAY,SACZzrC,KAAM,OACN0rC,YAAa,cAGbC,SAAU,OAGVC,gBAAiB,SAGjBhD,SAAU,UAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,aAClBC,kBAAmB,cACnBC,mBAAoB,UACpBC,kBAAmB,UACnBC,sBAAuB,OACvBC,sBAAuB,SACvBC,uBAAwB,2BACxBC,YAAa,iBACbC,uBAAwB,aACxBC,wBAAyB,WACzBC,yBAA0B,KAC1BC,sBAAuB,cACvBC,wBAAyB,OACzBC,gCAAiC,OACjCC,+BAAgC,OAChCC,kBAAmB,KACnBC,iBAAkB,MAClBC,qBAAsB,SACtBC,kBAAmB,OACnBC,iBAAkB,oBAClBC,6BAA8B,YAC9BE,kBAAmB,OACnBD,kBAAmB,OAEnBE,aAAc,MACdC,aAAc,cACdC,gBAAiB,sBACjBC,cAAe,iBACfC,eAAgB,YAChBC,cAAe,YACfC,cAAe,iBACfC,gBAAiB,SACjBC,iBAAkB,YAClBC,kBAAmB,OACnBC,iBAAkB,OAClBC,eAAgB,YAChBC,YAAa,UAEbC,oBAAqB,CAAC,UAAW,WAAY,QAAS,SAAU,SAAU,SAAU,SAAU,SAAU,YAAa,UAAW,WAAY,UAC5IC,EAAAA,kBAAmB,CAAC,WAAY,SAAU,UAAW,YAAa,SAAU,UAAW,QAAA,CAAA,CAAA,ECnG1EkB,GAAA,CACdzsC,KAAM,CACLknB,WAAY,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KACjFD,EAAAA,YAAa,CAAE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,OACnF8B,SAAU,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EACrDF,UAAW,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAE3CyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,KACtB+N,QAAS,IACTC,SAAU,IACVC,UAAW,IACXlzB,UAAW,QACXmzB,UAAW,KACXC,YAAa,QACbC,aAAc,KACdC,UAAW,KACXC,YAAa,KACbC,gBAAiB,GACjBC,iBAAkB,wBAClBC,oBAAqB,WACrBC,aAAc,KACdE,kBAAmB,yBACnBC,kBAAmB,YACnBC,iBAAkB,KAClBC,sBAAuB,KACvBJ,SAAU,KACVK,mBAAoB,aACpBC,uBAAwB,SAGxB8C,WAAY,MACZzrC,KAAM,KACN0rC,YAAa,KAGbC,SAAU,KAGVC,gBAAiB,MAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,KAClBC,kBAAmB,KACnBC,mBAAoB,KACpBC,kBAAmB,KACnBC,sBAAuB,IACvBC,sBAAuB,IACvBC,uBAAwB,OACxBC,YAAa,SACbC,uBAAwB,SACxBC,wBAAyB,OACzBC,yBAA0B,KAC1BC,sBAAuB,KACvBC,wBAAyB,IACzBC,gCAAiC,IACjCC,+BAAgC,IAChCC,kBAAmB,KACnBC,iBAAkB,IAClBC,qBAAsB,IACtBC,kBAAmB,IACnBC,iBAAkB,QAClBC,6BAA8B,KAC9BC,kBAAmB,IACnBC,kBAAmB,QAEnBC,aAAc,MACdC,aAAc,KACdC,gBAAiB,OACjBC,cAAe,KACfC,eAAgB,KAChBC,cAAe,KACfC,cAAe,OACfC,gBAAiB,IACjBC,iBAAkB,IAClBC,kBAAmB,IACnBC,iBAAkB,IAClBC,eAAgB,MAChBC,YAAa,KAEbC,oBAAqB,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,MAAO,KAAA,EAC1FC,kBAAmB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KCxGjD,CAAA,CAAA,EAAA,MAAMmB,GACpB,YAAY/tC,EACX2I,CAAAA,KAAKqlC,SAAW,GAChB,UAAUzrC,KAAKvC,EACd2I,KAAKqlC,SAASzrC,CAAAA,EAAKvC,EAAOuC,CAE3B,CAAA,CAED,UAAUkc,EAAMqJ,EACfnf,CAAAA,KAAKqlC,SAASvvB,CAAAA,EAAQqJ,CACtB,CAED,UAAUrJ,EAAAA,CACT,OAAO9V,KAAKqlC,SAASvvB,CAAAA,CACrB,ECda,MAAAwvB,GAAA,CACd5sC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAA,EACxHD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,QAAA,EACzEF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEvDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,QACtB+N,QAAS,MACTC,SAAU,MACVC,UAAW,QACXlzB,UAAW,cACXmzB,UAAW,QACXC,YAAa,SACbC,aAAc,WACdC,UAAW,UACXC,YAAa,QACbC,gBAAiB,GACjBC,iBAAkB,qDAClBC,oBAAqB,cACrBC,aAAc,cAGdE,kBAAmB,8DACnBC,kBAAmB,oBACnBC,iBAAkB,KAClBC,sBAAuB,KACvBC,mBAAoB,iBACpBC,uBAAwB,mBAGxB8C,WAAY,SACZzrC,KAAM,OACN0rC,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,SAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,WACnBC,mBAAoB,WACpBC,kBAAmB,QACnBC,sBAAuB,OACvBC,sBAAuB,MACvBC,uBAAwB,iBACxBC,YAAa,gBACbC,uBAAwB,UACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,WACvBC,wBAAyB,QACzBC,gCAAiC,OACjCC,+BAAgC,QAChCC,kBAAmB,KACnBC,iBAAkB,IAClBC,qBAAsB,QACtBC,kBAAmB,GACnBC,iBAAkB,kBAClBC,6BAA8B,YAC9BE,kBAAmB,WACnBD,kBAAmB,QAEnBE,aAAc,QACdC,aAAc,WACdC,gBAAiB,cACjBC,cAAe,WACfC,eAAgB,aAChBC,cAAe,WACfC,cAAe,YACfC,gBAAiB,MACjBC,iBAAkB,MAClBC,kBAAmB,QACnBC,iBAAkB,KAClBC,eAAgB,UAChBC,YAAa,UAEbC,oBAAqB,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACjIC,kBAAmB,CAAC,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,QAAA,CAAA,CAAA,ECtGrEsB,GAAA,CACd7sC,KAAM,CACLknB,WAAY,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,WAAY,YAAa,UAAW,WAAY,UAC7HD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAC,SAAU,UAAW,UAAW,WAAY,YAAa,UAAW,UAC/EF,EAAAA,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDyN,OAAQ,CACPoD,qBAAsB,UACtB+N,QAAS,MACTC,SAAU,OACVC,UAAW,QACXlzB,UAAW,aACXmzB,UAAW,UACXC,YAAa,YACbC,aAAc,UACdC,UAAW,WACXC,YAAa,cACbC,gBAAiB,GACjBC,iBAAkB,kDAClBC,oBAAqB,eACrBC,aAAc,eACdC,SAAU,WAEVC,kBAAmB,4CACnBC,kBAAmB,gBACnBC,iBAAkB,MAClBC,sBAAuB,MACvBC,mBAAoB,kBACpBC,uBAAwB,mBAGxB8C,WAAY,SACZzrC,KAAM,QACN0rC,YAAa,eAGbC,SAAU,OAGVC,gBAAiB,SAGjBhD,SAAU,QAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,YAClBC,kBAAmB,YACnBC,mBAAoB,cACpBC,kBAAmB,YACnBC,sBAAuB,OACvBC,sBAAuB,UACvBC,uBAAwB,eACxBC,YAAa,gBACbC,uBAAwB,6BACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,aACvBC,wBAAyB,UACzBC,gCAAiC,SACjCC,+BAAgC,UAChCC,kBAAmB,KACnBC,iBAAkB,MAClBC,qBAAsB,MACtBC,kBAAmB,QACnBC,iBAAkB,kBAClBC,6BAA8B,QAC9BE,kBAAmB,cACnBD,kBAAmB,KAEnBE,aAAc,QACdC,aAAc,WACdC,gBAAiB,eACjBC,cAAe,YACfC,eAAgB,aAChBC,cAAe,WACfC,cAAe,YACfC,gBAAiB,MACjBC,iBAAkB,OAClBC,kBAAmB,QACnBC,iBAAkB,OAClBC,eAAgB,WAChBC,YAAa,UAEbC,oBAAqB,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,WAAY,YAAa,UAAW,WAAY,UACtIC,EAAAA,kBAAmB,CAAC,SAAU,UAAW,UAAW,WAAY,YAAa,UAAW,cCtG3EuB,GAAA,CACd9sC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UACxHD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,QAAA,EACzEF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEvDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,MACVC,UAAW,QACXlzB,UAAW,KACXmzB,UAAW,QACXC,YAAa,SACbC,aAAc,WACdC,UAAW,QACXC,YAAa,QACbC,gBAAiB,4CACjBC,iBAAkB,6CAClBC,oBAAqB,cACrBC,aAAc,cACdC,SAAU,WAGVC,kBAAmB,wDACnBC,kBAAmB,wBACnBC,iBAAkB,aAClBC,sBAAuB,QACvBC,mBAAoB,iBACpBC,uBAAwB,mBAGxB8C,WAAY,SACZzrC,KAAM,OACN0rC,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,SAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,WACnBC,mBAAoB,WACpBC,kBAAmB,QACnBC,sBAAuB,OACvBC,sBAAuB,MACvBC,uBAAwB,kBACxBC,YAAa,eACbC,uBAAwB,mBACxBC,wBAAyB,SACzBC,yBAA0B,KAC1BC,sBAAuB,WACvBC,wBAAyB,QACzBC,gCAAiC,OACjCC,+BAAgC,QAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,MACtBC,kBAAmB,QACnBC,iBAAkB,kBAClBC,6BAA8B,cAC9BC,kBAAmB,QACnBC,kBAAmB,cAEnBC,aAAc,QACdC,aAAc,WACdC,gBAAiB,cACjBC,cAAe,WACfC,eAAgB,aAChBC,cAAe,WACfC,cAAe,YACfC,gBAAiB,MACjBC,iBAAkB,MAClBC,kBAAmB,QACnBC,iBAAkB,KAClBC,eAAgB,UAChBC,YAAa,UAEbC,oBAAqB,CAAC,SAAU,UAAW,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,UAAA,EACjIC,kBAAmB,CAAC,SAAU,SAAU,UAAW,SAAU,UAAW,SAAU,QCvGrEwB,CAAAA,CAAAA,EAAAA,GAAA,CACd/sC,KAAM,CACLknB,WAAY,CAAC,UAAW,OAAQ,SAAU,WAAY,MAAO,WAAY,SAAU,WAAY,WAAY,cAAe,WAAY,UAAA,EACtID,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,YAAa,eAAgB,SAAU,QAAS,WAAY,SAAU,QAAA,EACjFF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEvDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,QACTC,SAAU,UACVC,UAAW,UACXlzB,UAAW,iBACXmzB,UAAW,SACXC,YAAa,SACbC,aAAc,YACdC,UAAW,SACXC,YAAa,OACbC,gBAAiB,GACjBC,iBAAkB,sDAClBC,oBAAqB,OACrBC,aAAc,cACdC,SAAU,aAGVC,kBAAmB,6DACnBC,kBAAmB,oBACnBC,iBAAkB,aAClBC,sBAAuB,UACvBC,mBAAoB,eACpBC,uBAAwB,eAGxB8C,WAAY,SACZzrC,KAAM,OACN0rC,YAAa,OAGbC,SAAU,MAGVC,gBAAiB,SAGjBhD,SAAU,SAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,aAClBC,kBAAmB,YACnBC,mBAAoB,YACpBC,kBAAmB,SACnBC,sBAAuB,SACvBC,sBAAuB,OACvBC,uBAAwB,wBACxBC,YAAa,oBACbC,uBAAwB,kBACxBC,wBAAyB,SACzBC,yBAA0B,IAC1BC,sBAAuB,cACvBC,wBAAyB,UACzBC,gCAAiC,SACjCC,+BAAgC,UAChCC,kBAAmB,IACnBC,iBAAkB,UAClBC,qBAAsB,eACtBC,kBAAmB,GACnBC,iBAAkB,mBAClBC,6BAA8B,iBAC9BE,kBAAmB,WACnBD,kBAAmB,KAEnBE,aAAc,QACdC,aAAc,aACdC,gBAAiB,sBACjBC,cAAe,aACfC,eAAgB,aAChBC,cAAe,SACfC,cAAe,iBACfC,gBAAiB,QACjBC,iBAAkB,UAClBC,kBAAmB,UACnBC,iBAAkB,MAClBC,eAAgB,SAChBC,YAAa,aAEbC,oBAAqB,CAAC,WAAY,SAAU,QAAS,WAAY,OAAQ,UAAW,QAAS,WAAY,UAAW,aAAc,YAAa,SAAA,EAC/IC,kBAAmB,CAAC,YAAa,cAAe,SAAU,OAAQ,WAAY,QAAS,QC7F1EyB,CAAAA,CAAAA,EAAAA,GAAA,CACdhtC,KAAM,CACLknB,WAAY,CAAC,UAAW,YAAa,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,WAAY,UAAA,EAC9HD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,UAAW,UAAW,QAAS,SAAU,SAAU,QAAS,QAAA,EACvEF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEvDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,SACVC,UAAW,MACXlzB,UAAW,cACXmzB,UAAW,SACXC,YAAa,WACbC,aAAc,WACdC,UAAW,SACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,kCAClBC,oBAAqB,YACrBC,aAAc,mBACdC,SAAU,cAEVC,kBAAmB,+CACnBC,kBAAmB,iBACnBC,iBAAkB,cAClBC,sBAAuB,YACvBC,mBAAoB,iBACpBC,uBAAwB,mBAGxB8C,WAAY,MACZzrC,KAAM,OACN0rC,YAAa,YAGbC,SAAU,MAGVC,gBAAiB,MAGjBhD,SAAU,QAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,UACnBC,mBAAoB,SACpBC,kBAAmB,QACnBC,sBAAuB,OACvBC,sBAAuB,SACvBC,uBAAwB,uBACxBC,YAAa,eACbC,uBAAwB,UACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,WACvBC,wBAAyB,MACzBC,gCAAiC,OACjCC,+BAAgC,MAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,MACtBC,kBAAmB,MACnBC,iBAAkB,iBAClBC,6BAA8B,cAC9BE,kBAAmB,MACnBD,kBAAmB,SAEnBE,aAAc,QACdC,aAAc,gBACdC,gBAAiB,sBACjBC,cAAe,cACfC,eAAgB,WAChBC,cAAe,WACfC,cAAe,gBACfC,gBAAiB,MACjBC,iBAAkB,SAClBC,kBAAmB,MACnBC,iBAAkB,MAClBC,eAAgB,UAChBC,YAAa,UAEbC,oBAAqB,CAAC,UAAW,YAAa,QAAS,QAAS,OAAQ,QAAS,QAAS,SAAU,WAAY,UAAW,WAAY,UACvIC,EAAAA,kBAAmB,CAAC,UAAW,UAAW,QAAS,SAAU,SAAU,QAAS,QAAA,CAAA,CAAA,EC5GnE0B,GAAA,CACdjtC,KAAK,CACJknB,WAAW,CAAC,WAAY,YAAa,SAAU,UAAW,MAAO,QAAS,QAAS,SAAU,aAAc,YAAa,WAAY,YACpID,YAAY,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC1F8B,SAAS,CAAC,WAAY,OAAQ,QAAS,WAAY,MAAO,SAAU,SACpEF,EAAAA,UAAU,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAAA,CAAA,EAEhDyN,OAAO,CACNoD,qBAAqB,SACrB+N,QAAQ,KACRC,SAAS,YACTC,UAAU,OACVlzB,UAAU,gBACVmzB,UAAU,WACVC,YAAY,WACZC,aAAa,UACbC,UAAU,WACVC,YAAY,SACZC,gBAAgB,6CAChBC,iBAAiB,iDACjBC,oBAAoB,YACpBC,aAAa,WACbC,SAAS,aAGTC,kBAAkB,sDAClBC,kBAAkB,WAClBC,iBAAiB,cACjBC,sBAAsB,WACtBC,mBAAoB,iBACpBC,uBAAwB,wBAGxB8C,WAAW,SACXzrC,KAAK,OACL0rC,YAAY,YAGZC,SAAS,KAGTC,gBAAiB,SAGjBhD,SAAU,QAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,aACnBC,mBAAoB,QACpBC,kBAAmB,QACnBC,sBAAuB,aACvBC,sBAAuB,SACvBC,uBAAwB,wBACxBC,YAAa,qBACbC,uBAAwB,iCACxBC,wBAAyB,YACzBC,yBAA0B,OAC1BC,sBAAuB,gBACvBC,wBAAyB,OACzBC,gCAAiC,aACjCC,+BAAgC,OAChCC,kBAAmB,KACnBC,iBAAkB,UAClBC,qBAAsB,aACtBC,kBAAmB,GACnBC,iBAAkB,uBAClBC,6BAA8B,aAC9BE,kBAAmB,UACnBD,kBAAmB,OAEnBE,aAAc,YACdC,aAAc,gBACdC,gBAAiB,2BACjBC,cAAe,uBACfC,eAAgB,kBAChBC,cAAe,gBACfC,cAAe,eACfC,gBAAiB,KACjBC,iBAAkB,YAClBC,kBAAmB,OACnBC,iBAAkB,KAClBC,eAAgB,UAChBC,YAAa,aAEbC,oBAAqB,CAAC,WAAY,YAAa,SAAU,UAAW,MAAO,QAAS,QAAS,SAAU,aAAc,YAAa,YAAa,WAC/IC,EAAAA,kBAAmB,CAAC,WAAY,OAAQ,QAAS,WAAY,MAAO,SAAU,SAAA,CAAA,CAAA,EC3GjE2B,GAAA,CACdltC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,OAAQ,SAAU,MAAO,OAAQ,OAAQ,SAAU,WAAY,UAAW,SAAU,SACtHD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAC3F8B,SAAU,CAAE,cAAe,cAAe,UAAW,QAAS,UAAW,UAAW,SAAA,EACpFF,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IAEjDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,UACtB+N,QAAS,OACTC,SAAU,SACVC,UAAW,QACXlzB,UAAW,gBACXmzB,UAAW,YACXC,YAAa,WACbC,aAAc,SACdC,UAAW,WACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,kDAClBC,oBAAqB,WACrBC,aAAc,iBACdC,SAAU,YAEVC,kBAAmB,sDACnBC,kBAAmB,aACnBC,iBAAkB,YAClBC,sBAAuB,WACvBC,mBAAoB,sBACpBC,uBAAwB,0BAGxB8C,WAAY,SACZzrC,KAAM,OACN0rC,YAAa,WAGbC,SAAU,MAGVC,gBAAiB,SAGjBhD,SAAU,UAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,OAClBC,kBAAmB,SACnBC,mBAAoB,QACpBC,kBAAmB,MACnBC,sBAAuB,SACvBC,sBAAuB,OACvBC,uBAAwB,sBACxBC,YAAa,oBACbC,uBAAwB,cACxBC,wBAAyB,YACzBC,yBAA0B,GAC1BC,sBAAuB,iBACvBC,wBAAyB,QACzBC,gCAAiC,UACjCC,+BAAgC,QAChCC,kBAAmB,GACnBC,iBAAkB,GAClBC,qBAAsB,OACtBC,kBAAmB,GACnBC,iBAAkB,qBAClBC,6BAA8B,aAC9BE,kBAAmB,MACnBD,kBAAmB,GAEnBE,aAAc,UACdC,aAAc,cACdC,gBAAiB,qBACjBC,cAAe,gBACfC,eAAgB,eAChBC,cAAe,aACfC,cAAe,YACfC,gBAAiB,OACjBC,iBAAkB,SAClBC,kBAAmB,QACnBC,iBAAkB,MAClBC,eAAgB,SAChBC,YAAa,gBAEbC,oBAAqB,CAAC,SAAU,UAAW,QAAS,SAAU,MAAO,OAAQ,OAAQ,UAAW,WAAY,UAAW,SAAU,SAAA,EACjIC,kBAAmB,CAAC,cAAe,cAAe,UAAW,QAAS,UAAW,UAAW,SCtG/E4B,CAAAA,CAAAA,EAAAA,GAAA,CACdntC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,QAAS,QAAS,SAAU,YAAa,UAAW,WAAY,UAAA,EAC3HD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,UAAW,aAAc,QAAS,QAAS,UAAW,QAAS,UAC1EF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,CAAA,EAEvDyN,OAAQ,CACPoD,qBAAsB,QACtB+N,QAAS,MACTC,SAAU,QACVC,UAAW,QACXlzB,UAAW,cACXmzB,UAAW,SACXC,YAAa,WACbC,aAAc,cACdC,UAAW,QACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,2CAClBC,oBAAqB,OACrBC,aAAc,gBACdC,SAAU,UAGVC,kBAAmB,qDACnBC,kBAAmB,iBACnBC,iBAAkB,cAClBC,sBAAuB,YACvBC,mBAAoB,cACpBC,uBAAwB,kBAGxB8C,WAAY,SACZzrC,KAAM,QACN0rC,YAAa,OAGbC,SAAU,OAGVC,gBAAiB,SAGjBhD,SAAU,OAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,WACnBC,mBAAoB,UACpBC,kBAAmB,QACnBC,sBAAuB,OACvBC,sBAAuB,MACvBC,uBAAwB,mBACxBC,YAAa,kBACbC,uBAAwB,0BACxBC,wBAAyB,YACzBC,yBAA0B,KAC1BC,sBAAuB,WACvBC,wBAAyB,QACzBC,gCAAiC,OACjCC,+BAAgC,QAChCC,kBAAmB,KACnBC,iBAAkB,KAClBC,qBAAsB,MACtBC,kBAAmB,QACnBC,iBAAkB,uBAClBC,6BAA8B,YAC9BC,kBAAmB,KACnBC,kBAAmB,YAEnBC,aAAc,SACdC,aAAc,WACdC,gBAAiB,mBACjBC,cAAe,aACfC,eAAgB,aAChBC,cAAe,aACfC,cAAe,UACfC,gBAAiB,MACjBC,iBAAkB,QAClBC,kBAAmB,QACnBC,iBAAkB,OAClBC,eAAgB,WAChBC,YAAa,WAEbC,oBAAqB,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,QAAS,QAAS,SAAU,YAAa,UAAW,WAAY,YACpIC,kBAAmB,CAAC,UAAW,aAAc,QAAS,QAAS,UAAW,QAAS,QAAA,CAAA,CAAA,ECvGtE6B,GAAA,CACdptC,KAAM,CACLknB,WAAY,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,MAAO,MAAO,SAAU,YAAa,UAAW,WAAY,UAAA,EACvHD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,MAAO,MAAO,KAAA,EAC5F8B,SAAU,CAAC,SAAU,WAAY,SAAU,SAAU,UAAW,SAAU,QAC1EF,EAAAA,UAAW,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAEjDyN,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,SACVC,UAAW,SACXlzB,UAAW,eACXmzB,UAAW,SACXC,YAAa,OACbC,aAAc,SACdC,UAAW,SACXC,YAAa,SACbC,gBAAiB,uCACjBC,iBAAkB,4CAClBC,oBAAqB,WACrBC,aAAc,iBAGdE,kBAAmB,qDACnBC,kBAAmB,sBACnBC,iBAAkB,UAClBC,sBAAuB,UACvBC,mBAAoB,qBACpBC,uBAAwB,oBAGxB8C,WAAY,UACZzrC,KAAM,QACN0rC,YAAa,WAGbC,SAAU,MACVtD,SAAU,WAGVuD,gBAAiB,UAGjBhD,SAAU,UAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,QAClBC,kBAAmB,WACnBC,mBAAoB,UACpBC,kBAAmB,QACnBC,sBAAuB,QACvBC,sBAAuB,MACvBC,uBAAwB,kBACxBC,YAAa,gBACbC,uBAAwB,kBACxBC,wBAAyB,UACzBC,yBAA0B,KAC1BC,sBAAuB,YACvBC,wBAAyB,SACzBC,gCAAiC,QACjCC,+BAAgC,SAChCC,kBAAmB,KACnBC,iBAAkB,QAClBC,qBAAsB,MACtBC,kBAAmB,SACnBC,iBAAkB,uBAClBC,6BAA8B,cAC9BE,kBAAmB,SACnBD,kBAAmB,KAEnBE,aAAc,QACdC,aAAc,YACdC,gBAAiB,qBACjBC,cAAe,eACfC,eAAgB,eAChBC,cAAe,YACfC,cAAe,UACfC,gBAAiB,MACjBC,iBAAkB,SAClBC,kBAAmB,SACnBC,iBAAkB,MAClBC,eAAgB,WAChBC,YAAa,SAEbC,oBAAqB,CAAC,SAAU,UAAW,QAAS,QAAS,MAAO,MAAO,MAAO,SAAU,YAAa,UAAW,WAAY,YAChIC,kBAAmB,CAAC,SAAU,WAAY,SAAU,SAAU,UAAW,SAAU,QAAA,CAAA,CAAA,ECvGtE8B,GAAA,CACdrtC,KAAM,CACLknB,WAAY,CAAC,UAAW,WAAY,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,UAAA,EAC3HD,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,SAAU,SAAU,SAAU,SAAU,UAAW,SAAU,UACxEF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDyN,OAAQ,CACPoD,qBAAsB,OACtB+N,QAAS,MACTC,SAAU,QACVC,UAAW,QACXlzB,UAAW,cACXmzB,UAAW,QACXC,YAAa,QACbC,aAAc,WACdC,UAAW,QACXC,YAAa,UACbC,gBAAiB,GACjBC,iBAAkB,0DAClBC,oBAAqB,cACrBC,aAAc,MACdC,SAAU,aAGVC,kBAAmB,0DACnBC,kBAAmB,mBACnBC,iBAAkB,cAClBC,sBAAuB,YACvBC,mBAAoB,kBACpBC,uBAAwB,oBAGxB8C,WAAY,aACZzrC,KAAM,QACN0rC,YAAa,cAGbC,SAAU,KAGVC,gBAAiB,aAGjBhD,SAAU,SAGVrS,eAAe,uBACfC,aAAa,qBAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,WAClBC,kBAAmB,WACnBC,mBAAoB,YACpBC,kBAAmB,UACnBC,sBAAuB,MACvBC,sBAAuB,MACvBC,uBAAwB,kBACxBC,YAAa,eACbC,uBAAwB,qBACxBC,wBAAyB,UACzBC,yBAA0B,MAC1BC,sBAAuB,YACvBC,wBAAyB,QACzBC,gCAAiC,MACjCC,+BAAgC,QAChCC,kBAAmB,MACnBC,iBAAkB,IAClBC,qBAAsB,QACtBC,kBAAmB,QACnBC,iBAAkB,kBAClBC,6BAA8B,eAC9BE,kBAAmB,cACnBD,kBAAmB,QAEnBE,aAAc,SACdC,aAAc,YACdC,gBAAiB,eACjBC,cAAe,cACfC,eAAgB,cAChBC,cAAe,WACfC,cAAe,WACfC,gBAAiB,MACjBC,iBAAkB,QAClBC,kBAAmB,QACnBC,iBAAkB,KAClBC,eAAgB,WAChBC,YAAa,SAEbC,oBAAqB,CAAC,UAAW,WAAY,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,UACpIC,EAAAA,kBAAmB,CAAC,SAAU,SAAU,SAAU,SAAU,UAAW,SAAU,YCvGpE+B,GAAA,CACdttC,KAAM,CACLknB,WAAY,CAAC,OAAQ,QAAS,OAAQ,QAAS,QAAS,UAAW,SAAU,UAAW,QAAS,OAAQ,QAAS,QAClHD,EAAAA,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAA,EAC3F8B,SAAU,CAAC,QAAS,YAAa,OAAQ,WAAY,WAAY,OAAQ,WACzEF,EAAAA,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAEvDyN,OAAQ,CACPoD,qBAAsB,QACtB+N,QAAS,MACTC,SAAU,QACVC,UAAW,KACXlzB,UAAW,QACXmzB,UAAW,SACXC,YAAa,QACbC,aAAc,WACdC,UAAW,UACXC,YAAa,MACbC,gBAAiB,GACjBC,iBAAkB,6BAClBC,oBAAqB,WACrBC,aAAc,gBACdC,SAAU,UAGVC,kBAAmB,gDACnBC,kBAAmB,qBACnBC,iBAAkB,QAClBC,sBAAuB,QACvBC,mBAAoB,iBACpBC,uBAAwB,2BAGxB8C,WAAY,SACZzrC,KAAM,QACN0rC,YAAa,WAGbC,SAAU,MAGVC,gBAAiB,SAGjBhD,SAAU,SAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,SAClBC,kBAAmB,WACnBC,mBAAoB,QACpBC,kBAAmB,SACnBC,sBAAuB,MACvBC,sBAAuB,MACvBC,uBAAwB,cACxBC,YAAa,cACbC,uBAAwB,qBACxBC,wBAAyB,YACzBC,yBAA0B,YAC1BC,sBAAuB,UACvBC,wBAAyB,KACzBC,gCAAiC,MACjCC,+BAAgC,KAChCC,kBAAmB,YACnBC,iBAAkB,OAClBC,qBAAsB,OACtBC,kBAAmB,KACnBC,iBAAkB,mBAClBC,6BAA8B,OAC9BC,kBAAmB,QACnBC,kBAAmB,kBAEnBC,aAAc,OACdC,aAAc,UACdC,gBAAiB,cACjBC,cAAe,YACfC,eAAgB,SAChBC,cAAe,UACfC,cAAe,OACfC,gBAAiB,MACjBC,iBAAkB,QAClBC,kBAAmB,KACnBC,iBAAkB,MAClBC,eAAgB,YAChBC,YAAa,QAEbC,oBAAqB,CAAC,OAAQ,QAAS,OAAQ,QAAS,QAAS,UAAW,SAAU,UAAW,QAAS,OAAQ,QAAS,QAC3HC,EAAAA,kBAAmB,CAAC,QAAS,YAAa,OAAQ,WAAY,WAAY,OAAQ,WCvGrEgC,CAAAA,CAAAA,EAAAA,GAAA,CACdvtC,KAAM,CACLknB,WAAY,CAAC,SAAU,QAAS,WAAY,UAAW,UAAW,UAAW,SAAU,UAAW,WAAY,UAAW,WAAY,SAAA,EACrID,YAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAC3F8B,EAAAA,SAAU,CAAC,SAAU,YAAa,WAAY,SAAU,SAAU,WAAY,QAAA,EAC9EF,UAAW,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAEvDyN,CAAAA,EAAAA,OAAQ,CACPoD,qBAAsB,WACtB+N,QAAS,OACTC,SAAU,UACVC,UAAW,SACXlzB,UAAW,aACXmzB,UAAW,WACXC,YAAa,UACbC,aAAc,SACdC,UAAW,aACXC,YAAa,WACbC,gBAAiB,GACjBC,iBAAkB,0CAClBC,oBAAqB,OACrBC,aAAc,mBACdC,SAAU,YAGVC,kBAAmB,qDACnBC,kBAAmB,oBACnBC,iBAAkB,aAClBC,sBAAuB,WACvBC,mBAAoB,mBACpBC,uBAAwB,uBAGxB8C,WAAY,UACZzrC,KAAM,OACN0rC,YAAa,OAGbC,SAAU,MAGVC,gBAAiB,UAGjBhD,SAAU,UAGVrS,eAAe,iBACfC,aAAa,eAGbwH,WAAW,KACXC,eAAe,SAGf7kB,KAAM,OACNyvB,KAAM,WACNC,KAAM,OACNC,MAAO,QACP58B,IAAK,MACL68B,KAAK,OACLC,OAAQ,SAGRC,iBAAkB,OAClBC,kBAAmB,UACnBC,mBAAoB,SACpBC,kBAAmB,MACnBC,sBAAuB,SACvBC,sBAAuB,OACvBC,uBAAwB,sBACxBC,YAAa,qBACbC,uBAAwB,gBACxBC,wBAAyB,cACzBC,yBAA0B,GAC1BC,sBAAuB,iBACvBC,wBAAyB,SACzBC,gCAAiC,SACjCC,+BAAgC,SAChCC,kBAAmB,GACnBC,iBAAkB,GAClBC,qBAAsB,OACtBC,kBAAmB,GACnBC,iBAAkB,sBAClBC,6BAA8B,YAC9BE,kBAAmB,MACnBD,kBAAmB,GAEnBE,aAAc,SACdC,aAAc,QACdC,gBAAiB,qBACjBC,cAAe,UACfC,eAAgB,WAChBC,cAAe,SACfC,cAAe,cACfC,gBAAiB,OACjBC,iBAAkB,UAClBC,kBAAmB,SACnBC,iBAAkB,MAClBC,eAAgB,UAChBC,YAAa,eAEbC,oBAAqB,CAAC,QAAS,SAAU,UAAW,SAAU,SAAU,SAAU,QAAS,SAAU,UAAW,SAAU,YAAa,QAAA,EACvIC,kBAAmB,CAAC,UAAW,aAAc,YAAa,UAAW,YAAa,YAAa,SCrG1F,CAAA,CAAA,EAAA,MAAMiC,EACZ,CAAA,YAAYnvC,EAAWmG,EAAWk8B,EAAQ,CAAA,EACzCp5B,CAAAA,KAAKo5B,MAAQ,CACZ1gC,KAAM,IAAIQ,KACVitC,MAAO,CAAC,OAAQ,SAAU,OAAA,EAC1BC,aAAc,CAAA,EACdC,WAAY,CACZC,EAAAA,iBAAkB,EACflN,GAAAA,CAAAA,EAEJp5B,KAAK9C,UAAY,KACjB8C,KAAKvF,QAAU,KACfuF,KAAKumC,sBAAwB,CAC7BvmC,EAAAA,KAAKjJ,UAAYA,EACjBiJ,KAAKwmC,WAAazvC,EAAUogB,uBAC5BnX,KAAKo5B,MAAQp5B,KAAKzE,SAAAA,EAClBy5B,GAAUh1B,IACP9C,EAAAA,IAEF8C,KAAK9C,UAAYA,EACjB8C,KAAKwM,OAAOxM,KAAK9C,SAAAA,GAGlB8C,KAAKymC,cAAc,CAACC,EAAUC,IAAAA,CAC7B3mC,KAAKH,UAAU,gBAAiB,CAAC8mC,EAAUD,GAAU,CAEtD,CAAA,CAED,UAAAnrC,CACC,MAAO,CACHyE,GAAAA,KAAKo5B,MACRl+B,KAAM8E,KAAKo5B,MAAM+M,MAAMnmC,KAAKo5B,MAAMkN,kBAEnC,CAED,SAASK,EAAAA,CACR,MAAMD,EAAW,CAAK1mC,GAAAA,KAAKo5B,OACxBuN,EAASzrC,OACXyrC,EAASL,iBAAmBtmC,KAAKo5B,MAAM+M,MAAMp/B,QAAQ4/B,EAASzrC,OAE/D8E,KAAKo5B,MAAQ,CAAKp5B,GAAAA,KAAKo5B,SAAUuN,CAEjC3mC,EAAAA,KAAK4mC,mBAAmBF,EAAU1mC,KAAKo5B,KAEnCp5B,EAAAA,KAAK9C,WACR8C,KAAKwM,OAAOxM,KAAK9C,SAAAA,CAElB,CAED,cAAc6T,EAIb,CAAA,OAHA/Q,KAAKumC,sBAAsBltC,KAAK0X,CAGzB,EAAA,IAAA,CACN,MAAMnN,EAAQ5D,KAAKumC,sBAAsBx/B,QAAQgK,CAClC,EAAXnN,IAAW,IACd5D,KAAKumC,sBAAsBn+B,OAAOxE,EAAO,EACzC,CAEF,CAED,mBAAmB8iC,EAAUC,EAC5B3mC,CAAAA,KAAKumC,sBAAsBxrC,QAAQgW,GAAWA,EAAQ21B,EAAUC,CAChE,CAAA,CAAA,CAED,YAAYE,EAAAA,CAEX,KAAM3rC,CAAAA,KAACA,EAAIxC,KAAEA,CAAAA,EAAQsH,KAAKzE,SAAAA,EACpBurC,EAAU,IAAI5tC,KAAKR,CAAAA,EACrBwC,IAAS,OACZ4rC,EAAQrmB,SAAS/nB,EAAKmV,WAAag5B,CAChB,EAAT3rC,IAAS,SACnB4rC,EAAQC,YAAYruC,EAAKkV,YAAAA,EAAgBi5B,CAEzCC,EAAAA,EAAQC,YAAYruC,EAAKkV,YAAAA,EAA4B,GAAZi5B,CAAAA,EAE1C7mC,KAAKgnC,SAAS,CAAEtuC,KAAMouC,CAAAA,CAAAA,CACtB,CAED,aAAAG,CACC,MAAMC,GAAYlnC,KAAKo5B,MAAMkN,iBAAmB,GAAKtmC,KAAKo5B,MAAM+M,MAAMtsC,OACtEmG,KAAKgnC,SAAS,CAAEV,iBAAkBY,CAAAA,CAAAA,CAClC,CAED,sBAAsBhqC,EACrB,CAAA,KAAA,CAAMhC,KAACA,EAAIxC,KAAEA,CAAQsH,EAAAA,KAAKzE,SAEpB+2B,EAAAA,EAAS9tB,SAASC,cAAc,KAAA,EACtC6tB,EAAO3iB,UAAUhX,IAAI,2BAErB,EAAA,MAAMwuC,EAAgB3iC,SAASC,cAAc,QAE7C0iC,EAAAA,EAAcx3B,UAAUhX,IAAI,2BAA4B,iBAAkB,YAAA,EAC1E25B,EAAO3tB,YAAYwiC,CAEnB,EAAA,MAAMC,EAAa5iC,SAASC,cAAc,KAG1C,EAAA,GAFA2iC,EAAWz3B,UAAUhX,IAAI,0BAEZ,EAATuC,IAAS,OACZksC,EAAWC,UAAY3uC,EAAK4uC,eAAe,UAAW,CAAE7F,MAAO,MAAY,CAAA,EAAA,IAAM/oC,EAAKkV,YAAAA,UAC5E1S,IAAS,SACnBksC,EAAWC,UAAY3uC,EAAKkV,YACtB,MAAA,CACN,MAAM25B,EAAkD,GAAtCvhC,KAAK+D,MAAMrR,EAAKkV,YAAAA,EAAgB,IAClDw5B,EAAWC,UAAY,GAAGE,CAAAA,MAAeA,EAAY,CACrD,EAAA,CAEDvnC,KAAKwmC,WAAW5vB,OAAOwwB,EAAY,QAASpnC,KAAKinC,YAAYrxB,KAAK5V,IAClEsyB,CAAAA,EAAAA,EAAO3tB,YAAYyiC,CAAAA,EAEnB,MAAMI,EAAehjC,SAASC,cAAc,QAAA,EAE5C+iC,EAAa73B,UAAUhX,IAAI,2BAA4B,iBAAkB,eACzE25B,EAAO3tB,YAAY6iC,CAEnBtqC,EAAAA,EAAUyH,YAAY2tB,CAEtBtyB,EAAAA,KAAKwmC,WAAW5vB,OAAOuwB,EAAe,QAASnnC,KAAKynC,YAAY7xB,KAAK5V,KAAO,EAAA,CAAA,EAC5EA,KAAKwmC,WAAW5vB,OAAO4wB,EAAc,QAASxnC,KAAKynC,YAAY7xB,KAAK5V,KAAM,CAAA,CAAA,CAC1E,CAED,OAAO9C,EACN8C,CAAAA,KAAKwmC,WAAWzvB,UAAAA,EAChB/W,KAAK9C,UAAYA,GAAa8C,KAAK9C,UACnC8C,KAAK9C,UAAUwH,UAAY,GAEvB1E,KAAKvF,UACRuF,KAAKvF,QAAU+J,SAASC,cAAc,OACtCzE,KAAKvF,QAAQkV,UAAUhX,IAAI,uBAE5BqH,KAAKvF,QAAQiK,UAAY,GACzB1E,KAAK9C,UAAUyH,YAAY3E,KAAKvF,OAAAA,EAEhCuF,KAAK0nC,sBAAsB1nC,KAAKvF,OAChC,EAAA,MAAMktC,EAAgBnjC,SAASC,cAAc,KAC7CkjC,EAAAA,EAAch4B,UAAUhX,IAAI,yBAAA,EAC5BqH,KAAKvF,QAAQkK,YAAYgjC,CAEzB,EAAA,KAAA,CAAMzsC,KAACA,CAAAA,EAAQ8E,KAAKzE,SACP,EAATL,IAAS,OACZ8E,KAAK4nC,eAAeD,CAAAA,EACVzsC,IAAS,SACnB8E,KAAK6nC,iBAAiBF,CAAAA,EAEtB3nC,KAAK8nC,gBAAgBH,EAEtB,CAED,qBAAqBI,EAAAA,CACpB,MAAMrvC,KAACA,CAAAA,EAAQsH,KAAKzE,SAAAA,EACdxE,EAAYiJ,KAAKjJ,UAEvB,IAAIixC,EAAcjxC,EAAU2B,KAAKY,WAAW,IAAIJ,KAAKR,IACrD,MAAMuvC,EAAUlxC,EAAU2B,KAAKC,IAAI5B,EAAU2B,KAAKY,WAAW,IAAIJ,KAAKR,CAAQ,CAAA,EAAA,EAAG,MAEjFqvC,EAAAA,EAAoBp4B,UAAUhX,IAAI,yBAAA,EAElC,MAAMuvC,EAAcnxC,EAAU2B,KAAKyoB,YAAY,IAE/C,EAAA,KAAO6mB,EAAY7uC,QAAY8uC,EAAAA,EAAQ9uC,QAAW,GAAA,CACjD,MAAM0sB,EAAQqiB,EAAYF,CAEpBG,EAAAA,EAAa3jC,SAASC,cAAc,KAAA,EAC1C0jC,EAAWp4B,aAAa,WAAYi4B,EAAY7pC,OAAAA,CAAAA,EAChDgqC,EAAWx4B,UAAUhX,IAAI,4BACzBwvC,EAAAA,EAAWd,UAAYxhB,EACvBkiB,EAAoBpjC,YAAYwjC,CAEhCH,EAAAA,EAAcjxC,EAAU2B,KAAKC,IAAIqvC,EAAa,EAAG,MACjD,CAED,CAED,cAAc9hC,EAAKD,EAClB,CAAA,MAAMlP,EAAYiJ,KAAKjJ,UACvB,IAAIqxC,EAAQ,EACRC,EAAW,IAAInvC,KAAKgN,CAAAA,EACxB,KAAMmiC,EAASlvC,UAAY8M,EAAI9M,QAAAA,GAC9BivC,GAAS,EACTC,EAAWtxC,EAAU2B,KAAKY,WAAWvC,EAAU2B,KAAKC,IAAI0vC,EAAU,EAAG,MAAA,CAAA,EAEtE,OAAOD,CACP,CAED,eAAelrC,GACd,KAAMxE,CAAAA,KAACA,EAAI0tC,aAAEA,EAAYC,WAAEA,EAAUiC,SAAEA,CAAAA,EAAYtoC,KAAKzE,SAExD,EAAA,IAAIgtC,EAAmBnC,EAAa,GAChCoC,EAAmBpC,EAAa,CAEpC,EAAA,MAAMqC,EAAiBpC,EAAWqC,OAAO,CAACvc,EAAKzzB,KAE9CyzB,EADiBnsB,KAAKjJ,UAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKR,CAAAA,CAAAA,EAC3CS,cACNgzB,GACL,CAAE,CAAA,EAIC4b,EAAsBvjC,SAASC,cAAc,KACnDzE,EAAAA,KAAK2oC,qBAAqBZ,CAC1B7qC,EAAAA,EAAUyH,YAAYojC,CAAAA,EAEtB,MAAMhxC,EAAYiJ,KAAKjJ,UACjB6xC,EAAY7xC,EAAU2B,KAAKY,WAAWvC,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKR,CAC1EmwC,CAAAA,CAAAA,EAAAA,EAAa9xC,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKR,IACjDowC,EAAW/xC,EAAU2B,KAAKC,IAAI5B,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKR,IAAQ,EAAG,OAAA,EACnF,IAAIqwC,EAAWhyC,EAAU2B,KAAKC,IAAI5B,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKR,CAAQ,CAAA,EAAA,EAAG,SACjF,MAAMswC,EAAiBjyC,EAAU2B,KAAKwF,UAAUnH,EAAU0J,aAAAA,CAAAA,EACvDsoC,EAAS5qC,WAAa,IACxB4qC,EAAWhyC,EAAU2B,KAAKC,IAAI5B,EAAU2B,KAAKY,WAAWyvC,CAAAA,EAAW,EAAG,MAGvE,GAAA,IAAIX,EAAQpoC,KAAKipC,cAAcL,EAAWG,CAAAA,EACvCT,GAAYF,EAAQE,IACtBS,EAAWhyC,EAAU2B,KAAKC,IAAIowC,EAAWT,EAAWF,EAAQ,MAG7D,GAAA,IAAInvC,EAAW2vC,EAEf,MAAMM,EAAmB1kC,SAASC,cAAc,KAShD,EAAA,IARAykC,EAAiBv5B,UAAUhX,IAAI,yBAE/BqH,EAAAA,KAAKwmC,WAAW5vB,OAAOsyB,EAAkB,QAAU/xC,GAAAA,CAClD,MAAMgyC,EAAWhyC,EAAMkE,OAAOC,QAAQ,kBAChC5C,EAAAA,EAAO,IAAIQ,KAAKiwC,EAASruC,aAAa,gBAAA,CAAA,EAC5CkF,KAAKH,UAAU,cAAe,CAACnH,EAAMvB,GAAO,CAGvC8B,EAAAA,EAASE,QAAY4vC,EAAAA,EAAS5vC,WAAU,CAC7C,MAAMgvC,EAAa3jC,SAASC,cAAc,KAC1C0jC,EAAAA,EAAWp4B,aAAa,iBAAkBhZ,EAAU+sB,UAAU0F,YAAYvwB,CAC1EkvC,CAAAA,EAAAA,EAAWp4B,aAAa,WAAY9W,EAASkF,OAAAA,CAAAA,EAC7CgqC,EAAWzjC,UAAYzL,EAASsF,QAE7BtF,EAAAA,EAASE,UAAY0vC,EAAW1vC,QAAAA,EAClCgvC,EAAWx4B,UAAUhX,IAAI,YACjBM,EAAAA,EAASE,QAAa2vC,GAAAA,EAAS3vC,WACvCgvC,EAAWx4B,UAAUhX,IAAI,WAAA,EAGvBM,EAASkF,OAAAA,IAAa,GAAKlF,EAASkF,WAAa,GACnDgqC,EAAWx4B,UAAUhX,IAAI,4BAAA,EAGvBM,EAASE,QAAa6vC,GAAAA,EAAe7vC,QACvCgvC,GAAAA,EAAWx4B,UAAUhX,IAAI,SAAA,EAGvB4vC,GAAoBC,GACnBvvC,EAASE,QAAaovC,GAAAA,EAAiBpvC,QAAaF,GAAAA,EAASE,UAAYqvC,EAAiBrvC,QAAAA,GAC5FgvC,EAAWx4B,UAAUhX,IAAI,4BAIxB8vC,EAAAA,EAAexvC,EAASE,QAAAA,CAAAA,GAC1BgvC,EAAWx4B,UAAUhX,IAAI,0BAG1BwvC,EAAAA,EAAWx4B,UAAUhX,IAAI,yBAAA,EAEzBuwC,EAAiBvkC,YAAYwjC,GAC7BlvC,EAAWlC,EAAU2B,KAAKC,IAAIM,EAAU,EAAG,KAAA,CAC3C,CAEDiE,EAAUyH,YAAYukC,CAAAA,CAEtB,CAED,iBAAiBhsC,EAChB,CAAA,KAAA,CAAMxE,KAACA,CAAAA,EAAQsH,KAAKzE,SAEd6tC,EAAAA,EAAU5kC,SAASC,cAAc,OACvC2kC,EAAQz5B,UAAUhX,IAAI,2BAAA,EAEtB,MAAM0wC,EAAS,CAAA,EACf,QAAQzvC,EAAI,EAAGA,EAAI,GAAIA,IACtByvC,EAAOhwC,KAAK,IAAIH,KAAKR,EAAKkV,cAAehU,EAAG,CAAA,CAAA,EAG7C,MAAM0vC,EAActpC,KAAKjJ,UAAU2B,KAAKyoB,YAAY,IAAA,EACpDkoB,EAAOtuC,QAAQ0mC,GAAAA,CACd,MAAM8H,EAAe/kC,SAASC,cAAc,KAAA,EAC5C8kC,EAAa55B,UAAUhX,IAAI,0BACxBD,EAAAA,EAAKmV,SAAe4zB,IAAAA,EAAM5zB,YAC5B07B,EAAa55B,UAAUhX,IAAI,4BAAA,EAE5B4wC,EAAax5B,aAAa,aAAc0xB,EAAM5zB,SAAAA,CAAAA,EAC9C07B,EAAa7kC,UAAY4kC,EAAY7H,CACrCzhC,EAAAA,KAAKwmC,WAAW5vB,OAAO2yB,EAAc,QAAS,IAAA,CAC7C,MAAMzC,EAAU,IAAI5tC,KAAKuoC,GACzBzhC,KAAKgnC,SAAS,CACbtuC,KAAMouC,EACN5rC,KAAM,MAAA,CAAA,CACL,CAEHkuC,EAAAA,EAAQzkC,YAAY4kC,CAAa,CAAA,CAAA,EAElCrsC,EAAUyH,YAAYykC,GAEtB,MAAMI,EAAWhlC,SAASC,cAAc,OACxC+kC,EAAS75B,UAAUhX,IAAI,yBAAA,EACvB,MAAM8wC,EAAUjlC,SAASC,cAAc,QAAA,EACvCglC,EAAQpC,UAAY,OACpBoC,EAAQ95B,UAAUhX,IAAI,6BACtBqH,EAAAA,KAAKwmC,WAAW5vB,OAAO6yB,EAAS,QAAS,IAAA,CACxCzpC,KAAKgnC,SAAS,CACb9rC,KAAM,MAAA,CAAA,CACL,CAEHsuC,EAAAA,EAAS7kC,YAAY8kC,CACrBvsC,EAAAA,EAAUyH,YAAY6kC,CAAAA,CACtB,CAED,gBAAgBtsC,EACf,CAAA,KAAA,CAAMxE,KAACA,CAAQsH,EAAAA,KAAKzE,SACdgsC,EAAAA,EAAkD,GAAtCvhC,KAAK+D,MAAMrR,EAAKkV,YAAAA,EAAgB,IAE5Cw7B,EAAU5kC,SAASC,cAAc,KAAA,EACvC2kC,EAAQz5B,UAAUhX,IAAI,0BAAA,EACtB,QAASiB,EAAI2tC,EAAY,EAAG3tC,GAAK2tC,EAAY,GAAI3tC,IAAK,CACrD,MAAM8vC,EAAcllC,SAASC,cAAc,KAAA,EAC3CilC,EAAYrC,UAAYztC,EACxB8vC,EAAY/5B,UAAUhX,IAAI,yBAC1B+wC,EAAAA,EAAY35B,aAAa,YAAanW,GACnClB,EAAKkV,YAAAA,IAAkBhU,GACzB8vC,EAAY/5B,UAAUhX,IAAI,4BAAA,EAE3BqH,KAAKwmC,WAAW5vB,OAAO8yB,EAAa,QAAS,IAC5C1pC,CAAAA,KAAKgnC,SAAS,CACbtuC,KAAM,IAAIQ,KAAKU,EAAGlB,EAAKmV,SAAAA,EAAY,CACnC3S,EAAAA,KAAM,UACL,CAEHkuC,EAAAA,EAAQzkC,YAAY+kC,CAAAA,CAEpB,CACDxsC,EAAUyH,YAAYykC,CAEtB,EAAA,MAAMI,EAAWhlC,SAASC,cAAc,KACxC+kC,EAAAA,EAAS75B,UAAUhX,IAAI,yBAAA,EACvB,MAAM8wC,EAAUjlC,SAASC,cAAc,QAAA,EACvCglC,EAAQpC,UAAY,OACpBoC,EAAQ95B,UAAUhX,IAAI,+BACtBqH,KAAKwmC,WAAW5vB,OAAO6yB,EAAS,QAAS,IACxCzpC,CAAAA,KAAKgnC,SAAS,CACb9rC,KAAM,QACL,CAAA,CAAA,CAAA,EAEHsuC,EAAS7kC,YAAY8kC,GACrBvsC,EAAUyH,YAAY6kC,CACtB,CAAA,CAED,YACCxpC,CAAAA,KAAKumC,sBAAwB,CAAA,EAC1BvmC,KAAKvF,UACPuF,KAAKvF,QAAQiK,UAAY,GACzB1E,KAAKvF,QAAQihB,OAGd1b,GAAAA,KAAKwmC,WAAWzvB,UAChB/W,EAAAA,KAAKH,UAAU,YAAa,IAC5BG,KAAKoW,gBAAAA,EAELpW,KAAKjJ,UAAY,IACjB,CCnUa,CAAA,SAAQ4yC,GAACC,EAAAA,CAEvB,MAAM7yC,EAAY,CAAEuoC,QAAS,OAAA,EAE7BvoC,EAAU0U,0BC5CV,MAAMo+B,EAAiB,CAAA,EAwBvB,MAAO,CACNtuC,SAvBD,SAAkBua,EAEjB,CAAA,GADiB+zB,EAAe/zB,CAAAA,EAE/B,OAAO+zB,EAAe/zB,CAAAA,EAAMolB,OACxB,EAAA,CACJ,MAAMp9B,EAAM,CAAA,EACZ,UAAUlE,KAAKiwC,EACVA,EAAejwC,GAAGkwC,UACrBh8B,GAAMC,MAAMjQ,EAAK+rC,EAAejwC,CAAGshC,EAAAA,OAAAA,EAAAA,EAErC,EAAA,OAAOp9B,CACP,CACD,EAYA4N,iBAVD,SAA0BoK,EAAMi0B,EAAUD,EAAAA,CACzCD,EAAe/zB,CAAAA,EAAQ,CAAEolB,OAAQ6O,EAAUD,SAAUA,CAAAA,CACrD,EASAE,mBAPD,SAA4Bl0B,EACpB+zB,CAAAA,OAAAA,EAAe/zB,EACtB,CAOD,CAAA,EDiBA/e,EAAAA,EAAUwE,SAAWxE,EAAU0U,eAAelQ,SEjDhC,SAAgBxE,GAE/B,IAAIkzC,EAAc,CACjBC,OAAQ,qDACRC,KAAM,mDACN3vC,IAAK,kDACLmP,KAAM,oDACN0iB,SAAU,uDACV+d,YAAa,yDACb5I,KAAM,mDACN6I,aAAc,8CAAA,EAGXC,EAAqB,CACxBJ,OAAQ,qCACRC,KAAM,mCACN3vC,IAAK,kCACLmP,KAAM,+BACN0iB,SAAU,2GACV+d,YAAa,qCACb5I,KAAM,mCACNh0B,MAAO,8BAGRzW,EAAAA,EAAUwzC,qBAAuB,CAChCC,YAAa,SAASptC,EAAAA,CACrB,IACIqtC,EAAmBH,EAAmBltC,CAAS,EAAA,2BAA6BktC,EAAmBltC,CAAQ,EAAA,IAAO,GAClH,MACC,IAAIA,EAAJ,gMAHoC6sC,EAAY7sC,CAAAA,GAAS6sC,EAAYI,cAKxD;AAAA,GAAQI,EAAoBA,EAAmB;AAAA,EAAQ,GACrE,EACDC,mBAAoB,SAAS3oC,GAC5B,MAAO;AAAA;AAAA;AAAA,CAGP,CAGFhL,EAAAA,EAAU4zC,mBAAqB,UAC9B,CAAA,MAAM,IAAI1jC,MAAM,2FAA6FqjC,EAAmBje,SAAhH;AAAA,gBAEG4d,EAAY5d,SAChC,EAEAt1B,EAAU6zC,gBAAkB,UAAA,CAC3B,MAAM,IAAI3jC,MAAM,wFAA0FqjC,EAAmB3gC,KAA7G;AAAA,gBAEGsgC,EAAYtgC,IAChC,CAAA,EAEA5S,EAAU8zC,eAAiB,UAAA,CAC1B,MAAM,IAAI5jC,MAAM,uFAAyFqjC,EAAmBH,KAA5G;AAAA,gBAEGF,EAAYE,IAAAA,CAChC,EAEApzC,EAAU0G,kBAAoB,UAC7B,CAAA,MAAM,IAAIwJ,MAAM;AAAA,6DAGjB,EAEAlQ,EAAU8Z,eAAiB,UAAA,CAC1B,MAAM,IAAI5J,MAAM;AAAA,oDAGjB,CAAA,EAEAlQ,EAAU+zC,YAAc,UAAA,CACvB,MAAM,IAAI7jC,MAAM,CACf,4CACA,+HACA,+EAAA,EACC5C,KAAK;AAAA,CACR,CAAA,CAAA,EAEAtN,EAAUg0C,YAAc,WACvB,MAAM,IAAI9jC,MAAM,CACf,4CACA,+HACA,+EAAA,EACC5C,KAAK;AAAA,CAAA,CAAA,CACR,CAGA,EFrCetN,CACduS,EAAAA,GAAOvS,GG7CO,SAAgBA,EAAAA,CAEtBwe,GAACxe,CAAAA,EAEHi0C,GAACj0C,CAERA,EAAAA,EAAUk0C,gBAAkB,SAAS30B,EAAInf,EAAO4Z,EAAAA,CAC3CuF,EAAGG,oBACNH,EAAGG,oBAAoBtf,EAAO4Z,EAAS,EAAA,EAE9BuF,EAAGL,aACZK,EAAGL,YAAY,KAAK9e,EAAO4Z,CAE7B,CAAA,EAGAha,EAAUm0C,WAAa,UACtBC,CAAAA,GAA0Bp0C,CAE1BA,EAAAA,EAAUm0C,WAAa,YACxB,EAEA,MAAMtzC,EACK,CACT4U,OAAQ,SAAUnV,EAAAA,CACjB,OAAON,EAAUgb,cAAc1a,CAC/B,CAAA,CAAA,EAJGO,EAMK,CACT4U,OAAQ,SAAUnV,EAAAA,CACjB,MAAMoD,EAAU+J,SAASC,cAAc,KAAA,EAEvC,OADAhK,EAAQiL,UAAY,iBACbjL,CACP,GAXG7C,EAaO,CACX4U,OAAQ,SAAUnV,GACjB,MAAMoD,EAAU+J,SAASC,cAAc,OAEvC,OADAhK,EAAQiL,UAAY,eACbjL,CACP,CASH,EAAA,SAAS2wC,EAAmB3wC,EAAAA,CAC3B,SACCA,EAAQwX,cAAc,iBACtBxX,GAAAA,EAAQwX,cAAc,eACtBxX,GAAAA,EAAQwX,cAAc,kBAAA,EAExB,CAkDAlb,EAAU2oB,KAAK,SAAS/lB,EAAGjB,EAAKwC,EAC/B,CAAA,GAAA,CAAG8E,KAAKyT,WAAR,CAmCA,GAhCA/a,EAAKA,GAAO3B,EAAU0J,aACtBvF,EAAAA,EAAKA,GAAM,OAER8E,KAAK+pB,MACP/pB,KAAKwS,cAGNxS,EAAAA,KAAK+pB,KAAapwB,OAAAA,GAAM,SAAU6K,SAASsyB,eAAen9B,GAAIA,EAC9DqG,KAAKxG,WAAawG,KAAK+pB,KACvB/pB,KAAK8T,MAAQ9T,KAAK+pB,KAAAA,CAEd/pB,KAAKxG,WAAW4a,cAAgBpU,KAAKxG,WAAW8a,aAAetU,KAAKxG,WAAWxB,MAAM2N,SAAW,QAEnG/O,OAAO2U,QAAQC,MAAMzU,EAAUwzC,qBAAqBG,mBAAsB1qC,EAAAA,KAAKxG,UAG7EwG,EAAAA,KAAK3I,OAAO8c,qBAAuBnU,KAAK3I,OAAOg0C,2BACjDrrC,KAAKxG,WAAWuW,aAAa,OAAQ,aAAA,EAGlC/P,KAAK3I,OAAOi7B,QAAW8Y,EAAmBprC,KAAKxG,cAGlDwG,KAAK3I,OAAOi7B,OA3Ed,SAA6Bv7B,GAC5B,MAAMu0C,EAAQ,CACb,MACA,OACA,OAWD,EAAA,GAAGv0C,EAAUkG,OACZ,UAAUrD,KAAK7C,EAAUkG,OACxBquC,EAAMjyC,KAAKO,CAGb,EAAA,GAAG7C,EAAUiG,OACZ,UAAUpD,KAAK7C,EAAUiG,OACxBsuC,EAAMjyC,KAAKO,CAAAA,EAIb,GAAG7C,EAAUw0C,OAASx0C,EAAUw0C,MAAMrgB,MACrC,UAAUtxB,KAAK7C,EAAUw0C,MAAMrgB,MAC9BogB,EAAMjyC,KAAKO,CAAAA,EAiBb,MAbsB,CACrB,MACA,SACA,cACA,QAGamB,QAAQ,SAAStD,EAC3BV,CAAAA,EAAUU,EAAW,OACvB6zC,GAAAA,EAAMjyC,KAAK5B,CAAAA,CAEd,GAEQ6zC,EAAMnrC,OAvCA,CACZ,MAAA,CAAA,EAsCyBA,OApCd,CACX,OACA,QACA,MAAA,CAAA,CAkCF,EA6B2CH,IAAAA,EACzCpJ,OAAO2U,QAAQigC,IAAI,CAClB,mHACA,yCACA,6BAA+BjtB,KAAKC,UAAUxe,KAAK3I,OAAOi7B,OAAQ,KAAM,CACxE,EAAA,2FAAA,EACCjuB,KAAK;AAAA,CAAA,CAAA,GAGJrE,KAAK3I,OAAOi7B,OACftyB,KAAKxG,WAAWkL,UAAY,GAC5B1E,KAAKxG,WAAWmW,UAAUhX,IAAI,mBAAA,EAC3BqH,KAAK3I,OAAOi7B,OAAO3sB,SACrB3F,KAAKsS,GAAGC,WAAavS,KAAK3I,OAAOi7B,OAAO3sB,QAEzC3F,KAAKxG,WAAWmL,YAAY/M,EAAc4U,OAAOxM,KAAK3I,OAAOi7B,MAC7DtyB,CAAAA,EAAAA,KAAKxG,WAAWmL,YAAY/M,EAAc4U,OAC1CxM,CAAAA,EAAAA,KAAKxG,WAAWmL,YAAY/M,EAAgB4U,OAG5C,CAAA,UAAA,CAAI4+B,EAAmBprC,KAAKxG,YAC3B,MAAM,IAAIyN,MAAM,CACf,kEACA,8IACA,kLAAA,EACC5C,KAAK;AAAA,CAAA,CAAA,EAILrE,KAAK3I,OAAOo0C,MAAKzrC,KAAKxG,WAAWkM,WAAa,0BAG9C1F,KAAK8xB,YACR/6B,EAAU+6B,aAEX/6B,EAAU2B,KAAKgnB,KAEf1f,EAAAA,KAAK0rC,WAEL1rC,KAAKO,KAAK,CAAA,EACVP,KAAKmH,aACLnH,EAAAA,KAAK2rC,eACL3rC,EAAAA,KAAKyS,cAELzS,KAAKkrC,WAAAA,EACLlrC,KAAKgqB,mBAAAA,EAELhqB,KAAK4rC,UAAAA,EACL70C,EAAU8I,UAAU,mBAAoB,CACxC9I,CAAAA,EAAAA,EAAU80C,aAAe,GACzB7rC,KAAKyM,eAAe/T,EAAKwC,CA1ExB,CAAA,CA4EF,EAEAnE,EAAUub,GAAG,CACZw5B,iBAAiB,GACjBxb,WAAY,GACZyb,YAAY,GACZ1hB,aAAa,GACb2hB,aAAa,GACbC,mBAAmB,GACnBC,WAAW,GACXC,WAAW,EACXC,YAAY,EACZC,aAAa,IACbC,kBAAkB,GAClBC,oBAAqB,EAAA,EAEtBx1C,EAAUwjC,KAAK,CACdiS,UAAU,GACVC,YAAY,EAAA,EAGb11C,EAAU6e,KAAO,SAAc82B,EAASv+B,EAAAA,CACvC,OAAGu+B,EAAQ92B,KACH82B,EAAQ92B,KAAKzH,GAEb,UAAY,CAAA,OAAOu+B,EAAQ9pC,MAAMuL,EAAOlF,WACjD,EAEAlS,EAAU60C,UAAU,UAEnB,CAAA,IAAI74B,EAAI/S,KAAK6pB,GAAK7pB,KAAK+pB,KAAK7W,YAAYlT,KAAKsS,GAAG85B,YAG5CO,EAAQ3sC,KAAKmB,YAAY,EAAGnB,KAAKsS,GAAGy5B,YAAY/rC,KAAKsS,GAAG+X,aAExDuiB,EAA2B5sC,KAAKxG,WAAWyY,cAAc,4BAAA,EAC1Dlb,EAAUu4B,kBAAAA,GACRsd,KACHA,EAA2BpoC,SAASC,cAAc,KAAA,GACzBiB,UAAY,4BACrC1F,KAAKxG,WAAWiiB,aAAamxB,EAA0B5sC,KAAKO,KAAqB,eAAE,CAAA,CAAA,GAEpFqsC,EAAyB50C,MAAM0a,QAAU,QAEzC1S,KAAK6sC,OAAOD,EAAyB75B,EAAE/S,KAAKsS,GAAG05B,aAAe,EAAE,EAAGhsC,KAAKO,KAAqB,eAAE,CAAG2Z,EAAAA,SAAAA,GAG/F0yB,GACFA,EAAyB3qC,WAAWC,YAAY0qC,CAAAA,EAI9C5sC,KAAK8sC,YACJ/1C,EAAUyC,WAAW8a,YAAe,MAEvCtU,KAAK+sC,eAAevoC,SAASyN,cAAc,gBAI7CjS,CAAAA,GAAAA,KAAKgtC,YAAcj6B,EAAE45B,EAErB3sC,KAAKO,KAAsB,gBAAE,CAAGvI,EAAAA,MAAM4N,MAAQmN,EAAI,KAClD,MAAMuf,EAAStyB,KAAKO,KAAqB,eAAE,CAC3CP,EAAAA,KAAK6sC,OAAOva,EAAQtyB,KAAKgtC,YAAahtC,KAAKsS,GAAG05B,YAAAA,EAE9C1Z,EAAOt6B,MAAME,KAAO,GACpBo6B,EAAOt6B,MAAMogB,MAAQ,GACjBpY,KAAKmB,YAOJnB,KAAK3I,OAAOo0C,IAGfnZ,EAAOt6B,MAAMogB,MAAQ,OAFrBka,EAAOt6B,MAAME,KAAO,OAPlB8H,KAAK3I,OAAOo0C,IACdnZ,EAAOt6B,MAAMogB,MAAQ,GAAGpY,KAAKsS,GAAGy5B,gBAEhCzZ,EAAOt6B,MAAME,KAAO,GAAG8H,KAAKsS,GAAGy5B,WAAAA,IASlC,EACAh1C,EAAU81C,OAAO,SAASl1B,EAAK5E,EAAEI,EAAEyJ,EAAED,EACpC,CAAA,SAASswB,EAAarU,EAAAA,CACrB,IAAIsU,EAAWtU,EAIf,OAHIjgB,MAAMhK,OAAOu+B,CAChBA,CAAAA,IAAAA,EAAWlnC,KAAKC,IAAI,EAAEinC,CAAY,EAAA,MAE5BA,CACP,CAED,IAAIrG,EAAY,OAEb9zB,IAAMlQ,SACR8U,EAAK3f,MAAM4N,MAAQqnC,EAAal6B,IAG9BI,aACFwE,EAAK3f,MAAM2N,OAASsnC,EAAa95B,CAAAA,GAG9BlK,UAAUpP,OAAO,IAEjB+iB,aACE5c,KAAK3I,OAAOo0C,MAAK5E,EAAY,SACjClvB,EAAK3f,MAAM6uC,GAAWjqB,EAAE,MAEtBD,IAFsB,SAGxBhF,EAAK3f,MAAMC,IAAI0kB,EAAE,MAGpB,EACA5lB,EAAUoQ,aAAa,UAEtB,CAAA,MAAMrF,EAAI9B,KAAK+pB,KAAKsH,qBAAqB,KAAA,EACzC,QAASz3B,EAAE,EAAGA,EAAIkI,EAAIjI,OAAQD,IAAI,CACjC,IAAIuzC,EAAYp2C,EAAU+P,cAAchF,EAAIlI,CAAAA,CAAAA,EAC5C,MAAMwzC,EAAatrC,EAAIlI,CAAGkB,EAAAA,aAAa,aAAegH,EAAIlI,CAAAA,EAAGkB,aAAa,MAAA,GAAW,GACjFqyC,IAAYA,EAAaA,EAAW7yC,MAAM,GAAK,EAAA,CAAA,GAC9C0F,KAAKO,KAAK4sC,KAAantC,KAAKO,KAAK4sC,CAAY,EAAA,CAAA,GAClDntC,KAAKO,KAAK4sC,CAAAA,EAAY9zC,KAAKyI,EAAIlI,IAI/B,IAAIisB,EAAQ9uB,EAAUooB,OAAO6P,OAAOoe,EAAW,MAAA,GAAWr2C,EAAUooB,OAAO6P,OAAOoe,GAAYD,CAAAA,EACnFtnB,OAAAA,GAAU,UAAYunB,IAAetrC,EAAIlI,CAAAA,EAAG8K,YACtDmhB,EAAQunB,EAAW9yC,MAAM,GAAA,EAAK,CAC3BurB,GAAAA,IACH7lB,KAAK+1B,SAASsX,UAAUvrC,EAAIlI,CAAAA,EAAIisB,GAChC/jB,EAAIlI,CAAAA,EAAG8K,UAAYmhB,EAEpB,CACF,EAGA,MAAMynB,EAAiBv2C,EAAUogB,uBA4+CjC,SAASo2B,EAAkBC,EAAWC,EAAAA,CACrC,MAAM5pC,EAAQ,IAAI3K,KAAKs0C,CAAAA,EAGjBE,GAFM,IAAIx0C,KAAKu0C,CACQxtB,EAAAA,QAAAA,EAAYpc,EAAMoc,QACN,GAAA,MACzC,OAAOja,KAAK+mB,IAAI2gB,CACjB,CAAA,CAh/CA32C,EAAUyb,cAAgB,UACzB86B,CAAAA,EAAev2B,UAChB,CAAA,EAEAhgB,EAAU0b,YAAY,UAAA,CACrB,UAAWiB,KAAK1T,KAAKO,KACpB,GAAIP,KAAKktB,OAAOxZ,CACf,EAAA,QAAS9Z,EAAE,EAAGA,EAAIoG,KAAKO,KAAKmT,CAAAA,EAAG7Z,OAAQD,IAAI,CAC1C,MAAMa,EAAUuF,KAAKO,KAAKmT,CAAAA,EAAG9Z,CACvBmX,EAAAA,EAAU/Q,KAAKktB,OAAOxZ,CAAAA,EAAGkC,KAAKnb,CAAAA,EACpC6yC,EAAe12B,OAAOnc,EAAS,QAASsW,CAAAA,CACxC,CAIHu8B,EAAe12B,OAAO5W,KAAK+pB,KAAM,cAAe,SAAS5uB,EAAAA,CAExD,OADAA,EAAEyxB,mBAEJ,CAAA,EAEC0gB,EAAe12B,OAAO5W,KAAK+pB,KAAM,YAAa,SAAS5uB,EAAAA,CACjDpE,EAAUi1B,mBACdj1B,EAAU41B,eAAexxB,CAAAA,CAC5B,GACCmyC,EAAe12B,OAAO5W,KAAK+pB,KAAM,YAAa,SAAS5uB,EAAAA,CACjDpE,EAAU42B,oBACd52B,EAAU82B,eAAe1yB,CAC5B,CAAA,CAAA,EACCmyC,EAAe12B,OAAO5W,KAAK+pB,KAAM,UAAW,SAAS5uB,EAC/CpE,CAAAA,EAAU42B,oBACd52B,EAAUg1B,aAAa5wB,CAC1B,CAAA,CAAA,EACCmyC,EAAe12B,OAAO5W,KAAK+pB,KAAM,WAAY,SAAS5uB,EAAAA,CACrDpE,EAAUq2B,cAAcjyB,CAAAA,CAC1B,CACCmyC,EAAAA,EAAe12B,OAAO5W,KAAK+pB,KAAM,cAAe,SAAS5yB,GAOxD,OANGJ,EAAU6I,WAAW,eAAA,GAEvBzI,EAAMy1B,eAGa71B,EAAAA,EAAU8I,UAAU,gBAAiB,CAAC9I,EAAUy2B,cAAcr2B,EAAMkE,MAAAA,EAASlE,GAEnG,CACA,CAAA,EACAJ,EAAUiiB,OAAO,SAASrf,EACrBqG,CAAAA,KAAK2tC,YAAYh0C,IACrB5C,EAAU62C,iBACV5tC,EAAAA,KAAK+5B,SAAS,EAAA,EACX/5B,KAAK2tC,YACP3tC,KAAKvE,SAENuE,EAAAA,KAAK2tC,WAAah0C,EAClBqG,KAAK6M,YAAYlT,CAAAA,EACjBqG,KAAKH,UAAU,kBAAmB,CAAClG,CAAAA,CAAAA,EACpC,EACA5C,EAAU0E,SAAS,SAAS9B,GAC3B,GAAIA,GAAMA,GAAIqG,KAAK2tC,WAClB,OAED,MAAME,EAAoB7tC,KAAK2tC,WAC/B3tC,KAAK2tC,WAAa,KACdE,GAAqB7tC,KAAK5E,SAASyyC,CAAAA,GACtC7tC,KAAK6M,YAAYghC,GAElB7tC,KAAKH,UAAU,oBAAqB,CAACguC,GACtC,EACA92C,EAAU0U,eAAeC,iBAAiB,UAAU,UACnD,CAAA,MAAO,CACNxQ,KAAM8E,KAAKoB,MACX1I,KAAM,IAAIQ,KAAK8G,KAAKgK,KACpBjF,EAAAA,SAAU,IAAI7L,KAAK8G,KAAKY,SACxBoE,EAAAA,SAAU,IAAI9L,KAAK8G,KAAKW,SACxBmtC,EAAAA,UAAW9tC,KAAK+tC,SAChBC,YAAahuC,KAAKiuC,aAClB9gC,UAAWnN,KAAKszB,WAChB4a,UAAWluC,KAAK2tC,WAChBQ,SAAUnuC,KAAKmuC,SACf5hB,QAASvsB,KAAKR,SACd8rB,UAAWtrB,KAAKP,UAAAA,CAEjB,GAAEmW,KAAK7e,CAERA,CAAAA,EAAAA,EAAUm2B,OAAO,CAChBC,aAAa,SAAShyB,EAAAA,CAErB,GAAIpE,EAAU42B,mBAKb,OAJIxyB,EAAEyxB,gBACLzxB,EAAEyxB,iBACHzxB,EAAE0xB,aAAAA,GACF91B,EAAU42B,sBACH,GAIR,MAAMh0B,EAAK5C,EAAUy2B,cAAcryB,EAAEE,MAErC,EAAA,GAAK1B,GAGJ,GAAM5C,CAAAA,EAAU8I,UAAU,UAAU,CAAClG,EAAGwB,CAAAA,CAAAA,GAAOpE,EAAUM,OAAO+2C,SAAW,YAF3Er3C,EAAU8I,UAAU,eAAe,CAAC9I,EAAU2E,cAAcP,CAAGzC,EAAAA,KAAMyC,IAKtE,GAAIxB,GAAM5C,EAAUM,OAAO2hB,OAAQ,CAElCjiB,EAAUiiB,OAAOrf,CAAAA,EACjB,MAAM00C,EAAOlzC,EAAEE,OAAOC,QAAQ,kBAExBujB,EAAO9nB,EAAU+P,cAAcunC,CAAAA,EACjCxvB,EAAK9X,QAAQ,OAChBhQ,GAFoCs3C,IAEpCt3C,EAAUm2B,OAAO0J,QAAQ/X,EAAKvkB,MAAM,GAAA,EAAK,CAAGid,EAAAA,QAAQ,QAAQ,EAAA,CAAA,EAAK5d,EACrE,MACG5C,EAAU62C,iBACN72C,EAAAA,EAAUwE,WAAW2yC,WAAa,IAAIh1C,OAAOC,QAAAA,GAAWpC,EAAUu8B,YAAY,GAAK,KACtFv8B,EAAU0E,UAGZ,EACDizB,oBAAoB,UACnB33B,CAAAA,EAAUm2B,OAAOuB,oBAAoB,EAAA,EACrC,CAAA,EACDA,oBAAoB,SAAS9T,EAAM0T,EAClC,CAAA,IAAIigB,EAAW,EACXv3C,EAAUM,OAAOo0C,MACpBpd,GAAQA,EACRigB,EAAAA,CAAYA,GAEbv3C,EAAU0V,eAAe1V,EAAU2B,KAAKC,IACvC5B,EAAU2B,KAAK3B,EAAUqK,MAAM,QAAU,EAAA,IAAIlI,KAAKnC,EAAUiT,KAAAA,CAAAA,EAASqkB,GAAMigB,EAAUv3C,EAAUqK,KAChG,CAAA,CAAA,EACDgxB,qBAAqB,UAAA,CAChBr7B,EAAU8I,UAAU,yBAA0B,CACjD9I,CAAAA,GAAAA,EAAU0V,eAAe1V,EAAU0J,aAAAA,CAAAA,CAEpC,EACD8tC,YAAY,WACX,MAAMz4B,EAAO9V,KAAKlF,aAAa,UACzB0zC,EAAAA,EAAkBxuC,KAAKlF,aAAa,QACpCI,EAAO4a,GAAQ04B,EAAgBC,UAAU,EAAGD,EAAgBvwB,OAAO,MACzElnB,CAAAA,EAAAA,EAAU0V,eAAe1V,EAAUiT,MAAM9O,CACzC,CAAA,EACD07B,QAAQ,CACPqF,OAAS,SAAStiC,EAAAA,CACjB,MAAMiF,EAAI7H,EAAUooB,OAAO6P,OAAO4R,iBAClC7pC,EAAU23C,gBAAgB,CAACthC,QAASxO,EAAG43B,MAAOz/B,EAAUooB,OAAO6P,OAAO2f,uBAAwBrjC,SAAS,UAAA,CAAYvU,EAAUg9B,YAAYp6B,EAAM,EAC/ItC,OAAQ,CAAC8+B,GAAIp/B,EAAUooB,OAAO6P,OAAO0R,WAErC,CAAA,CAAA,CAAA,EACDkO,KAAK,SAASj1C,EAAAA,CAAK5C,EAAU63C,KAAKj1C,EAAM,EACxCk1C,KAAK,SAASl1C,EAAAA,CAAK5C,EAAUgjC,SAAS,EAAA,CAAQ,EAC9CH,QAAQ,SAASjgC,EAAK5C,CAAAA,EAAU+3C,aAAan1C,CAAAA,CAAM,EACnDo1C,KAAK,SAASp1C,EAAK5C,CAAAA,EAAU+3C,aAAan1C,CAAAA,CAAM,EAChDy8B,OAAO,SAASz8B,EAAK5C,CAAAA,EAAUgjC,SAAS,EAAA,CAAS,IAGnDhjC,EAAU23C,gBAAkB,SAASthC,CAAAA,QAACA,EAAOopB,MAAEA,EAAKlrB,SAAEA,EAAQjU,OAAEA,CAC/D,EAAA,CAAA,GAAA,CAAK+V,EACJ,OAAO9B,IAERjU,EAASA,GAAU,GACnB,MAAMguB,EAAO,CAAA,GAAKhuB,EAAQgW,KAAMD,GAC5BopB,IACHnR,EAAKmR,MAAQA,GAEVlrB,IACH+Z,EAAK/Z,SAAW,SAAS8C,EAAAA,CACpBA,GACH9C,EAEJ,CAAA,GAECvU,EAAU+gC,QAAQzS,EACnB,EACAtuB,EAAU0T,YAAY,SAAS5G,EAAMC,EAAI3I,EAAAA,CACxC,IAAI6zC,EAAO,CAAA,EACPj4C,EAAU0gB,UAAU5T,CAAAA,GAAAA,CAAW9M,EAAUygB,QAAQ3T,CAAAA,IACpDmrC,EAAOnrC,EACPA,EAAQ,MAGT,MAAMorC,EAA+D,KAAnDjvC,KAAK3I,OAAO63C,gBAAgBlvC,KAAK3I,OAAO83C,WACrDtrC,IAAOA,EAAQmrC,EAAK12C,YAAY0N,KAAKM,MAAOvP,EAAU0J,aAAAA,EAAgBtH,UAAU81C,CAAUA,EAAAA,GAC/F,IAAI32C,EAAa,IAAIY,KAAK2K,CAAAA,EAC1B,GAAKC,CAAAA,EAAI,CACR,IAAIsrC,EAAapvC,KAAK3I,OAAOyJ,WACzBsuC,EAAa92C,EAAWuI,SAC3BvI,IAAAA,EAAWoH,SAAS0vC,CACpBvrC,EAAAA,EAAQvL,EAAWa,QAAAA,GAEpB2K,EAAMD,EAAM1K,QAAAA,EAAU81C,CACtB,CACD,IAAI12C,EAAW,IAAIW,KAAK4K,CAAAA,EAGrBxL,EAAWa,QAAaZ,GAAAA,EAASY,QACnCZ,GAAAA,EAASynB,QAAQznB,EAASY,QAAAA,EAAU81C,CACrCD,EAAAA,EAAK12C,WAAa02C,EAAK12C,YAAYA,EACnC02C,EAAKz2C,SAAYy2C,EAAKz2C,UAAUA,EAChCy2C,EAAK3hC,KAAO2hC,EAAK3hC,MAAMrN,KAAKmf,OAAO6P,OAAO7hB,UAC1C6hC,EAAKr1C,GAAKqG,KAAKR,SAAWwvC,EAAKr1C,IAAMqG,KAAKgD,IAAAA,EAC1ChD,KAAKP,WAAW,WAChBO,KAAKuoB,YACL,MAAMpS,EAAUnW,KAAKuN,SAASyhC,CAM9B,EAAA,OALAhvC,KAAKH,UAAU,iBAAiB,CAACG,KAAKR,SAASrE,CAAAA,CAAAA,EAC/C6E,KAAKuoB,SAAS,GAEdvoB,KAAKqvC,YAAY,GACjBrvC,KAAK+rB,aAAa5wB,CAAAA,EACXgb,CACR,EACApf,EAAUq2B,cAAc,SAASjyB,EAAEoP,EAElC,CAAA,GADAA,EAAMA,GAAOpP,EAAEE,OACX2E,KAAK3I,OAAO+2C,SAAU,OAC1B,MAAMt4B,EAAO/e,EAAU+P,cAAcyD,GAAKjQ,MAAM,GAAA,EAAK,CACrD,EAAA,OAAOwb,GACN,IAAK,mBACL,IAAK,uBACL,IAAK,iBACL,IAAK,kBACJ,GAAA,CAAK/e,EAAUM,OAAOmT,gBAAiB,MACvCxK,KAAKyK,YAAYzK,KAAKtE,cAAcP,CAAGzC,EAAAA,KAAK,KAAKyC,CACjD,EAAA,MACD,IAAK,gBACL,IAAK,iBACL,IAAK,kBACL,IAAK,4BACL,IAAK,iBACL,IAAK,qBACL,IAAK,sBAAuB,CAC3B,MAAMxB,EAAKqG,KAAKwtB,cAAcjjB,CAC9B,EAAA,GAAA,CAAKvK,KAAKH,UAAU,aAAa,CAAClG,EAAGwB,IAAK,OACtC6E,KAAK3I,OAAOi4C,qBAAuBtvC,KAAKmB,aAAgBnB,CAAAA,KAAK5E,SAASzB,CAAAA,EAAI0F,SAAWW,KAAK3I,OAAO2hB,OACpGhZ,KAAK8uC,aAAan1C,CAElBqG,EAAAA,KAAK4uC,KAAKj1C,CAAAA,EACX,KACA,CACD,IAAK,iBACL,IAAK,oBACJ,OACD,QAAS,CACR,MAAM41C,EAAcvvC,KAAK,YAAY8V,CACrC,EAAA,GAAIy5B,EACHA,EAAYpkC,KAAKnL,KAAK7E,CAAAA,UAGlBoP,EAAItI,YAAcsI,GAAOvK,KAC5B,OAAOjJ,EAAUq2B,cAAcjyB,EAAEoP,EAAItI,YAEvC,KACA,CAAA,CAEH,EAEAlL,EAAUy4C,kBAAoB,SAASC,EACtC,CAAA,IAAIC,EAAS,EACb,GAAI1vC,KAAKuF,MAAM,CACd,IAAIK,EAAQ,EACRhM,EAAI,EACR,KAAOgM,EAAQ5F,KAAKuF,MAAM3L,GAAK61C,GAAS71C,EAAIoG,KAAKuF,MAAM1L,QACtD+L,GAAS5F,KAAKuF,MAAM3L,CAAAA,EACpBA,IAID,GAFA81C,EAAS91C,GAAKoG,KAAKuF,MAAM3L,CAAO61C,GAAAA,EAAQ7pC,GAAQ5F,KAAKuF,MAAM3L,CAAM,EAAA,GAE7DoG,KAAKwF,UACLkqC,GAAU1vC,KAAKuF,MAAM1L,OACvB,KAAM61C,GAAU,GAAK1vC,KAAKwF,SAASQ,KAAK+D,MAAM2lC,CAC7CA,CAAAA,GAAAA,GAKH,CACD,OAAOA,CACR,EAGA34C,EAAU44C,uBAAyB,SAASC,GAE3C,GAAI5vC,KAAKuF,MAEJ,CACJ,MAAMmqC,EAAS1vC,KAAKwvC,kBAAkBI,EAAIhzB,GAI1C,OAFAgzB,EAAIhzB,EAAE5W,KAAKE,IAAIlG,KAAKuF,MAAM1L,OAAO,EAAGmM,KAAKC,IAAI,EAAED,KAAK6pC,KAAKH,CAAQ,EAAA,CAAA,CAAA,EACjEE,EAAIjzB,EAAE3W,KAAKC,IAAI,EAAED,KAAK6pC,KAAW,GAAND,EAAIjzB,GAAM3c,KAAK3I,OAAO83C,UAAUnvC,KAAK3I,OAAO+O,aAAe,EAAA,CAAA,EAAGpG,KAAK3I,OAAOyJ,YAAY,GAAGd,KAAK3I,OAAO83C,WACzHS,CACP,CAPA,OAAOA,CAQT,EAEA74C,EAAU+4C,cAAc,SAASrzC,GAChC,IAAImzC,EACJ,MAAM/8B,EAAOrO,SAASqO,KAChBI,EAAkBzO,SAASyO,gBAG5B28B,EAFA5vC,KAAK+vC,KAAKpyB,MAASlhB,CAAAA,EAAGkuB,QAASluB,EAAGmuB,MAE9B,CACRhO,EAAEngB,EAAGogB,SAAWhK,EAAKmI,YAAY/H,EAAgB+H,YAAY,GAAKnI,EAAKsI,WACvEwB,EAAElgB,EAAGqgB,SAAWjK,EAAKiI,WAAW7H,EAAgB6H,WAAW,GAAKjI,EAAKqI,SAAAA,EAHjE,CAAC0B,EAAEngB,EAAGkuB,MAAOhO,EAAElgB,EAAGmuB,KAMnB5qB,EAAAA,KAAK3I,OAAOo0C,KAAOzrC,KAAKgwC,QAC3BJ,EAAIhzB,EAAI5c,KAAKxG,WAAWyY,cAAc,eAAA,EAAiBqC,YAAcs7B,EAAIhzB,EACzEgzB,EAAIhzB,GAAK5c,KAAKiwC,YAAYt2B,gBAAgB3Z,KAAK+pB,IAAAA,EAC3C/pB,KAAKoB,QAAU,UAClBwuC,EAAIhzB,GAAK5c,KAAKsS,GAAGy5B,cAGlB6D,EAAIhzB,GAAG5c,KAAKiwC,YAAYt2B,gBAAgB3Z,KAAK+pB,IAAAA,GAAO/pB,KAAKmB,YAAY,EAAEnB,KAAKsS,GAAGy5B,aAGhF,MAAMmE,EAAWlwC,KAAKxG,WAAWyY,cAAc,eAAA,EAE/C29B,EAAIjzB,GAAG3c,KAAKiwC,YAAYn2B,eAAeo2B,GAAUlwC,KAAKO,KAAmB,aAAE,CAAA,EAAGua,UAC9E80B,EAAInzC,GAAKA,EACT,MAAMsU,EAAU/Q,KAAK,SAASA,KAAKoB,KAAAA,EACnC,GAAI2P,EACH6+B,EAAM7+B,EAAQ5F,KAAKnL,KAAK4vC,CAGxB,UAAK5vC,KAAKmB,YAEH,CACN,MAAMuuC,EAAS1vC,KAAKwvC,kBAAkBI,EAAIhzB,CAC1C,EAAA,GAAA,CAAK5c,KAAKuF,OAAAA,CAAUvF,KAAKgwC,OACxB,OAAOJ,EACR,IAAI9nB,EAAG,EACP,IAAKA,EAAG,EAAGA,EAAK9nB,KAAKgwC,OAAOG,QAAQt2C,QAAAA,EAC/BmG,KAAKgwC,OAAOG,QAAQroB,CAAI8nB,EAAAA,EAAIjzB,GADWmL,IAG5C8nB,CAAAA,EAAIjzB,EAAE3W,KAAK6pC,KAA+C,IAAxC7pC,KAAKC,IAAI,EAAGypC,GAAyB,EAAjB1pC,KAAKC,IAAI,EAAE6hB,EAAG,CAAS,GAAA,GAAG9nB,KAAK3I,OAAO83C,YAExEp4C,EAAU0I,YAAcO,KAAKoB,OAAS,WACzCwuC,EAAIjzB,EAAuD,IAApD3W,KAAKC,IAAI,EAAED,KAAK6pC,KAAKH,CAAAA,EAAQ,GAAoB,EAAjB1pC,KAAKC,IAAI,EAAE6hB,EAAG,CAAA,GAAS,GAAG9nB,KAAK3I,OAAO83C,WAG1EnvC,KAAKP,YAAc,QAClB1I,EAAUq5C,mBAAqBr5C,EAAUM,OAAOg5C,kBACnDT,EAAIpqC,SAAW,GAEVxF,KAAKqvC,YAAYiB,gBACrBtwC,KAAKqvC,YAAYiB,cAAgBtwC,KAAKuwC,uBAAuBvwC,KAAKqvC,YAAY/2C,WAAY0H,KAAKqvC,YAAY92C,SAAU,CAAEi4C,OAAO,EAAGC,OAAO,KAI3Ib,CAAAA,IAAAA,EAAIhzB,EAAE,CACN,MAzBAgzB,EAAM5vC,KAAK2vC,uBAAuBC,CAAAA,EA4BpC,OADAA,EAAIc,UAAAA,CAAa,IAAIx3C,KACd02C,CACR,EACA74C,EAAU62C,iBAAiB,UAAA,CAC1B,GAAI,IAAI10C,OAAOC,QAAWpC,GAAAA,EAAUu8B,YAAY,GAAK,KAAOv8B,EAAUg3C,SAAS,CAC9E,MAAM4C,EAAiB55C,EAAUooB,OAAO6P,OAAO2R,gBAE/C5pC,EAAU23C,gBAAgB,CACzBthC,QAASujC,EACTna,MAAOz/B,EAAUooB,OAAO6P,OAAO4hB,sBAC/BtlC,SAAU,UAAA,CACTvU,EAAUgjC,SAAShjC,EAAUM,OAAOw5C,gBAAAA,CACpC,IAECF,IACF3wC,KAAKR,SAAWQ,KAAKisB,UAAYjsB,KAAKP,WAAa,KAEpD,CACF,EACA1I,EAAU+5C,eAAe,SAASjtC,EAAOktC,GACxC,OAAOltC,EAAmG,KAA3F,IAAK3K,KAAKnC,EAAU6J,SAAAA,EAAYuf,kBAAoB,EAAA,IAAKjnB,KAAK2K,CAAQsc,EAAAA,kBAAAA,IAA4B4wB,EAAM,GAAE,EAC1H,EAEAh6C,EAAUi6C,gBAAkB,SAASC,EAASC,EAC7C,CAAA,SAASC,EAAKC,EAASC,EAASllB,EAC/B,CAAA,OAAUnmB,KAAK+mB,IAAIqkB,EAAUC,CAAWllB,EAAAA,CACxC,CAED,MAAA,CAAK8kB,IAAWjxC,KAAKisB,WAAAA,CAAAA,EAOXjsB,KAAKisB,UAAUqlB,YAActxC,KAAKisB,UAAUykB,WAAcQ,EAAQR,UAAY1wC,KAAKisB,UAAUykB,UAJzF,KAI+GS,EAAKF,EAAQx0C,GAAGogB,QAASq0B,EAAQz0C,GAAGogB,QAHnJ,CAGsKs0B,GAAAA,EAAKF,EAAQx0C,GAAGqgB,QAASo0B,EAAQz0C,GAAGqgB,QAH1M,CAIf,EAAA,EAEA/lB,EAAUw6C,yBAA2B,SAAS1tC,EAC7C,CAAA,IAAIzK,EACArC,EAAUkG,SACb7D,EAAMrC,EAAUkG,OAAOlG,EAAUqK,QAClChI,EAAMA,GAAQ,CAAEo3C,OAAO,EAAGC,OAAO,KAAA,EAEjC5sC,EAAQ,IAAI3K,KAAK2K,CACjB,EAAA,IAAI8C,EAAM,EAIV,OAHGvN,EAAIo4C,mBAAqBp4C,EAAIq4C,mBAC/B9qC,EAAyB,IAAlBvN,EAAI2H,WAAW,IAA0B,GAAjB8C,EAAMhD,SAAAA,EAAcgD,EAAM1B,WAAAA,IAAiB,GAE9D,EAAN0B,GAAW9M,EAAU26C,4BAA4B7tC,EAAO8C,EAAKvN,CAAAA,EAAQuN,EAC7E,EACA5P,EAAU46C,uBAAyB,SAAS9tC,EAAOorC,EAAAA,CAClD,IAAI71C,EACArC,EAAUkG,SACb7D,EAAMrC,EAAUkG,OAAOlG,EAAUqK,KAElChI,GAAAA,EAAMA,GAAQ,CAAEo3C,OAAO,EAAGC,OAAO,KAEjC,EAAA,MAAM3sC,EAAY,EAAND,EAAU9M,EAAU26C,4BAA4B7tC,EAAOorC,EAAU71C,GAC7E,OAAO,IAAIF,KAAS,EAAJ4K,GAAS/M,EAAU26C,4BAA4B5tC,EAAM,GAAG1K,IAAW,EAAA,EAAA,CACpF,EAEArC,EAAU41B,eAAe,SAASxxB,EAAAA,CACjC,GAAI6E,KAAKP,WAAW,CACnB,IAAImwC,EAAI5vC,KAAK8vC,cAAc30C,CAC3B,EAAA,GAAI6E,KAAKgxC,gBAAgBhxC,KAAKisB,UAAW2jB,CAAAA,EAAK,CAC7C,IAAI/rC,EAAOC,EAIX,GAHI9D,KAAK+tC,UAAU/tC,KAAKR,UACvBQ,KAAK4tC,iBAEF5tC,EAAAA,CAAAA,KAAKP,WACR,OAED,IAAImyC,EAAe,KAUnB,GATG5xC,KAAKisB,WAAAA,CAAcjsB,KAAKisB,UAAUqlB,aACpCM,EAAe5xC,KAAKisB,WACPqlB,UAAAA,IAGdtxC,KAAKisB,UAAY2jB,EAEjB5vC,KAAKisB,UAAUqlB,UAAAA,GAEXtxC,KAAKP,YAAY,SAAS,CAa7B,GAVGmyC,IACFhC,EAAMgC,GAGP5xC,KAAK4tC,iBACL5tC,EAAAA,KAAKvE,SAASuE,KAAK2tC,UAAAA,EACnB3tC,KAAKuoB,SAAAA,GAEL1kB,EAAQ7D,KAAK6xC,mBAAmBjC,CAAAA,EAAKz2C,WAEhC6G,KAAK8xC,YAET,OADU9xC,KAAKH,UAAU,uBAAwB,CAAC1E,EAAG6E,KAAKR,YAO1DQ,KAAKuoB,SAAAA,GACLvoB,KAAAA,KAAK8xC,YAAYjuC,IANhB7D,KAAAA,KAAKuoB,SAAS,IAUhBzkB,EAAMD,EACK7D,KAAK8xC,YAGhB,IAAIx5C,EAAa,IAAIY,KAAK8G,KAAK8xC,WAAAA,EAC3Bv5C,EAAW,IAAIW,KAAK4K,CACJ,EAAd9D,KAAKoB,OAAS,OAASpB,KAAKoB,OAAS,QACzC9I,EAAWuI,SAActI,GAAAA,EAASsI,SACnCvI,GAAAA,EAAW6J,cAAgB5J,EAAS4J,WAAAA,IACnC5J,EAAW,IAAIW,KAAK8G,KAAK8xC,YAAY,GAIvC9xC,GAAAA,KAAKR,SAASQ,KAAKgD,IACnBhD,EAAAA,KAAKuN,SAASjV,EAAYC,EAAUyH,KAAKmf,OAAO6P,OAAO7hB,UAAWnN,KAAKR,SAAUowC,EAAImC,QAErF/xC,KAAKH,UAAU,iBAAiB,CAACG,KAAKR,SAASrE,CAAAA,CAAAA,EAC/C6E,KAAKuoB,SAAAA,GACLvoB,KAAKP,WAAW,UAEhB,CAED,IAEIrG,EAFA44C,EAAWhyC,KAAK3I,OAAO83C,UACvB1yC,EAAGuD,KAAK5E,SAAS4E,KAAKR,UAM1B,GAJIzI,EAAUkG,SACb7D,EAAMrC,EAAUkG,OAAOlG,EAAUqK,KAClChI,GAAAA,EAAMA,GAAQ,CAAEo3C,OAAO,EAAGC,OAAO,OAE7BzwC,KAAKP,YAAY,OACpBoE,EAAQ7D,KAAKY,UAAUzH,QAAAA,EAAoD,KAAzCy2C,EAAIjzB,EAAE3c,KAAK3I,OAAO83C,UAAgB,GAANS,EAAIhzB,EAAK,IAAA,CAClEgzB,EAAIqC,QAAUjyC,KAAKmB,cACvB0C,GAA8C,IAArC7D,KAAKtH,KAAKwnB,UAAUzjB,EAAGnE,UAAAA,GAAAA,CAG5B0H,KAAKmB,aAAenB,KAAKkyC,gBAAkBlyC,KAAKqvC,YAAY8C,oBAAsBtvC,SACtF7C,KAAKqvC,YAAY8C,kBAAoBtuC,EAAQpH,EAAGnE,YAG7C0H,KAAKqvC,YAAY8C,oBACpBtuC,GAAS7D,KAAKqvC,YAAY8C,mBAG3BtuC,EAAQ7D,KAAK8wC,eAAejtC,CAAAA,EAExB+rC,EAAIpqC,UAAYxF,KAAK3I,OAAOg5C,iBAAmBrwC,KAAKmB,aAAe/H,GAEtEyK,EAAQ9M,EAAUw6C,yBAAyB1tC,CAC3CC,EAAAA,EAAM/M,EAAU46C,uBAAuB9tC,EAAM7D,KAAKqvC,YAAYiB,aAG9DxsC,GAAAA,EAAMrH,EAAGlE,SAASY,QAAAA,GAAWsD,EAAGnE,WAAWa,UAAU0K,OAChD,CAGN,GAFAA,EAAQpH,EAAGnE,WAAWa,QAAAA,EACtB2K,EAAMrH,EAAGlE,SAASY,QACd6G,EAAAA,KAAKmB,YAAa,CACrB,IAAIixC,EAAcpyC,KAAKY,UAAUzH,QAAAA,EAAUy2C,EAAIjzB,EAAE3c,KAAK3I,OAAO83C,UAAU,KAASS,EAAIqC,OAAO,EAAE,OAC7F,GAAIjyC,KAAKoB,OAAS,QAEjB,GADAgxC,EAAcpyC,KAAK8wC,eAAesB,EAAAA,IAC9BpyC,KAAKqyC,iBAAmB,CAC3B,IAAIxtC,EAAM,MACNutC,GAAer7C,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAK4K,EAAIe,EAAI,IAAI1L,QAChE0K,IAAAA,EAAQuuC,EAAcvtC,EAC9B,MACOf,EAAMsuC,OAGJpyC,KAAK3I,OAAOg5C,gBACVT,EAAI0C,kBACPzuC,EAAQ9M,EAAUw6C,yBAAyBa,CAE3CtuC,EAAAA,EAAM/M,EAAU46C,uBAAuBS,EAAa,CAIjDxC,EAAAA,EAAI0C,kBACPzuC,EAAQuuC,EAERtuC,EAAMsuC,CAId,KAAW,CACN,IAAIG,EAAgBvyC,KAAKtH,KAAKwF,UAAU,IAAIhF,KAAKuD,EAAGlE,SAASY,QAAAA,EAAY,IAAIA,QACzEq5C,EAAAA,EAAe,IAAIt5C,KAAKq5C,GACxBE,EAAYzyC,KAAK3I,OAAOyJ,WAExB4xC,EAAiC,GAAGV,GADzBhyC,KAAK3I,OAAO0J,UACJ0xC,GAEvBzyC,KAAK3I,OAAO83C,UAAY,EACxB,IAAIwD,EAAa3yC,KAAK8vC,cAAc30C,CACpC6E,EAAAA,KAAK3I,OAAO83C,UAAY6C,EAExB,IAAIY,EAAUhD,EAAIjzB,EAAEq1B,EAAS,IACzB/J,EAAUjiC,KAAKE,IAAI0pC,EAAIjzB,EAAI,EAAG+1B,CAAMV,EAAAA,EAAS,IAC7Ca,EAA2B,IAAbF,EAAWh2B,EAI5B7Y,EADEkC,KAAK+mB,IAAI6lB,EAAUC,CAAAA,EAAe7sC,KAAK+mB,IAAIkb,EAAU4K,CACjDN,EAAAA,EAAgBtK,EAEhBsK,EAAgBK,EAEvB9uC,GAAuF,KAA1E,IAAK5K,KAAK4K,CAAAA,EAAMqc,kBAAsBqyB,EAAAA,EAAaryB,qBAChEngB,KAAKO,KAAmB,aAAE,CAAA,EAAGvI,MAAM86C,OAAO,WACtC9yC,KAAKoB,OAAS,QAAUpB,KAAKoB,OAAS,QACzC0C,EAAM9D,KAAK8wC,eAAehtC,CAAAA,EAC3B,CACD,GAAI9D,KAAKP,YAAc,WACtB,GAAIqE,GAAO9D,KAAK8xC,YAAY,CAC3B,IAAI1xB,EAAQwvB,EAAIxvB,QAASpgB,KAAKmB,aAAAA,CAAgByuC,EAAIqC,OAAQ,MAAY,GACtEpuC,EAAQC,GAAK8rC,EAAIxvB,MAAM,EAAEA,GACzBtc,EAAM9D,KAAK8xC,aAAa1xB,GAAiB,IAAT4xB,EACtC,MACMnuC,EAAQ7D,KAAK8xC,iBAGVhuC,GAAKD,IACRC,EAAID,EAAe,IAATmuC,EAEZ,CACD,IAAIe,EAAU,IAAI75C,KAAK4K,EAAI,CAAA,EACvBkvC,EAAY,IAAI95C,KAAK2K,CAEzB,EAAA,GAAG7D,KAAKP,YAAY,QAAU1I,EAAUM,OAAO47C,iBAC5CD,CAAAA,EAAAA,CAAaj8C,EAAU6J,WAAckD,CAAAA,EAAAA,CAAO/M,EAAU4J,WAAW,CAEnE,GAAIlE,CAAAA,EAAGnE,WAAcvB,CAAAA,EAAU6J,YAAcnE,EAAGlE,SAAAA,CAAYxB,EAAU4J,UAErEqyC,EAAY,IAAI95C,KAAKuD,EAAGnE,UAAAA,EACxBwL,EAAM,IAAI5K,KAAKuD,EAAGlE,cACd,CAEJ,IAAI02C,EAAWnrC,EAAMkvC,GAEjBA,EAAaj8C,CAAAA,EAAU6J,WAC1BoyC,EAAY,IAAI95C,KAAKnC,EAAU6J,SAC3BgvC,EAAAA,EAAIpqC,UAAYxF,KAAK3I,OAAOg5C,iBAAmBrwC,KAAKmB,aACvD6xC,EAAY,IAAI95C,KAAKnC,EAAUw6C,yBAAyByB,CACrD55C,CAAAA,EAAAA,EAAIo4C,oBACNwB,EAAY,IAAI95C,KAAK85C,EAAU75C,QAAYC,EAAAA,EAAIo4C,oBAChD1tC,EAAM,IAAI5K,KAAe,EAAV85C,EAAchzC,KAAK0xC,4BAA4BsB,EAAWhzC,KAAKqvC,YAAYiB,cAAel3C,CAAAA,CAAAA,GAEzG0K,EAAM,IAAI5K,MAAM85C,EAAY/D,CAAAA,IAG7BnrC,EAAM,IAAI5K,KAAKnC,EAAU4J,SAAAA,EAErBivC,EAAIpqC,UAAYxF,KAAK3I,OAAOg5C,iBAAmBrwC,KAAKmB,aACpD/H,EAAIq4C,kBACN3tC,EAAM,IAAI5K,KAAK4K,EAAI3K,QAAYC,EAAAA,EAAIq4C,eACpC3tC,GAAAA,EAAM,IAAI5K,KAAS,EAAJ4K,EAAQ9D,KAAK0xC,4BAA4B5tC,EAAK,EAAG1K,EAAAA,KAChE45C,EAAY,IAAI95C,KAAS,EAAJ4K,EAAQ9D,KAAK0xC,4BAA4B5tC,EAAK9D,KAAKqvC,YAAYiB,cAAel3C,EAAAA,EAChG4G,CAAAA,EAAAA,KAAKowC,oBACP4C,EAAYj8C,EAAU2B,KAAKC,IAAIq6C,EAAW55C,EAAIo3C,OAAQp3C,EAAIq3C,MAAAA,EAC1D3sC,EAAM,IAAI5K,KAAS,EAAJ4K,EAAQ9D,KAAK0xC,4BAA4B5tC,EAAK,EAAG1K,EAAAA,KAChE0K,EAAM/M,EAAU2B,KAAKC,IAAImL,EAAK1K,EAAIo3C,OAAQp3C,EAAIq3C,MAAAA,IAI/CuC,EAAY,IAAI95C,KAAAA,CAAM4K,EAAMmrC,CAAAA,EAK9B,CACG8D,EAAU,IAAI75C,KAAK4K,EAAI,EAC3B,CAiCD,GAAA,CA5BI9D,KAAKmB,aAAenB,KAAKkyC,gBAC3Bn7C,CAAAA,EAAUM,OAAO67C,YAAAA,CACfn8C,EAAUo8C,kBAAuBvD,GAAAA,EAAIhzB,GAAK5c,KAAKozC,gBAAgB,CAAC96C,WAAY,IAAIY,KAAK2K,CAAQtL,EAAAA,SAAS,IAAIW,KAAK2K,MAAa,IAAI3K,KAAK2K,CAAOhD,EAAAA,SAAAA,EAAab,KAAK3I,OAAOyJ,cACpKmuC,EAAWnrC,EAAMkvC,EACjBhzC,KAAKP,YAAc,SAClBoF,EAAM7E,KAAKY,UAAUzH,QAAAA,EAAqB,GAARy2C,EAAIhzB,EAAS,GAAM,KACzDo2B,EAAY,IAAI95C,KAAK2L,CACXnF,GAAAA,SAASM,KAAK3I,OAAOyJ,YAC/BgD,EAAM,IAAI5K,KAAK85C,EAAU75C,UAAY81C,CACrC8D,EAAAA,EAAU,IAAI75C,KAAK4K,EAAI,CAKrB9D,IAAAA,KAAKmB,aACPpK,EAAUM,OAAO67C,WACfn8C,EAAAA,CAAAA,EAAUY,QAAai4C,GAAAA,EAAIhzB,GAAK5c,KAAKozC,gBAAgB,CAAC96C,WAAY,IAAIY,KAAK4K,CAAAA,EAAMvL,SAAS,IAAIW,KAAK4K,CAAW,CAAA,CAAA,GAAA,IAAI5K,KAAK4K,CAAAA,EAAKjD,YAAcb,KAAK3I,OAAO0J,aACrJkuC,EAAWnrC,EAAMkvC,EACjBnuC,EAAM7E,KAAKY,UAAUzH,QAAiB,EAAA,GAANy2C,EAAIhzB,EAAK,GAAI,KACjD9Y,EAAM/M,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAK2L,CACpCnF,CAAAA,GAAAA,SAASM,KAAK3I,OAAO0J,SAAAA,EACzBgyC,EAAU,IAAI75C,KAAK4K,EAAI,CAAA,EACpB9D,KAAKP,YAAc,SACrBuzC,EAAY,IAAI95C,KAAM4K,CAAAA,EAAMmrC,KAKzBjvC,KAAKmB,aAAgB4xC,EAAQx0C,QAAAA,GAAWy0C,EAAUz0C,QAAaw0C,GAAAA,EAAQlyC,SAAWb,EAAAA,KAAK3I,OAAO0J,WAAchK,EAAUs8C,WAG1H,GAFA52C,EAAGnE,WAAW06C,EACdv2C,EAAGlE,SAAS,IAAIW,KAAK4K,CAAAA,EACjB9D,KAAK3I,OAAOi8C,cAAc,CAE7B,IAAIC,GAAKx8C,EAAUwJ,KAAmB,aAAE,CAAA,EAAGua,UAC3C9a,KAAKwzC,cACLz8C,EAAUwJ,KAAmB,aAAE,CAAA,EAAGua,UAAYy4B,EAC9C,MACAvzC,KAAK6M,YAAY7M,KAAKR,QAAAA,EAEpBQ,KAAKmB,aACRnB,KAAK8tB,aAAa9tB,KAAKR,SAAS,SAASo+B,IACxCA,GAAEl4B,WAAW,iCAClB,CAAA,EAGG1F,KAAKH,UAAU,cAAe,CAACG,KAAKR,SAAUQ,KAAKP,WAAYtE,CAC/D,CAAA,CAAA,CACH,SACMpE,EAAU6I,WAAW,aAAA,EAAe,CACvC,IAAIjG,GAAKqG,KAAKwtB,cAAcryB,EAAEE,QAAQF,EAAE8c,UACxCjY,EAAAA,KAAKH,UAAU,cAAc,CAAClG,GAAGwB,CAAAA,CAAAA,CACjC,CAEH,EACApE,EAAU82B,eAAe,SAAS1yB,EAAEoP,EAGnC,CAAA,GAAIpP,EAAEiV,QAAU,IAGZpQ,KAAK3I,OAAO+2C,UAAYpuC,CAAAA,KAAKP,WAAjC,CACA8K,EAAMA,GAAMpP,EAAEE,QAAQF,EAAE8c,WACxB,IAAIH,EAAY/gB,EAAU+P,cAAcyD,CAAAA,EAAKjQ,MAAM,GAAA,EAAK,GASxD,OAPI0F,KAAK3I,OAAOo8C,iBAAmB37B,GAAa,YAC5CvN,EAAItI,YAAcsI,EAAItI,WAAWyD,UAAUqB,QAAQ,qBAAA,IAA4B,KACjF+Q,EAAY,iBACZ9X,KAAKkyC,eAAiB,IAIhBp6B,GACP,IAAK,qBACL,IAAK,sBACA9X,KAAKmB,cACRnB,KAAKP,WAAW,QACjB,MACD,IAAK,iBACL,IAAK,iBACJO,KAAKP,WAAW,OAChB,MACD,IAAK,mBACJO,KAAKP,WAAW,SACA1I,EAAU+P,cAAcyD,CACzBxD,EAAAA,QAAQ,sBAA0B,EAAA,EAChDhQ,EAAUs7C,iBAAmB,GAE7Bt7C,EAAUs7C,iBAAAA,GAEX,MACD,IAAK,mBACL,IAAK,uBACL,IAAK,iBACL,IAAK,kBACL,IAAK,sBACJryC,KAAKP,WAAW,SAChB,MACD,IAAK,GACJ,GAAI8K,EAAItI,WACP,OAAOlL,EAAU82B,eAAe1yB,EAAEoP,EAAItI,UACvC,EAAA,MACD,QACC,IAAA,CAAKlL,EAAU6I,WAAW,aAAkB7I,GAAAA,EAAU8I,UAAU,cAAe,CAACiY,EAAW3c,CAAAA,CAAAA,IACtFoP,EAAItI,YAAcsI,GAAOvK,MAAQ8X,GAAa,WACjD,OAAO/gB,EAAU82B,eAAe1yB,EAAEoP,EAAItI,UAGxCjC,EAAAA,KAAKP,WAAW,KAChBO,KAAKR,SAAS,IAAA,CAGhB,GAAIQ,KAAKP,WAAW,CACnB,IAAI9F,EAAKqG,KAAKwtB,cAAcjjB,CAC5B,EAAA,GAAKvK,KAAK3I,OAAO,QAAQ2I,KAAKP,UAAAA,GAAgBO,KAAKH,UAAU,eAAe,CAAClG,EAAIqG,KAAKP,WAAYtE,IAE7F,CAKJ,GAJA6E,KAAKR,SAAU7F,GAEXqG,KAAK+tC,UAAU/tC,KAAKR,UAAaQ,KAAK+tC,UAAY/tC,KAAKP,YAAc,WACxEO,KAAK4tC,iBACF5tC,EAAAA,CAAAA,KAAKP,WACR,OAEDO,KAAKqvC,YAAct4C,EAAU4L,YAAY3C,KAAK5E,SAAS4E,KAAKR,QAAAA,GAAa,CAAA,CAAA,EACzEQ,KAAKisB,UAAYjsB,KAAK8vC,cAAc30C,EACpC,MAXA6E,KAAKP,WAAWO,KAAKR,SAAS,CAY/B,CACDQ,KAAK8xC,YAAY,IAnEmC,CAoErD,EAGA/6C,EAAU28C,wBAA0B,SAASv8C,EAC5C,CAAA,IAAI46C,EAAS,CAAA,EACb,QAAQn4C,KAAKzC,EACTyC,EAAEmN,QAAQ,GACZgrC,IADqB,IACrBA,EAAOn4C,OAGT,OAAOm4C,CACR,EACAh7C,EAAU48C,4BAA8B,SAASC,EAAOC,EAAAA,CACvD,IAAIC,EAAU9zC,KAAK0zC,wBAAwBE,CAAAA,EACvCG,EAAgB/zC,KAAK0zC,wBAAwBG,CACjD,EAAA,QAAQj6C,KAAKm6C,EACRD,EAAQl6C,CAAAA,GAAAA,OACJi6C,EAAcj6C,CAGxB,CAAA,EAGA7C,EAAUg1B,aAAa,SAAS5wB,EAC/B,CAAA,GAAA,CAAIA,GAAKA,EAAEiV,QAAU,GAAKpQ,CAAAA,KAAKsqB,QAA/B,CACA,GAAItqB,KAAKP,YAAcO,KAAKR,SAAS,CACpCQ,KAAKO,KAAmB,aAAE,GAAGvI,MAAM86C,OAAO,UAG1C,IAAIvmB,EAAUvsB,KAAKR,SACftE,EAAO8E,KAAKP,WAEZu0C,EAASh0C,CAAAA,KAAKisB,WAAajsB,KAAKisB,UAAUqlB,UACvCtxC,OAAAA,KAAKqvC,YAAY8C,kBAExB,IAAI11C,EAAGuD,KAAK5E,SAAS4E,KAAKR,UAC1B,GAAIw0C,IAAUh0C,KAAKqvC,YAAY4E,eAAiBj0C,KAAKqvC,YAAY/2C,YAAcmE,EAAGnE,WAAWa,QAAW6G,GAAAA,KAAKqvC,YAAY/2C,WAAWa,WAAasD,EAAGlE,SAASY,QAAW6G,GAAAA,KAAKqvC,YAAY92C,SAASY,QAAAA,GAAW,CAC5M,IAAI+6C,EAAQl0C,KAAKP,YAAY,WAC7B,GAAKO,KAAKH,UAAU,uBAAuB,CAACpD,EAAItB,EAAG+4C,EAAQl0C,KAAKqvC,WAY/D,CAAA,EAAA,GADArvC,KAAKR,SAAWQ,KAAKP,WAAa,KAC9By0C,GAAUl0C,KAAK3I,OAAO88C,eAAe,CAIxC,GAHAn0C,KAAKvE,SACLuE,EAAAA,KAAKszB,WAAW,IAAIp6B,KAEhB8G,KAAKmB,aAAenB,KAAK3I,OAAO+8C,mBAAAA,CAAsBp0C,KAAK3I,OAAO2hB,SAAWhZ,KAAKV,cAAcU,KAAK5E,SAASmxB,IAEjH,OADAx1B,EAAU8I,UAAU,YAAa,CAAC0sB,EAASrxB,EAAMC,CAC1C6E,CAAAA,EAAAA,KAAK8uC,aAAaviB,CAE1BvsB,EAAAA,KAAKisB,UAAY,GACjBjsB,KAAK2tC,WAAa3tC,KAAK+tC,SAAWxhB,CACvC,MACUvsB,KAAKszB,YACTtzB,KAAKH,UAAUq0C,EAAO,eAAe,iBAAiB,CAAC3nB,EAAQvsB,KAAK5E,SAASmxB,CAAAA,CAAAA,CAAAA,OAvB3E2nB,EACHl0C,KAAK+zB,YAAYt3B,EAAG9C,GAAAA,EAEpBqG,GAAAA,KAAKqvC,YAAY4E,aAAe,GAChCj0C,KAAK2zC,4BAA4Bl3C,EAAIuD,KAAKqvC,WAAAA,EAC1Ct4C,EAAUsM,WAAW5G,EAAIuD,KAAKqvC,WAAAA,EAC9BrvC,KAAK6M,YAAYpQ,EAAG9C,EAoBtB,EAAA,CACGqG,KAAKisB,YAAcjsB,KAAKisB,UAAUqlB,WAAatxC,KAAKisB,YAAc,MACrEjsB,KAAKR,SAAWQ,KAAKP,WAAa,KAClCO,KAAK4M,iBAEN7V,GAAAA,EAAU8I,UAAU,YAAa,CAAC0sB,EAASrxB,EAAMC,GACjD,CACD6E,KAAKR,SAAW,KAChBQ,KAAKP,WAAW,KAChBO,KAAKisB,UAAU,KACfjsB,KAAKqvC,YAAc,KACnBrvC,KAAKqyC,iBAAmB,IApDuB,CAqDhD,EAEAt7C,EAAUs9C,qBAAuB,UAChC,CAAA,MAAA,EAAA,CAAIr0C,KAAK4jB,YAAAA,CAAc5jB,KAAKsjB,MAC3BtjB,IAAAA,KAAKyoB,aAAe,GACb,GAIT,EACA1xB,EAAUy8C,YAAY,UAAA,CACrBxzC,KAAKs0C,eACLt0C,EAAAA,KAAKkS,gBACJlS,KAAK3I,OAAOi7B,OACZtyB,KAAKxG,WAAWyY,cAAc,qBAE/B,IAAI7U,EAAO4C,KAAKA,KAAKoB,MAAQ,OAO7B,EAAA,GANGhE,EACFA,EAAK+N,KAAKnL,KAAM,EAAA,EAEhBA,KAAKu0C,aAAAA,EAGFv0C,KAAKq0C,qBAAAA,EACR,MAAO,GAERr0C,KAAK4M,iBACN,CAAA,EAEA7V,EAAUy9C,aAAe,SAASt5C,EACjC,CAAA,MAAA,CAAA,EAAUnE,EAAUmE,EAAM,UACxBnE,EAAU2B,KAAKwC,EAAM,QAAA,GAAanE,EAAU+sB,UAAU5oB,EAAM,OAAYnE,GAAAA,EAAU+sB,UAAU5oB,EAAM,aAAA,EACrG,EAEAnE,EAAU09C,wBAA0B,UAEnC,CAAA,QADIC,EAAe,CAAC,sBAAuB,sBAAuB,cAAe,sBAAA,EACzE96C,EAAI,EAAGA,EAAI86C,EAAa76C,OAAQD,IAEvC,QADI+6C,EAAQ30C,KAAKO,KAAKm0C,EAAa96C,CAAAA,CAAAA,EAC3B8rB,EAAI,EAAGivB,GAASjvB,EAAIivB,EAAM96C,OAAQ6rB,IAAK,CAC9C,IAAI5P,EAAO6+B,EAAMjvB,CAAAA,EAAG5qB,aAAa,UAAe65C,GAAAA,EAAMjvB,CAAG5qB,EAAAA,aAAa,QAClE+qB,EAAQ7lB,KAAKmf,OAAO6P,OAAO0lB,EAAa96C,CACzCkc,CAAAA,EAAAA,IACF+P,EAAQ7lB,KAAKmf,OAAO6P,OAAOlZ,EAAO,MAAA,GAAW9V,KAAKmf,OAAO6P,OAAOlZ,CAAS+P,GAAAA,GAEvE6uB,EAAa96C,CAAAA,GAAM,sBACrBisB,EAAQ7lB,KAAKmf,OAAO6P,OAAOld,KACnB4iC,EAAa96C,IAAM,wBAC3BisB,EAAQ7lB,KAAKmf,OAAO6P,OAAOuS,MAE5BvhC,KAAK+1B,SAAS6e,wBAAwBD,EAAMjvB,GAAIG,GAAS,EAAA,CACzD,CAEH,EAEA9uB,EAAU2V,WAAa,SAAShU,EAAMwC,EAAAA,CAErC,IAAK8E,KAAKxG,WACT,MAAM,IAAIyN,MAAM;AAAA,sGAGjBvO,EAAAA,EAAOA,GAAQsH,KAAKgK,MACpB9O,EAAOA,GAAQ8E,KAAKoB,MACpB,IAAI+rB,EAAe,eAEfntB,KAAKmf,OAAO6P,OAAO6lB,YACtB70C,KAAKmf,OAAO6P,OAAO6lB,UAAY70C,KAAKmf,OAAO6P,OAAOyR,WAGnD,IAAIvjC,EAAY8C,KAAK+pB,KACjB+qB,EAAW,iBAAmB90C,KAAKoB,MACnC2zC,EAAW,iBAAmB75C,EAE7B8E,KAAKoB,OAAUlE,EAAUwI,UAAUqB,QAAQ+tC,CAG/C53C,GAH6D,GAG7DA,EAAUwI,UAAYxI,EAAUwI,UAAU6R,QAAQu9B,EAAUC,GAF5D73C,EAAUwI,WAAa,IAAMqvC,EAK9B,IAIIC,EAJAC,EAAgB,gBAEhBC,EAAAA,EAAel1C,KAAKoB,OAASlG,GAAAA,CAAQ8E,KAAK3I,OAAO89C,kBAAmBn1C,KAAKO,KAAK4sB,CAAc,EAAA,CAAA,EAAGrS,UAGhG9a,KAAKO,KAAK00C,CAAkBj1C,GAAAA,KAAKO,KAAK00C,CAAe,EAAA,CAAA,IACvDD,EAAiBh1C,KAAKO,KAAK00C,CAAe,EAAA,CAAA,EAAGn6B,WAI1C9a,KAAKA,KAAKoB,MAAQ,OAAA,GAAYlG,GAAQ8E,KAAKoB,OAASlG,GACvD8E,KAAKA,KAAKoB,MAAQ,WAEnBpB,EAAAA,KAAK4tC,iBAED5tC,EAAAA,KAAKO,KAAK00C,CACbj1C,IAAAA,KAAKO,KAAK00C,CAAAA,EAAe,GAAGhzC,WAAWC,YAAYlC,KAAKO,KAAK00C,GAAe,CAC5Ej1C,CAAAA,EAAAA,KAAKO,KAAK00C,CAAAA,EAAiB,MAG5Bj1C,KAAKoB,MAAQlG,EACb8E,KAAKgK,MAAQtR,EACbsH,KAAKmB,YAAenB,KAAKoB,OAAS,QAElCpB,KAAKo1C,UAAY,EAGjBp1C,KAAKwzC,YAAAA,EAELxzC,KAAKy0C,wBAAAA,EAEL,IAAIliB,EAAOvyB,KAAKO,KAAkB,YAClC,GAAGgyB,EACF,QAAS34B,EAAI,EAAGA,EAAI24B,EAAK14B,OAAQD,IAAK,CACrC,IAAIy4B,EAAME,EAAK34B,CAAAA,EAEXy4B,EAAIv3B,aAAa,UAAA,GAAekF,KAAKoB,OAASixB,EAAIv3B,aAAa,MAAA,GAAWkF,KAAKoB,MAAQ,QAC1FixB,EAAI1iB,UAAUhX,IAAI,QAAA,EAClBqH,KAAK+1B,SAASsf,kBAAkBhjB,EAAK,EAAA,IAErCA,EAAI1iB,UAAU+L,OAAO,QACrB1b,EAAAA,KAAK+1B,SAASsf,kBAAkBhjB,EAAAA,EAEjC,EAAA,QAGS6iB,GAAe,WACzBl1C,KAAKO,KAAK4sB,CAAAA,EAAc,GAAGrS,UAAYo6B,GAE9BF,OAAAA,GAAkB,UAAYh1C,KAAKO,KAAK00C,CAAkBj1C,GAAAA,KAAKO,KAAK00C,CAAe,EAAA,CAAA,IAC5Fj1C,KAAKO,KAAK00C,GAAe,CAAGn6B,EAAAA,UAAYk6B,EAG1C,EACAj+C,EAAU0V,eAAiB,SAAS/T,EAAMwC,EAAAA,CACpC8E,KAAKH,UAAU,qBAAsB,CAACG,KAAKoB,MAAOpB,KAAKgK,MAAO9O,GAAQ8E,KAAKoB,MAAO1I,GAAQsH,KAAKgK,KACpGhK,CAAAA,IAAAA,KAAK0M,WAAWhU,EAAMwC,CAAAA,EACtB8E,KAAKH,UAAU,eAAgB,CAACG,KAAKoB,MAAOpB,KAAKgK,QAClD,EAEAjT,EAAUyV,OAAS,SAAS9T,EAAMwC,EACjCnE,CAAAA,EAAU0V,eAAe/T,EAAMwC,EAChC,EAEAnE,EAAUu+C,iBAAmB,SAAS17C,EAAE1B,EAAKQ,EAAKwE,EAAWq4C,EAAAA,CAC5DA,EAAaA,GAAc,EAE3B,IAAIn8B,EAAK5U,SAASC,cAAc,KAAA,EAChC2U,EAAK1T,UAAY,gBAEd1F,KAAK8jB,UAAU9jB,KAAKoB,MAAM,eAE5BgY,IAAAA,EAAK1T,WAAa,IAAM1F,KAAK8jB,UAAU9jB,KAAKoB,MAAM,eAAA,EAAiB1I,IAGpE,IAAIkN,EAAQ5F,KAAKuF,MAAM3L,GAEnBoG,KAAKoB,OAAS,SAAWxH,IAAM,GAAKoG,KAAK3I,OAAOm+C,cACnDp8B,EAAK1T,WAAa,wBAClBxN,GAAY,GAGb8H,KAAK6sC,OAAOzzB,EAAMxT,EAAO5F,KAAKsS,GAAG05B,aAAa,EAAG9zC,EAAMq9C,CAEvD,EAAA,IAAIE,EAAmBz1C,KAAK8jB,UAAU9jB,KAAKoB,MAAM,eAAe1I,EAAKsH,KAAKoB,KAC1EgY,EAAAA,EAAK1U,UAAY+wC,EAEjBz1C,KAAK+1B,SAAS2f,cAAct8B,EAAMq8B,CAElCv4C,EAAAA,EAAUyH,YAAYyU,CAAAA,CACvB,EAEAriB,EAAU4+C,iBAAmB,SAASnyB,EAAME,GAC3C,IAAIkyB,EAAQ,EACZ,GAAA,CAAK7+C,EAAUoK,YAAY,CAC1B,IAAI00C,EAAU9+C,EAAU2B,KAAK,OAAO3B,EAAUqK,MAAM,MAChDy0C,EAAAA,IAASnyB,EAAKmyB,EAAQryB,IAC1BoyB,EAAQ5vC,KAAKM,OAAOod,EAAGvqB,UAAUqqB,EAAKrqB,QAAAA,GAAY,KAClD,CAAA,CACD,OAAOy8C,CACR,EACA7+C,EAAU++C,oBAAsB,WAE/B,OAAO91C,KAAKtH,KAAKsH,KAAKoB,MAAM,QAAU,EAAA,IAAIlI,KAAK8G,KAAKgK,MAAM7Q,QAC3D,CAAA,CAAA,CAAA,EAEApC,EAAUg/C,cAAgB,WACzB,IAAI/tB,EAAKhoB,KAAK81C,oBAAAA,EACVE,EAAKj/C,EAAU2B,KAAKC,IAAIqvB,EAAI,EAAGhoB,KAAKoB,KAAAA,EACxC,GAAKrK,CAAAA,EAAUoK,YAAY,CAC1B,IAAI00C,EAAU9+C,EAAU2B,KAAK,OAAO3B,EAAUqK,MAAM,MAAA,EAChDy0C,IAASG,EAAKH,EAAQ7tB,CAC1B,EAAA,CACD,OAAOguB,CACR,EACAj/C,EAAUk/C,kBAAoB,SAASrwC,EAAO4d,EAAME,EAEnD,CAAA,IAAI+nB,EAAMzrC,KAAK3I,OAAOo0C,IAClByK,EAAOtwC,EACPgwC,EAAQ51C,KAAK21C,iBAAiBnyB,EAAME,CAGxC1jB,EAAAA,KAAKm2C,iBAAiB3yB,EAAMoyB,EAAO,MAAO,CAAA,EAE1C,QADIQ,EAAYR,EAAQ51C,KAAKowC,kBACpBx2C,EAAE,EAAGA,EAAEg8C,EAAOh8C,IAClBoG,KAAKwF,SAAS5L,CACjBoG,GAAAA,KAAKuF,MAAM3L,CAAAA,EAAK,EAChBw8C,KAEAp2C,KAAKuF,MAAM3L,CAAAA,EAAGoM,KAAK+D,MAAMmsC,GAAME,EAAUx8C,EAAAA,EAE1Cs8C,GAAMl2C,KAAKuF,MAAM3L,CACjBoG,EAAAA,KAAKgwC,OAAOp2C,CAAIoG,GAAAA,KAAKuF,MAAM3L,EAAE,IAAI,IAAIoG,KAAKgwC,OAAOp2C,EAAE,KAAKoG,KAAKmB,YAAY,EAAGsqC,EAAMzrC,KAAKsS,GAAG+X,aAAerqB,KAAKsS,GAAGy5B,cAGlH/rC,KAAKgwC,OAAmB,WAAI4F,EAC5B51C,KAAKgwC,OAAO4F,CAAAA,EAAU51C,KAAKuF,MAAMqwC,EAAM,CAAG51C,EAAAA,KAAKgwC,OAAO4F,EAAM,CAAO,GAAA,CAEpE,EAEA7+C,EAAUs/C,oBAAsB,SAASt0C,EAAK6D,EAAO1N,EAAAA,CACpD,IAAI0G,EAAIoB,KAAK3I,OACb2I,KAAK6sC,OAAO9qC,EAAK6D,EAAOhH,EAAEwH,cAAcxH,EAAEmC,UAAUnC,EAAEkC,YAAa5I,EAAK8H,KAAKsS,GAAGy5B,YAAc,EAAG,CAAA,CAClG,EAEAh1C,EAAUu/C,eAAiB,SAAShkB,EAAQikB,GAE3C,IAAIC,EAAK,IAAIt9C,KAAKnC,EAAU6J,SAC3Bo1C,EAAAA,EAAK,IAAI98C,KAAKnC,EAAU4J,SACxB81C,EAAAA,EAAQz2C,KAAKtH,KAAKwF,UAAWnH,EAAU0J,aAAAA,CAAAA,EAEpCy1C,EAAOj8B,SAASqY,EAAOt6B,MAAM4N,MAAM,EAAM,EAAA,EACzCR,EAAI,IAAIlM,KAAK8G,KAAKY,SAAAA,EAIlBg1C,EAAQ51C,KAAK21C,iBAAiBa,EAAIR,CAAAA,EACtCh2C,KAAKi2C,kBAAkBC,EAAMM,EAAIR,CAAAA,EACjC,IAAI99C,EAAK,EAETo6B,EAAO5tB,UAAY,GACnB,QAAS9K,EAAE,EAAGA,EAAEg8C,EAAOh8C,IAAI,CAI1B,GAHKoG,KAAKwF,SAAS5L,CAClBoG,GAAAA,KAAKs1C,iBAAiB17C,EAAE1B,EAAKkN,EAAEktB,CAAAA,EAAAA,CAE3BtyB,KAAKmB,YAAY,CACrB,IAAIu1C,EAAOlyC,SAASC,cAAc,KAAA,EAC9BkyC,EAAM,mBACNvxC,EAAEjM,QAAas9C,GAAAA,EAAMt9C,QAAWw9C,IAAAA,GAAO,yBAE3CD,EAAO3mC,aAAa,oBAAqBnW,CAAAA,EACrCoG,KAAKowC,mBAAqBpwC,KAAKwF,SAAS5L,CAAAA,IAC3C+8C,GAAO,qBAGR,QAAS/8C,EAAyB,EAAvBoG,KAAK3I,OAAOyJ,WAAclH,EAAIoG,KAAK3I,OAAO0J,UAAWnH,IAAK,CACpE,MAAMg9C,EAAYpyC,SAASC,cAAc,KAAA,EACzCmyC,EAAUlxC,UAAU,qDACpBkxC,EAAU5+C,MAAM2N,OAAO3F,KAAK3I,OAAO+O,aAAa,EAAE,KAElD,IAAIywC,EAAW,IAAI39C,KAAKkM,EAAEwI,YAAAA,EAAexI,EAAEyI,SAAAA,EAAYzI,EAAE7G,QAAW3E,EAAAA,EAAG,CACvEg9C,EAAAA,EAAU7mC,aAAa,iBAAkB/P,KAAK8jB,UAAU0F,YAAYqtB,IAEpE,IAAIC,EAAc92C,KAAK8jB,UAAUizB,eAAeF,CAC7CC,EAAAA,IACFF,EAAUlyC,UAAYoyC,GAEvB,IAAIpnC,EAAW1P,KAAK8jB,UAAUkzB,gBAAgBH,CAC3CnnC,EAAAA,GACFknC,EAAUjnC,UAAUhX,IAAI+W,CAGzBgnC,EAAAA,EAAO/xC,YAAYiyC,CAAAA,EAEnB,MAAMK,EAAazyC,SAASC,cAAc,KAAA,EAC1CwyC,EAAWvxC,UAAU,sBACrBmxC,EAAW,IAAI39C,KAAKkM,EAAEwI,YAAAA,EAAexI,EAAEyI,SAAAA,EAAYzI,EAAE7G,QAAW3E,EAAAA,EAAG,EACnEq9C,EAAAA,EAAWlnC,aAAa,iBAAkB/P,KAAK8jB,UAAU0F,YAAYqtB,IACrEI,EAAWj/C,MAAM2N,OAAO3F,KAAK3I,OAAO+O,aAAa,EAAE,KACnD0wC,EAAc92C,KAAK8jB,UAAUizB,eAAeF,CACzCC,EAAAA,IACFG,EAAWvyC,UAAYoyC,GAExBpnC,EAAW1P,KAAK8jB,UAAUkzB,gBAAgBH,CACvCnnC,EAAAA,GACFunC,EAAWtnC,UAAUhX,IAAI+W,CAE1BgnC,EAAAA,EAAO/xC,YAAYsyC,CACnB,CAAA,CAEDP,EAAOhxC,UAAYixC,EAAI,IAAI32C,KAAK8jB,UAAUozB,gBAAgB9xC,EAAEqxC,CAC5Dz2C,EAAAA,KAAK+1B,SAASohB,cAAcT,EAAQtxC,CACpCpF,EAAAA,KAAKq2C,oBAAoBK,EAAQ12C,KAAKuF,MAAM3L,CAAAA,EAAI1B,CAEhDq+C,EAAAA,EAAU5xC,YAAY+xC,CACtB12C,EAAAA,KAAKH,UAAU,aAAa,CAAC62C,EAAQtxC,CAAAA,CAAAA,CACrC,CACDlN,GAAM8H,KAAKuF,MAAM3L,CAAAA,EAGjBwL,EAAEpF,KAAKtH,KAAKC,IAAIyM,EAAE,EAAE,KAAA,EACpBA,EAAIpF,KAAKtH,KAAKgoB,UAAUtb,CAAAA,CACxB,CACF,EAEArO,EAAUqgD,mBAAqB,UAAA,CAC9B,OAAOp3C,KAAKxG,WAAWyY,cAAc,eAAA,CACtC,EAEAlb,EAAUw9C,aAAa,UAGtB,CAAA,GAAKv0C,KAAK8jB,UAAU9jB,KAAKoB,MAAQ,SAAjC,CAEA,IAAIkxB,EAAStyB,KAAKO,KAAqB,eAAE,CAAA,EACrCg2C,EAAYv2C,KAAKO,KAAmB,aAAE,CAAA,EACtC3B,EAAIoB,KAAK3I,OAEbi7B,EAAO5tB,UAAY,GAEnB6xC,EAAU7xC,UAAY,GAEtB,IAUIU,EAAEoxC,EAVFn/B,GAAQzY,EAAEwvC,UAAAA,CAAcxvC,EAAEy4C,YAAgB,qBAAuB,KAAQz4C,EAAEwvC,UAAcxvC,CAAAA,EAAE04C,UAAc,mBAAqB,IAClIf,EAAU7wC,UAAY,eAAiB2R,EAEvCrX,KAAKqF,QAAU,GACfrF,KAAKuF,MAAQ,CACbvF,EAAAA,KAAKgwC,OAAS,CAACrqC,OAAQ,CACvB3F,EAAAA,KAAKo1C,UAAY,EAEjBp1C,KAAK4rC,UAGL,EAAA,IAAI5jB,EAAKhoB,KAAK81C,oBAAAA,EACbE,EAAKj/C,EAAUg/C,gBAEhB3wC,EAAIoxC,EAAKx2C,KAAKmB,YAAcpK,EAAU2B,KAAKY,WAAW0uB,CAAMA,EAAAA,EAG5DhoB,KAAKY,UAAUwE,EAEf,IAAImyC,EAAgBv3C,KAAK8jB,UAAU9jB,KAAKoB,MAAM,SAAS4mB,EAAGguB,EAAGh2C,KAAKoB,KAAAA,EAE9Do2C,EAAex3C,KAAKo3C,mBAAAA,EASxB,GARGI,IACFA,EAAa9yC,UAAY6yC,EACzBv3C,KAAK+1B,SAAS0hB,eAAeD,EAAcD,CAAAA,GAG5Cv3C,KAAKW,UAAYq1C,EACjBj/C,EAAUu/C,eAAehkB,EAAQikB,CAAAA,EAE7Bv2C,KAAKmB,YACRnB,KAAK03C,mBAAmBnB,EAAUvuB,EAAGwuB,CAGrC,UADAx2C,KAAK23C,mBAAmBpB,EAAUvuB,EAAGwuB,CAAAA,EACjC53C,EAAEg5C,UAAW,CAChB,IAAI3C,EAAgB,gBAEjBj1C,KAAKO,KAAK00C,CACZj1C,IAAAA,KAAKO,KAAK00C,CAAAA,EAAe,GAAGhzC,WAAWC,YAAYlC,KAAKO,KAAK00C,GAAe,CAC5Ej1C,CAAAA,EAAAA,KAAKO,KAAK00C,CAAAA,EAAiB,MAG5B,IAAI4C,EAAKrzC,SAASC,cAAc,OAChCozC,EAAGnyC,UAAYuvC,EACf4C,EAAG7/C,MAAMsgB,WAAW,SACpBu/B,EAAG7/C,MAAM0a,QAAQ,OACjB,IAAIolC,EAAa93C,KAAKgwC,OAAOhwC,KAAKgwC,OAAO+H,UAAAA,EACrC5vC,EAASvJ,EAAE6sC,IAAMzrC,KAAKsS,GAAGy5B,YAAc/rC,KAAKsS,GAAG+X,aAC/C2tB,EAAchyC,KAAKC,IAAI6xC,EAAa3vC,EAAQ,CAAA,EAChDnI,KAAK6sC,OAAOgL,EAAIG,EAAa,EAAG,GAChCzB,EAAUt0C,WAAWwZ,aAAao8B,EAAGtB,GAErC,IAAI0B,EAAKJ,EAAG/9C,UAAAA,IACZm+C,EAAGvyC,UAAYuvC,EAAc,QAC7BgD,EAAGjgD,MAAMsgB,WAAW,SACpB2/B,EAAGjgD,MAAM0a,QAAQ,OACjB1S,KAAK6sC,OAAOoL,EAAIj4C,KAAKsS,GAAGy5B,YAAc,EAAG,EAAG,CAE5C8L,EAAAA,EAAGlzC,YAAYszC,CAAAA,EACfj4C,KAAKO,KAAK00C,CAAAA,EAAe,CAAC4C,EAAGI,GAC7BlhD,EAAUI,MAAM6I,KAAKO,KAAK00C,CAAe,EAAA,CAAA,EAAI,QAASj1C,KAAKktB,OAAOC,YAClE,CAAA,CAvEgD,CAyEnD,EACAp2B,EAAU4gD,mBAAmB,SAAShkC,EAAEqU,EAAGwuB,GAC1C,IAAI53C,EAAE4F,SAASC,cAAc,OAC7B7F,EAAE8G,UAAU,mBAGZ,QADIhN,EAAO,IAAIQ,KAAK,KAAK,EAAE,EAAE8G,KAAK3I,OAAOyJ,WAAW,EAAE,CAC7ClH,EAAAA,EAAyB,EAAvBoG,KAAK3I,OAAOyJ,WAAclH,EAAIoG,KAAK3I,OAAO0J,UAAWnH,IAAK,CACpE,IAAIs+C,EAAG1zC,SAASC,cAAc,KAAA,EAC9ByzC,EAAGxyC,UAAU,iBACbwyC,EAAGlgD,MAAM2N,OAAO3F,KAAK3I,OAAO+O,aAAa,KACzC,IAAIR,EAAQ5F,KAAKsS,GAAGy5B,YAChB/rC,KAAK3I,OAAOm+C,cACf0C,EAAGxyC,WAAa,0BAEjBwyC,EAAGlgD,MAAM4N,MAAQA,EAAQ,KAEzB,IAAI6wB,EAAU1/B,EAAU+sB,UAAUiO,WAAWr5B,GAC7Cw/C,EAAGxzC,UAAY+xB,EACfz2B,KAAK+1B,SAASoiB,cAAcD,EAAIzhB,CAEhC73B,EAAAA,EAAE+F,YAAYuzC,CACdx/C,EAAAA,EAAKsH,KAAKtH,KAAKC,IAAID,EAAK,EAAE,MAC1B,CAAA,CACDib,EAAEhP,YAAY/F,CAAAA,EACVoB,KAAK3I,OAAO+gD,cACfzkC,EAAEmH,UAAY9a,KAAK3I,OAAO+O,cAAcpG,KAAK3I,OAAO+gD,YAAYp4C,KAAK3I,OAAOyJ,YAC9E,EAEA/J,EAAU0J,aAAe,WACxB,OAAG1J,EAAUM,OAAOghD,SACZ,IAAIn/C,KAAKnC,EAAUM,OAAOghD,QAAAA,EAE3B,IAAIn/C,IACZ,EAEAnC,EAAUu9C,eAAiB,WAC1Bt0C,KAAKwF,SAAS,GACdxF,KAAKowC,kBAAoB,CAC1B,EAEAr5C,EAAUo/C,iBAAmB,SAASK,EAAI8B,EAAGp9C,EAAMmzB,EAAMkqB,EACxDv4C,CAAAA,KAAKs0C,eACL,EAAA,IAAIlpB,EAASr0B,EAAU,UAAUiJ,KAAKoB,OACtC,GAAIgqB,EAEH,QADIotB,EAAW,IAAIt/C,KAAKs9C,CACf58C,EAAAA,EAAE,EAAGA,EAAE0+C,EAAG1+C,IACdwxB,EAAOotB,KACVx4C,KAAKowC,mBAAqB,EAC1BpwC,KAAKwF,SAAS5L,CAAK,EAAA,GACf2+C,GACHD,KAEFE,EAAWzhD,EAAU2B,KAAKC,IAAI6/C,EAAUnqB,EAAMnzB,CAC3CnE,EAAAA,EAAU2B,KAAKwC,EAAO,YACxBs9C,EAAWzhD,EAAU2B,KAAKwC,EAAO,UAAUs9C,CAG/C,EAAA,EAEAzhD,EAAU0hD,oBAAsB,SAAS12C,EAAKimB,EAAmBwuB,EAAkBplC,EAAAA,CAGlF,IAAI4kC,EAAGj/C,EAAU2B,KAAKC,IAAIqvB,EAAG,EAAE,OAAA,EAC9B0wB,EAAa,IAAIx/C,KAAKs9C,CACnBmC,EAAAA,EAAK5hD,EAAU0J,aAAAA,EACnBT,KAAKtH,KAAKwF,UAAUy6C,CACpB34C,EAAAA,KAAKtH,KAAKwF,UAAUs4C,CAAAA,EAEpBplC,EAAOA,GAAQpL,KAAK6pC,KAAK7pC,KAAKM,OAAO0vC,EAAG78C,QAAUq9C,EAAAA,EAAGr9C,QAAc,GAAA,KAAA,EAAmB,GAGtF,QAFIy/C,EAAS,CAAA,EAEJh/C,EAAE,EAAGA,GAAG,EAAGA,IAAK,CACxB,IAAIi/C,EAAa74C,KAAKuF,MAAM3L,IAAM,EAC9B+e,MAAMhK,OAAOkqC,CAAAA,CAAAA,IAChBA,GAA0B,MAE3BD,EAASh/C,CAAKi/C,EAAAA,CACd,CAED,SAASC,EAAchpC,EACtB,CAAA,IAAIqD,EAAIpc,EAAUi5C,OAAOrqC,OAIzB,OAHG5O,EAAUi5C,OAAOG,QAAQrgC,EAAM,KAGlC,SAFCqD,EAAIpc,EAAUi5C,OAAOG,QAAQrgC,EAAM,CAAM/Y,GAAAA,EAAUi5C,OAAOG,QAAQrgC,IAAM,IAElEqD,CACP,CAGD,IAAI4lC,EAAa,EAEjB,MAAMC,EAAQx0C,SAASC,cAAc,KAIrC,EAAA,IAHAu0C,EAAMrpC,UAAUhX,IAAI,qBAGXiB,EAAAA,EAAE,EAAGA,EAAEwX,EAAMxX,IAAI,CACzB,IAAIkW,EAAMtL,SAASC,cAAc,KACjCqL,EAAAA,EAAIH,UAAUhX,IAAI,mBAAA,EAClBmX,EAAI9X,MAAM2N,OAASmzC,EAAcl/C,CAAAA,EAAK,KACtCo/C,EAAMr0C,YAAYmL,CAElB,EAAA,QAAS4V,EAAE,EAAGA,EAAE,EAAGA,IAAK,CACvB,IAAIuzB,EAAOz0C,SAASC,cAAc,KAAA,EAClCqL,EAAInL,YAAYs0C,CAAAA,EAEhB,IAAItC,EAAM,qBACNH,EAAGxuB,EACN2uB,GAAO,cACCH,GAAIR,EACZW,GAAO,aACCH,EAAGr9C,WAAWw/C,EAAGx/C,QAAAA,IACzBw9C,GAAO,YAEJ32C,KAAKowC,mBAAqBpwC,KAAKwF,SAASkgB,CAAAA,IAC3CixB,GAAO,qBAGRsC,EAAKvzC,UAAYixC,EAAM,IAAM32C,KAAK8jB,UAAUo1B,iBAAiB1C,EAAImC,GAEjEM,EAAKlpC,aAAa,iBAAkBhZ,EAAU+sB,UAAU0F,YAAYgtB,CAAAA,CAAAA,EACpE,IAAI2C,EAAa,iBACbC,EAAa,iBAKjB,GAJI1zB,IAAM,GAAK1lB,KAAK3I,OAAOm+C,cAC1B2D,GAAc,yBACdC,GAAc,0BAEVp5C,KAAKowC,mBAAsBpwC,KAAKwF,SAASkgB,CAiB7CuzB,EAAAA,EAAKt0C,YAAYH,SAASC,cAAc,KACxCw0C,CAAAA,EAAAA,EAAKt0C,YAAYH,SAASC,cAAc,KAlBQ,CAAA,MAAA,CAChDw0C,EAAKjhD,MAAM4N,MAAQgzC,EAASlzB,CAAAA,EAC5B1lB,KAAK+1B,SAASsjB,cAAcJ,EAAMzC,CAAAA,EAElC,IAAI8C,EAAW90C,SAASC,cAAc,KAAA,EACtC60C,EAASthD,MAAM2N,OAAS5O,EAAUub,GAAGg6B,kBAAoB,KACzDgN,EAAS5zC,UAAY0zC,EACrBE,EAAS50C,UAAY1E,KAAK8jB,UAAUoO,UAAUskB,GAC9CyC,EAAKt0C,YAAY20C,CAEjB,EAAA,IAAIC,EAAW/0C,SAASC,cAAc,KACtC80C,EAAAA,EAAS7zC,UAAYyzC,EAGrBF,EAAKt0C,YAAY40C,CAAAA,CAErB,CAKG,IAAIC,EAAMhD,EAAGj4C,QAAAA,GACbi4C,EAAGx2C,KAAKtH,KAAKC,IAAI69C,EAAG,EAAE,KAAA,GACfj4C,QAAYi7C,EAAAA,EAAM,IACxBhD,EAAK,IAAIt9C,KAAKs9C,EAAG5oC,cAAe4oC,EAAG3oC,SAAAA,EAAY2rC,EAAM,EAAG,GAAI,CAC7D,EAAA,CAEDziD,EAAUi5C,OAAOG,QAAQv2C,CAAKm/C,EAAAA,EAC9BA,GAAcD,EAAcl/C,EAC5B,CAiBD,OAfAoG,KAAKY,UAAY83C,EACjB14C,KAAKW,UAAY61C,EAEjBz0C,EAAI2C,UAAY,GAChB3C,EAAI4C,YAAYq0C,CAAAA,EAEhBh5C,KAAKqF,QAAU,GACHtD,EAAItI,iBAAiB,kBAC3BsB,EAAAA,QAASk+C,GACd,CAAA,MAAMvgD,EAAO3B,EAAU+sB,UAAU4D,WAAWuxB,EAAKn+C,aAAa,gBACxD+X,CAAAA,EAAAA,GAAOomC,EAAKhnC,cAAc,mBAChCjS,KAAKqF,QAAAA,CAAS3M,CAAQma,EAAAA,GACtB7S,KAAKH,UAAU,aAAc,CAACG,KAAKqF,SAAS3M,CAAOA,EAAAA,CAAAA,CAAAA,CAAM,CAGnDsH,EAAAA,KAAKW,SACb,EAEA5J,EAAU2gD,mBAAmB,SAAS/jC,EAAEqU,EAAGwuB,EAAGplC,EAAAA,CAE7C,IAAI4kC,EAAGj/C,EAAU2B,KAAKC,IAAIqvB,EAAG,EAAE,OAAA,EAG3B2wB,EAAK5hD,EAAU0J,eACnBT,KAAKtH,KAAKwF,UAAUy6C,CAAAA,EACpB34C,KAAKtH,KAAKwF,UAAUs4C,CAEpBplC,EAAAA,EAAOA,GAAQpL,KAAK6pC,KAAK7pC,KAAKM,OAAO0vC,EAAG78C,QAAUq9C,EAAAA,EAAGr9C,QAAc,GAAA,KAAA,EAAmB,GAEtF,IAAIwM,EAAUK,KAAK+D,MAAM4J,EAAEN,aAAajC,CAAAA,EAAQpR,KAAKsS,GAAGg6B,kBAKxD,OAHAtsC,KAAKgwC,OAAOrqC,OAASA,EAAS3F,KAAKsS,GAAGg6B,kBACtCtsC,KAAKgwC,OAAOG,QAAU,CAAA,EAEfp5C,EAAU0hD,oBAAoB9kC,EAAGqU,EAAIwuB,EAAIplC,CAEjD,CAAA,EAEAra,EAAUY,QAAU,SAAUF,EAI7B,CAAA,OAHKA,IACJA,EAAWV,EAAUwE,SAAWL,EAAAA,MAE7BnE,EAAUkG,QAAUlG,EAAUkG,OAAOxF,GACjCV,EAAUkG,OAAOxF,CAGrBV,EAAAA,EAAUiG,QAAUjG,EAAUiG,OAAOvF,CACjCV,EAAAA,EAAUiG,OAAOvF,CAGlB,EAAA,IACR,EAEAV,EAAU0iD,SAAW,SAASt8C,EAAU8M,EAEvC,CAAA,QADI7R,EAAW4H,KAAK3I,OAAOqiD,SAASthD,SAC3BwB,EAAE,EAAGA,EAAExB,EAASyB,OAAQD,IAChC,GAAGxB,EAASwB,CAAAA,EAAGM,QAAUiD,GAExB,QADIb,EAAUlE,EAASwB,CAAG0C,EAAAA,QACjBopB,EAAE,EAAGA,EAAEppB,EAAQzC,OAAQ6rB,IAC/B,GAAGppB,EAAQopB,CAAGzb,EAAAA,KAAOA,EACpB,OAAO3N,EAAQopB,CAAGG,EAAAA,MAKtB,MAAO,EACR,EACA9uB,EAAU4iD,iBAAmB,SAASC,EAAWlzB,GAChD,IAAIxQ,EAAOnf,EAAUyuB,WAAWo0B,GAChC,MAAK1jC,CAAAA,CAAAA,IACLA,EAAK9N,OAAO,EAAG8N,EAAKrc,MACpBqc,EAAAA,EAAK7c,KAAKuJ,MAAMsT,EAAMwQ,GAAc,CAAA,CAAA,EACpC3vB,EAAU8I,UAAU,gBAAiB,CACrC9I,CAAAA,EAAAA,EAAU8iD,gBACV9iD,EAAU+iD,UAAAA,EAAAA,GAEX,EACA/iD,EAAU4L,YAAc,SAASwL,EAAQ4rC,EAAAA,CACxC,IAAIngD,EAAGuP,EAAGiF,EAIV,IAFA2rC,EAAQA,GAAS,CAAA,EAEZngD,EAAE,EAAGA,EAAEmgD,EAAMlgD,OAAQD,GAAG,EAC5B,GAAGuU,IAAW4rC,EAAMngD,CACnB,EAAA,OAAOmgD,EAAMngD,EAAE,CAAA,EAEjB,GAAIuU,UAAiBA,GAAU,SAAU,CAGxC,IAFAC,EAASU,OAAOktB,OAAO7tB,CAAAA,EACvBhF,EAAI,CAAC5G,MAAMrJ,KAAKyV,OAAOtU,OAAOuU,OAAAA,EACzBhV,EAAE,EAAGA,EAAEuP,EAAEtP,OAAQD,IACjBuU,aAAkBhF,EAAEvP,CACvBwU,IAAAA,EAASxU,EAAI,IAAIuP,EAAEvP,CAAGuU,EAAAA,CAAAA,EAAU,IAAIhF,EAAEvP,CAGxC,GAAA,IAAKA,KADLmgD,EAAM1gD,KAAK8U,EAAQC,CAAAA,EACTD,EACLW,OAAON,UAAUtL,eAAeN,MAAMuL,EAAQ,CAACvU,CAAAA,CAAAA,IAClDwU,EAAOxU,CAAAA,EAAK7C,EAAU4L,YAAYwL,EAAOvU,CAAImgD,EAAAA,CAAAA,EAE/C,CACD,OAAO3rC,GAAUD,CAClB,EACApX,EAAUsM,WAAa,SAAShI,EAAQ2S,EAAAA,CACvC,QAAS/D,KAAO+D,EACXA,EAAO9K,eAAe+G,CACzB5O,IAAAA,EAAO4O,CAAO+D,EAAAA,EAAO/D,IAGvB,OAAO5O,CACR,EACAtE,EAAU86C,mBAAqB,SAASjC,EAAAA,CACvC,IAAI/rC,EAAM7D,KAAKY,UAAUzH,QAAAA,EAAyE,KAA9Dy2C,EAAIjzB,EAAE3c,KAAK3I,OAAO83C,UAAqC,IAA1BnvC,KAAKmB,YAAY,EAAEyuC,EAAIhzB,GAAM,IAE9F,OAAO,IAAI1jB,KAAK8G,KAAK8wC,eAAejtC,CACrC,CAAA,CAAA,EAEA9M,EAAU2E,cAAgB,SAASs+C,EAClC,CAAA,IAAIpK,EAAM5vC,KAAK8vC,cAAckK,CAC7B,EAAA,MAAO,CACNthD,KAAKsH,KAAK6xC,mBAAmBjC,CAAAA,EAC7Bj0C,QAAQi0C,EAAIj0C,QAEd,EACA5E,EAAUkjD,OAAS,SAAStiC,EAAMqB,EACjC,CAAA,GAAIrB,GAAQA,EAAKqf,MAChB,GAAIh3B,KAAKsqB,QACR1zB,OAAO0Y,WAAW,UACjBqI,CAAAA,EAAKqf,MACL,CAAA,EAAC,QAEF,IACKhe,CAAAA,GAAUrB,EAAKqB,QAAUrB,EAAKrD,aACjCqD,EAAKqB,OAENrB,EAAAA,EAAKqf,OACL,MACA,CAAA,CAGJ,EAWAjgC,EAAUw5C,uBAAuB,SAAS/C,EAAWC,EAASp2C,EAC7D,CAAA,IAOC6iD,EAPGC,EAAc1M,EAAUD,EAIxBpiB,EAASprB,KAAK,UAAUA,KAAKoB,KAE7Bg5C,EAAAA,EAAmB,EAEnB/iD,EAAOmV,QACV4tC,EAAmBp6C,KAAKq6C,gBAAgBhjD,EAAQm2C,GAChD0M,EAAiBl6C,KAAKq6C,gBAAgBhjD,EAAQo2C,CAE3CD,EAAAA,EAAUr0C,QAAYpC,EAAAA,EAAUwE,WAAWwJ,SAAS5L,QAAAA,IACtDihD,EAAoB7M,CAAAA,EAAkBC,EAAWz2C,EAAUwE,SAAAA,EAAWwJ,QAEpE0oC,GAAAA,EAAQt0C,UAAYpC,EAAUwE,SAAAA,EAAWyJ,SAAS7L,QAAAA,IACpD+gD,GAAkB3M,EAAkBE,EAAS12C,EAAUwE,SAAAA,EAAWyJ,YAGnEk1C,EAAiBl0C,KAAKM,MAAM6zC,EAAY,GAAG,GAAG,IAAK,EAIpD,EAAA,QADIG,EAAc,GACXF,EAAmBF,GAAe,CACxC,IAAIK,EAAQxjD,EAAU2B,KAAKC,IAAI80C,EAAUp2C,CAAAA,EAAOm5C,OAAQn5C,EAAOo5C,QAC/D,GAAIrlB,GAAUA,EAAOqiB,CAAAA,IAAAA,CAAc6M,GAAgBA,GAAelvB,EAAOmvB,CACxEJ,GAAAA,GAAgB1M,EAAQ8M,MAEpB,CACJ,IAAIC,EAAmB,EACvB,MAAMC,EAAgB,IAAIvhD,KAAK8M,KAAKC,IAAIs0C,EAAMphD,QAAWq0C,EAAAA,EAAUr0C,YAC7DuhD,EAAcjN,EACdkN,EAAsB,IAAIzhD,KAAKuhD,EAAc7sC,YAAe6sC,EAAAA,EAAc5sC,WAAY4sC,EAAcl8C,QAAAA,EAAWlH,EAAOyJ,UAAAA,EACtH85C,EAAoB,IAAI1hD,KAAKuhD,EAAc7sC,YAAAA,EAAe6sC,EAAc5sC,SAAY4sC,EAAAA,EAAcl8C,QAAWlH,EAAAA,EAAO0J,WAAW,EAC/H85C,EAAAA,EAAuB,IAAI3hD,KAAKu0C,EAAQ7/B,YAAe6/B,EAAAA,EAAQ5/B,SAAY4/B,EAAAA,EAAQlvC,UAAWlH,EAAOyJ,UAAAA,EACrGg6C,EAAqB,IAAI5hD,KAAKu0C,EAAQ7/B,YAAAA,EAAe6/B,EAAQ5/B,SAAAA,EAAY4/B,EAAQlvC,QAAWlH,EAAAA,EAAO0J,WAAW,EAAA,EAEjH25C,EAAYvhD,QAAY2hD,EAAAA,EAAmB3hD,QAC7CqhD,IAAAA,GAAoBE,EAAcI,GAGhCJ,EAAYvhD,QAAY0hD,EAAAA,EAAqB1hD,UAC/CqhD,GAAoBnjD,EAAOm6C,kBAE3BgJ,GAA2C,GAAvBE,EAAY75C,SAAAA,EAAc,GAAG,IAAgC,GAAzB65C,EAAYv4C,WAAAA,EAAgB,IAGlFs4C,EAActhD,UAAYyhD,EAAkBzhD,QAAAA,IAC9CqhD,GAAoBnjD,EAAOo6C,iBAGzBgJ,EAActhD,QAAAA,EAAYwhD,EAAoBxhD,QAAAA,IAChDqhD,GAAqBG,EAAoBxhD,QAAYshD,EAAAA,EAActhD,WAIpEghD,GAAeK,EACfF,EAAc,EACd,CACD7M,EAAU8M,EACVL,GACA,CACD,OAAOC,CACR,EACApjD,EAAU26C,4BAA4B,SAASn5C,EAAUwiD,EAAW3hD,EAAK23C,EAAAA,CACxE,IAAIyF,EAAK,IAAIt9C,KAAKX,CAAAA,EACdyiD,EAAMjK,EAAQ,GAAI,EAGtB,GAAI33C,EAAIo4C,mBAAqBp4C,EAAIq4C,gBAAgB,CAChD,IAAIgF,EAEHA,EADG1F,EACoB,GAAdyF,EAAG31C,SAAc21C,EAAAA,EAAGr0C,WAAoC,EAAA,IAAnB/I,EAAI0H,YAAY,GAEnC,IAAlB1H,EAAI2H,WAAW,IAAuB,GAAdy1C,EAAG31C,SAAAA,EAAc21C,EAAGr0C,WACtD,GAAA,IAAI84C,EAA2C,IAAhC7hD,EAAI2H,UAAY3H,EAAI0H,YAC/B1E,EAAO4J,KAAK6pC,MAAOkL,MAAwBtE,GAAUwE,GACtD7+C,EAAO,IAAGA,EAAO,GACpB2+C,GAAa3+C,GAAQ,KAAQ6+C,GAAW,GAAK,GAC7C,CAED,IAICC,EAJGC,EAAK,IAAIjiD,KAAc,EAATX,EAAWwiD,EAAUC,CACnC5vB,EAAAA,EAASprB,KAAK,UAAUA,KAAKoB,KAE7Bg6C,EAAAA,EAAa,EASjB,IAPIhiD,EAAIoT,QACP4uC,EAAap7C,KAAKq6C,gBAAgBjhD,EAAKo9C,CACvC0E,EAAAA,EAAWl7C,KAAKq6C,gBAAgBjhD,EAAK+hD,CAErCD,GAAAA,EAAWl1C,KAAKM,MAAMy0C,EAAU,GAAG,GAAG,IAAK,EAAA,EAGrCK,EAAWJ,GAAOE,EAASF,GAAI,CACrC,IAAIT,EAAQxjD,EAAU2B,KAAKC,IAAI69C,EAAIp9C,EAAIo3C,OAAOwK,EAAK5hD,EAAIq3C,QACnDrlB,GAAUA,EAAOorB,CACpBuE,IAAAA,IAAcR,EAAM/D,GAAIwE,EACxBE,GAAYF,GAGbxE,EAAK+D,EACLa,GAAYJ,CACZ,CAED,OAAOD,CACR,EAEAhkD,EAAUo8C,kBAAoB,UAC7B,CAAA,OAAOnzC,KAAKrI,QAAAA,CACb,EAEAZ,EAAUskD,sBAAwB,UACjC,CAAA,OAAGr7C,KAAK/C,QAAU+C,KAAK/C,OAAO+C,KAAKoB,OAC3BpB,KAAK/C,OAAO+C,KAAKoB,KAAAA,EAAOnH,WACvB+F,KAAKhD,QAAUgD,KAAKhD,OAAOgD,KAAKoB,KACjCpB,EAAAA,KAAKhD,OAAOgD,KAAKoB,OAAOlH,OAEzB,IACR,EAEAnD,EAAUukD,gBAAkB,UAC3B,CAAA,IAAIliB,EAAQp5B,KAAKzE,WACjB,OAAQyE,KAAK+pB,MAAQqP,EAAM1gC,MAAQ0gC,EAAMl+B,IAC1C,EACAnE,EAAU40B,kBAAoB,UAC7B,CAAA,IAAIyN,EAAQp5B,KAAKzE,WACjB,OAAO69B,EAAM4U,cAAgB,MAAQ5U,EAAM4U,cAA9BA,MACd,CAEA,EHv4Dej3C,CIpDA,EAAA,SAAgBA,EAE/B,EAAA,UAAA,CAGC,IAAIwkD,EAAW,IAAIz0B,OAAO;AAAA,MAAgB,MACtC00B,EAAc,IAAI10B,OAAO,KAAM,IAEnC,EAAA,SAAS20B,EAAcC,EAAAA,CACtB,OAAQA,EAAW,IACjBnkC,QAAQgkC,EAAU,KACnBhkC,QAAQikC,EAAa,GACtB,CAAA,CAED,IAAIG,EAAe,IAAI70B,OAAO,IAAK,MACnC,SAAS80B,EAAavuC,EACrB,CAAA,OAAQA,EAAO,IAAIkK,QAAQokC,EAAc,OAAA,CACzC,CAwUD,QAAQ/hD,KAtUR7C,EAAUg/B,SAAW,CACpB8lB,mBAAoB,SAAS/1B,EAAAA,CAC5B,IAAIF,EAAa,CAAC,GAClB,EAAA,QAAQhsB,KAAKksB,EACZ,GAAqB,OAAXA,EAAKlsB,CAAsC,GAAhC,YAAgC,OAAXksB,EAAKlsB,CAAAA,GAAM,SAAU,CAC9D,IAAIyT,EAAOuuC,EAAaH,EAAc31B,EAAKlsB,CAC3CgsB,CAAAA,CAAAA,EAAAA,EAAWvsB,KAAKO,EAAI,KAAOyT,EAAO,GAAA,CAClC,CAGF,OADAuY,EAAWvsB,KAAK,GAAA,EACTusB,EAAWvhB,KAAK,IACvB,EACDy3C,cAAe,SAAS/5C,EAAK2vB,EAC5B,CAAA,QAAQ93B,KAAK83B,EACZ3vB,EAAIgO,aAAanW,EAAG6hD,EAAc/pB,EAAO93B,CAE1C,CAAA,CAAA,EAAA,OAAOmI,CACP,EAEDsrC,UAAW,SAAStrC,EAAK00B,EACxB,CAAA,OAAOz2B,KAAK87C,cAAc/5C,EAAK,CAAC,aAAc00B,GAC9C,EACD5Q,MAAO,SAASA,EAAAA,CACf,OAAO9uB,EAAUg/B,SAAS8lB,mBAAmB,CAAC,aAAch2B,CAC5D,CAAA,CAAA,EAIDsyB,cAAe,SAASp2C,EAAK00B,EAC5Bz2B,CAAAA,KAAKqtC,UAAUtrC,EAAK00B,EAEpB,EACD4iB,cAAe,SAASt3C,EAAKrJ,GAC5BsH,KAAKqtC,UAAUtrC,EAAKhL,EAAU+sB,UAAUiL,SAASr2B,CAAAA,CAAAA,CACjD,EAED++C,eAAgB,SAAS11C,EAAK00B,EAAAA,CAC7Bz2B,KAAKqtC,UAAUtrC,EAAK00B,CACpB,CAAA,EACDif,cAAe,SAAS3zC,EAAK00B,EAC5Bz2B,CAAAA,KAAKqtC,UAAUtrC,EAAK00B,EACpB,EAED0gB,cAAe,SAASp1C,EAAKrJ,EAC5BsH,CAAAA,KAAK01C,cAAc3zC,EAAKhL,EAAU+sB,UAAUiL,SAASr2B,CACrD,CAAA,CAAA,EAEDk8C,wBAAyB,SAAS7yC,EAAK8jB,EACtC,CAAA,OAAO7lB,KAAK87C,cAAc/5C,EAAK,CAACg6C,KAAO,SAAU,aAAal2B,CAAAA,CAAAA,CAC9D,EAEDwvB,kBAAmB,SAAStzC,EAAK6I,EAAAA,CAChC,OAAO5K,KAAK87C,cAAc/5C,EAAK,CAAC,eAAgB6I,EAAW,OAAS,OACpE,CAAA,CAAA,EAGDoxC,kBAAkB,SAASr5B,GAE1B,OAAO5rB,EAAUg/B,SAAS8lB,mBAAmB,CAAC,aAAcl5B,CAAAA,CAAAA,CAC5D,EAGDs5B,UAAW,SAAS9kD,EAAO4K,EAAAA,CAC1B/B,KAAKk8C,iBAAiB/kD,EAAO4K,CAC7B,CAAA,EAGDm6C,iBAAkB,SAAS/kD,EAAO4K,EACjCA,CAAAA,EAAIgO,aAAa,aAAc0rC,EAAc1kD,EAAU+sB,UAAUq4B,WAAWhlD,EAAMmB,WAAYnB,EAAMoB,SAAUpB,CAE3GJ,CAAAA,CAAAA,EAAAA,EAAUM,OAAO+2C,UACnBrsC,EAAIgO,aAAa,gBAAA,EAIf5Y,EAAAA,EAAMilD,sBACRr6C,EAAIgO,aAAa,YAAa,EAAA,EAI/BhO,EAAIgO,aAAa,gBACfhZ,EAAUwE,SAAAA,EAAW2yC,WAAa/2C,EAAMwC,GAAM,OAAS,OAAA,CACzD,EAED0iD,gBAAiB,SAASllD,EAAO4K,EAAAA,CAChC/B,KAAKk8C,iBAAiB/kD,EAAO4K,CAC7B,CAAA,EAEDu6C,eAAgB,SAASC,EAAiBC,EACzC,CAAA,IAAIpuC,EAAS,CACZ2B,aAAa,SAAS+F,EAAMxE,EAC3BtR,CAAAA,KAAK8V,GAAQxE,CACb,CAAA,EAIF,OADAirC,EAAgB35C,MAAM5C,KAAM,CAACw8C,EAAKpuC,CAAAA,CAAAA,EAC3BA,CAEP,EAEDquC,mBAAoB,SAAStlD,EAAAA,CAC5B,OAAO6I,KAAK67C,mBAAmB77C,KAAKs8C,eAAet8C,KAAKq8C,gBAAiBllD,CAAAA,CAAAA,CACzE,EAIDulD,qBAAsB,WACrB,OAAO18C,KAAK67C,mBAAmB,CAACE,KAAM,KACtC,CAAA,CAAA,EACDY,qBAAsB,SAAS92B,GAC9B,OAAO7lB,KAAK67C,mBAAmB,CAACE,KAAM,eAAgB,aAAcl2B,CAAAA,CAAAA,CACpE,EACD+2B,4BAA6B,SAAS/2B,EACrC,CAAA,OAAO7lB,KAAK28C,qBAAqB92B,CAAAA,CACjC,EACDg3B,qBAAsB,WACrB,OAAO78C,KAAK67C,mBAAmB,CAACE,KAAM,MACtC,CAAA,CAAA,EACDe,sBAAuB,SAAS3lD,GAC/B,IAAIwuB,EAAQ3lB,KAAKs8C,eAAet8C,KAAKk8C,iBAAkB/kD,CAAAA,EAIvD,OAFAwuB,EAAY,KAAI,MAET3lB,KAAK67C,mBAAmBl2B,CAAAA,CAE/B,EACDo3B,uBAAwB,UAAA,CACvB,OAAO/8C,KAAK67C,mBAAmB,CAACE,KAAO,SAAU,aAAahlD,EAAUooB,OAAO6P,OAAOwR,YACtF,CAAA,CAAA,EAGDwc,eAAgB,UACf,CAAA,OAAOh9C,KAAK67C,mBAAmB,CAACE,KAAM,MAAA,CAAA,CACtC,EAEDkB,kBAAmB,SAAS9lD,EAC3B,CAAA,OAAO6I,KAAK88C,sBAAsB3lD,EAClC,EAED+lD,mBAAoB,SAAS/lD,EAAOu4C,EAAQp+B,EAC3C,CAAA,OAAOtR,KAAK67C,mBAAmB,CAACE,KAAO,WAAY,aAAc,CAC/DrM,EAAO7pB,eAAsB6pB,EAAO/1C,GAAK+1C,EAAO7pB,MACjD,KACAvU,CAAAA,CAAAA,CAAAA,CAED,EAED6rC,cAAe,UAAA,CACd,OAAOn9C,KAAKg9C,gBACZ,EACDI,iBAAkB,SAASjmD,EAAAA,CAC1B,OAAO6I,KAAKi9C,kBAAkB9lD,CAC9B,CAAA,EACDkmD,oBAAqB,UACpB,CAAA,OAAOr9C,KAAK+8C,uBAAAA,CACZ,EAEDO,cAAe,SAASv7C,EAAKw7C,EAAAA,CAC5Bv9C,KAAK87C,cAAc/5C,EAAK,CACvBpI,GAAK4jD,EAAS,GACd,YAAY,YACZ,cAAc,QAGf,EACDC,YAAa,SAASz7C,EAAKw7C,GAC1Bv9C,KAAK87C,cAAc/5C,EAAK,CACvB,kBAAkBw7C,EAAS,GAC3BxB,KAAO,MAAA,CAAA,CAER,EACD0B,WAAY,SAAS17C,EACpB/B,CAAAA,KAAK87C,cAAc/5C,EAAK,CACvBg6C,KAAO,KAAA,CAAA,CAER,EACD2B,eAAgB,SAAS37C,EAAKrJ,EAAAA,CAC7B,IAAIilD,EAAYjlD,EAAKS,QAAAA,EAAYpC,EAAU4J,UAAUxH,QAAAA,GAAaT,EAAKS,QAAAA,GAAapC,EAAU6J,UAAUzH,QAAAA,EACxG6G,KAAK87C,cAAc/5C,EAAK,CACvBg6C,KAAO,WACP,aAAchlD,EAAU+sB,UAAUiL,SAASr2B,CAC3C,EAAA,gBAAiBilD,EAAW,OAAS,OAAA,CAAA,CAEtC,EACDC,gBAAiB,SAAS77C,EACzB/B,CAAAA,KAAK87C,cAAc/5C,EAAK,CACvBg6C,KAAO,cAAA,CAAA,CAER,EAGD8B,kBAAmB,SAAS97C,EAAKrJ,EAAAA,CAChC,IAAI45B,EAASvwB,EAAIkQ,cAAc,mBAAA,EAC3BwkB,EAAU10B,EAAIkQ,cAAc,kBAC5BsrC,EAAAA,EAAWxmD,EAAUiM,IAAAA,EAAQ,GACjChD,KAAK87C,cAAcxpB,EAAQ,CAAE34B,GAAM4jD,CACnCv9C,CAAAA,EAAAA,KAAK87C,cAAcrlB,EAAS,CAAE,kBAAmB8mB,CAAAA,CAAAA,CAEjD,EACDO,gBAAiB,SAAS/7C,EAAK5K,EAAAA,CAC9B6I,KAAKi8C,UAAU9kD,EAAO4K,CACtB,CAAA,EAEDg8C,mBAAoB,SAASh8C,EAC5BA,CAAAA,EAAIgO,aAAa,cAAe,OAChC,EAEDiuC,oBAAqB,SAASj8C,EAAAA,CAC7BA,EAAIgO,aAAa,cAAe,OAChC,CAAA,EAEDkuC,gCAAiC,SAASp4B,EAAAA,CACzC,OAAO7lB,KAAK67C,mBAAmB,CAACE,KAAO,SAAU,aAAal2B,EAAOq4B,SAAW,GAAA,CAAA,CAChF,EAEDC,WAAY,SAASp8C,EAAKw7C,EAAAA,CACzBv9C,KAAK87C,cAAc/5C,EAAK,CACvBpI,GAAK4jD,EAAS,EAAA,CAAA,CAEf,EACDa,SAAU,SAASr8C,EAAKw7C,EAAAA,CACvBv9C,KAAKw9C,YAAYz7C,EAAKw7C,CACtB,CAAA,EACDc,aAAc,SAASt8C,EAAAA,CACtB,OAAO/B,KAAK49C,gBAAgB77C,CAC5B,CAAA,EACDu8C,QAAS,SAASv8C,GACjB,OAAO/B,KAAKy9C,WAAW17C,CAAAA,CACvB,EACDw8C,YAAa,SAASx8C,EACrB/B,CAAAA,KAAK87C,cAAc/5C,EAAK,CACvBg6C,KAAO,UAAA,CAAA,CAER,EAEDyC,aAAc,SAASz8C,EACtBA,CAAAA,EAAIgO,aAAa,OAAQ,QACzBhO,EAAAA,EAAIgO,aAAa,cAAe,MAAA,EAChChO,EAAI8E,WAAWkJ,aAAa,OAAQ,SAAA,CACpC,EAED0uC,yBAAyB,SAASC,EACjC,CAAA,OAAO1+C,KAAK67C,mBAAmB,CAACE,KAAO,SAAU,aAAahlD,EAAUooB,OAAO6P,OAAO0vB,CAAAA,EAAaR,SAAW,GAAA,CAAA,CAC9G,EACDS,oBAAqB,SAASC,EAC7B,CAAA,OAAO5+C,KAAK67C,mBAAmB,CAACE,KAAO,SAAU,aAAahlD,EAAUooB,OAAO6P,OAAO4vB,CAAAA,CAAAA,CAAAA,CACtF,EACDC,eAAgB,SAAS98C,EAAK+8C,EAAAA,CAC7B/8C,EAAIgO,aAAa,aAAc+uC,CAC/B,CAAA,EAEDC,yBAA0B,SAASC,EAAAA,CAClC,IAAIn5B,EAAQ,GAEZ,OAAQm5B,EAAAA,CACP,IAAK,KACJn5B,EAAQ9uB,EAAUooB,OAAO6P,OAAOwS,KAChC,MACD,IAAK,KACJ3b,EAAQ9uB,EAAUooB,OAAO6P,OAAOyS,MAChC,MACD,IAAK,KACJ5b,EAAQ9uB,EAAUooB,OAAO6P,OAAOnqB,IAChC,MACD,IAAK,QACJghB,EAAQ9uB,EAAUooB,OAAO6P,OAAO0S,KAAO,IAAM3qC,EAAUooB,OAAO6P,OAAO2S,MAAAA,CAMvE,OAAO5qC,EAAUg/B,SAAS8lB,mBAAmB,CAAC,aAAch2B,CAC5D,CAAA,CAAA,EAGDmQ,wBAAyB,SAASipB,GACjC,MAAO,0CAA0CA,EAAY,GAC7D,EAED1nB,gBAAiB,SAASx1B,EACzBA,CAAAA,EAAIgO,aAAa,OAAQ,OAAA,CAEzB,EAEDumB,iBAAkB,SAASv0B,EAAKiB,EAAAA,CAC/BjB,EAAIgO,aAAa,OAAQ,QACtB/M,EAAAA,GACFjB,EAAIgO,aAAa,kBAAmB/M,CAIrC,CAAA,EAEDk8C,cAAe,SAASn9C,GACvBA,EAAIgO,aAAa,OAAQ,QAAA,CACzB,EAEDovC,0BAA2B,UAAA,CAC1B,MAAO,kBACP,EAEDC,gBAAiB,SAASr9C,EAAKuwB,EAAAA,CAC9BvwB,EAAIgO,aAAa,aAAcuiB,CAC/B,CAAA,EAED+sB,0BAA2B,SAASx5B,EAAAA,CACnC,OAAO9uB,EAAUg/B,SAAS8lB,mBAAmB,CAACE,KAAO,SAAU,aAAal2B,EAAOq4B,SAAW,GAC9F,CAAA,CAAA,EAEDoB,YAAa,SAASv9C,EAAAA,CACrBA,EAAIgO,aAAa,OAAQ,SACzB,CAAA,EAEDwvC,mBAAoB,SAASx9C,GAC5BA,EAAIgO,aAAa,cAAe,OAAA,CAChC,EAEDyvC,kBAAmB,SAASz9C,EAC3BA,CAAAA,EAAIgO,aAAa,cAAe,MAAA,CAChC,CAOWhZ,EAAAA,EAAUg/B,SACtBh/B,EAAUg/B,SAASn8B,CAAK,EAAA,SAAUu+B,GACjC,OAAO,UAAA,CACN,OANMphC,EAAUM,OAAO8c,oBAShBgkB,EAAQv1B,MAAM5C,KAAMiJ,WAFnB,GAGZ,CACG,EAAElS,EAAUg/B,SAASn8B,CAAAA,CAAAA,CAIvB,GAnWD,CAqWA,EJlTU7C,CAAAA,EAGTA,EAAU+W,MAAQA,GAClB/W,EAAUk5C,YAAcv2B,GACxB3iB,EAAU+W,MAAM2xC,IAAM/lC,GACtB3iB,EAAUiM,IAAM8K,GAAM9K,IACtBjM,EAAUgX,MAAQD,GAAMC,MACxBhX,EAAUgY,QAAUjB,GAAMiB,QAC1BhY,EAAU2oD,OK9DI,SAAS3oD,EAAAA,CACvB,OAAO,SAAgBwjD,EAAOntC,EACxBmtC,CAAAA,GACDxjD,EAAUM,OAAOsoD,aAAe5oD,EAAU8I,UAAU,UAAU,CAACuN,CAC7DrW,CAAAA,IADe4oD,KACf5oD,EAAUqW,QACbrW,EAAUqW,QAAQ,CAAC7Q,KAAM,QAAS8Q,KAAMD,EAASE,OAAS,EAAA,CAAA,EAI1D/B,QAAQigC,IAAIp+B,CAAAA,EAOjB,CACA,EL6C2BrW,CAC1BA,EAAAA,EAAUkW,KAAOa,GAAMb,KAEvBlW,EAAU6oD,kBAAoB,SAAS1iD,EAAW7F,GACjD,OAAO,IAAI6uC,GAAWnvC,EAAWmG,EAAW7F,CAC9C,CAAA,EAMCN,EAAU8oD,mBAAqBnmC,GAAYoC,kBAC3C/kB,EAAU+P,cAAgB4S,GAAYhC,aACtC3gB,EAAU+oD,YAAcpmC,GAAY7B,UAEpC,MAAMkoC,EAAa3yC,GAAQrW,CM7Eb,EAAA,IAIJipD,EACNC,EACAt1C,ENwEJ5T,EAAU+W,MAAMC,MAAMhX,EAAWgpD,CAEjChpD,EAAAA,EAAU2mB,IAAM3mB,EAAUg5C,KAAOryB,GACjC3mB,EAAUmpD,QAAUtpD,OAAOspD,QOjFb,SAAgBnpD,EAAAA,CAE/BA,EAAU0oC,WAAa,UAAA,CAyBtB,QAAQ7lC,KAxBR7C,EAAU8I,UAAU,YAAa,CAAA,CAAA,EACjCG,KAAKmgD,SAEFngD,EAAAA,KAAKxG,aAEPwG,KAAKxG,WAAWkL,UAAY,IAI1B1E,KAAKkX,iBACPlX,KAAKkX,gBAGHlX,EAAAA,KAAK65C,eACP75C,KAAK65C,gBAGH75C,KAAK+L,KAAO/L,KAAK+L,IAAI0zB,YACvBz/B,KAAK+L,IAAI0zB,WAIVz/B,EAAAA,KAAKoW,kBAEQpW,KACTpG,EAAEmN,QAAQ,OAAS,UACd/G,KAAKpG,CAAAA,EAGd7C,EAAU0c,WAAAA,EACX,CAEA,EP+CY1c,CAAAA,EQhFG,SAAgBA,EAI/B,CAAA,SAASqpD,EAAallB,EAAQ7rB,GAC7B,IAAIjB,EAAS,CACZ8sB,OAAQA,CAGT,EAAA,GAAI7rB,EAAKxV,SAAW,EACnB,MAAM,IAAIoN,MAAM,mCAAA,EAEjB,GAAIoI,EAAKxV,SAAW,EAqBnB,cApBWwV,EAAK,CAAA,GAAO,UACtBjB,EAAOmV,IAAMlU,EAAK,CAClBjB,EAAAA,EAAOiyC,MAAQ,KAEfjyC,EAAOmV,IAAMlU,EAAK,CAAGkU,EAAAA,IACrBnV,EAAOiyC,MAAShxC,EAAK,CAAGgxC,EAAAA,OAAAA,GACxBjyC,EAAO9C,SAAW+D,EAAK,CAAA,EAAG/D,SAC1B8C,EAAO8pB,QAAU7oB,EAAK,CAAA,EAAG6oB,SAGrB7oB,EAAK,CAAA,EAAG7I,KACiB,OAAjB6I,EAAK,CAAG7I,EAAAA,MAAS,SAC3B4H,EAAO5H,KAAOyiB,GAAU5Z,EAAK,CAAA,EAAG7I,IAEhC4H,EAAAA,EAAO5H,KAAO6I,EAAK,CAAA,EAAG7I,KAGvB4H,EAAO5H,KAAO,GAGT4H,EAIR,OADAA,EAAOmV,IAAMlU,EAAK,CAAA,EACX6rB,EACN,CAAA,IAAK,MACL,IAAK,SACJ9sB,EAAO9C,SAAW+D,EAAK,CAAA,EACvBjB,EAAO8pB,QAAU7oB,EAAK,CACvB,EAAA,MACA,IAAK,OACL,IAAK,MACAA,EAAK,CACe,EAAA,OAAZA,EAAK,CACfjB,GADsB,SACtBA,EAAO5H,KAAOyiB,GAAU5Z,EAAK,CAE7BjB,CAAAA,EAAAA,EAAO5H,KAAO6I,EAAK,GAGpBjB,EAAO5H,KAAO,GAEf4H,EAAO9C,SAAW+D,EAAK,CAAA,EACvBjB,EAAO8pB,QAAU7oB,EAAK,CAGxB,CAAA,CAAA,OAAOjB,CACR,CAzDArX,EAAUmpD,QAAUtpD,OAAOspD,QA0D3BnpD,EAAUmtB,KAAO,CAGhB61B,MAAAA,GAGA7e,OAAQ,MAERolB,uBAAwBr3B,GACxBpE,MAAO,SAASre,GACf,OAAoB,OAATA,GAAS,SAAiBA,GAGrCA,EAAOA,EAAK+Q,QAAQ,SAAS,EAAA,SAClBgpC,UAAc,KAAgBxpD,EAAUg5C,KAAKpyB,KAEtC/mB,OAAO4pD,gBAF+B7iC,UAGvDvkB,EAAM,IAAIxC,OAAO4pD,cAAc,kBAAA,GAC3BH,MAAQ,QACZjnD,EAAIqnD,QAAQj6C,CAJZpN,GAAAA,EAAM,IAAKmnD,YAAaG,gBAAgBl6C,EAAM,UAAA,EAMxCpN,GATP,IAAIA,CAUJ,EACD4rB,OAAQ,SAAS27B,EAASj8B,EAAKtrB,EAC9B,CAAA,GAAWsrB,EAAI2D,SAAf,QAAwC3D,EAAI2D,OAAS,IAAK,CACzD,IAAI7D,EAAQE,EAAIC,YAAsDD,EAAIC,aAAeD,EAA1D1kB,KAAK6kB,MAAMH,EAAII,cAAgBJ,CAC9D,EAAA,GAAIF,GAAOA,EAAIvR,kBAAoB,MAASuR,CAAAA,EAAI6M,qBAAqB,aAAex3B,EAAAA,OACnF,OAAO2qB,EAAI6M,qBAAqBsvB,CAAS,EAAA,CAAA,CAE1C,CAED,OADIvnD,IACJ,IADgBrC,EAAU8I,UAAU,iBAAiB,CAAC,gBAAiBoJ,UAAU,CAAI7P,EAAAA,CAAAA,CAAAA,EAC9EoL,SAASC,cAAc,KAAA,CAC9B,EACD6gB,MAAO,SAASs7B,EAAUC,EAAAA,CAEzB,GADKA,EAAOhoC,WAAUgoC,EAASA,EAAOl8B,aAAek8B,GACjD9pD,EAAUg5C,KAAKpyB,KAClB,OAAOkjC,EAAOC,YAAYF,CAAAA,GAAW,CAMrC,EAAA,QAHIG,EADA3vC,EAAO,CAEPygB,EAAAA,GAAOgvB,EAAOG,eAAeH,GAAQI,SAASL,EAAUC,EAAQ,KAAMK,YAAYC,SAAU,IAAA,EAG/FJ,EAAQlvB,EAAIuvB,YAAAA,GAEXhwC,EAAK/X,KAAK0nD,GAKZ,OAAO3vC,CAER,EACDkqB,MAAO,SAASjkC,EACf,CAAA,OAAO2I,KAAKqhD,MACVhqD,EAAO6jC,QAAU,MAClB7jC,EAAOksB,IACPlsB,EAAOmP,MAAQ,GACdnP,EAAOgpD,OAAAA,GACRhpD,EAAOiU,SACPjU,EAAO6gC,OAAAA,CAER,EACD/T,IAAK,SAASZ,EAAK+9B,EAAQppB,GAC1B,IAAI7gC,EAAS+oD,EAAa,MAAOn3C,WACjC,OAAOjJ,KAAKs7B,MAAMjkC,CAAAA,CAClB,EACDkqD,QAAS,SAASh+B,EAAK2U,EAAAA,CACtB,IAAI7gC,EAAS+oD,EAAa,MAAOn3C,SAAAA,EAEjC,OADA5R,EAAOgpD,MAAQ,GACRrgD,KAAKs7B,MAAMjkC,CAAAA,CAClB,EACDmqD,IAAK,SAASj+B,EAAKk+B,EAAUH,EAAQppB,EAAAA,CACpC,IAAI7gC,EAAS+oD,EAAa,MAAOn3C,SAAAA,EACjC,OAAOjJ,KAAKs7B,MAAMjkC,CAClB,CAAA,EACDqqD,IAAK,SAASn+B,EAAK+9B,EAAQppB,EAAAA,CAO1B,IAAI7gC,EAAS+oD,EAAa,SAAUn3C,SAAAA,EACpC,OAAOjJ,KAAKs7B,MAAMjkC,CAClB,CAAA,EACDsqD,KAAM,SAASp+B,EAAKk+B,EAAUH,EAAQppB,GACjCjvB,UAAUpP,QAAU,EACvB4nD,EAAW,GACDx4C,UAAUpP,QAAU,GAAyB,OAAb6Z,GAAa,aACvD4tC,EAASG,EACTA,EAAW,IAEZ,IAAIpqD,EAAS+oD,EAAa,OAAQn3C,SAAAA,EAClC,OAAOjJ,KAAKs7B,MAAMjkC,CAClB,CAAA,EACDuqD,SAAU,SAASr+B,EAAKk+B,EAAUvpB,EAAAA,CACjCupB,EAAYA,IAAa,KAAO,GAAKpnD,OAAOonD,CAE5C,EAAA,IAAIpqD,EAAS+oD,EAAa,OAAQn3C,SAElC,EAAA,OADA5R,EAAOgpD,MAAAA,GACArgD,KAAKs7B,MAAMjkC,CAClB,CAAA,EACDgqD,MAAO,SAASnmB,EAAQ3X,EAAKk+B,EAAUpB,EAAOiB,EAAQppB,EAAAA,CACrD,OAAO,IAAInhC,EAAUmpD,SAAS,SAAS2B,EAASC,EAAAA,CAC/C,IAAI34C,EAA+BtG,OAAnBk/C,iBAAmBl/C,QAAc9L,EAAUg5C,KAAKpyB,KAA8B,IAAI/mB,OAAO4pD,cAAc,qBAAhD,IAAIuB,eACvEC,EAAQvnC,UAAUC,UAAUoE,MAAM,aAA+D,IAA5C,MAAQrE,UAAUC,UAAUoE,MAAM,IAA0D,IAAhD,MAAQrE,UAAUC,UAAUoE,MAAM,QA4BvI,IA5BqJ,KA4BrJ,GA1BMuhC,GACLl3C,EAAEoN,iBAAiB,mBAAoB,UAAA,CACtC,GAAKpN,EAAE84C,YAAc,GAAOD,GAAQ74C,EAAE84C,YAAc,EAAI,CACvD,IAAI94C,EAAEkf,QAAU,KAAOlf,EAAE2b,eAAiB,KACpC/tB,CAAAA,EAAU8I,UAAU,cAAe,CAACsJ,CAAK,CAAA,EAAA,OAE/CmG,WAAW,UAAA,QACC1V,GAAW,YACrB0nD,EAAO1+C,MAAMhM,OAAQ,CAAC,CAACguB,OAAOzb,EAAG+4C,SAAS3+B,KAE3Cs+B,EAAQ14C,CAAAA,EACG,OAAAvP,GAAW,aACrB0nD,EAAS,KACTn4C,EAAI,KAEL,EAAE,EACH,CACN,CAAA,EAGO+xB,GAAU,OAAUl7B,KAAK+5C,QAC5Bx2B,IAAQA,EAAIxc,QAAQ,MAAM,EAAE,IAAI,KAAK,OAAO,IAAI7N,OAAO+mB,QAAAA,EAAU,MAGlE9W,EAAEg5C,KAAKjnB,EAAQ3X,EAAK88B,CAEhBnoB,EAAAA,EACH,QAASjuB,KAAOiuB,EACf/uB,EAAEuyB,iBAAiBzxB,EAAKiuB,EAAQjuB,CACC,CAAA,OAAxBixB,EAAOknB,YAAqC,GAApB,QAAUlnB,GAAU,OAASA,GAAU,SACzE/xB,EAAEuyB,iBAAiB,eAAgB,mCAAA,EACzBR,GAAU,QACpBumB,EAAW,MAOZ,GAJAt4C,EAAEuyB,iBAAiB,mBAAoB,gBAAA,EAEvCvyB,EAAEk5C,KAAKZ,CAAAA,EAAAA,CAEFpB,EAAO,MAAO,CAACz7B,OAAOzb,EAAG+4C,SAAS3+B,CAAAA,CAC1C,GAAI3N,KAAK5V,IAAAA,CAAAA,CACP,EACD06B,aAAc,SAASrjB,EACtB,CAAA,OAAIA,EAAItQ,QAAQ,GACR,GADR,GACQ,IAEA,GACR,CAAA,EAGFhQ,EAAUurD,MAAQvrD,EAAUmtB,IAE5B,ER3IMntB,CAELi4C,EAAAA,GAAKj4C,CSrFS,EAAA,SAAgBA,GAkB/BA,EAAUM,OAAO,CAChBkrD,aAAc,WACdC,WAAY,QACZC,UAAW,WACXC,UAAW,KACX3zB,SAAU,QACViD,UAAW,QACXE,UAAW,KAEXywB,YAAa,iBACbC,SAAU,iBACVhgC,mBAAAA,GACAytB,gBAAAA,GACAlB,UAAW,EACXjf,sBAAuB,UACvBC,2BAA4B,UAC5BF,UAAW,EACX4yB,mBAAoB,EACpB7yB,sBAAuB,GACvBhgB,iBAAkB,GAClBqQ,gBAAiB,GACjBvf,WAAY,EACZC,UAAW,GACXqtC,SAAAA,GACAiJ,YAAAA,GACAC,UAAW,GACXwL,YAAa,GACbrP,mBACAjpC,gBAAAA,GACA8kC,oBAAAA,GACA6E,eAAgB,GAChBC,kBAAmB,GACnB9hB,OAAQ,KACRlsB,aAAc,GACd28C,oBAAAA,GACAC,mBAAmB,GACnBC,oBAAqB,GACrBC,yBACAzX,IAAAA,GAEAjwC,sBAAAA,GACA2nD,oBAAqB,EACrBC,qBAAsB,GAEtBxL,aACAyL,uBAAwB,IAExBC,cAAAA,GACAnO,gBAAiB,GACjBn8B,OAAQ,GACR9L,gBACA+a,WAAAA,GACAgC,MAAAA,GACA+D,UAAU,GACVV,WAAW,IACXY,qBACAq1B,oBAAAA,GAEA1S,iBAAAA,GAEAv5C,eAAgB,GAChB27C,eAAgB,GAChBuQ,WAAY,CAAC,YAAa,aAC1BC,EAAAA,aAAc,CAAC,eAAgB,YAAa,aAAA,EAC5CC,aAAc,CAAC,eAAgB,gBAC/BC,EAAAA,cAAe,CAAC,gBAChBjK,EAAAA,SAAU,CACTthD,SAAU,CACT,CAAC0d,KAAM,cAAe5b,OAAQ,OAAQqC,KAAM,WAAYy6B,MAAO,EAAA,EAC/D,CAAClhB,KAAM,OAAQnQ,OAAQ,GAAIpJ,KAAM,OAAQrC,OAAQ,MAGnD0pD,CAAAA,CAAAA,EAAAA,0BAAAA,GACApO,YAAa,GAEbqO,WAAY,QACZC,aAAc,EACdC,qBAAAA,GACA5vC,oBAAAA,GACAk3B,0BAA2B,GAE3B5rB,IAAK,OACL/lB,gBAAiB,gBACjBimD,YAAAA,EAGD5oD,EAAAA,EAAUM,OAAOqsD,aAAaM,SAAWjtD,EAAUM,OAAOqsD,aAAar/C,KACvEtN,EAAAA,EAAUM,OAAOssD,cAAcK,SAAWjtD,EAAUM,OAAOssD,cAAct/C,KAAAA,EAEzEtN,EAAU8xB,SAAW,CACpBC,UAAW,SAAmBpwB,GAE7B,OADY3B,EAAU+sB,UAAUmgC,UAAYltD,EAAU+sB,UAAU4D,YACnDhvB,CAAAA,CACb,EACDsnC,WAAY,SAAoBtnC,EAE/B,CAAA,OADa3B,EAAU+sB,UAAUyF,YAAcxyB,EAAU+sB,UAAU0F,aACrD9wB,CACd,CAAA,CAAA,EAGF3B,EAAU+sB,UAAU,CAAA,EACpB/sB,EAAU40C,eAAe,UAAA,CAIxB,IAAIvmC,EAAErO,EAAU2B,KAAKyoB,YACjBviB,EAAE7H,EAAUM,QACR,SAASqc,EAAEC,GAClB,QAAS/U,KAAK+U,EACRD,EAAE9U,CAAI8U,IAAAA,EAAE9U,CAAG+U,EAAAA,EAAE/U,GACrB,GACG7H,EAAU+sB,UAAU,CACrBiL,SAAS3pB,EAAExG,EAAE2jD,YAAAA,EACbC,WAAWp9C,EAAExG,EAAE4jD,UACfE,EAAAA,UAAU,SAASwB,EAAGC,EAAAA,CACrB,OAAGvlD,EAAE6sC,IACG10C,EAAU+sB,UAAUiL,SAASh4B,EAAU2B,KAAKC,IAAIwrD,EAAAA,GAAM,KAAA,CAAA,EAAQ,YAAYptD,EAAU+sB,UAAUiL,SAASm1B,CAAAA,EAExGntD,EAAU+sB,UAAUiL,SAASm1B,CAAAA,EAAI,YAAYntD,EAAU+sB,UAAUiL,SAASh4B,EAAU2B,KAAKC,IAAIwrD,EAAAA,GAAM,KAAA,CAAA,CAC1G,EACDC,eAAeh/C,EAAExG,EAAE2jD,YAAAA,EACnBxL,eAAgB,SAASr+C,EAAAA,CACxB,MAAO,EACP,EACDs+C,gBAAiB,SAASt+C,EACzB,CAAA,MAAO,EACP,EAED2rD,iBAAiBj/C,EAAExG,EAAE8jD,WACrB4B,gBAAgBl/C,EAAExG,EAAEmwB,QAAAA,EACpBgD,WAAW3sB,EAAExG,EAAEozB,SACfuyB,EAAAA,YAAYn/C,EAAExG,EAAEozB,SAAAA,EAChBwyB,WAAWp/C,EAAExG,EAAEozB,SACfE,EAAAA,UAAU9sB,EAAExG,EAAEszB,WAEdnO,YAAa3e,EAAExG,EAAE6jD,SAAAA,EAGjBj5B,YAAapkB,EAAExG,EAAE+jD,YAAa/jD,EAAEqpB,YAChCP,WAAW3wB,EAAU2B,KAAKspB,YAAYpjB,EAAE+jD,YAAY/jD,EAAEqpB,UACtD26B,EAAAA,SAAS7rD,EAAU2B,KAAKspB,YAAYpjB,EAAEgkD,SAAAA,GAAiB,EAAA,EACvD9zB,aAAa,SAASjrB,EAAMC,EAAIrH,EAAAA,CAE/B,OAAGA,EAAG2E,QAAU,SAAW3E,EAAG2E,QAAU,WAChCrK,EAAU+sB,UAAU0gC,WAAW3gD,CAE/B9M,EAAAA,EAAU+sB,UAAU0gC,WAAW3gD,CAAAA,EAAO,MAAM9M,EAAU+sB,UAAU0gC,WAAW1gD,CAAAA,CAEnF,EACDq4C,WAAW,SAASt4C,EAAMC,EAAIrH,EAC7B,CAAA,OAAOA,EAAG4Q,IACV,EACDo3C,YAAY,SAAS5gD,EAAMC,EAAIrH,EAAAA,CAC9B,MAAO,EACP,EACDy8C,iBAAiB,SAAS9zC,EACzB,CAAA,MAAO,EACP,EACD8xC,gBAAgB,SAAS9xC,EAAAA,CACxB,MAAO,EACP,EACDs/C,eAAe,SAAS7gD,EAAMC,EAAIrH,EAAAA,CACjC,OAAO1F,EAAU+sB,UAAU0gC,WAAW3gD,CAAAA,CACtC,EACD8gD,eAAe,SAAS9gD,EAAMC,EAAIrH,EACjC,CAAA,OAAOA,EAAG4Q,IACV,EACDu3C,kBAAoB,SAASlsD,EAAMk9C,EAClC,CAAA,MAAO,gBAAgBA,EAAM,cAC7B,EACDiP,kBAAoB,SAAShhD,EAAOC,EAAK3M,EACxC,CAAA,MAAO,EACP,EACD2tD,oBAAsB,SAASjhD,EAAOC,EAAK3M,EAAAA,CAC1C,MAAO,EACP,EAED4tD,oBAAqBhuD,EAAU2B,KAAKyoB,YAAY,gBAAA,EAChD6jC,aAAc,SAASnhD,EAAOC,EAAK3M,EAAAA,CAClC,MAAO,iBAAmBA,EAAMkW,KAAO,2BAA6BtW,EAAU+sB,UAAUihC,oBAAoBlhD,CAAS,EAAA,yBAA2B9M,EAAU+sB,UAAUihC,oBAAoBjhD,CACxL,CAAA,EAEDmhD,eAAgB7/C,EAAE,SAClB8/C,oBAAqB9/C,EAAE,IACvB+/C,EAAAA,cAAe//C,EAAE,IACjBggD,EAAAA,cAAehgD,EAAE,UAAA,CAAA,CAAA,EAGlBpF,KAAKH,UAAU,mBAAmB,CACnC,CAAA,CAAA,CAGA,ET5HQ9I,CAAAA,EUtFO,SAAgBA,EAAAA,CAE/BA,EAAUqsB,QAAU,CAAA,EACpBrsB,EAAUopD,SAAW,UACpBngD,CAAAA,KAAKojB,QAAU,GACfpjB,KAAKqjB,QAAU,GAEfrjB,KAAK+tC,SAAW,KAChB/tC,KAAK2tC,WAAa,KAClB3tC,KAAKR,SAAW,KAChBQ,KAAKP,WAAa,KAClBO,KAAKisB,UAAY,KACjBjsB,KAAKszB,WAAa,KAElBtzB,KAAKqlD,aACLrlD,KAAKH,UAAU,aAAc,CAAA,CAAA,CAC9B,EACA9I,EAAUwW,SAAW,SAASjV,EAAYC,EAAU8U,EAAM1T,EAAI2rD,EAC7D,CAAA,GAAA,CAAKr8C,UAAUpP,OACd,OAAOmG,KAAKyK,YAAAA,EACb,IAAIhO,EAAKnE,EACL2Q,UAAUpP,QAAU,KACvB4C,EAAK6oD,GAAc,IAChBhtD,WAAaA,EAChBmE,EAAGlE,SAAWA,EACdkE,EAAG4Q,KAAOA,EACV5Q,EAAG9C,GAAKA,GAET8C,EAAG9C,GAAK8C,EAAG9C,IAAM5C,EAAUiM,IAC3BvG,EAAAA,EAAG4Q,KAAO5Q,EAAG4Q,MAAQ,GAEO,OAAjB5Q,EAAGnE,YAAc,WAAWmE,EAAGnE,WAAa0H,KAAK8jB,UAAU8+B,SAASnmD,EAAGnE,UAAAA,GACvEmE,OAAAA,EAAGlE,UAAY,WAAWkE,EAAGlE,SAAWyH,KAAK8jB,UAAU8+B,SAASnmD,EAAGlE,QAAAA,GAC9E,IAAI6M,EAA4D,KAAvDpF,KAAK3I,OAAO63C,gBAAkBlvC,KAAK3I,OAAO83C,WAC/C1yC,EAAGnE,WAAWa,QAAAA,GAAasD,EAAGlE,SAASY,QAAAA,GAC1CsD,EAAGlE,SAASynB,QAAQvjB,EAAGlE,SAASY,QAAYiM,EAAAA,CAAAA,EAE7C3I,EAAGnE,WAAWynB,gBAAgB,CAC9BtjB,EAAAA,EAAGlE,SAASwnB,gBAAgB,CAAA,EAE5BtjB,EAAG4C,OAASW,KAAKV,cAAc7C,CAAAA,EAE/B,IAAIy3C,EAAAA,CAAUl0C,KAAKojB,QAAQ3mB,EAAG9C,EAK9B,EAAA,OAJAqG,KAAKojB,QAAQ3mB,EAAG9C,EAAM8C,EAAAA,EACtBuD,KAAK89B,cAAcrhC,CAAAA,EACduD,KAAKuoB,UACTvoB,KAAKH,UAAUq0C,EAAS,eAAiB,iBAAkB,CAACz3C,EAAG9C,GAAI8C,CAC7DA,CAAAA,EAAAA,EAAG9C,EACX,EACA5C,EAAUg9B,YAAc,SAASp6B,EAAI4rD,EAAAA,CACpC,IAAI9oD,EAAKuD,KAAKojB,QAAQzpB,CAAAA,GACjB4rD,GAAYvlD,KAAKH,UAAU,sBAAuB,CAAClG,EAAI8C,CAAAA,CAAAA,GAASuD,KAAKH,UAAU,+BAAgC,CAAClG,EAAI8C,OAErHA,IACA1F,EAAUwE,SAAW2yC,EAAAA,WAAav0C,GACpC5C,EAAU0E,SAAAA,EAAAA,OAEJuE,KAAKojB,QAAQzpB,GACpBqG,KAAK89B,cAAcrhC,CAEhBuD,EAAAA,KAAKR,UAAY/C,EAAG9C,KACtBqG,KAAKR,SAAW,KAChBQ,KAAKP,WAAW,KAChBO,KAAKisB,UAAU,OAIjBjsB,KAAKH,UAAU,iBAAkB,CAAClG,EAAI8C,CAAAA,CAAAA,EACvC,EACA1F,EAAUqE,SAAW,SAASzB,EAAAA,CAC7B,OAAOqG,KAAKojB,QAAQzpB,CACrB,CAAA,EACA5C,EAAUyuD,SAAW,SAAS7rD,EAAI8rD,EAAAA,CAC7BA,EAAK9rD,KACR8rD,EAAK9rD,GAAKA,GAEXqG,KAAKojB,QAAQzpB,CAAM8rD,EAAAA,CACpB,EACA1uD,EAAU+2B,aAAe,SAASn0B,EAAIuhC,EACrC,CAAA,QAASthC,EAAIoG,KAAK+tB,UAAUl0B,OAAS,EAAGD,GAAK,EAAGA,IAC3CoG,KAAK+tB,UAAUn0B,CAAGkB,EAAAA,aAAakF,KAAK3I,OAAOqC,kBAAoBC,GAClEuhC,EAAOl7B,KAAK+tB,UAAUn0B,GAAIA,CAC7B,CAAA,EACA7C,EAAUmnC,cAAgB,SAASvkC,EAAIskC,EAAAA,CACtC,GAAItkC,GAAMskC,EAAV,CACA,IAAIxhC,EAAKuD,KAAKojB,QAAQzpB,CAClB8C,EAAAA,IACHA,EAAG9C,GAAKskC,EACRj+B,KAAKojB,QAAQ6a,CAAUxhC,EAAAA,EAAAA,OAChBuD,KAAKojB,QAAQzpB,CAAAA,GAErBqG,KAAK8tB,aAAan0B,EAAI,SAASikC,EAAAA,CAC9BA,EAAE7tB,aAAa,WAAYkuB,CAC3BL,EAAAA,EAAE7tB,aAAahZ,EAAUM,OAAOqC,gBAAiBukC,CAAAA,CACnD,CACKj+B,EAAAA,KAAK2tC,YAAch0C,IAAIqG,KAAK2tC,WAAa1P,GACzCj+B,KAAK+tC,UAAYp0C,IAAIqG,KAAK+tC,SAAW9P,GAEzCj+B,KAAKH,UAAU,kBAAmB,CAAClG,EAAIskC,CAAAA,CAAAA,CAdd,CAe1B,EAEA,WAcC,QAbItY,EAAQ,CAAC,OAAQ,OAAQ,aAAc,YAAa,WAAY,WAChE+/B,EAAgB,SAAS5vC,EAC5B,CAAA,OAAO,SAASnc,EAAM,CAAA,OAAQ5C,EAAUqE,SAASzB,GAAKmc,GACxD,EACK6vC,EAAgB,SAAS7vC,EAC5B,CAAA,OAAO,SAASnc,EAAI2X,GACnB,IAAI7U,EAAK1F,EAAUqE,SAASzB,GAC5B8C,EAAGqZ,CAAAA,EAAQxE,EACX7U,EAAGw8B,YACHx8B,EAAG4C,OAASW,KAAKV,cAAc7C,CAC/B1F,EAAAA,EAAU+mC,cAAcrhC,EAAAA,GAC3B,CACA,EACU7C,EAAI,EAAGA,EAAI+rB,EAAM9rB,OAAQD,GAAK,EACtC7C,EAAU,WAAa4uB,EAAM/rB,EAAI,CAAA,CAAA,EAAM8rD,EAAc//B,EAAM/rB,CAC3D7C,CAAAA,EAAAA,EAAU,WAAa4uB,EAAM/rB,EAAI,CAAM+rD,CAAAA,EAAAA,EAAchgC,EAAM/rB,CAE5D,CAAA,CAAA,EAED7C,EAAAA,EAAU+mC,cAAgB,SAASrhC,EAAIwR,EAClCjO,CAAAA,KAAK4lD,kBAAkBnpD,CAC1BuD,EAAAA,KAAK4M,iBAEL5M,EAAAA,KAAK6lD,YAAYppD,EAAG9C,EAAAA,CACtB,EACA5C,EAAU6uD,kBAAoB,SAASnpD,EAAAA,CACtC,GAAIuD,CAAAA,KAAKY,YAAcZ,KAAKW,UAC3B,MAAO,GAMR,GAFwBlE,EAAGnE,WAAWa,QAAY6G,EAAAA,KAAKW,UAAUxH,QAAa6G,GAAAA,KAAKY,UAAUzH,QAAAA,EAAYsD,EAAGlE,SAASY,QAAAA,EAEjG,CAGnB,IAAI2sD,EAAcrpD,EAAGnE,WAAWuI,SAC/BklD,EAAAA,EAAatpD,EAAGlE,SAASsI,SAAAA,EAAcpE,EAAGlE,SAAS4J,aAAa,GAChE6jD,EAAWhmD,KAAK3I,OAAO0J,UACvB0xC,EAAYzyC,KAAK3I,OAAOyJ,WAIzB,SAFyBd,KAAKmB,cAAkB4kD,EAAaC,GAAYD,GAActT,KAAeqT,GAAeE,GAAYF,EAAcrT,IAOxHh2C,GAAAA,EAAGlE,SAASY,QAAAA,EAAYsD,EAAGnE,WAAWa,QAAAA,GAAS,KAClD,IAAM6G,KAAK3I,OAAO0J,UAAYf,KAAK3I,OAAOyJ,aAEZglD,EAAcE,GAAYD,EAAatT,GAG3F,CACE,MAAO,EAET,EACA17C,EAAUuI,cAAgB,SAAS7C,EAAAA,CAIlC,IAAIwpD,EAAe,IAAI/sD,KAAKuD,EAAGlE,SAASY,QAAAA,EAAY,GACpD,OACCsD,EAAGnE,WAAWsV,YAAAA,IAAkBq4C,EAAar4C,YAC7CnR,GAAAA,EAAGnE,WAAWuV,SAAAA,IAAeo4C,EAAap4C,SAC1CpR,GAAAA,EAAGnE,WAAWiG,QAAAA,IAAc0nD,EAAa1nD,QACnC9B,GAAAA,EAAGlE,SAASY,QAAAA,EAAYsD,EAAGnE,WAAWa,QAAAA,EAAS,KACvD,EAEApC,EAAUmvD,mBAAqB,SAASC,EAEvC,CAAA,IAAI7rB,EAAQ,CAEZ,EAAA,QAAS3gC,KAAMqG,KAAKojB,QACfpjB,KAAK4lD,kBAAkB5lD,KAAKojB,QAAQzpB,CAAAA,CAAAA,IAClCwsD,GAAcnmD,CAAAA,KAAKojB,QAAQzpB,CAAI0F,EAAAA,QAC/BW,KAAKomD,aAAazsD,EAAIqG,KAAKojB,QAAQzpB,CACtC2gC,CAAAA,GAAAA,EAAMjhC,KAAK2G,KAAKojB,QAAQzpB,CAE5B,CAAA,GAAA,OAAO2gC,CACR,EACAvjC,EAAUqvD,aAAe,SAASzsD,EAAI8C,EACrC,CAAA,IAAIk2B,EAAS3yB,KAAK,UAAYA,KAAKoB,KAAAA,EACnC,MAAO,CAAAsS,GAAWif,EAAOh5B,EAAI8C,CAAAA,CAC9B,EACA1F,EAAUsvD,oBAAsB,SAAS5pD,EAAAA,CACxC,MAASA,CAAAA,CAAAA,EAAG4C,MACb,EACAtI,EAAU6V,iBAAmB,SAAS/N,EAAKynD,EAC1C,CAAA,IAAIC,EAAO,GACX,IAAK1nD,EAAK,CAET,GADA0nD,EAAAA,GACIvmD,KAAKwoB,YAER,OADAxoB,KAAAA,KAAKyoB,iBAGNzoB,KAAKyoB,aAAe,GAEpBzoB,KAAKqlD,WACLxmD,EAAAA,EAAMmB,KAAKkmD,mBAAAA,EAAqBlmD,KAAKmB,aAAenB,KAAK3I,OAAOugD,UAAAA,CAChE,CACD,QAAQh+C,EAAG,EAAG+M,EAAM9H,EAAIhF,OAAQD,EAAI+M,EAAK/M,IACxCoG,KAAKwmD,mBAAmB3nD,EAAIjF,IAG7B,GAAIoG,KAAK3I,OAAOugD,WAAAA,CAAc53C,KAAKmB,YAAa,CAE/C,IAAIslD,EAAM,GACNC,EAAM,CAAA,EACV,IAAS9sD,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC3BoG,KAAKqmD,oBAAoBxnD,EAAIjF,CAChC6sD,CAAAA,EAAAA,EAAIptD,KAAKwF,EAAIjF,CAAAA,CAAAA,EAEb8sD,EAAIrtD,KAAKwF,EAAIjF,CAGf,CAAA,EAAA,GAAA,CAAIoG,KAAKO,KAAoB,cAAE,CAC9B,IAAI6M,EAAUrW,EAAUwzC,qBAAqBC,YAAYxqC,KAAKoB,KAC9D,EAAA,MAAM,IAAI6F,MAAMmG,CAAAA,CAChB,CAGDpN,KAAK2mD,mBAAqB3mD,KAAKO,KAAoB,cAAE,CAAA,EACrDP,KAAKmB,YAAc,GACnBnB,KAAK2M,YAAY+5C,EAAKJ,CACtBtmD,EAAAA,KAAKmB,YAAc,GAGnBnB,KAAK2mD,mBAAqB3mD,KAAKO,KAAmB,aAAE,CACpDP,EAAAA,KAAKmB,YAAc,GACnBnB,KAAK2M,YAAY85C,EAAKH,CAExB,CAAA,KAAQ,CACN,IAAIM,EAASpiD,SAASqN,uBAAAA,EAClBg1C,EAAmB7mD,KAAKO,KAAmB,aAAE,CAAA,EACjDP,KAAK2mD,mBAAqBC,EAC1B5mD,KAAK2M,YAAY9N,EAAKynD,CACtBO,EAAAA,EAAiBliD,YAAYiiD,CAAAA,EAC7B5mD,KAAK2mD,mBAAqBE,CAE1B,CAEEN,GACFvmD,KAAKH,UAAU,eAAgB,CAEjC,CAAA,CAAA,EAGA9I,EAAU+vD,gBAAkB,SAAS3rD,EACpC,CAAA,IAAIzC,EAAO3B,EAAU2E,cAAcP,CAAGzC,EAAAA,KAClC3B,EAAU8I,UAAU,kBAAmB,CAACnH,CAAAA,CAAAA,GAE5C3B,EAAU0V,eAAe/T,EAAM,KAChC,CAAA,EAEA3B,EAAUgwD,mBAAqB,SAAStqD,EAKvC,CAAA,QAJIuF,EAAShC,KAAK2mD,mBACdK,EAAWhnD,KAAK2C,YAAYlG,CAAAA,EAGxB2I,EAAI3I,EAAGwqD,MAAO7hD,EAAI3I,EAAGyqD,MAAO9hD,IAAI,CAEvC4hD,EAASC,MAAQ7hD,EACjB4hD,EAASE,MAAQ9hD,EAAE,EAEnB,IAAI1M,EAAO3B,EAAU2B,KACjByuD,EAAOpwD,EAAU6J,UACrBumD,EAAOzuD,EAAKC,IAAIwuD,EAAMH,EAASI,OAAQ,MAAA,EACvCD,EAAOzuD,EAAKC,IAAIwuD,EAAMH,EAASC,MAAO,KAAA,EACtC,IAAIrR,EAAQ7+C,EAAUy1B,UAAU26B,EAAMzuD,EAAKC,IAAIwuD,EAAM,EAAG,KAAA,CAAA,EAAQttD,OAE5D+1C,EAAM5vC,KAAKqnD,mBAAmBL,CAAAA,EAC9BM,EAAQ1X,EAAI2X,GAAK3X,EAAIhzB,EAErBtG,EAAK9R,SAASC,cAAc,KAChC1N,EAAAA,EAAUI,MAAMmf,EAAI,QAAS,SAASnb,EAAAA,CAAGpE,EAAU+vD,gBAAgB3rD,CAAAA,CAAG,CACtEmb,EAAAA,EAAG5Q,UAAY,iBACf4Q,EAAGte,MAAMC,IAAM23C,EAAIjzB,EAAI,KACvBrG,EAAGte,MAAME,KAAO03C,EAAIhzB,EAAI,KACxBtG,EAAGte,MAAM4N,MAAQ0hD,EAAO,KACxBhxC,EAAG5R,UAAY3N,EAAU+sB,UAAU8gC,kBAAkBuC,EAAMvR,CAC3D51C,EAAAA,KAAK+tB,UAAU10B,KAAKid,GAEpBtU,EAAO2C,YAAY2R,CACnB,CAAA,CACF,EAEAvf,EAAUyvD,mBAAqB,SAAS7sD,EAAAA,CAEvC,IAAI8C,EADA9C,IAGH8C,EADgB,OAAd0M,GAAc,SACXnJ,KAAKojB,QAAQzpB,CAEbA,EAAAA,KAEN8C,EAAG4C,OAAStI,EAAUuI,cAAc7C,CAAAA,EACrC,EACA1F,EAAUkE,YAAY,iBAAkBlE,EAAUyvD,oBAClDzvD,EAAUkE,YAAY,eAAgBlE,EAAUyvD,oBAEhDzvD,EAAU4V,YAAc,SAAS9N,EAAKynD,GACrCznD,EAAMmB,KAAKwnD,mBAAmB3oD,EAAKynD,GAEnC,QADIvpD,EAAa,CAAA,EACRnD,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC/B,GAAIoG,KAAKmB,YACR,GAAGpK,EAAUqK,OAAS,QACrBpB,KAAKynD,iBAAiB5oD,EAAIjF,CACtB,CAAA,MAAA,CAEJ,IAAI8tD,EAAU3wD,EAAUM,OAAOswD,iBAC5BD,IAAoB,EAARA,GAAa7oD,EAAIjF,CAAAA,EAAG6yB,QAAUi7B,EAE5C1nD,KAAKynD,iBAAiB5oD,EAAIjF,IAClB8tD,YAAyB7oD,EAAIjF,CAAAA,EAAG6yB,SAAWi7B,GAEnD3wD,EAAUgwD,mBAAmBloD,EAAIjF,GAIlC,KAIG,CACJ,IAAI6C,EAAKoC,EAAIjF,CACToI,EAAAA,EAASjL,EAAUgP,cAActJ,EAAGwqD,KACxC,EAAA,GAAA,CAAKjlD,EAAQ,SAETjF,EAAWN,EAAGwqD,KAAAA,IACjBlqD,EAAWN,EAAGwqD,OAAS,CACtBW,KAAM5lD,EACN4kD,OAAQpiD,SAASqN,uBACjBjM,EAAAA,MAAO5D,EAAOkR,WAAAA,GAIhB,IAAIhW,EAAYH,EAAWN,EAAGwqD,KAAAA,EAC9BjnD,KAAK6nD,aAAaprD,EAAIS,EAAU0pD,OAAQ1pD,EAAU0I,KAClD,CAAA,CAED,QAAQhM,KAAKmD,GACRG,EAAYH,EAAWnD,IACdguD,MAAQ1qD,EAAU0pD,QAC9B1pD,EAAU0qD,KAAKjjD,YAAYzH,EAAU0pD,MAGzC,CAAA,EAEA7vD,EAAU+wD,wBAA0B,SAASvuD,EAC5C,CAAA,QAASK,EAAI,EAAGA,EAAIL,EAAMM,OAAQD,IACjC,IAAKL,EAAMK,GAAG8L,WAAa,IAAIqB,QAAQ,kBAAA,GAAvC,GACC,OAAOxN,EAAMK,CAAAA,EAIf,OAAOL,EAAM,EACd,EAEAxC,EAAUywD,mBAAqB,SAAS3oD,EAAKynD,EAC5C,CAAA,IAAIyB,EAAK/nD,KAAKsS,GAAGge,WACb03B,EAAQhoD,KAAKgwC,OAAOG,QACpBh9B,EAAInT,KAAKgwC,OAAOG,QAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EAC7C3pC,EAAOxG,KAAKO,KAAmB,aAAE,CAAA,EAQrC,GAFC1B,EAJImB,KAAKmB,YAIHnB,KAAKioD,yBAAyBppD,EAAKynD,CAHnCtmD,EAAAA,KAAKkoD,wBAAwBrpD,EAAKynD,GAKrCtmD,KAAKmB,YACR,GAAImlD,EACHtmD,KAAKgwC,OAAOG,QAAU6X,MAClB,CACJ,IAAIG,EAAY3hD,EAAK/M,iBAAiB,oBAAA,EACtC,GAAI0uD,EAAUtuD,OAAQ,CACrB,QAASD,EAAI,EAAGA,EAAIuuD,EAAUtuD,OAAQD,IAAK,CAC1CuZ,EAAEvZ,CAAAA,IACF,IAAIL,EAAQ4uD,EAAUvuD,CAAGH,EAAAA,iBAAiB,uBACtC2uD,EAAapoD,KAAKgwC,OAAOrqC,OAAS3F,KAAKsS,GAAGg6B,kBAC9C,GAAKn5B,EAAEvZ,GAAMmuD,EAAKK,EAAY,CAG7B,IAAIC,EAAUD,EACkB,EAA7BpoD,KAAK3I,OAAOswD,mBAAuB3nD,KAAK3I,OAAOswD,kBAAoBx0C,EAAEvZ,IAAMoG,KAAK3I,OAAOswD,iBACzFU,EAAUl1C,EAAEvZ,CAAKmuD,EAAAA,GACP/nD,KAAK3I,OAAOswD,iBAAmB,GAAKI,EAAKK,IACnDC,GAAWroD,KAAK3I,OAAOswD,iBAAmB,GAAKI,GAGhDI,EAAUvuD,CAAAA,EAAG5B,MAAM2N,OAAU0iD,EAAUroD,KAAKsS,GAAGg6B,kBAAqB,IACpE,CAEDn5B,EAAEvZ,CAAAA,GAAMuZ,EAAEvZ,EAAI,IAAM,GAAK7C,EAAU+wD,wBAAwBvuD,CAAAA,EAAO6a,YAClE,CACDjB,EAAEm1C,QAAQ,CAAA,EACV,MAAMpY,EAAWlwC,KAAKxG,WAAWyY,cAAc,iBAC/C,GAAIi+B,EAAS97B,aAAe87B,EAASqY,eAAiBxxD,EAAUi5C,OAAOwY,YAAczxD,EAAUub,GAAG+X,aAAc,CAE/G,IAAIo+B,EAAiB1xD,EAAUi5C,OAC9B0Y,EAAYD,EAAeA,EAAe1Q,YAC1C4Q,EAAcF,EAAetY,QAAQ1tC,MAAAA,EAEtCimD,GAAc3xD,EAAUub,GAAG+X,cAAgB,EAC3CrqB,KAAKi2C,kBAAkByS,EAAW1oD,KAAKY,UAAWZ,KAAKW,SACvD5J,EAAAA,EAAUi5C,OAAOG,QAAUwY,EAE3B3oD,KAAK6sC,OAAO7sC,KAAKO,KAAqB,eAAE,CAAA,EAAImoD,CAC5C3xD,EAAAA,EAAUu/C,eAAet2C,KAAKO,KAAqB,eAAE,CAAA,CAAA,EACrDxJ,EAAU0hD,oBAAoBz4C,KAAKO,KAAmB,aAAE,GAAIP,KAAK81C,oBAAAA,EAAuB91C,KAAKY,SAAAA,EAE7F6nD,EAAeD,WAAa,EAC5B,CACL,SACS3pD,EAAIhF,QAAUmG,KAAKO,KAAoB,cAAE,CAAA,EAAGvI,MAAMsgB,YAAc,YACpEnF,EAAE,CAAM,EAAA,IACLtU,EAAIhF,QAAUsZ,EAAE,CAAA,GAAZtZ,GAAsB,CAK7B,IAAI+uD,GAAyBz1C,EAAE,CAAA,EAAK,GAAK40C,EAAK,EAE1Cc,EAAwBD,EACxBE,EAA4BF,EAAwB,KACpD5oD,KAAK3I,OAAOgsD,yBAEfyF,GADAD,EAAwB7iD,KAAKE,IAAI0iD,EAAuB5oD,KAAK3I,OAAOgsD,sBAChB,GAAA,MAGrD,IAAI0F,EAAoB/oD,KAAKO,KAAoB,cAAE,CACnDwoD,EAAAA,EAAkB/wD,MAAM2N,OAASmjD,EACjCC,EAAkB/wD,MAAMsgB,WAAcnF,EAAE,CAAA,GAAO,GAAI,SAAW,UAC9D41C,EAAkB/wD,MAAM0a,QAAWS,EAAE,CAAA,GAAbT,GAAwB,OAAS,GAGzD,IAAIs2C,EAAiBhpD,KAAKO,KAAoB,cAAE,GAChDyoD,EAAehxD,MAAM2N,OAASmjD,EAC9BE,EAAehxD,MAAMsgB,WAAcnF,EAAE,IAAhBmF,GAA2B,SAAW,UAC3D0wC,EAAehxD,MAAM0a,QAAWS,EAAE,CAAW,MAAA,OAAS,GACtD61C,EAAetjD,UAAYyN,EAAE,CAAA,EAAK,qBAAuB,2BACzDnT,KAAKo1C,WAAajiC,EAAE,GAAK,GAAK40C,EAC3B/nD,KAAK3I,OAAOgsD,yBACdrjD,KAAKo1C,UAAYpvC,KAAKE,IAAIlG,KAAK3I,OAAOgsD,uBAAwBrjD,KAAKo1C,SAAAA,GAEpEjiC,EAAE,CAAK,EAAA,EAEH01C,GAAyBD,IAE5BG,EAAkB/wD,MAAMixD,UAAY,OAGpCD,EAAehxD,MAAMyJ,SAAW,QAChCunD,EAAehxD,MAAMC,IAAM,GAC3B+wD,EAAehxD,MAAME,KAAO,GAE7B,CAEF,CAEF,OAAO2G,CACR,EACA9H,EAAUq8C,gBAAkB,SAAS32C,GAGpC,IAAIysD,EAAWlpD,KAAKtH,KAAKgoB,UAAU,IAAIxnB,KAAKuD,EAAGnE,UAAAA,CAAAA,EAC/C,OAAO0N,KAAKM,OAAO4iD,EAAS/vD,QAAAA,EAAY6G,KAAKY,UAAUzH,QAAAA,GAAc,KACtE,CAAA,EACApC,EAAUoyD,2BAA6B,SAAS1sD,EAC/C,CAAA,IAAIlE,EAAWkE,EAAGlE,SAClB,GAAIyH,KAAK3I,OAAO6rD,sBAAuB,CACtC,IAAIkG,GAAe3sD,EAAGlE,SAAWkE,EAAGnE,YAAc,IAC9C8wD,EAAcppD,KAAKqpD,uBACtB9wD,EAAWyH,KAAKtH,KAAKC,IAAIJ,EAAUyH,KAAKqpD,qBAAuBD,EAAa,QAE7E,EAAA,CACD,OAAO7wD,CACR,EACAxB,EAAUmxD,wBAA0B,SAASrpD,EAAKynD,GACjDznD,EAAIqd,KAAK,SAASxI,EAAGC,EACpB,CAAA,OAAID,EAAEpb,WAAWa,WAAawa,EAAErb,WAAWa,QACnCua,EAAAA,EAAE/Z,GAAKga,EAAEha,GAAK,EAAK,GACpB+Z,EAAEpb,WAAaqb,EAAErb,WAAa,EAAA,EACvC,CACC,EAAA,IAAI8D,EAAO,CAAA,EACPktD,EAAgB,CAEpBtpD,EAAAA,KAAKqpD,qBAAuBrjD,KAAK+D,MAAiC,GAA3B/J,KAAKsS,GAAGw5B,iBAAwB9rC,KAAK3I,OAAO+O,YAAAA,EAEnF,QAASxM,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CACpC,IAAI6C,EAAKoC,EAAIjF,GAGT48C,EAAK/5C,EAAGnE,WACR09C,EAAKv5C,EAAGlE,SAERgxD,EAAK/S,EAAG31C,SAAAA,EACR2oD,EAAKxT,EAAGn1C,SAAAA,EAEZ,GADApE,EAAGwqD,MAAQjnD,KAAKozC,gBAAgB32C,CAC5BuD,EAAAA,KAAKwF,SAAS/I,EAAGwqD,KAAAA,EAEpBpoD,EAAIuJ,OAAOxO,EAAE,CACbA,EAAAA,QAHD,CASA,GAFKwC,EAAKK,EAAGwqD,KAAQ7qD,IAAAA,EAAKK,EAAGwqD,KAAS,EAAA,CAAA,GAAA,CAEjCX,EAAM,CACV7pD,EAAGgtD,OAAS,GAIZ,QAFInvB,EAAQl+B,EAAKK,EAAGwqD,KAEb3sB,EAAAA,EAAMzgC,QAAQ,CACpB,IAAI6vD,EAAOpvB,EAAMA,EAAMzgC,OAAS,CAAA,EAEhC,GADiBmG,EAAAA,KAAKmpD,2BAA2BO,CAClCvwD,EAAAA,QAAAA,GAAasD,EAAGnE,WAAWa,WAGzC,MAFAmhC,EAAMlyB,OAAOkyB,EAAMzgC,OAAS,EAAG,CAAA,CAIhC,CAGD,QAFI8vD,EAAarvB,EAAMzgC,OACnB+vD,EAAAA,GACKlkC,EAAI,EAAGA,EAAI4U,EAAMzgC,OAAQ6rB,IAGjC,GAFIgkC,EAAOpvB,EAAM5U,GACA1lB,KAAKmpD,2BAA2BO,CAClCvwD,EAAAA,QAAAA,GAAasD,EAAGnE,WAAWa,QAAAA,EAAW,CACpDywD,EAAAA,GACAntD,EAAGgwB,QAAUi9B,EAAKj9B,QAClBk9B,EAAajkC,EACbjpB,EAAGgtD,OAAS,GACZ,KACA,CAMF,GAHInvB,EAAMzgC,SACTygC,EAAMA,EAAMzgC,OAAS,CAAA,EAAG4vD,WAEpBG,CAAAA,EACJ,GAAItvB,EAAMzgC,OACT,GAAIygC,EAAMzgC,QAAUygC,EAAMA,EAAMzgC,OAAS,CAAA,EAAG4yB,QAAS,CACpD,GAAK6N,EAAMA,EAAMzgC,OAAS,CAAA,EAAG4yB,QAG5B,IAAK/G,EAAI,EAAGA,EAAI4U,EAAMzgC,OAAQ6rB,IAAK,CAElC,QADImkC,EAAa,GACRvmD,EAAI,EAAGA,EAAIg3B,EAAMzgC,OAAQyJ,IACjC,GAAIg3B,EAAMh3B,CAAGmpB,EAAAA,SAAW/G,EAAG,CAC1BmkC,KACA,KACA,CAEF,GAAA,CAAKA,EAAY,CAChBptD,EAAGgwB,QAAU/G,EACb,KACA,CACD,MAdDjpB,EAAGgwB,QAAU,EAedhwB,EAAGgtD,OAAAA,EACT,KAAY,CACN,IAAIK,EAAcxvB,EAAM,CAAA,EAAG7N,QAC3B,IAAK/G,EAAI,EAAGA,EAAI4U,EAAMzgC,OAAQ6rB,IACzB4U,EAAM5U,GAAG+G,QAAUq9B,IACtBA,EAAcxvB,EAAM5U,GAAG+G,SAEzBhwB,EAAGgwB,QAAUq9B,EAAc,EAC3BrtD,EAAGgtD,OAAAA,EACH,MAGDhtD,EAAGgwB,QAAU,EAGf6N,EAAMlyB,OAAOuhD,EAAYA,GAAcrvB,EAAMzgC,OAAS,EAAI,EAAG4C,CAEzD69B,EAAAA,EAAMzgC,QAAUygC,EAAMyvB,WAAa,IACtCzvB,EAAMyvB,UAAYzvB,EAAMzgC,OACxB4C,EAAGiwB,OAAS4N,EAAMzgC,QAElB4C,EAAGiwB,OAAUjwB,EAAS,OAAIA,EAAGiwB,OAAS,CAEvC,EAEG68B,EAAKvpD,KAAK3I,OAAOyJ,YAAc0oD,GAAMxpD,KAAK3I,OAAO0J,aAGpDuoD,EAAcjwD,KAAKoD,CACnBoC,EAAAA,EAAIjF,GAAK6C,EAAKuD,KAAKgqD,YAAYvtD,CAAAA,EAE3B8sD,EAAKvpD,KAAK3I,OAAOyJ,aACpBrE,EAAGnE,WAAWoH,SAASM,KAAK3I,OAAOyJ,YACnCrE,EAAGnE,WAAWqH,WAAW,CAAA,GAEtB6pD,GAAMxpD,KAAK3I,OAAO0J,YACrBtE,EAAGlE,SAASoH,WAAW,CAAA,EACvBlD,EAAGlE,SAASmH,SAASM,KAAK3I,OAAO0J,SAG9BtE,GAAAA,EAAGnE,WAAamE,EAAGlE,UAAYgxD,GAAMvpD,KAAK3I,OAAO0J,aACpDlC,EAAIuJ,OAAOxO,EAAG,GACdA,IAhGD,CAoGD,CACD,GAAA,CAAK0sD,EAAM,CACV,IAAS1sD,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC/BiF,EAAIjF,GAAG8yB,OAAStwB,EAAKyC,EAAIjF,CAAAA,EAAGqtD,OAAO8C,UAEpC,IAASnwD,EAAI,EAAGA,EAAI0vD,EAAczvD,OAAQD,IACzC0vD,EAAc1vD,GAAG8yB,OAAStwB,EAAKktD,EAAc1vD,CAAAA,EAAGqtD,OAAO8C,SACxD,CAED,OAAOlrD,CACR,EACA9H,EAAUkzD,YAAc,SAASprD,EAAAA,CAChCA,EAAIqd,KAAK,SAASxI,EAAGC,GACpB,OAAID,EAAEpb,WAAWa,QAAAA,GAAawa,EAAErb,WAAWa,QAAAA,EACtCua,EAAErU,QAAAA,CAAWsU,EAAEtU,OAAe,EAAA,CAC7BqU,EAAErU,QAAUsU,EAAEtU,OAAgB,GAC5BqU,EAAE/Z,GAAKga,EAAEha,GAAK,EAAA,GAEf+Z,EAAEpb,WAAaqb,EAAErb,WAAa,EAAK,EAC5C,EACA,EAEAvB,EAAUmzD,8BAAgC,SAAS1mC,EAAME,EAAIvsB,EAAAA,CAC5D,IAAIka,EAAOrR,KAAKuF,MAAM1L,OAClBswD,EAAmB,GACnBC,EAAY5mC,EACZ6mC,EAAAA,GACAC,EAAa,IAAIpxD,KAAKwqB,CAAAA,EAK1B,IAJG3sB,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKwqB,CAAAA,CAAAA,EAAKvqB,WAAauqB,EAAGvqB,QAAAA,IACzDmxD,EAAavzD,EAAU2B,KAAKgoB,UAAU4pC,CAAAA,EACtCA,EAAavzD,EAAU2B,KAAKC,IAAI2xD,EAAY,EAAG,KAAA,GAE1CF,EAAYE,GAAW,CAC5BD,EAAAA,GACA,IACIE,EADYvqD,KAAKgB,kBAAkBopD,KAAkBjzD,CAAAA,EACzBka,EAChC,GAAA,CAAIrR,KAAKwF,SAAS+kD,CAAAA,EAAe,CAChCJ,EAAAA,GACA,KACA,CACDC,EAAYrzD,EAAU2B,KAAKC,IAAIyxD,EAAW,EAAG,KAAA,CAC7C,CACD,OAAOC,GAAWF,CACnB,EAEApzD,EAAUkxD,yBAA2B,SAASppD,EAAKynD,EAAAA,CAClDtmD,KAAKiqD,YAAYprD,CAAAA,EAgBjB,QAJIvG,EAXAkkC,EAAM,CAAA,EACN4L,EAAQ,CACX,GACA,CACA,EAAA,CAAA,EACA,CACA,EAAA,CAAA,EACA,GACA,CAEGniC,CAAAA,EAAAA,EAAMjG,KAAKgwC,OAAOG,QAElB9+B,EAAOrR,KAAKuF,MAAM1L,OAClB2wD,EAAc,CAAA,EAET5wD,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CACpC,IAAI6C,EAAKoC,EAAIjF,CACTD,EAAAA,EAAK8C,EAAG9C,GACP6wD,EAAY7wD,CAAAA,IAChB6wD,EAAY7wD,CAAM,EAAA,CACjB8wD,YAAa,GACbC,aAGF,GAAA,IAAIC,EAAaH,EAAY7wD,GACzB68C,EAAMl+C,GAAcmE,EAAGnE,WACvB09C,EAAKv5C,EAAGlE,SAERi+C,EAAKx2C,KAAKY,YACb+pD,EAAWF,YAAAA,GACXjU,EAAKx2C,KAAKY,WAEPo1C,EAAKh2C,KAAKW,YACbgqD,EAAWD,WAAa,GACxB1U,EAAKh2C,KAAKW,WAGX,IAAIiqD,EAAW5qD,KAAKgB,kBAAkBw1C,KAAW/5C,CAAAA,EAGjD,GAFAA,EAAGwqD,MAAQ2D,EAAWv5C,EAAAA,CAElBrR,KAAKwF,SAAS/I,EAAGwqD,KAAUxqD,GAAAA,CAAAA,EAAG4C,OAAlC,CAEA,IAAIwrD,EAAW7qD,KAAKgB,kBAAkBg1C,EAAAA,GAAUv5C,CAAO4U,GAAAA,EAQvD,GAPA5U,EAAGyqD,MAAS2D,EAAWx5C,GAASA,EAChC5U,EAAGquD,QAAUD,EAAWD,EAExBnuD,EAAG2qD,OAASphD,KAAK+D,OAAO/J,KAAK8wC,eAAe0F,EAAGr9C,QAAW,EAAA,CAAA,EAAK6G,KAAKY,UAAUzH,YAAc,MAAsBkY,EAAAA,EAE3Fta,EAAUmzD,8BAA8B1T,EAAIR,EAAIv5C,CAAAA,EAEvE,CAMA,IAEIsuD,EAFAzwB,EAAQ8N,EAAM3rC,EAAG2qD,MAAAA,EAIrB,IAAK2D,EAAa,EAAGA,EAAazwB,EAAMzgC,UACnCygC,EAAMywB,CAAAA,EAAY7D,OAASzqD,EAAGwqD,OADa8D,IAQhD,CAAA,GAJKtuD,EAAGgwB,SAAY65B,IACnB7pD,EAAGgwB,QAAUs+B,GAGVtuD,EAAGwqD,MAAQxqD,EAAGquD,SAAWz5C,EAC5B/Y,EAAa,KACbkkC,EAAInjC,KAAKoD,CACT69B,EAAAA,EAAMywB,GAActuD,EAEpBwJ,EAAIxJ,EAAG2qD,MAAAA,EAAU9sB,EAAMzgC,OAAS,EAChC4C,EAAGuuD,aAAeL,EAAWF,YAC7BhuD,EAAGwuD,YAAcN,EAAWD,eAP7B,CASC,IAAIz9C,EAAOjN,KAAKgqD,YAAYvtD,CAC5BwQ,EAAAA,EAAKtT,GAAK8C,EAAG9C,GACbsT,EAAK69C,QAAUz5C,EAAO5U,EAAGwqD,MACzBh6C,EAAKi6C,MAAQ71C,EACbpE,EAAKg6C,MAAQxqD,EAAGwqD,MAChBh6C,EAAKm6C,OAAS3qD,EAAG2qD,OACjBn6C,EAAKwf,QAAUhwB,EAAGgwB,QAClBxf,EAAK1U,SAAWyH,KAAKtH,KAAKC,IAAI69C,EAAIvpC,EAAK69C,QAAS,OAChD79C,EAAK+9C,aAAeL,EAAWF,YAC3BE,EAAWF,cACdE,EAAWF,YAAc,IAG1BjuB,EAAInjC,KAAK4T,CAAAA,EACTqtB,EAAMywB,CAAAA,EAAc99C,EACpB3U,EAAa2U,EAAK1U,SAElB0N,EAAIxJ,EAAG2qD,MAAU9sB,EAAAA,EAAMzgC,OAAS,EAChCD,GAEA,CA5CA,MAFAtB,EAAa,IAXqC,CA0DnD,CACD,OAAOkkC,CACR,EACAzlC,EAAUm0D,YAAc,UAAA,CACvB,IAAIx3C,EAAI,IAAIxa,KAAK8G,KAAK1H,UAClBqb,EAAAA,EAAI,IAAIza,KAAK8G,KAAKzH,QACtByH,EAAAA,KAAK1H,WAAaob,EAClB1T,KAAKzH,SAAWob,CACjB,EACA5c,EAAUizD,YAAc,SAASvtD,GAEhC,OADAuD,KAAKkrD,YAAY18C,UAAY/R,EACtB,IAAIuD,KAAKkrD,WAEjB,EACAn0D,EAAUg3B,UAAY,CAAA,EACtBh3B,EAAUsuD,WAAa,WACtB,QAASzrD,EAAI,EAAGA,EAAIoG,KAAK+tB,UAAUl0B,OAAQD,IAAK,CAC/C,IAAIR,EAAM4G,KAAK+tB,UAAUn0B,GACrBR,EAAI6I,YAAY7I,EAAI6I,WAAWC,YAAY9I,CAC/C,CAAA,CACD4G,KAAK+tB,UAAY,EAClB,EACAh3B,EAAU8V,YAAc,SAASlT,GAChC,IAAI8C,EAAKuD,KAAK5E,SAASzB,GACvBqG,KAAK6lD,YAAYlsD,CAEb8C,EAAAA,GAAMuD,KAAK4lD,kBAAkBnpD,CAAAA,GAAOuD,KAAKomD,aAAazsD,EAAI8C,CAAQuD,IAAAA,KAAKmB,aAAenB,KAAK3I,OAAOugD,WAAan7C,EAAG4C,UACjHW,KAAK3I,OAAOi8C,cACftzC,KAAK4M,iBAAAA,EAEF5M,KAAKzE,SAAAA,EAAWL,MAAQ,SAAY8E,KAAKzE,WAAWgxB,SAAYvsB,KAAKV,cAAc7C,CAAAA,EAGrFuD,KAAK4M,iBAAiB,CAACnQ,CAAK,EAAA,EAAA,EAF5BuD,KAAK4M,iBAMT,EAAA,EACA7V,EAAU8uD,YAAc,SAASlsD,EAChCqG,CAAAA,KAAK8tB,aAAan0B,EAAI,SAASge,EAAM/d,EAAAA,CAChC+d,EAAK1V,YACR0V,EAAK1V,WAAWC,YAAYyV,CAC7B5gB,EAAAA,EAAUg3B,UAAU3lB,OAAOxO,EAAG,CAChC,CAAA,CAAA,CACA,EACA7C,EAAUo0D,aAAe,SAASzyD,EAAAA,CACjC,IAAI0yD,EAAuB,GAAlB1yD,EAAKmI,SAAAA,EAAkBnI,EAAKyJ,WACrC,EAAA,OAAS6D,KAAKM,OAAY,GAAL8kD,EAAU,IAAgC,GAAzBprD,KAAK3I,OAAOyJ,WAAkB,GAAK,KAAQd,KAAK3I,OAAO+O,aAAgB,IAAA,GAAgD,GAA3BpG,KAAK3I,OAAO+O,aAC/I,EACArP,EAAUs0D,cAAgB,SAAS5uD,EAAI6uD,EAAAA,CACtCA,EAAaA,GAAc,EAC3B,IAAIF,EAAgC,GAA3B3uD,EAAGnE,WAAWuI,SAAkBpE,EAAAA,EAAGnE,WAAW6J,WAAAA,EACnDopD,EAA+B,GAAzB9uD,EAAGlE,SAASsI,SAAAA,EAAkBpE,EAAGlE,SAAS4J,WAAAA,GAA+C,GAA7BpL,EAAUM,OAAO0J,UAIvF,MAAO,CACN9I,IAJS+H,KAAKmrD,aAAa1uD,EAAGnE,UAK9BqN,EAAAA,OAHYK,KAAKC,IAAIqlD,GAAaC,EAAKH,GAAMprD,KAAK3I,OAAO+O,aAAe,EAK1E,CAAA,CAAA,EACArP,EAAU8wD,aAAe,SAASprD,EAAImqD,EAAQ4E,GAC7C,IAAIC,EAAO10D,EAAUub,GAAG45B,WACpBwf,EAAe1rD,KAAK3I,OAA4B,sBAAI,EAAIo0D,EAC5D,GAAA,EAAIhvD,EAAGwqD,MAAQ,GAAf,CAEA,IAAIjlD,EAASjL,EAAUgP,cAActJ,EAAGwqD,KAAAA,EACxC,GAAKjlD,EAAL,CAEA4kD,EAASA,GAAU5kD,EAEnB,IAAI2pD,EAAQ3rD,KAAKqrD,cAAc5uD,EAAI1F,EAAUub,GAAGw5B,gBAAAA,EAC5C7zC,EAAM0zD,EAAM1zD,IACf0N,EAASgmD,EAAMhmD,OAEZimD,EAAWnvD,EAAGiwB,QAAU,EACxBm/B,EAAYpvD,EAAGgwB,SAAW,EAE9B++B,EAAcA,GAAexpD,EAAOkR,YACjClT,KAAK3I,OAAOwrD,qBACd2I,GAAexrD,KAAK3I,OAAOwrD,oBAG5B,IAAIj9C,EAAQI,KAAK+D,OAAOyhD,EAAcE,GAAeE,CAAAA,EACjD1zD,EAAO2zD,EAAYjmD,EAAQ,EAE/B,GADKnJ,EAAGgtD,SAAQ7jD,GAAiBgmD,EAAWC,GACxC7rD,KAAK3I,OAAOmE,sBAAuB,CACtC,IAAIgS,EAAQxN,KAAK3I,OAAO8rD,oBACpB2I,EAAS9rD,KAAK3I,OAAO+rD,qBACzBlrD,EAAO2zD,EAAYr+C,EAAQs+C,EAC3B,IAAI1zC,EAAS3b,EAAS,QAAKmvD,EAAWC,EAAY,GAAKr+C,EAAQs+C,EAAS,EAAI,EAC5ElmD,EAAQI,KAAK+D,MAAMyhD,EAAcE,EAAcxzD,EAAOkgB,EACtD,CAGA3b,EAAG2E,MADDuE,EAAS,GACA,WACHA,EAAS,GACN,QAEA,KAGZ,IAAIP,EAAIpF,KAAK+rD,cAActvD,EAAIivD,EAAcxzD,EAAMD,EAAK2N,EAAOD,EAAQlJ,EAAGuvD,YAAaj1D,EAAU+sB,UAAUgL,aAAaryB,EAAGnE,WAAYmE,EAAGlE,SAAUkE,GAAK1F,EAAU+sB,UAAUq4B,WAAW1/C,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAgBpN,CAAA,EAAA,GAdGA,EAAG2E,QAAU,WACfgE,EAAEuK,UAAUhX,IAAI,uBACM,EAAb8D,EAAG2E,QAAU,SACtBgE,EAAEuK,UAAUhX,IAAI,sBAGjBqH,EAAAA,KAAK+1B,SAASkmB,UAAUx/C,EAAI2I,CAC5BpF,EAAAA,KAAK+tB,UAAU10B,KAAK+L,CAAAA,EACpBwhD,EAAOjiD,YAAYS,GAInBlN,EAAOA,EAFc+hB,SAAUja,KAAK3I,OAAOo0C,IAAMzpC,EAAOhK,MAAMogB,MAAQpW,EAAOhK,MAAME,KAAM,EAAA,EAE1DwzD,EAE3B1rD,KAAK+tC,UAAYtxC,EAAG9C,GAAI,CAE3ByL,EAAEpN,MAAMi0D,OAAS,EACjBrmD,EAAQI,KAAKC,IAAIL,EAAO7O,EAAUub,GAAG+5B,YACrCjnC,GAAAA,EAAIZ,SAASC,cAAc,QACzBsL,aAAa,WAAYtT,EAAG9C,EAAAA,EAC9ByL,EAAE2K,aAAa/P,KAAK3I,OAAOqC,gBAAiB+C,EAAG9C,EAE/CqG,EAAAA,KAAK+1B,SAASkmB,UAAUx/C,EAAI2I,CAE5BA,EAAAA,EAAEM,UAAY,+BACV1F,KAAK3I,OAAOo0C,KAAKvzC,IACrB8H,KAAK6sC,OAAOznC,EAAGQ,EAAOD,EAAQzN,EAAMD,GAGjCwE,EAAGyvD,OACL9mD,EAAEpN,MAAMm0D,YAAY,mCAAoC1vD,EAAGyvD,KAE5D,EAAA,IAAIE,EAAWr1D,EAAU+sB,UAAU2gC,YAAYhoD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAExE2vD,EAAAA,IACFhnD,EAAEM,WAAa,IAAM0mD,GAEtB,IAAIjI,EAAK3/C,SAASC,cAAc,KAAA,EAChC0/C,EAAGnsD,MAAM6lC,SAAW,8BAEpBz4B,EAAET,YAAYw/C,CACdnkD,EAAAA,KAAKO,KAAmB,aAAE,GAAGoE,YAAYS,CAAAA,EACzCpF,KAAK+tB,UAAU10B,KAAK+L,CAEpB++C,EAAAA,EAAGz/C,UAAY,oCAAsCjI,EAAG4Q,KAAO,cAC/DrN,KAAKqsD,QAAUlI,EAAGlyC,cAAc,UAAA,EAEhClb,EAAUI,MAAM6I,KAAKqsD,QAAS,UAAW,SAASlxD,EAAAA,CACjD,GAAIA,EAAEmxD,SAAU,MAAO,GACvB,IAAIvtC,EAAO5jB,EAAEo6B,QACTxW,GAAQhoB,EAAUwjC,KAAKiS,WAAWz1C,EAAUgjC,SAAAA,IAC5Chb,GAAQhoB,EAAUwjC,KAAKkS,aAAa11C,EAAUgjC,SAAS,EAAA,EAExDhb,GAAQhoB,EAAUwjC,KAAKiS,WAAaztB,GAAQhoB,EAAUwjC,KAAKkS,aAC1DtxC,EAAEyxB,gBAAgBzxB,EAAEyxB,eAAAA,CAE3B,GACE71B,EAAUI,MAAM6I,KAAKqsD,QAAS,cAAe,SAAUlxD,EAEtD,CAAA,OADAA,EAAE0xB,aAAe,GAAA,EAEpB,CAAA,EACE91B,EAAUkjD,OAAOj6C,KAAKqsD,QAAS,EAAA,EAE/BrsD,KAAKO,KAAmB,aAAE,CAAGya,EAAAA,WAAa,CAC1C,CACD,GAAIhb,KAAKsS,GAAG45B,aAAe,GAAKlsC,KAAK2tC,YAAclxC,EAAG9C,GAAI,CAErDqG,KAAK3I,OAAOmE,uBAAyBwE,KAAKP,aAC7C2F,EAAEpN,MAAMi0D,OAAS,GAMlB,QAFIM,EAHAC,EAAQxsD,KAAK3I,OAAO,UAAa2I,KAAK+tC,UAAYtxC,EAAG9C,GAAM,OAAS,SACpE8yD,EAAAA,EAAY,GAIP7yD,EAAI,EAAGA,EAAI4yD,EAAM3yD,OAAQD,IAAK,CACtC,MAAM8yD,EAAcF,EAAM5yD,CAC1B2yD,EAAAA,EAAWvsD,KAAK+1B,SAAS4oB,oBAAoB+N,CAC7CD,EAAAA,GAAa,6BAA6BC,CAAAA,YAAuB1sD,KAAKmf,OAAO6P,OAAO09B,CAAiBH,CAAAA,KAAAA,CAAAA,SACrG,CACD,IAAInzD,EAAM4G,KAAK+rD,cAActvD,EAAIvE,EAAOuzD,EAAO,EAAGxzD,EAAKwzD,EAAM,KAAM,GAAI,oCAAqCgB,IAEzGhwD,EAAAA,EAAGyvD,OACL9yD,EAAIpB,MAAMm0D,YAAY,mCAAoC1vD,EAAGyvD,KAAAA,EAE3DzvD,EAAGkwD,WACLvzD,EAAIpB,MAAMm0D,YAAY,8BAA+B1vD,EAAGkwD,SAAAA,EAIzD3sD,KAAKO,KAAmB,aAAE,CAAGoE,EAAAA,YAAYvL,CACzC4G,EAAAA,KAAK+tB,UAAU10B,KAAKD,CAAAA,CACpB,CACE4G,KAAK3I,OAAOC,gBAAkB0I,KAAKR,UAAY/C,EAAG9C,IACpDqG,KAAK4sD,uBAAuBnwD,CAlIT,CAAA,CAHK,CAuI1B,EACA1F,EAAUg1D,cAAgB,SAAUtvD,EAAImgB,EAAGD,EAAG5J,EAAGI,EAAGnb,EAAO60D,EAAUC,EAAUpwC,EAC9E,CAAA,IAAItX,EAAIZ,SAASC,cAAc,KAC3B9K,EAAAA,EAAK8C,EAAG9C,GACR8qC,EAAKl8B,EAAW,oCAAsC,gBAEtD6wB,EAAQriC,EAAUwE,SAAAA,EACnB69B,EAAM7M,SAAW9vB,EAAG9C,KACtB8qC,GAAM,uBAGJrL,EAAM8U,WAAazxC,EAAG9C,KACxB8qC,GAAM,2BAGP,IAAIsoB,EAAMh2D,EAAU+sB,UAAU2gC,YAAYhoD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAClEswD,EAAAA,IAAKtoB,EAAKA,EAAK,IAAMsoB,GAEtB/sD,KAAK3I,OAAOmE,wBACdipC,GAAM,0BAGP,IAAIuoB,EAAWj6C,EAAI,EACfta,EAAO,kBAAkBkB,CAAOqG,KAAAA,KAAK3I,OAAOqC,eAAoBC,KAAAA,CAAAA,YAAc8qC,CAC/C9nB;AAAAA,oCAAAA,CAAAA,OAAU3c,KAAK3I,OAAU,IAAI,SAAS,OAAA,GAAWulB,cAAcowC,CAAsB75C,cAAAA,CAAAA,OAASnb,GAAS,EAAA;AAAA,sBACrHyE,EAAGnE,WAAWa,QAAAA,CAAAA,mBAA4BsD,EAAGlE,SAASY;YAG3EiM,EAAEV,UAAYjM,EAEd,IAAIyE,EAAYkI,EAAEtL,UAAAA,EAAgB+M,EAAAA,WAElC,IAAK6V,GAAU3lB,EAAUk2D,YAAY/vD,EAAWT,EAAIsW,EAAGI,EAAG05C,EAAUC,GAQnE,OAPGrwD,EAAGyvD,OACLhvD,EAAUlF,MAAMm0D,YAAY,mCAAoC1vD,EAAGyvD,KAAAA,EAEjEzvD,EAAGkwD,WACLzvD,EAAUlF,MAAMm0D,YAAY,8BAA+B1vD,EAAGkwD,SAAAA,EAGxDzvD,EAEPA,EAAYkI,EAAEyB,WACXpK,EAAGyvD,OACLhvD,EAAUlF,MAAMm0D,YAAY,mCAAoC1vD,EAAGyvD,KAAAA,EAEjEzvD,EAAGkwD,WACLzvD,EAAUlF,MAAMm0D,YAAY,8BAA+B1vD,EAAGkwD,SAAAA,EAG/D,IAAIO,EAAa,uDACjBA,GAAc,yCAA2CL,EAAW,SACpEK,GAAc,yBAA2BJ,EAAW,SAEpD,IAAIK,EAAe,8BASpB,OARKzwC,GAAUjgB,EAAG2wD,eAAiB,MACjCD,EAAe,qBAAuBA,GAEvCD,GAAc,eAAiBC,EAAe,oBAAsBzwC,EAAS,oBAAsB,IAAM,YAEzGxf,EAAUwH,UAAYwoD,EAGhBhwD,CACR,EACAnG,EAAUk2D,YAAc,UACvB,CAAA,MAAA,EACD,EACAl2D,EAAUgP,cAAgB,SAASlB,EAClC,CAAA,OAAI7E,KAAKoB,OAAS,MAAcpB,KAAKO,KAAmB,aAAE,CAAGsG,EAAAA,WACtD7G,KAAKO,KAAmB,aAAE,CAAGqG,EAAAA,WAAW/B,CAChD,CAAA,EACA9N,EAAUiK,kBAAoB,SAAStI,EAAM20D,EAAAA,CAC5C,IAAIxoD,EAAMmB,KAAK+D,OAAO/J,KAAK8wC,eAAep4C,EAAM,CAAA,EAAKsH,KAAKY,WAAS,OAGnE,OADIysD,GAAQrtD,KAAKtH,KAAKwnB,UAAUxnB,CAAOmM,GAAAA,IAChCA,CACR,EAIA9N,EAAUu2D,eAAiB,SAASznD,EAAO0nD,EAAWC,GACrD,GAAIxtD,CAAAA,KAAKqvC,YACR,OAAOxpC,EACJ7F,KAAKqvC,YAAYoe,aAGpB5nD,EAAQ7F,KAAKqvC,YAAYoe,aAFzBztD,KAAKqvC,YAAYoe,aAAe5nD,EAKjC,QADI6nD,EAAQH,EAAY1nD,EACjB6nD,EAAQH,EAAaC,GAC3B3nD,IACA6nD,GAASH,EAGV,OADQvnD,KAAKC,IAAIJ,EAAO,CAEzB,CAAA,EAEA9O,EAAUswD,mBAAqB,SAAS5qD,EACvC,CAAA,IAAIgvC,EAAMzrC,KAAK3I,OAAOo0C,IAClBkiB,EAAU3tD,KAAKgwC,OACfpzB,EAAI+wC,EAAQlxD,EAAGwqD,OACfM,EAAKoG,EAAQlxD,EAAGyqD,KAAAA,EAChBzb,IACH7uB,EAAI+wC,EAAQA,EAAQ5V,UAAAA,EAAc4V,EAAQlxD,EAAGyqD,KAAAA,EAASyG,EAAQ,CAAA,EAC9DpG,EAAKoG,EAAQA,EAAQ5V,UAAc4V,EAAAA,EAAQlxD,EAAGwqD,KAAS0G,EAAAA,EAAQ,CAG5DpG,GAAAA,GAAM3qC,IAAG2qC,EAAKoG,EAAQlxD,EAAGyqD,MAAQ,IACrC,IAAIa,EAAK/nD,KAAKsS,GAAGge,WAEbzqB,EAAQpJ,EAAGgwB,QACf,GAAGhwB,EAAG9C,IAAMqG,KAAKR,SAAS,CACzB,IAAI4oD,EAAauF,EAAQxd,QAAQ1zC,EAAG2qD,OAAS,CAAKuG,EAAAA,EAAQxd,QAAQ1zC,EAAG2qD,MAASpnD,EAAAA,KAAKsS,GAAGg6B,kBACtFzmC,EAAQ9O,EAAUu2D,eAAeznD,EAAOkiD,EAAIK,EAC5C,CACD,IAAIwF,EAAkB/nD,EAAQkiD,EAE9B,MAAO,CAACnrC,EAAEA,EAAG2qC,GAAGA,EAAI5qC,EADZgxC,EAAQxd,QAAQ1zC,EAAG2qD,MAAWuG,GAAAA,EAAQhoD,OAAU3F,KAAKsS,GAAG25B,mBAAqB,EAAK,GAAM2hB,CAAAA,CAEjG,EAEA72D,EAAU0wD,iBAAmB,SAAUhrD,EAAAA,CACtC,IAAIuF,EAAShC,KAAK2mD,mBACd/W,EAAM5vC,KAAKqnD,mBAAmB5qD,CAAAA,EAC9BkgB,EAAIizB,EAAIjzB,EACRC,EAAIgzB,EAAIhzB,EACR2qC,EAAK3X,EAAI2X,GAETsG,EAAgB,GAIpB,GAAKtG,EAAL,CAEA,IAAIuG,EAAY/2D,EAAUM,OAAO0rD,qBAAuB/iD,KAAKoB,OAAS,UAATA,CAC1D3E,EAAG4C,QAAUtI,EAAUM,OAAO2rD,oBAE7B59C,EAAIZ,SAASC,cAAc,KAC3BspD,EAAAA,EAActxD,EAAGyG,eAAe,cAAmBzG,GAAAA,EAAGuuD,aACzDgD,EAAevxD,EAAGyG,eAAe,aAAA,GAAkBzG,EAAGwuD,YAEnDgD,EAAcH,IAAcrxD,EAAG4C,QAAU0uD,GACzCG,EAAeJ,IAAcrxD,EAAG4C,QAAU2uD,GAE1CG,EAAAA,GACA1pB,EAAK,sBACJhoC,EAAG4C,QAAAA,CAAUyuD,IACjBK,EAAAA,GACA1pB,EAAK,sBAEHspB,IACFtpB,GAAM,6BAEJupB,IACFvpB,GAAM,2BAEJwpB,IACFJ,GAAiB,+DAEfK,IACFL,GAAiB,6DAGlB,IAAId,EAAMh2D,EAAU+sB,UAAU2gC,YAAYhoD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,EAClEswD,IACHtoB,GAAM,IAAMsoB,GAGb,IAAIqB,EAAY3xD,EAAGyvD,MAAS,oCAAsCzvD,EAAGyvD,MAAQ,IAAO,GAChFA,EAASzvD,EAAGkwD,UAAa,+BAAiClwD,EAAGkwD,UAAY,IAAO,GAEhF0B,EAAa,CAChB,oBACA,OAAS1xC,EAAI,KACb,QAAUC,EAAI,KACd,UAAY2qC,EAAK3qC,GAAKuxC,EAAQ,EAAI,IAAM,KACxC,WAAanuD,KAAKsS,GAAGge,WAAa,GAAK,KACvC47B,EACAkC,EACC3xD,EAAGuvD,aAAe,EAClB3nD,EAAAA,KAAK,KAEH5L,EAAO,kBAAoBgE,EAAG9C,GAAK,KAAOqG,KAAK3I,OAAOqC,gBAAkB,KAAO+C,EAAG9C,GAAK,YAAa8qC,EAAK,YAAY4pB,EAAW,IAAIruD,KAAK+1B,SAAS0mB,mBAAmBhgD,GAAI,IACzKqxD,IACHr1D,GAAQo1D,GAEN92D,EAAUwE,SAAAA,EAAWL,MAAQ,UAC/BuB,EAAK1F,EAAUqE,SAASqB,EAAG9C,EAGxB8C,GAAAA,EAAG4C,SACN5G,GAAQ,0CAA0C1B,EAAU+sB,UAAU4gC,eAAejoD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,aAGlHhE,GAAQ,2CACRA,GAAQ1B,EAAU+sB,UAAU6gC,eAAeloD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,EAAM,SAC7EhE,GAAQ,SACRA,GAAQ,SAER2M,EAAEV,UAAYjM,EAEduH,KAAK+tB,UAAU10B,KAAK+L,EAAEyB,YACtB7E,EAAO2C,YAAYS,EAAEyB,UAAAA,CAtEL,CAuEjB,EAEA9P,EAAUy2B,cAAgB,SAAS7V,GAElC,QADIhe,EAAK,KACFge,IAAShe,GAAMge,EAAK7c,cAC1BnB,EAAKge,EAAK7c,aAAakF,KAAK3I,OAAOqC,eAAAA,EACnCie,EAAOA,EAAK1V,WAEb,OAAOtI,CACR,EAEA5C,EAAU63C,KAAO,SAASj1C,EAAAA,CACrBqG,KAAK+tC,UAAYp0C,IACrBqG,KAAK+5B,SAAAA,GAAgBpgC,CACrBqG,EAAAA,KAAK+tC,SAAWp0C,EAChBqG,KAAK6M,YAAYlT,CAAAA,EAClB,EACA5C,EAAUgjC,SAAW,SAAS7+B,EAAMvB,EACnC,CAAA,GAAA,CAAIA,GAAMqG,KAAK+tC,UAAYp0C,EAA3B,CACA,IAAI8C,EAAKuD,KAAK5E,SAAS4E,KAAK+tC,QACxBtxC,EAAAA,IACCvB,IAAMuB,EAAG4Q,KAAOrN,KAAKqsD,QAAQ/6C,OACjCtR,KAAK+tC,SAAW,KAChB/tC,KAAKqsD,QAAU,KACfrsD,KAAK6M,YAAYpQ,EAAG9C,EACpBqG,EAAAA,KAAKsuD,iBAAiB7xD,EAAIvB,CAAAA,EAPW,CASvC,EACAnE,EAAUu3D,iBAAmB,SAAS7xD,EAAIvB,EAAAA,CACrC8E,KAAKszB,YACHp4B,EAIJ8E,KAAKH,UAAU,eAAgB,CAACpD,EAAG9C,GAAI8C,CAAAA,CAAAA,EAHnCA,GACHuD,KAAK+zB,YAAYt3B,EAAG9C,GAAAA,IAItBqG,KAAKszB,WAAa,MAEdp4B,GACH8E,KAAKH,UAAU,iBAAkB,CAACpD,EAAG9C,GAAI8C,CAG5C,CAAA,CAAA,EAEA1F,EAAUy1B,UAAY,SAAShJ,EAAME,EAAAA,CACpC,IAAItV,EAAS,GACb,QAASsF,KAAK1T,KAAKojB,QAAS,CAC3B,IAAI3mB,EAAKuD,KAAKojB,QAAQ1P,CAClBjX,EAAAA,IAAAA,CAAU+mB,GAASE,CAAAA,GAAQjnB,EAAGnE,WAAaorB,GAAMjnB,EAAGlE,SAAWirB,IAClEpV,EAAO/U,KAAKoD,CACb,CAAA,CACD,OAAO2R,CACR,EACArX,EAAUw3D,iBAAmB,SAAS50D,EACrC,CAAA,GAAKA,EAAL,CAGA,QADI60D,EAAkBz3D,EAAUg3B,UACvBn0B,EAAE,EAAGA,EAAE40D,EAAgB30D,OAAQD,IAAK,CAC5C,IAAI60D,EAAiBD,EAAgB50D,GACrC,GAAI60D,EAAe3zD,aAAa/D,EAAUM,OAAOqC,eAAoBC,GAAAA,EACpE,OAAO80D,CAER,CACD,OAAO,IARC,CAST,EACA13D,EAAU23D,UAAY,SAAS/0D,EAAIuB,EAAAA,CAE/BvB,GAAaA,OAAAA,GAAO,WACtBuB,EAAOvB,EAAGuB,KACVS,EAAUhC,EAAGgC,QACbhC,EAAKA,EAAGgC,SAET,IAAIc,EAAmB,OAAN9C,GAAM,UAAmBA,OAAAA,GAAM,SAAY5C,EAAUqE,SAASzB,GAAMA,EAGrF,GAFAuB,EAAOA,GAAMnE,EAAUqK,MAElB3E,IAAOuD,CAAAA,KAAKJ,WAAW,sBAA4BI,GAAAA,KAAKH,UAAU,uBAAwB,CAACpD,EAAIvB,CAAAA,CAAAA,GAApG,CAGA,IAAIk9C,EAAcrhD,EAAUM,OAAO+gD,YACnCrhD,EAAUM,OAAO+gD,YAAc37C,EAAGnE,WAAWuI,SAAAA,EAC7C,IAAIs0C,EAAkBp+C,EAAUM,OAAO89C,gBACvCp+C,EAAUM,OAAO89C,gBAAAA,GAEjB,IAAIwZ,EAAiBlyD,EAAGyvD,MACpB0C,EAAsBnyD,EAAGkwD,UAgB7B,GAfI51D,EAAUM,OAAOusD,4BACpBnnD,EAAGyvD,MAAQn1D,EAAUM,OAAO64B,sBAC5BzzB,EAAGkwD,UAAY51D,EAAUM,OAAO84B,4BAGjCp5B,EAAU0V,eAAe,IAAIvT,KAAKuD,EAAGnE,YAAa4C,CAOlDnE,EAAAA,EAAUM,OAAO+gD,YAAcA,EAC/BrhD,EAAUM,OAAO89C,gBAAkBA,EAE/Bp+C,EAAUkG,QAAUlG,EAAUkG,OAAO/B,CAAAA,EAAO,CAC/C,IAAImxB,EAAWt1B,EAAUY,QAAAA,EACrBwF,EAAWkvB,EAASpyB,WAEpB9C,EAAQJ,EAAUqE,SAASqB,EAAG9C,EAElC,EAAA,GAAGxC,EAAM,CACR,GAAA,CAAIwE,EAAQ,CACX,IAAIA,EAAUxE,EAAMgG,CACjBoF,EAAAA,MAAM8L,QAAQ1S,CAChBA,EAAAA,EAAUA,EAAQ,CAAA,SACHA,GAAY,UAAY5E,EAAUM,OAAOkD,mBAAqBoB,EAAQoL,QAAQhQ,EAAUM,OAAOkD,iBAAAA,EAAAA,KAC9GoB,EAAUA,EAAQrB,MAAMvD,EAAUM,OAAOkD,iBAAmB,EAAA,CAAA,EAE7D,CACD,IAAItC,EAAMo0B,EAASwiC,cAAclzD,CAC7BzD,EAAAA,EAAOm0B,EAASyiC,YAAY33D,EAAMmB,UAClC4E,EAAAA,EAAYnG,EAAUyC,WAAWyY,cAAc,4BAInD,EAAA,GAHA/Z,IAAegF,EAAUoX,YAAc+X,EAASmC,IAAM,EACtDv2B,EAAMA,EAAMiF,EAAUkX,aAAe,EAAIiY,EAASvE,GAAG,EAEjDuE,EAAS0iC,yBACZ,IAAI75C,EAAYmX,EAASpxB,YAAY,WAAY,UAAA,CAChD+zD,EACA3iC,EAAAA,EAASpW,YAAYf,CAC1B,CAAA,CAAA,EAGGmX,EAAS4iC,SAAS,CACjB/2D,KAAMA,EACND,IAAKA,CAAAA,CAAAA,EAEDo0B,EAAS0iC,uBACbC,GAAAA,EAAAA,CAED,CACH,MACEA,IAGDj4D,EAAU8I,UAAU,sBAAuB,CAACpD,EAAIvB,CAhExC,CAAA,CAAA,CAgBR,SAAS8zD,GAAAA,CACRvyD,EAAGyvD,MAAQyC,EACXlyD,EAAGkwD,UAAYiC,CACf,CA8CF,CAGA,EV3rCO73D,GWvFQ,SAAgBA,EAAAA,CAG/BA,EAAUm4D,oBAAsB,SAASC,EACxC,CAAA,GAAA,CAAGA,EAAEltD,WAAL,CACA,IAEImtD,EAFOr4D,EAAUwJ,KAAmB,aAAE,CAEzB8uD,EAAAA,UACb3pD,EAAY3O,EAAU+P,cAAcsoD,CACrC1pD,EAAAA,EAAUqB,QAAQ,kBAAA,EAAsB,GAAKqoD,EAAMxhC,kBACrDwhC,EAAQA,EAAMxhC,iBAGfloB,EAAY3O,EAAU+P,cAAcsoD,CAAAA,EAChCA,GAAS1pD,EAAUqB,QAAQ,kBAAA,IAAwB,GACtDqoD,EAAMzqD,YAAYwqD,CAXK,CAAA,CAazB,EAEAp4D,EAAUu4D,wBAA0B,SAASH,EAAGh4D,GAC/C,IAAIqK,EAAOzK,EAAUs0D,cAAcl0D,EAAO,CAC1Cg4D,EAAAA,EAAEn3D,MAAMC,IAAMuJ,EAAKvJ,IAAM,KACzBk3D,EAAEn3D,MAAM2N,OAASnE,EAAKmE,OAAS,IAChC,EAEA5O,EAAU61D,uBAAyB,SAASz1D,EAC3C,CAAA,IAAIg4D,EAAI3qD,SAASC,cAAc,KAE/B0qD,EAAAA,EAAEp/C,aAAa,WAAY5Y,EAAMwC,EACjCw1D,EAAAA,EAAEp/C,aAAa/P,KAAK3I,OAAOqC,gBAAiBvC,EAAMwC,IAClDqG,KAAK+tB,UAAU10B,KAAK81D,CAAAA,EACpBnvD,KAAKsvD,wBAAwBH,EAAGh4D,CAEhC,EAAA,IAAIqB,EAAMwH,KAAK8jB,UAAU+gC,kBAAkB1tD,EAAMmB,WAAYnB,EAAMoB,SAAUpB,CACzEsB,EAAAA,EAAOuH,KAAK8jB,UAAUghC,oBAAoB3tD,EAAMmB,WAAYnB,EAAMoB,SAAUpB,CAAAA,EAChFg4D,EAAEzpD,UAAY,kBACXlN,IACF22D,EAAEzpD,WAAa,IAAMlN,GACnBC,IACF02D,EAAEzqD,UAAYjM,GACfuH,KAAKkvD,oBAAoBC,CAC1B,CAAA,CAEA,EX6CiBp4D,CAAAA,EAChB0yB,GAAK1yB,CAAAA,EYzFS,SAAgBA,EAmW9B,CAAA,SAASw4D,GACR,CAAA,MAAMC,EAAiBz4D,EAAUM,OAAOooB,SAClCgwC,IAA0B74D,OAAa,MAAA,CAAA,CAAOA,OAAW,IAAKA,OAAa,MAAM,qBAAsB4N,SAASqO,KACtH,OAAI28C,GAAkBC,EACd14D,EAAU+c,MAEVtP,SAASqO,IAEjB,CAzWF9b,EAAU24D,mBAAqB,CAAA,EAC/B34D,EAAU44D,YAAc,SAAS75C,GAGhC,QAFIze,EAAS2I,KAAK3I,OAAOqiD,SAASthD,SAC9BwB,EAAI,EACAA,EAAIvC,EAAOwC,QACdxC,EAAOuC,CAAAA,EAAGkc,MAAQA,EADIlc,IAAAA,CAM3B,GAAIA,IAAMvC,EAAOwC,OAEhB,OAAO,KAGR,IAAI8B,EAAUtE,EAAOuC,CAChB7C,EAAAA,EAAU+1C,WACd/1C,EAAU64D,YAAAA,EAEX,IAAIt9B,EAASv7B,EAAU+1C,UAAU76B,cAAc,IAAItW,EAAQhC,MACvDge,EAAO2a,EAAO9W,YAEdpN,EAAS,CACZzS,QAASA,EACT22B,OAAQA,EACR3a,KAAMA,EACNk4C,SAAS,SAASpzD,EAAAA,CACjB,OAAO1F,EAAU+4D,YAAYn0D,EAAQY,IAAAA,EAAMwzD,UAAUp4C,EAAOlb,GAAI,GAAKd,EACrE,EACDq0D,SAAS,SAAS1+C,EAAO7U,GACxB,OAAO1F,EAAU+4D,YAAYn0D,EAAQY,MAAM0zD,UAAUt4C,EAAMrG,EAAQ7U,GAAI,CAAE,EAAGd,CAAAA,CAC5E,CAGEoV,EAAAA,EAAUha,EAAU24D,mBAAmB,OAAO/zD,EAAQY,KAAK,YAC/D,OAAOwU,EAAQA,EAAQ3C,CAAAA,EAAQA,CAChC,EACArX,EAAU24D,mBAAmBQ,qBAAuB,SAAS9hD,EAE5D,CAAA,OADAA,EAAO+hD,QAAU/hD,EAAOuJ,KACjBvJ,CACR,EACArX,EAAU24D,mBAAmBU,mBAAqB,SAAShiD,EAAAA,CAE1D,OADAA,EAAO+hD,QAAU/hD,EAAOuJ,KAAK0Z,qBAAqB,QAAU,EAAA,CAAA,EACrDjjB,CACR,EACArX,EAAU24D,mBAAmBW,qBAAuB,SAASjiD,EAAAA,CAE5D,OADAA,EAAO+hD,QAAU/hD,EAAOuJ,KAAK0Z,qBAAqB,UAAY,EAAA,CAAA,EACvDjjB,CACR,EACArX,EAAU24D,mBAAmBY,iBAAmB,SAASliD,EAAAA,CAExD,OADAA,EAAO+hD,QAAU/hD,EAAOuJ,KAAK0Z,qBAAqB,QAC3CjjB,EAAAA,CACR,EAEArX,EAAU24D,mBAAmBa,SAAW,CACvCC,SAAU,CACT7qD,OAAO,EAERsT,EAAAA,SAAU,CACTtT,OAAQ,KAETqT,OAAQ,CACPrT,OAAQ,EAAA,EAETkpB,KAAM,CACLlpB,OAAQ,EAKV5O,CAAAA,EAAAA,EAAU+4D,YAAY,CACrBU,SAAS,CACRhkD,OAAQ,SAASikD,EAChB,CAAA,MAAO,qDACP,EACDR,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGpF,EAChCsgB,CAAAA,EAAKjT,UAAY4M,GAAO,EACxB,EACDy+C,UAAU,SAASp4C,EAAKlb,EAAGpF,EAC1B,CAAA,OAAOsgB,EAAKjT,WAAW,EACvB,EACDsyB,MAAO,SAASrf,EAAAA,CACf,GAEFsB,SAAS,CACRzM,OAAO,SAASikD,GAEf,MAAO,wCADaA,EAAIC,YAAc,gBAAgBD,EAAIC,WAAAA,IAAiB,EAE3E,oBAAA,EACDT,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAAA,CAC7B1F,EAAU+4D,YAAY72C,SAAS03C,WAAWh5C,CAAAA,EAAMrG,MAAMA,GAAO,EAC7D,EACDy+C,UAAU,SAASp4C,EAAKlb,EAAAA,CACvB,OAAO1F,EAAU+4D,YAAY72C,SAAS03C,WAAWh5C,CAAMrG,EAAAA,KACvD,EACD0lB,MAAM,SAASrf,EACd,CAAA,IAAIjE,EAAI3c,EAAU+4D,YAAY72C,SAAS03C,WAAWh5C,GAClD5gB,EAAUkjD,OAAOvmC,EAAG,EAAA,CACpB,EACDi9C,WAAY,SAASh5C,EAAAA,CACpB,OAAOA,EAAK0Z,qBAAqB,UAAY,EAAA,CAAA,CAC7C,GAEFrY,OAAO,CACNxM,OAAO,SAASikD,GAGf,QADIh4D,EAAK,yEACAmB,EAAE,EAAGA,EAAI62D,EAAIn0D,QAAQzC,OAAQD,IACrCnB,GAAM,kBAAkBg4D,EAAIn0D,QAAQ1C,CAAGqQ,EAAAA,IAAI,KAAKwmD,EAAIn0D,QAAQ1C,CAAGisB,EAAAA,MAAM,YAEtE,OADAptB,EAAM,iBAEN,EACDw3D,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGg0D,EAChC,CAAA,IAAIz3C,EAASrB,EAAK9Q,WAAAA,CACbmS,EAAO43C,eAAiBH,EAAII,WAChC95D,EAAUI,MAAM6hB,EAAQ,SAAUy3C,EAAII,QAAAA,EACtC73C,EAAO43C,cAAAA,IAEGt/C,aACVA,GAAS0H,EAAO1c,QAAQ,CAAI,GAAA,CAAE,GAAEgV,OACjC0H,EAAO1H,MAAMA,GAAO,EACpB,EACDy+C,UAAU,SAASp4C,EAAKlb,EAAAA,CACvB,OAAOkb,EAAK9Q,WAAWyK,KACvB,EACD0lB,MAAM,SAASrf,EAAAA,CACd,IAAIjE,EAAEiE,EAAK9Q,WAAY9P,EAAUkjD,OAAOvmC,EAAAA,GACxC,CAEFmb,EAAAA,KAAK,CACJriB,OAAO,SAASikD,EACVA,CAAAA,EAAIK,cAERL,EAAIK,YAAc,CAAC,QAAS,KAAM,KAAM,OAGzCL,EAAIM,mBAAqB,GACzB,IAAID,EAAcL,EAAIK,YAElB91D,EAAMjE,EAAUM,OAChB25D,EAAKj6D,EAAU2B,KAAKwF,UAAUnH,EAAU0J,aAAAA,CAAAA,EACxCwwD,EAAO,KAAOlQ,EAAQ,EACvBhqD,EAAUM,OAAO65D,oBACnBD,EAAO,GAAGj2D,EAAI+F,UAAU,EACxBggD,EAAQ,GAAG/lD,EAAI8F,WACfkwD,EAAGtxD,SAAS1E,EAAI8F,UAAAA,GAIjB,QAFIrI,EAAO,GAEF2G,EAAI,EAAGA,EAAI0xD,EAAYj3D,OAAQuF,IAAK,CAC5C,IAAI4/C,EAAc8R,EAAY1xD,CAG1BA,EAAAA,EAAI,IACP3G,GAAQ,KAET,IAAI04D,EAAiB,GACjB70D,EAAU,GACd,OAAQ0iD,EAAAA,CACP,IAAK,KAIJ,IAAIoS,EACAC,EACAC,EALJH,EAAiB,2BACjBV,EAAIM,mBAAmB,GAAK3xD,EAKzBqxD,EAAIc,aACD54C,MAAM83C,EAAIc,UAEJd,EAAAA,EAAIc,WAAWl4D,OAEzBg4D,EAAaZ,EAAIc,WAAW,CAC5BD,EAAAA,EAAWb,EAAIc,WAAW,CAAA,GAJ1BH,EAAQX,EAAIc,YAQdH,EAAQA,GAAS,GACjB,IAAIjpD,EAASA,GAAUnC,KAAK+D,MAAMqnD,EAAQ,GAC1CC,EAAaA,GAAcL,EAAGpjD,YAAAA,EAAgBzF,EAC9CmpD,EAAWA,GAAYD,EAAaD,EAEpC,QAASx3D,EAAIy3D,EAAYz3D,EAAI03D,EAAU13D,IACtC0C,GAAW,kBAAiB6yD,EAAS,KAAQA,EAAK,YACnD,MACD,IAAK,KAIJ,IAHAgC,EAAiB,4BACjBV,EAAIM,mBAAmB,CAAA,EAAK3xD,EAEnBxF,EAAE,EAAGA,EAAI,GAAIA,IACrB0C,GAAS,kBAAkB1C,EAAE,KAAKoG,KAAKmf,OAAOzmB,KAAKknB,WAAWhmB,CAAAA,EAAG,YAClE,MACD,IAAK,KAIJ,IAHAu3D,EAAiB,0BACjBV,EAAIM,mBAAmB,CAAA,EAAK3xD,EAEnBxF,EAAE,EAAGA,EAAI,GAAIA,IACrB0C,GAAS,kBAAkB1C,EAAE,KAAKA,EAAE,YACrC,MACD,IAAK,QACJu3D,EAAiB,2BACjBV,EAAIM,mBAAmB,CAAA,EAAK3xD,EAExBxF,EAAImnD,EAAR,IACIyQ,EAAQR,EAAGzyD,QAAAA,EAGf,IAFAkyD,EAAIgB,aAAe,CAEb73D,EAAAA,EAAEq3D,GAEP30D,GAAS,kBAAkB1C,EAAE,KADpBoG,KAAK8jB,UAAUygC,YAAYyM,CACG,EAAA,YACvCP,EAAIgB,aAAap4D,KAAKO,CAAAA,EACtBo3D,EAAGhxC,QAAQgxC,EAAG73D,QAAgC,EAAA,GAAtB6G,KAAK3I,OAAO83C,UAAa,GAEjDv1C,EAAAA,EAAO,IADKo3D,EAAGzyD,QAAAA,GAAWizD,EAAO,EAAE,GACzB,GAAiB,GAAdR,EAAGnwD,SAAAA,EAAcmwD,EAAG7uD,WAKpC,CAAA,CAAA,GAAG7F,EAAQ,CAEV,IAAIo1D,EAAY36D,EAAUg/B,SAASgpB,yBAAyBC,GAE5DvmD,GAAQ,kBAAkB04D,EAAe,MAD1BV,EAAIriB,SAAW,sBAAwB,IACGsjB,EAAU,IAAIp1D,EAAQ,YAC/E,CACD,CAGD,MAAO,iCAAiC7D,EAAK,iHAAiHA,EAAK,QACnK,EACDw3D,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGpF,EAAAA,CAChC,IAGIiB,EAAYC,EAHZyC,EAAMjE,EAAUM,OAChByF,EAAE6a,EAAK0Z,qBAAqB,QAAA,EAC5B72B,EAAMnD,EAAO05D,mBAGjB,GAAG/1D,EAAI+lC,SAAU,CAChB,GAAKppB,CAAAA,EAAKg6C,UAAU,CACnB,IAAIl5D,EAAO,mFAAmF1B,EAAUooB,OAAO6P,OAAO+R,SAAS,yBAC1HhqC,EAAUM,OAAO44B,YACrBx3B,EAAOkf,EAAKiW,gBAAgBlpB,UAAUjM,GACvCkf,EAAKiW,gBAAgBlpB,UAAUjM,EAC/Bkf,EAAKg6C,UAAU,EACf,CACD,IAAI54C,EAAMpB,EAAKiW,gBAAgByD,qBAAqB,OAAA,EAAS,GAC7DtY,EAAM64C,QAAW76D,EAAU2B,KAAKwnB,UAAUzjB,EAAGnE,UAA2D,IAA7C,GAAKvB,EAAU2B,KAAKwnB,UAAUzjB,EAAGlE,QAAAA,IAAY,EAExGuE,EAAEtC,EAAI,CAAA,CAAA,EAAIq3D,SAAS94C,EAAM64C,QACzB90D,EAAGtC,EAAI,CAAKsC,EAAAA,EAAEjD,OAAO,CAAIg4D,EAAAA,SAAS94C,EAAM64C,QAEpC74C,EAAMrI,kBACTqI,EAAMrI,gBAAkB,GAEvB3Z,EAAUI,MAAM4hB,EAAO,QAAS,UAAA,CAChC,GAAGA,EAAM64C,QAAS,CACjB,IAAIx4D,EAAM,CAAA,EACVrC,EAAU+4D,YAAYjhC,KAAKkhC,UAAUp4C,EAAKve,EAAI/B,GAE9CiB,EAAavB,EAAU2B,KAAKwF,UAAU9E,EAAId,UAC1CC,GAAAA,EAAAA,EAAWxB,EAAU2B,KAAKwF,UAAU9E,EAAIb,QAAAA,IAAAA,CAEtBD,GAAgBC,CAAAA,GAAAA,CAAaD,IAAemE,EAAGlE,SAASsI,SAAAA,IAAe,GAAKpE,EAAGlE,SAAS4J,WACzG5J,IAD0H,MAC1HA,EAAWxB,EAAU2B,KAAKC,IAAIJ,EAAU,EAAG,OACnD,MACOD,EAAa,KACbC,EAAW,KAGZuE,EAAEtC,EAAI,CAAIq3D,CAAAA,EAAAA,SAAS94C,EAAM64C,QACzB90D,EAAGtC,EAAI,CAAA,EAAKsC,EAAEjD,OAAO,CAAA,EAAIg4D,SAAS94C,EAAM64C,QAExCE,EAAsBh1D,EAAE,EAAExE,GAAYmE,EAAGnE,UACzCw5D,EAAAA,EAAsBh1D,EAAE,EAAEvE,GAAUkE,EAAGlE,QAAAA,CAC7C,CAEI,EAAA,CAED,GAAGyC,EAAI+2D,eAAiB/2D,EAAIk0C,eAW3B,QAVI8iB,EAA0B,UAEvBh3D,CAAAA,EAAI+2D,eAAiB/2D,EAAIk0C,iBAI/B52C,EAAa,IAAIY,KAAK4D,EAAEtC,EAAI,CAAI8W,CAAAA,EAAAA,MAAMxU,EAAEtC,EAAI,CAAA,CAAA,EAAI8W,MAAMxU,EAAEtC,EAAI,CAAI8W,CAAAA,EAAAA,MAAM,EAAExU,EAAEtC,EAAI,CAAI8W,CAAAA,EAAAA,KAAAA,EAClF/Y,EAAW,IAAIW,KAAKZ,EAAW2nB,QAAAA,EAA+C,GAAlClpB,EAAUM,OAAO63C,eAAsB,GAAA,EACnF4iB,EAAsBh1D,EAAG,EAAGvE,CACjC,EAAA,EACYqB,EAAE,EAAGA,EAAE,EAAGA,IACbkD,EAAElD,CAAAA,EAAG8W,kBACR5T,EAAElD,CAAAA,EAAG8W,gBAAkB,GACvB3Z,EAAUI,MAAM2F,EAAElD,CAAI,EAAA,SAAUo4D,IAKnC,SAASF,EAAsBh1D,EAAElD,EAAEwL,GAKlC,QAJI6sD,EAAc56D,EAAOo6D,aACrBS,EAA4B,GAAb9sD,EAAEvE,SAAAA,EAAcuE,EAAEjD,WACjCgwD,EAAAA,EAAcD,EACdE,EAAAA,GACK9uD,EAAE,EAAGA,EAAE2uD,EAAYp4D,OAAQyJ,IAAK,CACxC,IAAI+uD,EAAMJ,EAAY3uD,CAAAA,EACtB,GAAI+uD,IAAQH,EAAc,CACzBE,EAAAA,GACA,KACA,CACGC,EAAMH,IACTC,EAAcE,EACf,CAEDv1D,EAAElD,EAAEY,EAAI,CAAA,CAAA,EAAI8W,MAAMxU,EAAco1D,EAAaC,EACxCC,GAAeD,IACnBr1D,EAAElD,EAAEY,EAAI,CAAA,CAAA,EAAI83D,kBAEbx1D,EAAElD,EAAEY,EAAI,IAAI8W,MAAMlM,EAAE7G,QACpBzB,EAAAA,EAAElD,EAAEY,EAAI,CAAA,CAAA,EAAI8W,MAAMlM,EAAEyI,WACpB/Q,EAAElD,EAAEY,EAAI,CAAA,CAAA,EAAI8W,MAAMlM,EAAEwI,YAAAA,CACpB,CAEDkkD,EAAsBh1D,EAAE,EAAEL,EAAGnE,UAC7Bw5D,EAAAA,EAAsBh1D,EAAE,EAAEL,EAAGlE,QAC7B,CAAA,EACDw3D,UAAU,SAASp4C,EAAMlb,EAAIpF,EAAAA,CAC5B,IAAIyF,EAAI6a,EAAK0Z,qBAAqB,UAC9B72B,EAAMnD,EAAO05D,mBAKjB,GAHAt0D,EAAGnE,WAAW,IAAIY,KAAK4D,EAAEtC,EAAI,CAAI8W,CAAAA,EAAAA,MAAMxU,EAAEtC,EAAI,IAAI8W,MAAMxU,EAAEtC,EAAI,CAAA,CAAA,EAAI8W,MAAM,EAAExU,EAAEtC,EAAI,CAAA,CAAA,EAAI8W,OACnF7U,EAAGlE,SAAS,IAAIW,KAAK4D,EAAEtC,EAAI,CAAA,EAAG,CAAG8W,EAAAA,MAAMxU,EAAEtC,EAAI,CAAA,EAAG,CAAG8W,EAAAA,MAAMxU,EAAEtC,EAAI,CAAA,EAAG,CAAG8W,EAAAA,MAAM,EAAExU,EAAEtC,EAAI,CAAG,EAAA,CAAA,EAAG8W,QAEpFxU,EAAEtC,EAAI,CAAI8W,CAAAA,EAAAA,OAAAA,CAASxU,EAAEtC,EAAI,CAAA,EAAG,CAAG8W,EAAAA,MAAO,CAE1C,IAAIihD,EAAWx7D,EAAUqE,SAASrE,EAAUk3C,YACzCskB,EAAAA,IACF91D,EAAGnE,WAAai6D,EAASj6D,WACzBmE,EAAGlE,SAAWg6D,EAASh6D,SAExB,CAID,OAFIkE,EAAGlE,UAAUkE,EAAGnE,aACnBmE,EAAGlE,SAASxB,EAAU2B,KAAKC,IAAI8D,EAAGnE,WAAWvB,EAAUM,OAAO83C,UAAU,QAClE,GAAA,CACN72C,WAAY,IAAIY,KAAKuD,EAAGnE,UAAAA,EACxBC,SAAU,IAAIW,KAAKuD,EAAGlE,QAAAA,CAAAA,CAEvB,EACDy+B,MAAM,SAASrf,EACd5gB,CAAAA,EAAUkjD,OAAOtiC,EAAK0Z,qBAAqB,QAAU,EAAA,CAAA,CAAA,CACrD,IAiBHt6B,EAAUg2C,eAAiB,SAASzyB,EAAAA,CAC/BA,IAIJA,EAAItiB,MAAMC,IAAM+N,KAAKC,IAAIspD,EAAkBn7C,EAAAA,aAAe,EAAIkG,EAAIlG,aAAa,EAAG,CAAA,EAAK,KACvFkG,EAAItiB,MAAME,KAAO8N,KAAKC,IAAIspD,EAAAA,EAAkBj7C,YAAc,EAAIgG,EAAIhG,YAAY,EAAG,GAAK,KAEvF,EAEAvd,EAAUy7D,UAAU,SAASl4C,EACxBA,CAAAA,IACHA,EAAItiB,MAAM0a,QAAQ,QAElB1S,KAAK+sC,eAAezyB,IAElBvjB,EAAUM,OAAO4rD,sBACnBz+C,SAASyO,gBAAgBtD,UAAUhX,IAAI,4BACvC42D,EAAAA,EAAAA,EAAkB5/C,UAAUhX,IAAI,4BAAA,GAEjCqH,KAAKyyD,WAAAA,EACLzyD,KAAK0yD,OAAO16D,MAAM0a,QAAU,EAC7B,EACA3b,EAAU+3C,aAAa,SAASn1C,EAAAA,CAC/B,GAAKA,EACL,GAAKqG,KAAKH,UAAU,mBAAmB,CAAClG,CAAAA,CAAAA,EAAxC,CAKAqG,KAAKwyD,UAAUl4C,CACf,EAAA,IAAIA,EAAMta,KAAK4vD,cACf5vD,KAAK+sC,eAAezyB,CACpBta,EAAAA,KAAK2yD,eAAeh5D,EAAG2gB,CAAAA,EACvBta,KAAK+1B,SAASioB,oBAAoB1jC,CAElCta,EAAAA,KAAKH,UAAU,aAAa,CAAClG,CAP5B,CAAA,CAAA,MAHIqG,KAAKszB,aACRtzB,KAAKszB,WAAa,KAUrB,EACAv8B,EAAU47D,eAAiB,SAASh5D,EAAI2gB,EACvC,CAAA,IAAI7d,EAAKuD,KAAK5E,SAASzB,CACnBmD,EAAAA,EAAIwd,EAAI+W,qBAAqB,MAC7BwtB,EAAAA,EAAiB,GAErB,GAAI9nD,EAAU+sB,UAAU8uC,gBAAiB,CACxC/T,EAAexlD,KAAK,EACpB,EAAA,IAAIw5D,EAAgB97D,EAAU+sB,UAAU8uC,gBAAgBn2D,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CACpFoiD,EAAAA,EAAexlD,KAAKw5D,CACpB/1D,EAAAA,EAAE,CAAG4H,EAAAA,UAAY,GACjB5H,EAAE,CAAA,EAAG4H,UAAYmuD,CACnB,KAAQ,CACN,IAAIC,EAAa9yD,KAAK8jB,UAAUgL,aAAaryB,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CACrEs2D,EAAAA,GAAe/yD,KAAK8jB,UAAU6gC,eAAeloD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,IAAO,IAAIgrB,OAAO,EAAG,EAAA,EAElGo3B,EAAexlD,KAAKy5D,CAAAA,EACpBjU,EAAexlD,KAAK05D,GACpBj2D,EAAE,CAAA,EAAG4H,UAAYouD,EACjBh2D,EAAE,CAAG4H,EAAAA,UAAYquD,CACjB,CAED/yD,KAAK+1B,SAAS8oB,eAAevkC,EAAMukC,EAAex6C,KAAK,GAAA,CAAA,EAGvD,QADIosD,EAAMzwD,KAAK3I,OAAOqiD,SAASthD,SACtBwB,EAAI,EAAGA,EAAI62D,EAAI52D,OAAQD,IAAK,CACpC,IAAIo5D,EAAcvC,EAAI72D,GAClB+d,EAAO5gB,EAAUk8D,2BAA2BD,CAAAA,EAC5CzuD,EAAQvE,KAAK8vD,YAAYkD,EAAYz2D,IAAAA,EACrC+U,EAAS7U,EAAGu2D,EAAY94D,MAAAA,WAAyBuC,EAAGu2D,EAAY94D,MAAAA,EAAU84D,EAAYE,cAC1F3uD,EAAM0rD,UAAU9kD,KAAKnL,KAAM2X,EAAMrG,EAAO7U,EAAIu2D,CAAAA,EACxCvC,EAAI72D,CAAAA,EAAGo9B,OACVzyB,EAAMyyB,MAAM7rB,KAAKnL,KAAM2X,EACxB,CAED5gB,EAAUk3C,aAAet0C,CAC1B,EAEA5C,EAAUk8D,2BAA6B,SAASt3D,EAAAA,CAC/C,OAAO5E,EAAU+1C,UAAU76B,cAAc,IAAItW,EAAQhC,EAAM6hB,EAAAA,EAAAA,WAC5D,EAEAzkB,EAAUo8D,cAAc,SAAS12D,EAAAA,CAEhC,QADIg0D,EAAMzwD,KAAK3I,OAAOqiD,SAASthD,SACtBwB,EAAE,EAAGA,EAAI62D,EAAI52D,OAAQD,IAAK,CAClC,IAAI+d,EAAO5gB,EAAU+1C,UAAU76B,cAAc,IAAIw+C,EAAI72D,GAAGD,EACxDge,EAAAA,EAAAA,EAAMA,GAAKA,EAAK6D,YAChB,IACI1d,EADMkC,KAAK8vD,YAAYW,EAAI72D,CAAAA,EAAG2C,IACpBwzD,EAAAA,UAAU5kD,KAAKnL,KAAK2X,EAAKlb,EAAIg0D,EAAI72D,IAC3C62D,EAAI72D,CAAGM,EAAAA,QAAQ,SAClBuC,EAAGg0D,EAAI72D,CAAAA,EAAGM,MAAQ4D,EAAAA,EACnB,CACD,OAAOrB,CACR,EACA1F,EAAUq8D,gBAAgB,SAAS5sD,EAAAA,CAClC,IAAI7M,EAAG5C,EAAUk3C,aACbxxC,EAAGuD,KAAK5E,SAASzB,GAGrBqG,KAAKqD,WAAW5G,EAAI+J,CAAAA,EAEpBxG,KAAKwlD,SAAS/oD,EAAG9C,GAAG8C,CAAAA,EACpBuD,KAAKsuD,iBAAiB7xD,EAAAA,EACtBuD,EAAAA,KAAK4M,iBACN,CAAA,EACA7V,EAAUs8D,cAAc,SAAS15D,EAChC5C,CAAAA,EAAUu8D,YAAY,GAAOtzD,KAAK4vD,YACnC,CAAA,CAAA,EAEA74D,EAAU+iD,UAAU,SAASx/B,EACxBA,CAAAA,IAAKA,EAAItiB,MAAM0a,QAAQ,QAC3B1S,KAAKuzD,WACFx8D,EAAAA,EAAUM,OAAO4rD,sBACnBz+C,SAASyO,gBAAgBtD,UAAU+L,OAAO,4BAC1C6zC,EAAAA,EAAAA,EAAkB5/C,UAAU+L,OAAO,8BAErC,EACA3kB,EAAUw8D,WAAW,UAAA,CAChBvzD,KAAK0yD,QACR1yD,KAAK0yD,OAAOzwD,WAAWC,YAAYlC,KAAK0yD,MAAAA,EACzC1yD,KAAK0yD,OAAO,IACb,EAEA37D,EAAU07D,WAAW,UAAA,CACjBzyD,KAAK0yD,SAIR1yD,KAAK0yD,OAAOluD,SAASC,cAAc,KACnCzE,EAAAA,KAAK0yD,OAAOhtD,UAAU,gBACtB1F,KAAK0yD,OAAO16D,MAAM0a,QAAU,OAE5B3b,EAAUI,MAAM6I,KAAK0yD,OAAQ,YAAa37D,EAAUy8D,eAAAA,EACpDz8D,EAAUI,MAAM6I,KAAK0yD,OAAQ,UAAW37D,EAAU08D,aAElDlE,EAAkB5qD,EAAAA,YAAY3E,KAAK0yD,MAAAA,EACpC,EACA37D,EAAU28D,cAAc,UACvB,CAAA,IAAIltD,EAAOxG,KAAKmzD,cAAc,CAAE,EAAEnzD,KAAKqD,WAAWrD,KAAK5E,SAAS4E,KAAKiuC,gBACjEjuC,KAAKJ,WAAW,aAAmBI,GAAAA,CAAAA,KAAKH,UAAU,cAAc,CAACG,KAAKiuC,aAAcznC,EAAMxG,KAAKszB,UAAAA,CAAAA,IAEnGtzB,KAAKozD,gBAAgB5sD,GACrBxG,KAAKqzD,cAAAA,EACN,EACAt8D,EAAU48D,cAAgB,SAASh6D,EAAI2gB,EACtCta,CAAAA,KAAKiuC,aAAet0C,EACpBqG,KAAK4zD,iBAAmB,GAExB5zD,KAAK6zD,eAAiB7zD,KAAK8sC,UAC3B9sC,KAAK8sC,UAAYxyB,EACjBta,KAAKwyD,UAAUl4C,CAAAA,CAChB,EACAvjB,EAAUu8D,YAAc,SAASp4D,EAAMof,GAClCA,EAAMA,GAAOvjB,EAAU64D,YAAAA,EAA3B,IAEIz4D,EAAQJ,EAAUqE,SAAS4E,KAAKiuC,YACjC92C,EAAAA,GACF6I,KAAKsuD,iBAAiBn3D,EAAO+D,CAC1BA,EAAAA,GACHnE,EAAU6V,iBAAAA,EACX5M,KAAK85C,UAAUx/B,CAAAA,EAEXta,KAAK4zD,mBACR5zD,KAAK8sC,UAAY9sC,KAAK6zD,eACtB7zD,KAAK4zD,qBAEN5zD,KAAK6zD,eAAiB7zD,KAAKiuC,aAAe,KAC1CjuC,KAAK+1B,SAASgoB,mBAAmBzjC,GACjCta,KAAK65C,cAAAA,EACL75C,KAAKH,UAAU,kBAAkB,CAClC,CAAA,CAAA,EACA9I,EAAU8iD,cAAgB,WACrB9iD,EAAU+1C,WAAAA,CAAc/1C,EAAU68D,kBACrC78D,EAAU+1C,UAAU7qC,WAAWC,YAAYnL,EAAU+1C,WACtD/1C,EAAU+1C,UAAY,IACvB,EACA/1C,EAAU+8D,gBAAgB,UAAA,CACtB9zD,KAAKiuC,cACPjuC,KAAKH,UAAU,gBAAgB,CAACG,KAAKiuC,eAAgBjuC,KAAKszB,UAAAA,CAAAA,EAG3DtzB,KAAKqzD,cAAAA,CACN,EACAt8D,EAAUg9D,aAAeh9D,EAAU+8D,gBAEnC/8D,EAAUi9D,sBAAsB,UAAA,CAC/B,GAAGh0D,KAAK4vD,YAAcl/C,EAAAA,gBACrB,OAED,MAAMgpC,EAAW15C,KAAK4vD,YAAAA,EACtBlW,EAAShpC,gBAAAA,GAET3Z,EAAUI,MAAMuiD,EAAU,QAAS,SAASv+C,EAExCA,CAAAA,EAAEE,OAAOC,QAAQ,8BACnBvE,EAAU+8D,gBAAAA,EAGX,MAAMG,EAAel9D,EAAUk5C,YAAY30C,QAAQH,EAAEE,OAAQ,gBAC7D,GAAI44D,CAAAA,EAAc,CACjB,MAAMC,EAAgBn9D,EAAUk5C,YAAY30C,QAAQH,EAAEE,OAAQ,wCAC9D,EAAA,GAAG64D,EAAc,CAChB,MAAMtwD,EAAQ+K,OAAOulD,EAAcp5D,aAAa,uBAClC/D,EAAU+4D,YAAY/4D,EAAUM,OAAOqiD,SAASthD,SAASwL,CAAAA,EAAOrH,IACxE43D,EAAAA,aAAap9D,EAAUk5C,YAAY30C,QAAQ44D,EAAe,mBAAA,EAAsBA,EAAe/4D,CACrG,CAAA,CACD,MACA,CAED,MAAMkgC,EAAS44B,EAAeA,EAAan5D,aAAa,eAAiB,KAEzE,OAAOugC,EACN,CAAA,IAAK,eACL,IAAK,OACJ,GAAGtkC,EAAUM,OAAO+8D,gBACnB,OAEDr9D,EAAU28D,gBACV,MACD,IAAK,iBACL,IAAK,SACJ,GAAG38D,EAAUM,OAAO+8D,gBACnB,OAED,IAAIx1D,EAAE7H,EAAUooB,OAAO6P,OAAO4R,iBAE9B7pC,EAAU23C,gBAAgB,CAACthC,QAASxO,EAAG43B,MAAOz/B,EAAUooB,OAAO6P,OAAO2f,uBAAwBrjC,SAAU,UACvGvU,CAAAA,EAAUg9B,YAAYh9B,EAAUk3C,YAAAA,EAChCl3C,EAAUu8B,WAAa,KACvBv8B,EAAUs8D,cAAAA,CACV,EACDh8D,OAAQ,CAAC8+B,GAAIp/B,EAAUooB,OAAO6P,OAAO0R,eAErC,MACD,IAAK,iBACL,IAAK,SACJ3pC,EAAU+8D,gBAAAA,EACV,MAED,QACC/8D,EAAU8I,UAAU,mBAAoB,CAACw7B,EAAQ44B,EAAc94D,CAEnE,CAAA,CAAA,CAAA,CAAA,EACCpE,EAAUI,MAAMuiD,EAAU,UAAW,SAASv+C,EAC7C,CAAA,IAAIhE,EAAQgE,GAAKvE,OAAOO,MACpBkE,EAASF,EAAEE,QAAUF,EAAE8c,WACvBg8C,EAAe54D,EAAO4W,cAAc,cAMxC,EAAA,OAJIgiD,IACHA,EAAe54D,EAAO4G,WAAWgQ,cAAc,uCAGxC9W,GAAGhE,GAAOo+B,QACjB,CAAA,IAAK,IACJ,IAAKp6B,GAAGhE,GAAOm1D,SAAU,OACtB2H,GAAgBA,EAAaxjD,OAC/BwjD,EAAaxjD,QAEd,MAED,KAAK1Z,EAAUwjC,KAAKiS,UACnB,IAAKrxC,GAAGhE,GAAOm1D,SAAU,OACzB,GAAG2H,GAAgBA,EAAaxjD,MAC/BwjD,EAAaxjD,MACT,MAAA,CACJ,GAAG1Z,EAAUM,OAAO+8D,gBACnB,OAEDr9D,EAAU28D,cAAAA,CACV,CACD,MACD,KAAK38D,EAAUwjC,KAAKkS,YACnB11C,EAAU+8D,gBAAAA,CAAAA,CAMd,CACA,CAAA,EACA/8D,EAAUs9D,gBAAgB,UAAA,CAW1B,EAEAt9D,EAAUu9D,iBAAmB,UAC5Bv9D,CAAAA,EAAUI,MAAMo4D,EAAAA,EAAmB,YAAax4D,EAAUy8D,eAC1Dz8D,EAAAA,EAAUI,MAAMo4D,EAAmB,EAAA,UAAWx4D,EAAU08D,WAAAA,EACxD18D,EAAUu9D,iBAAmB,UAAA,EAC9B,EACAv9D,EAAUy8D,gBAAkB,SAASr4D,EACpC,CAAA,GAAIpE,EAAUw9D,cAAc,CACtB/vD,SAASgwD,mBACbjF,IAAkB5/C,UAAUhX,IAAI,kBAChC6L,EAAAA,SAASgwD,qBAEV,IAAIC,EAAK19D,EAAU64D,cACfpvD,EAAM,CAACrF,EAAEwvB,MAAOxvB,EAAEyvB,KACtB6pC,EAAAA,EAAGz8D,MAAMC,IAAMlB,EAAU29D,UAAU,CAAA,EAAGl0D,EAAI,CAAA,EAAGzJ,EAAUw9D,cAAc,CAAA,EAAG,KACxEE,EAAGz8D,MAAME,KAAOnB,EAAU29D,UAAU,CAAA,EAAGl0D,EAAI,CAAGzJ,EAAAA,EAAUw9D,cAAc,CAAA,EAAG,IACzE,CACF,EACAx9D,EAAU49D,cAAgB,SAASx5D,EAClC,CAAA,IAAIs5D,EAAK19D,EAAU64D,cACnB74D,EAAU29D,UAAY,CAACD,EAAGt6C,WAAYs6C,EAAGv6C,SACzCnjB,EAAAA,EAAUw9D,cAAgB,CAACp5D,EAAEwvB,MAAOxvB,EAAEyvB,MACvC,EACA7zB,EAAU08D,YAAc,UAAA,CACnB18D,EAAU29D,YACb39D,EAAU29D,UAAY39D,EAAUw9D,iBAChChF,EAAAA,EAAkB5/C,UAAU+L,OAAO,oBACnClX,SAASgwD,iBAAAA,GAEX,EACAz9D,EAAU64D,YAAY,UAAA,CACrB,GAAK5vD,CAAAA,KAAK8sC,UAAU,CACnB,IAAI1nC,EAAEZ,SAASC,cAAc,KAC7BW,EAAAA,EAAEM,UAAU,gBACR3O,EAAUM,OAAO44B,YACpB7qB,EAAEM,WAAW,uBACV3O,EAAU+4D,YAAY8E,YACzBxvD,EAAEM,WAAW,sBACV3O,EAAUM,OAAOo0C,MACpBrmC,EAAEM,WAAW,sBACV3O,EAAUM,OAAO4rD,sBACpB79C,EAAEM,WAAa,6BAEhBN,EAAEpN,MAAMsgB,WAAW,SACnB,IAAI7f,EAAOuH,KAAK60D,mBAEZj+B,EAAU52B,KAAK3I,OAAOqsD,aAG1BjrD,GAAQ,kCAER,QAASmB,EAAI,EAAGA,EAAIg9B,EAAQ/8B,OAAQD,IAEnCnB,GAAQ,QADGuH,KAAK+1B,SAAS0oB,yBAAyB7nB,EAAQh9B,CACjC,CAAA,EAAA,iBAAkBg9B,EAAQh9B,CAAG,EAAA,6BAA6B7C,EAAUM,OAAOo0C,IAAI,QAAQ,QAAQ,YAAc7U,EAAQh9B,GAAK,mCAAqCg9B,EAAQh9B,CAAK,EAAA,gBAAkB7C,EAAUooB,OAAO6P,OAAO4H,EAAQh9B,CAAAA,CAAAA,EAAM,eAG9Pg9B,EAAU52B,KAAK3I,OAAOssD,cACtB,IAAIlY,EAAM10C,EAAUM,OAAOo0C,IAC3B,IAAS7xC,EAAI,EAAGA,EAAIg9B,EAAQ/8B,OAAQD,IAGnCnB,GAAQ,mDAERA,GAAQ,QAJGuH,KAAK+1B,SAAS0oB,yBAAyB7nB,EAAQh9B,IAIjC,iBAAkBg9B,EAAQh9B,CAAG,EAAA,6BAA6B6xC,EAAI,OAAO,SAAS,YACpG7U,EAAQh9B,GAAK,mCACbg9B,EAAQh9B,CAAK,EAAA,gBAAkB7C,EAAUooB,OAAO6P,OAAO4H,EAAQh9B,IAAM,eAEzEnB,GAAQ,SACRA,GAAM,SACN2M,EAAEV,UAAUjM,EACR1B,EAAUM,OAAOisD,gBACpBvsD,EAAUI,MAAMiO,EAAEyB,WAAY,YAAa9P,EAAU49D,aACrD59D,EAAAA,EAAUI,MAAMiO,EAAEyB,WAAY,cAAe,SAAS1L,GAErD,OADAA,EAAEyxB,eACK,EAAA,EACX,GACGxnB,EAAEyB,WAAW7O,MAAM86C,OAAS,OAC5B/7C,EAAUu9D,iBAAAA,GAIXt0D,KAAK+1B,SAASyoB,aAAap5C,CAE3BpF,EAAAA,KAAKyyD,WACLzyD,EAAAA,KAAK0yD,OAAOj3C,aAAarW,EAAEpF,KAAK0yD,OAAO7rD,YAEvC7G,KAAK8sC,UAAU1nC,EAEf,IAAIqrD,EAAIzwD,KAAK3I,OAAOqiD,SAASthD,SAE7B,IADAK,EAAK,GACImB,EAAE,EAAGA,EAAI62D,EAAI52D,OAAQD,IAAK,CAClC,IAAI2K,EAAMvE,KAAK8vD,YAAYW,EAAI72D,CAAG2C,EAAAA,IAAAA,EAClC,GAAKgI,EAAL,CACAksD,EAAI72D,CAAAA,EAAGD,GAAG,QAAQqG,KAAKgD,IACvB,EAAA,IAAIoN,EAAS,GACTqgD,EAAI72D,CAAGwW,EAAAA,SAEVA,EAAS,QADMrZ,EAAUg/B,SAASkoB,gCAAgCj+C,KAAKmf,OAAO6P,OAAO,UAAUyhC,EAAI72D,CAAGwW,EAAAA,MAAAA,CAAAA,EAC5E,kDAAkDxW,EAAE,YAAYA,EAAE,mCAAmC62D,EAAI72D,CAAGwW,EAAAA,OAAO,gBAAgBpQ,KAAKmf,OAAO6P,OAAO,UAAUyhC,EAAI72D,CAAAA,EAAGwW,QAAQ,gBAGtMpQ,KAAK3I,OAAO44B,YACfx3B,GAAM,kCAGP,IAAIq8D,EAAa90D,KAAKmf,OAAO6P,OAAO,WAAWyhC,EAAI72D,CAAAA,EAAGkc,MAC5Cg/C,OAAAA,GAAe,WACxBA,EAAarE,EAAI72D,GAAGkc,MAErBrd,GAAM,YAAYg4D,EAAI72D,GAAGD,GAAG,8CAA8C82D,EAAI72D,CAAAA,EAAGkc,KAAK,KAAK1F,EAAQ,UAAU0kD,EAAW,iBAAiBvwD,EAAMiI,OAAOrB,KAAKnL,KAAKywD,EAAI72D,CAAAA,CAAAA,EACpKnB,GAAM,QAjBe,CAkBrB,CAED,IAAIs8D,EAAG3vD,EAAEisB,qBAAqB,KAC9B,EAAA,IAASz3B,EAAE,EAAGA,EAAEm7D,EAAGl7D,OAAQD,IAAK,CAC/B,IAAIo7D,EAAOD,EAAGn7D,CAEd,EAAA,GADgB7C,EAAU+P,cAAckuD,CACN,GAAjB,gBAAiB,CACjCA,EAAKtwD,UAAYjM,EACjB,KACA,CACD,CAGD1B,EAAUk+D,oBAAoBxE,CAG9BzwD,EAAAA,KAAKq0D,kBAELr0D,KAAKg0D,sBAAsBh0D,IAE3BoF,EAAAA,EAAEpN,MAAMsgB,WAAW,SACnB,CAGD,OAAOtY,KAAK8sC,SACb,EAEA/1C,EAAUk+D,oBAAsB,SAAS78D,EAIxC,CAAA,QAAQwB,EAAI,EAAGA,EAAIxB,EAASyB,OAAQD,IAAI,CACvC,IAAI+B,EAAUvD,EAASwB,CAAAA,EACvB,GAAI+B,EAAQhC,IAAO5C,EAAU+1C,UAAU76B,cAAc,IAAItW,EAAQhC,EAAAA,EAAAA,EAAjE,CAOA,QAHIksB,EADa9uB,EAAU+1C,UAAU76B,cAAc,IAAItW,EAAQhC,EAAAA,EAAAA,EACxCsY,cAAc,OAEjCijD,EAAAA,EAAan+D,EAAUk8D,2BAA2Bt3D,GAChDu5D,GAAeA,CAAAA,EAAWjjD,eAC/BijD,EAAaA,EAAW15C,YAGzB,IAAI25C,EAAW,GAEf,GAAGD,EAAY,CACd,IAAIn8C,EAAQm8C,EAAWjjD,cAAc,yBAAA,EAClC8G,IACFpd,EAAQy5D,QAAUr8C,EAAMpf,IAAM,SAAW5C,EAAUiM,MAC/C+V,EAAMpf,KACTof,EAAMpf,GAAKgC,EAAQy5D,SACpBvvC,EAAM9V,aAAa,MAAOpU,EAAQy5D,OAClCD,EAAAA,EAAAA,GAED,CAGEA,GACYp+D,EAAU+4D,YAAYn0D,EAAQY,IAAAA,EACjCy6B,OACVjgC,EAAUI,MAAM0uB,EAAO,QAAS,SAAUlqB,EACzC,CAAA,OAAO,UAEN,CAAA,IAAI4I,EAAQxN,EAAU+4D,YAAYn0D,EAAQY,IAAAA,EACtCob,EAAO5gB,EAAUk8D,2BAA2Bt3D,CAAAA,EAE7C4I,GAASA,EAAMyyB,OACjBzyB,EAAMyyB,MAAM7rB,KAAKpU,EAAW4gB,CAAAA,CACnC,CACK,EAAEhc,CApCK,CAAA,CAAA,CAuCV,CACF,EAEA5E,EAAUkE,YAAY,kBAAmB,SAASo6D,EAAQp3B,GACtDj+B,KAAKiuC,cAAgBonB,IACvBr1D,KAAKiuC,aAAehQ,EACtB,CAAA,EAEAlnC,EAAU89D,mBAAoB;AAAA;AAAA;AAAA;AAAA,8CAO9B,EZ1vBU99D,CACTkzB,EAAAA,GAAMlzB,Ga3FQ,SAAgBA,EAAAA,CAE/BA,EAAUu+D,YAAc,WACvB,MAAO,CACNl4D,KAAM,CACLoP,OAAQ,UACP,CAAA,MAAO,CACNgvB,IAAK,MACLj/B,KAAM,EACNopB,MAAO,CACN3tB,MAAO,yBAERu9D,EAAAA,MAAO,CACNC,UAAa,WACZz+D,EAAU0V,eAAAA,CACV,CAEFoG,EAAAA,KAAM,CACL,CACCyD,GAAItW,KAAKsW,GACT/Z,KAAM,CAIT,CAAA,CAAA,CAAA,EACDmjB,KAAM,UAAA,CACL,IAAIxiB,EAAYsH,SAASC,cAAc,OACvCvH,EAAUvD,GAAK,aAAc5C,EAAUiM,MACvC9F,EAAUlF,MAAM4N,MAAQ,OACxB1I,EAAUlF,MAAM2N,OAAS,OACzBzI,EAAUyS,UAAUhX,IAAI,mBAAA,EACxBuE,EAAUu4D,IAAM,OAChBv4D,EAAUwH,UAAY,2YAatB3N,EAAU2oB,KAAKxiB,CAEf8C,EAAAA,KAAKsW,GAAKpZ,CACV,GAEFX,KAAM,CAAA,CAER,CAEA,EbsCoBxF,CAEnB2+D,EAAAA,GAAM3+D,CM5FHH,EAAAA,OAAO++D,SAEA3V,EAkDRppD,OAAO++D,OAjDL1V,EAAU,EACVt1C,EAAU,CAAA,EACdq1C,EAAE4V,GAAGC,cAAgB,SAASx+D,EAAAA,CAC7B,GAAuB,OAAZ8D,GAAY,SAMhB,CACN,IAAImwC,EAAQ,CAAA,EA+BZ,OA9BAtrC,KAAK81D,KAAK,UACT,CAAA,GAAI91D,MAAQA,KAAKlF,aAChB,GAAKkF,KAAKlF,aAAa,cAwBtBwwC,EAAAA,EAAMjyC,KAAKzC,OAAOoJ,KAAKlF,aAAa,cAxBE,CAAA,CAAA,MAAA,CACtC,IAAIgb,EAAO,YACPmqC,IACHnqC,EAAO,aAAemqC,EAAQ,GAC9BrpD,OAAOkf,CAAAA,EAAQigD,UAAUC,qBAE1B,GAAA,IAAIC,EAAQr/D,OAAOkf,GAGnB,QAAS7L,KADTjK,KAAK+P,aAAa,eAAgB+F,CAAAA,EAClBze,EACX4S,GAAK,SACRgsD,EAAK5+D,OAAO4S,CAAO5S,EAAAA,EAAO4S,IAEvBjK,KAAKqxB,qBAAqB,KAAOx3B,EAAAA,SACrCmG,KAAK0E,UAAY,yfACjB1E,KAAK0F,WAAa,sBAEnBuwD,EAAKv2C,KAAK1f,KAAMi2D,EAAK5+D,OAAOqB,KAAMu9D,EAAK5+D,OAAO6D,IAAAA,EAC1C7D,EAAOmP,MACVyvD,EAAKpxC,MAAMxtB,EAAOmP,MAEnB8kC,EAAMjyC,KAAK48D,CACXhW,EAAAA,GACA,CAGN,CAEwB,EAAjB3U,EAAMzxC,SAAW,EAAUyxC,EAAM,CAC9BA,EAAAA,CACP,CAvCA,GAAI3gC,EAAQtT,CACX,EAAA,OAAOsT,EAAQtT,CAAAA,EAAQuL,MAAM5C,KAAM,CAEnCggD,CAAAA,EAAAA,EAAEx0C,MAAM,UAAanU,EAAS,yCAqClC,CAAA,GQ/Ce,SAAgBN,EAE/B,EAAA,UAAA,CAEC,IAAI0V,EAAiB1V,EAAU0V,eAC9BC,EAAa3V,EAAU2V,WACpBwpD,EAAoB,KACvBC,EAAkB,KAEfC,EAAsB,SAAS19D,EAAMwC,EAAAA,CACxC,IAAI0/B,EAAO56B,KACXnJ,EAAO0Y,aAAa4mD,CACpBt/D,EAAAA,EAAO0Y,aAAa2mD,CAEpB,EAAA,IAAIG,EAAUz7B,EAAK5wB,MAClBssD,EAAU17B,EAAKx5B,MAChBm1D,EAAYv2D,KAAMtH,EAAMwC,CAAAA,EAExBi7D,EAAkB7mD,WAAW,WAEzBvY,EAAU0c,aAIRmnB,EAAK/6B,UAAU,qBAAsB,CAACy2D,EAASD,EAASn7D,GAAQ0/B,EAAKx5B,MAAO1I,GAAQkiC,EAAK5wB,KAAAA,CAAAA,GAK9F0C,EAAWvB,KAAKyvB,EAAMliC,EAAMwC,CAAAA,EAC5B0/B,EAAK/6B,UAAU,eAAgB,CAAC+6B,EAAKx5B,MAAOw5B,EAAK5wB,KAAAA,CAAAA,EAEjDnT,EAAO0Y,aAAa2mD,CACpBC,EAAAA,EAAkB,GARjBI,EAAY37B,EAAMy7B,EAASC,CAAAA,EAS/B,EAAKv/D,EAAUM,OAAOysD,YACtB,CAAA,EACK0S,EAAkB,SAAS99D,EAAMwC,EACpC,CAAA,IAAI0/B,EAAO56B,KACVy2D,EAAMxtD,UAEPstD,EAAYv2D,KAAMtH,EAAMwC,GAExBrE,EAAO0Y,aAAa2mD,CACpBA,EAAAA,EAAoB5mD,WAAW,UAC3BvY,CAAAA,EAAU0c,YAIV0iD,GAGHzpD,EAAW9J,MAAMg4B,EAAM67B,CAC1B,CAAA,EAAK1/D,EAAUM,OAAOysD,YAAAA,CACtB,EACC,SAASyS,EAAYx/D,EAAW2B,EAAMwC,EAClCxC,CAAAA,IACF3B,EAAUiT,MAAQtR,GAChBwC,IACFnE,EAAUqK,MAAQlG,EAEnB,CACDnE,EAAUkE,YAAY,mBAAoB,UACtClE,CAAAA,EAAUM,OAAOysD,cACnB/sD,EAAU0V,eAAiB2pD,EAC3Br/D,EAAU2V,WAAa8pD,IAEvBz/D,EAAU0V,eAAiBA,EAC3B1V,EAAU2V,WAAaA,EAE1B,CAAA,CAEC,GArED,CAuEA,EdqBc3V,CjC2zBC,EAAA,SAAgBA,GAE/BA,EAAU2/D,oBAAsB,SAASr/D,EAAAA,CACxC,IAAImhC,EACAm+B,EACAt/D,aAAkBkX,SACrBiqB,EAASnhC,EACCA,EAAO6L,eAAe,QAAA,EAChCs1B,EAASnhC,EAAOmhC,OACPnhC,EAAO6L,eAAe,WAC/Bs1B,EAASnhC,GAITs/D,EADGn+B,EACK,SAEAnhC,EAAO6D,MAAQ,YAGxB,IAAI63B,EAAK,IAAIkB,GAAc58B,EAAOksB,GAAAA,EAMlC,OALAwP,EAAGrT,KAAK3oB,CACRg8B,EAAAA,EAAGiF,mBAAmB,CACrB98B,KAAMy7D,EACNn+B,OAAQA,GACNnhC,EAAOoW,WAAAA,EACHslB,CACR,EAEAh8B,EAAUk9B,cAAgBA,EAE1B,EiCx1BqBl9B,Ge/FN,SAAgBA,EAAAA,CAa/BA,EAAUkE,YAAY,mBAAoB,UACf,CAAA,OAAhB27D,YAAgB,KACzBhgE,OAAOggE,YAAYC,WAAW,UAAW,SAASnjD,EAAGC,EAAG/U,EACvD,CAAA,IAAIwO,EAAUxO,EAAE,CAAGkmB,EAAAA,aAEnB,OAAQ/tB,EAAUM,OAAOwsD,WACxB,CAAA,IAAK,QACJhtD,EAAOghC,MAAMzqB,CACb,EAAA,MACD,IAAK,UACJvW,EAAO0U,QAAQigC,IAAIp+B,CAKxB,CAAA,CAAA,CAAA,CAEA,EAGA,EfgEWrW,CACV,EAAA,MAAM+/D,EgBlEC,IAAI1xB,GAAc,CACxBR,GAAAA,GACA1E,MACAgE,GACAK,GAAAA,GAAAA,GACAC,GACAC,GAAAA,GAAAA,GACAC,MACAC,GACAruB,GAAAA,GAAAA,GACAuuB,GACAC,GAAAA,GAAAA,GACAC,MACAC,GACAC,GAAAA,GAAAA,GACAtrC,GACAurC,GAAAA,GAAAA,GACAC,MACAG,GACAC,GAAAA,GAAAA,GACAC,GACAC,GAAAA,GAAAA,GACAC,MACAC,GACAC,GAAAA,GAAAA,GACAC,GACAC,GAAAA,GAAAA,GACAC,MACAC,GACAC,GAAAA,GAAAA,EAAAA,CAAAA,EhBsCDlvC,EAAU+/D,KAAO,CAChBC,UAAWD,EAAKC,UAChBC,UAAW,SAAS73C,EACnB,CAAA,GAAUA,OAAAA,GAAW,SAAS,CAC7B,IAAI83C,EAAeH,EAAKI,UAAU/3C,GAC9B83C,IACHA,EAAeH,EAAKI,UAAU,IAG/BngE,GAAAA,EAAUooB,OAAS83C,CACnB,SAAQ93C,EACR,GAAIpoB,EAAUooB,OAGb,QAAQvlB,KAAKulB,EACTA,EAAOvlB,CAA2B,GAAA,OAAdulB,EAAOvlB,CAAAA,GAAO,UAChC7C,EAAUooB,OAAOvlB,CAAAA,IACpB7C,EAAUooB,OAAOvlB,GAAK,IAGvB7C,EAAUgX,MAAMhX,EAAUooB,OAAOvlB,CAAAA,EAAIulB,EAAOvlB,CAAAA,EAAAA,KAE5C7C,EAAUooB,OAAOvlB,CAAKulB,EAAAA,EAAOvlB,QAV/B7C,EAAUooB,OAASA,EAgBrB,IAAI6P,EAASj4B,EAAUooB,OAAO6P,OAC9BA,EAAOmoC,aAAgBnoC,EAAOsR,UAC9BtR,EAAOooC,eAAkBpoC,EAAOuR,YAChCvR,EAAOqoC,eAAkBroC,EAAO0R,YAE7B3pC,EAAUyC,YACZzC,EAAUoQ,aAAAA,CAGX,EACD+vD,UAAWJ,EAAKI,SAEjBngE,EAAAA,EAAU+/D,KAAKE,UAAU,IAAA,EACzBM,GAAWvgE,CAAAA,EACXA,EAAUwgE,IAAM,GAEhB,MAAMC,EAAgB,CAAA,EA6DtB,OA5DAzgE,EAAU0gE,QAAU,SAASpgE,EAC5B,EA0BD,SAA0BA,EAAQqgE,EAAcC,EAAAA,CAC/C,MAAMvpD,EAAS,CAAA,EAEf,UAAUxU,KAAKvC,EACd,GAAGA,EAAOuC,CAAAA,EAAG,CACZ,MAAMg+D,EAAYh+D,EAAE8b,YAAAA,EACjBgiD,EAAaE,CACfF,GAAAA,EAAaE,CAAW78D,EAAAA,QAAQ,SAAS88D,EACxC,CAAA,MAAMC,EAAiBD,EAAIniD,cACvBre,EAAOygE,CAAAA,GACV1pD,EAAO/U,KAAKy+D,EAEnB,CAEI1pD,EAAAA,EAAO/U,KAAKu+D,CAAAA,CACZ,CAeF,OAZAxpD,EAAO8N,KAAK,SAASxI,EAAGC,EACvB,CAAA,MAAMokD,EAASJ,EAAWjkD,IAAM,EAC1BskD,EAASL,EAAWhkD,CAAAA,GAAM,EAChC,OAAGokD,EAASC,EACJ,EACCD,EAASC,EACT,GAED,CAEX,CAAA,EAES5pD,CACP,GAzDuC/W,EAAQ,CAC7C4gE,aAAc,CAAC,UACfC,EAAAA,YAAa,CAAC,UACdC,EAAAA,UAAW,CAAC,QAAA,CAAA,EACV,CACFC,OAAQ,EACR5qD,MAAO,EACP6e,SAAU,EACV6rC,YAAa,EACbD,aAAc,EACdE,UAAU,CAAA,CAAA,EAGEp9D,QAAQ,SAAS+a,EAC9B,CAAA,GAAA,CAAI0hD,EAAc1hD,CAAAA,EAAM,CACvB,MAAMuiD,EAASzuB,EAAiB0uB,aAAaxiD,GAC7C,GAAGuiD,CAAAA,EAIF,MAAM,IAAIpxD,MAAM,kBAAoB6O,CAAAA,EAHpCuiD,EAAOthE,CAAAA,EACPygE,EAAc1hD,CAAQ,EAAA,EAIvB,CACJ,CAAA,CACA,EAmCQ/e,CAER,CiBhNe,MAAMwhE,EAAAA,CACpB,YAAYlhE,EAAAA,CACX2I,KAAKw4D,YAAc,GACnB,UAAU5+D,KAAKvC,EACd2I,KAAKw4D,YAAY5+D,CAAKvC,EAAAA,EAAOuC,EAE9B,CAED,aAAakc,EAAMyhD,GAClBv3D,KAAKw4D,YAAY1iD,CAAQyhD,EAAAA,CACzB,CAED,aAAazhD,EAAAA,CACZ,OAAO9V,KAAKw4D,YAAY1iD,CACxB,CAAA,CAAA,QCXSqP,OAAU,KAAeA,OAAOszC,WAC1CtzC,OAAOszC,SAASC,gBAAkB,SAAU7zD,EAAK3J,EAAMq3B,EAAMx7B,EACxDw7B,CAAAA,EAAOA,GAAQ,8PAAnB,IACIn5B,EAAMoL,SAASC,cAAc,KAAA,EAajC,OAZArL,EAAIO,GAAK,eAAiBqG,KAAK24D,QAAQ,EACvCv/D,EAAAA,EAAIsL,UAAY,YAActL,EAAIO,GAAK,mPAAqP44B,EAAO,iFACnS/tB,SAASqO,KAAKlO,YAAYvL,EAAIyN,UAAAA,EAE9B7G,KAAK44D,aAAax/D,EAAIO,GAAI,GAAA,IAE1BqG,KAAK64D,GAAG74D,KAAK84D,EAAAA,EAAIC,MAAQhiE,EACzBiJ,KAAK64D,GAAG74D,KAAK84D,IAAIE,QAAU5/D,EAAIO,GAC/B5C,EAAUkiE,SAAWliE,EAAU2V,WAC/B3V,EAAU0oC,WAAa,aACvB1oC,EAAU2oB,KAAKtmB,EAAIO,GAAIkL,EAAK3J,CAAAA,EAErB8E,KAAK64D,GAAG74D,KAAKk5D,aAAgBH,CAAAA,EAAAA,KACtC,GCpBe,MAAAI,GACP,CAACvB,EAAWlY,IAClBA,CAAAA,EAAAA,GAAc,OAAOkY,CAAAA;AAAAA;AAAAA,qJAAAA,CAE+H,ECJvI,SAAQwB,GAACriE,EAIxB,EAAA,UAAA,CACC,IAAIsiE,EAAc,GAElB,SAASC,GAAAA,CACR,MAAUD,CAAAA,CAAAA,EAAkB,MAC5B,CAUD,SAASE,EAAWj/C,EAAAA,CACnBhL,WAAW,UACV,CAAA,GAAGvY,EAAU0c,WACZ,SAEG6lD,EAAAA,GAbN,SAAmB19C,EAAO5Z,GACzB,KAAM4Z,GAASA,GAAS5Z,GACvB4Z,EAAQA,EAAM3Z,WAGf,OAAU2Z,GAAS5Z,CACnB,EAO8BwC,SAAS6X,cAAetlB,EAAUyC,UAC9DzC,GAAAA,EAAUigC,MAEX,CAAA,EAAE,EACH,CA0BD,SAASwiC,EAAUriE,EAAAA,CAClB,IACIkE,GADAlE,EAAQA,GAASP,OAAOO,OACTsiE,cACJp+D,GARAg+D,EAAYA,EAAYx/D,OAAS,CAAA,GAUhD9C,EAAU2iE,oBAAoBF,UAAUn+D,EAAQlE,CAAAA,CAChD,CAWD,GALAJ,EAAUkE,YAAY,aAJtB,UAjCA,CAAA,IAAoBqf,IAkCRvjB,EAAU64D,YAAAA,EAjCrB74D,EAAUyf,YAAY8D,EAAK,UAAWk/C,CAAAA,EACtCziE,EAAUI,MAAMmjB,EAAK,UAAWk/C,CAAAA,EAChCH,EAAYhgE,KAAKihB,EAgCjB,CAGDvjB,EAAAA,EAAUkE,YAAY,kBA/BtB,WACC,IAAIqf,EAAM++C,EAAY/qD,IAAAA,EACnBgM,GACFvjB,EAAUyf,YAAY8D,EAAK,UAAWk/C,GAEvCD,EAEA,CAAA,CAAA,EA0BDxiE,EAAUkE,YAAY,mBAAoB,UAAWs+D,CAAAA,EAAAA,CAAa,CAE9DxiE,EAAAA,CAAAA,EAAU4iE,oBAAqB,CAClC5iE,EAAU4iE,oBAAsB,GAEhC,IAAIC,EAAe,KACfC,EAAc,KAClB,MAAMR,EAAc,CAAA,EACpBtiE,EAAUkE,YAAY,iBAAkB,SAASqf,EAAAA,CAIhD,IAHAs/C,EAAep1D,SAAS6X,cACxBw9C,EAAcD,EAERC,GAAe9iE,EAAU+P,cAAc+yD,CAAa9yD,EAAAA,QAAQ,gBAAkB,GACnF8yD,EAAcA,EAAY53D,WAExB43D,IACFA,EAAcA,EAAY53D,YAG3BlL,EAAUyf,YAAY8D,EAAK,UAAWk/C,CACtCziE,EAAAA,EAAUI,MAAMmjB,EAAK,UAAWk/C,CAChCH,EAAAA,EAAYhgE,KAAKihB,CACpB,CAAA,CAAA,EAGEvjB,EAAUkE,YAAY,sBAAuB,UAC5C,CAAA,IAAIqf,EAAM++C,EAAY/qD,MACnBgM,GACFvjB,EAAUyf,YAAY8D,EAAK,UAAWk/C,CAEvClqD,EAAAA,WAAW,UACV,CAAA,GAAGvY,EAAU0c,WACZ,MAAA,GAGD,QADIgmD,EAAgBj1D,SAAS6X,cACvBo9C,GAAiB1iE,EAAU+P,cAAc2yD,CAAAA,EAAe1yD,QAAQ,eAAA,EAAmB,GACxF0yD,EAAgBA,EAAcx3D,WAE5Bw3D,IAIAG,GAAgBA,EAAa33D,WAC/B23D,EAAa5iC,MAAAA,EAEL6iC,GAAeA,EAAY53D,YACnC43D,EAAY7iC,MAAAA,EAEb4iC,EAAe,KACfC,EAAc,KAEd,EAAE,CACN,CAAA,CAAA,CACE,CAED9iE,EAAU2iE,oBAAoBJ,QAAUA,CAGxC,GA3HD,CA6HA,CCjIe,SAAQQ,GAAC/iE,EAGxBA,CAAAA,EAAUgjE,gBAAkB,UAE3BhjE,CAAAA,EAAUM,OAAO2iE,QAAAA,GAEjBjjE,EAAU2iE,oBAAoBO,WAAa,KAC3CljE,EAAU2iE,oBAAoBQ,cAAgB,KAC9C,IAAIC,EAAS,KAETvqB,EAAM,CAAA,EAUV,SAASwqB,EAAmBjjE,EAAAA,CAC3BA,EAAQA,GAASP,OAAOO,MACxBy4C,EAAIhzB,EAAIzlB,EAAM0lB,QACd+yB,EAAIjzB,EAAIxlB,EAAM2lB,OACd,CACD,SAAS28C,GAAAA,CAMR,QAJIY,EACAC,EAEAj/D,EAASmJ,SAAS+1D,iBAAiB3qB,EAAIhzB,EAAGgzB,EAAIjzB,CAC5CthB,EAAAA,GAAUA,GAAUtE,EAAUgzB,MACnC1uB,EAASA,EAAO4G,WAMjB,OAJAo4D,EAAkBh/D,GAAUtE,EAAUgzB,KAEtCuwC,EAAgBvjE,EAAU2iE,oBAAoBc,WAAWpjE,UAElDijE,EAAAA,GAAgBC,CACvB,CAmBD,SAASG,EAAUh+D,EAAAA,CAClB,OAAO1F,EAAUsM,WAAW,CAAE,EAAE5G,CAChC,CAAA,CAhDG+H,SAASqO,KAKZ9b,EAAUI,MAAMqN,SAASqO,KAAM,YAAaunD,CAAAA,EAJ5CrjE,EAAUI,MAAMP,OAAQ,OAAQ,UAAA,CAC/BG,EAAUI,MAAMqN,SAASqO,KAAM,YAAaunD,CAC/C,CAAA,CAAA,EA0BCrjE,EAAUkE,YAAY,cAAe,SAAStB,EAAGwB,GAChD,IAAIi+B,EAAQriC,EAAUwE,SAAAA,EAGtB,GAAK69B,EAAMl+B,MAAQk+B,EAAMr0B,SAAzB,CAGA,IAAItD,EAAW1K,EAAU2E,cAAcP,GACvCpE,EAAU2iE,oBAAoBO,WAAax4D,EAAS/I,KACpD3B,EAAU2iE,oBAAoBQ,cAAgBz4D,EAAS9F,OAHtD,CAIH,CAAA,EAWC5E,EAAU2jE,mBAAqB,SAASj+D,EACvC,CAAA,IAAI/D,EAAO3B,EAAU2iE,oBAAoBO,WACrCt+D,EAAU5E,EAAU2iE,oBAAoBQ,cAExChrB,EAAiBzyC,EAAGlE,SAASkE,EAAGnE,WAEhC2U,EAAOwtD,EAAUh+D,CAAAA,EAKrB,GApBD,SAA2BA,EAAAA,CAAAA,OACnBA,EAAGqC,SAAAA,OAAiBrC,EAAGshC,YACvBthC,OAAAA,EAAGk+D,UAAkBl+D,OAAAA,EAAGm+D,YAC/B,EAakB3tD,CAClBA,EAAAA,EAAK3U,WAAa,IAAIY,KAAKR,CAC3BuU,EAAAA,EAAK1U,SAAW,IAAIW,KAAK+T,EAAK3U,WAAWa,UAAY+1C,CAElDvzC,EAAAA,EAAQ,CACV,IAAIwB,EAAWpG,EAAUskD,sBAAAA,EAEtBtkD,EAAUM,OAAO8C,aACnB8S,EAAK9P,CAAAA,EAAYV,EAAGU,CAAAA,EAEpB8P,EAAK9P,CAAYxB,EAAAA,CAClB,CACD,OAAOsR,CACT,EACClW,EAAU8jE,UAAY,SAASC,EAASC,EAAaC,EAAAA,CACjDjkE,EAAU8I,UAAU,sBAAuB,CAACi7D,EAASC,EAAaC,MADjBA,KAIpDjkE,EAAUwW,SAASwtD,CACnBhkE,EAAAA,EAAU8I,UAAU,gBAAiB,CAACi7D,EAASC,EAAaC,CAC9D,CAAA,EAAA,EAECjkE,EAAUkkE,mBAAqB,WAC9B,MAAGj7D,EAAAA,CAAAA,KAAKs7C,gBAAsBt7C,GAAAA,KAAK2rB,sBAAuB3rB,KAAK3I,OAAO2iE,QAIxE,EAQCjjE,EAAUI,MAAMqN,SAAU,UAAW,SAASrJ,IAExCA,EAAE+/D,SAAW//D,EAAEggE,UAAYhgE,EAAEo6B,SAAW,IAAOx+B,EAAUqkE,eAAAA,CAAkBrkE,EAAU2iE,oBAAoBc,WAAWpjE,UACxHL,IAAAA,EAAU2iE,oBAAoBc,WAAW5vD,SAAW6uD,EAEvD,EAAA,CAAA,EAEC1iE,EAAUskE,oBAAsB,SAASlgE,EACxC,CAAA,GAAA,CAAIpE,EAAUkkE,mBAAsB,EAAA,MAAA,GAEpC,GAAI9/D,EAAEo6B,SAAW,IAAMp6B,EAAEo6B,SAAW,GAAI,CACvCp6B,EAAE0xB,aAAe,GAEjB,IAAI/a,EAAO/a,EAAU2B,KAAKC,IAAI5B,EAAUiT,MAAO7O,EAAEo6B,SAAW,GAAXA,GAAqB,EAAIx+B,EAAUqK,KAEpF,EAAA,OADArK,EAAU0V,eAAeqF,CAAAA,EAAAA,EAEzB,CAED,IAvBI6F,EAuBAu2B,GAvBAv2B,EAAO5gB,EAAU2iE,oBAAoBc,WAAWc,cACzC3jD,IAAAA,EAAKxB,QAAgBwB,EAAKxB,QAC9Bpf,EAAU42C,WAsBjB,IAAKxyC,EAAE+/D,SAAW//D,EAAEggE,UAAYhgE,EAAEo6B,SAAW,GAM5C,OALI2Y,IACHn3C,EAAUqkE,cAAgBX,EAAU1jE,EAAUqE,SAAS8yC,IACvDisB,EAAS,GACTpjE,EAAU8I,UAAU,gBAAiB,CAAC9I,EAAUqE,SAAS8yC,CAAAA,CAAAA,CAAAA,GAAAA,GAI3D,IAAK/yC,EAAE+/D,SAAW//D,EAAEggE,UAAYhgE,EAAEo6B,SAAW,IACxC2Y,EAAW,CACdisB,EAAS,GACT,IAAI19D,EAAK1F,EAAUqkE,cAAgBX,EAAU1jE,EAAUqE,SAAS8yC,IAEhEn3C,EAAU8V,YAAYpQ,EAAG9C,EAAAA,EACzB5C,EAAU8I,UAAU,aAAc,CAACpD,CAAAA,CAAAA,CACnC,CAGF,IAAKtB,EAAE+/D,SAAW//D,EAAEggE,UAAYhgE,EAAEo6B,SAAW,IAAMkkC,EAAAA,EAAkB,CAIpE,GAFAh9D,GADIA,EAAK1F,EAAUqkE,cAAgBrkE,EAAUqE,SAASrE,EAAUqkE,cAAczhE,EAAM5C,EAAAA,EAAUqkE,gBACnFrkE,EAAUqkE,cAEb,CACP,IAAIG,EAASxkE,EAAU2jE,mBAAmBj+D,CAC1C,EAAI09D,GACHoB,EAAO5hE,GAAK5C,EAAUiM,IAAAA,EACtBjM,EAAU8jE,UAAUV,EAAQoB,EAAQ9+D,CAAAA,GAG1B1F,EAAU8I,UAAU,uBAAuB,CAAC07D,EAAQpgE,EAAG,GAAOsB,MAEvE1F,EAAU8jE,UAAUV,EAAQoB,EAAQ9+D,GACpC09D,EAAS,GAIX,CACD,MAAA,EACA,CACH,CACA,EACApjE,EAAUgjE,iBAEV,CCvKe,SAAQyB,GAACzkE,EAAAA,CAExBA,EAAU2iE,oBAAoB+B,wBAA0B,UACvD,CAAA,IAcIC,EAdAlB,EAAazjE,EAAU2iE,oBAAoBc,WAE3CmB,EAAiB,SAASxgE,EAAAA,CAC7B,GAAIpE,EAAUM,OAAO2iE,QAErB,OAAOQ,EAAWmB,eAAexgE,CACnC,CAAA,EAEKygE,EAAe,UAAA,CAClBpB,EAAWqB,mBAAmB,UAAA,CAC7BrB,EAAWsB,gBAAAA,CACd,EACA,EAGC/kE,EAAUkE,YAAY,eAAgB,WACjClE,EAAUM,OAAO2iE,SAChBQ,EAAWpjE,cAAgBL,EAAUwE,SAAAA,EAAWuyC,YAErDv+B,aAAamsD,GACbA,EAAWpsD,WAAW,UACrB,CAAA,GAAGvY,EAAU0c,WACZ,MAAA,GAEG+mD,EAAWpjE,aACdojE,EAAWuB,OAAAA,EACZC,EACH,CAAA,CAAA,EACA,GAEC,IAAIA,EAAoB,UACvB,CAAA,GAAIxB,EAAWpjE,UAAf,EAAA,CAGA,IAAI6kE,EAAazB,EAAWc,cACxBW,EAAAA,IAGAA,EAAWC,QAAAA,IACdD,EAAaA,EAAW9G,SAAAA,GAAAA,CAGrB8G,GAAcA,aAAsBllE,EAAU2iE,oBAAoByC,eAAiBF,aAAsBllE,EAAU2iE,oBAAoB0C,aAG3I5B,EAAWqB,mBAAmB,UAAA,CAC7BI,EAAWjlC,MAAM,EAAA,CACpB,CAfU,EAAA,CAgBV,EAsBC,SAASqlC,EAAiBlhE,EACzB,CAAA,GAAA,CAAIpE,EAAUM,OAAO2iE,QAAS,MAAA,GAE9B,MAAM58D,EAAOrG,EAAUY,QAAAA,EACvB,IAAI2kE,EAAgB,GACpB,GAAIvlE,EAAUwE,SAAWL,EAAAA,OAAS,QACjCohE,EAAgBvlE,EAAU2iE,oBAAoB/9C,UAAUxgB,EAAEE,QAAUF,EAAE8c,WAAYlhB,EAAUyC,WAAWyY,cAAc,sBAAA,CAAA,UAC3G7U,GAAQA,EAAKxF,SAAW,WAClC0kE,EAAgBvlE,EAAU2iE,oBAAoB/9C,UAAUxgB,EAAEE,QAAUF,EAAE8c,WAAYlhB,EAAUyC,WAAWyY,cAAc,wBAC/G,CAAA,MAAA,CACN,MAAMsqD,EAAexlE,EAAUyC,WAAWC,iBAAiB,mBAE3D6iE,EAAAA,EADoB/5D,MAAMihB,KAAK+4C,CAAAA,EACHC,KAAKpN,GAASA,IAAUj0D,EAAEE,OAAO4G,UAC7D,CAAA,CAED,IAEIua,EAFAozB,EAAM74C,EAAU2E,cAAcP,GAG/BpE,EAAUy2B,cAAcryB,EAAEE,QAAUF,EAAE8c,UACxCuE,EAAAA,EAAY,IAAIzlB,EAAU2iE,oBAAoB+C,MAAM1lE,EAAUy2B,cAAcryB,EAAEE,QAAUF,EAAE8c,UAClFqkD,CAAAA,EAAAA,IACR9/C,EAAY,IAAIzlB,EAAU2iE,oBAAoBgD,SAC3C9sB,EAAIl3C,MAAQ4jE,IACd9/C,EAAYA,EAAUmgD,SAAS,IAAI5lE,EAAU2iE,oBAAoBgD,SAAS9sB,EAAIl3C,KAAM,KAAMk3C,EAAIj0C,OAAAA,CAAAA,IAI7F6gB,IACGg+C,EAAWpjE,UAAAA,EAIXw4C,EAAIl3C,MAAQ4jE,GACf9B,EAAWxrD,MAAM,UAChBwrD,CAAAA,EAAWoC,cAAcpgD,CAC/B,CAAA,CAAA,EANIg+C,EAAWyB,WAAaz/C,EAU1B,CA3DDzlB,EAAUkE,YAAY,mBAAoB,WACzC,IAAIiC,EAAYnG,EAAUyC,WAC1BzC,EAAUyf,YAAYhS,SAAU,UAAWm3D,CAAAA,EAC3C5kE,EAAUyf,YAAYtZ,EAAW,YAAam/D,CAAAA,EAC9CtlE,EAAUyf,YAAYtZ,EAAW,QAAS0+D,CAAAA,EAGvC7kE,EAAUM,OAAO2iE,SAEnBjjE,EAAUI,MAAMqN,SAAU,UAAWm3D,CAAAA,EACrC5kE,EAAUI,MAAM+F,EAAW,YAAam/D,CACxCtlE,EAAAA,EAAUI,MAAM+F,EAAW,QAAS0+D,CAEpC1+D,EAAAA,EAAU6S,aAAa,WAAY,GAAA,GAGnC7S,EAAU2/D,gBAAgB,WAE7B,CAqEC,EAAA,IAAIhwD,EAAc9V,EAAU8V,YAC5B9V,EAAU8V,YAAc,SAASlT,EAAAA,CAChC,IAAImE,EAAM+O,EAAYjK,MAAM5C,KAAMiJ,WAClC,GAAGlS,EAAUM,OAAO2iE,SAAWQ,EAAWpjE,UACtCL,GAAAA,EAAUwE,SAAW2yC,EAAAA,WAAav0C,EAAG,CACvC,IAAIc,EAAU,IAAI1D,EAAU2iE,oBAAoB+C,MAAM9iE,CAElD5C,EAAAA,EAAUwE,WAAWyyC,aAjC5B,SAAoB8uB,EACnB,CAAA,GAAI/lE,EAAUM,OAAO2iE,SACjBQ,EAAWpjE,UAAAA,EAAf,CAGA,IAAI2lE,EAAYD,EACZtgD,EAAY,IAAIzlB,EAAU2iE,oBAAoB+C,MAAMM,EAAU5mD,SAClE,GAAIqG,CAAAA,EAAU0/C,QAAU,EAAA,CACvB,IAAIc,EAAYxgD,EAAU3Y,OAASk5D,EAAUl5D,MACzCo5D,EAAUzgD,EAAU1Y,KAAOi5D,EAAUj5D,IACrCo5D,EAAc1gD,EAAU7gB,SAAWohE,EAAUphE,SAEjD6gB,EAAY,IAAIzlB,EAAU2iE,oBAAoBgD,SAASM,EAAWC,EAASC,CAAAA,GAC7DhB,YACb1/C,EAAY,IAAIzlB,EAAU2iE,oBAAoBgD,SAE/C,CAEDlC,EAAWoC,cAAcpgD,CAAAA,EACzB,IAAI7E,EAAO6iD,EAAWc,cACnB3jD,EAAAA,GAAQA,EAAKwlD,SAAW34D,SAAS6X,eAAiB1E,EAAKwlD,WACzD3C,EAAWh+C,UAAUg+C,EAAWc,cAAAA,CAAAA,CAnBE,CAqBnC,EAWc7gE,CAEZ,CAAA,CAEF,OAAOqD,CACT,EAEC/G,EAAUkE,YAAY,iBAAkB,SAAStB,EAAAA,CAChD,OAAI5C,EAAUM,OAAO2iE,SAClBQ,EAAWpjE,aACIojE,EAAWc,cAAAA,EACdnlD,SAAWxc,GACxB6gE,EAAWoC,cAAc,IAAI7lE,EAAU2iE,oBAAoBgD,UAGtD,EACT,CAEC3lE,EAAAA,EAAUkE,YAAY,aAAc,UACnC,CAAA,GAAA,CAAIlE,EAAUM,OAAO2iE,QAAS,MAAO,GAClCQ,EAAWpjE,UACVojE,GAAAA,EAAWc,cAA2BvkE,YAAAA,EAAU2iE,oBAAoB+C,OACtEjC,EAAWoC,cAAc,IAAI7lE,EAAU2iE,oBAAoBgD,QAAAA,CAG/D,CAEA,CAAA,CAEA,CC9KO,MAAMU,EAAAA,CAMZ,YAAYrmE,GACXiJ,KAAKxF,IAAM,KACXwF,KAAKq9D,SAAW,CAChBr9D,EAAAA,KAAKjJ,UAAYA,CAClB,CACA,aAAaI,EACZ,CAAA,GAAI6I,KAAKq9D,UAAYr9D,KAAKq9D,SAASxjE,OAAS,GAC3C,QAASD,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACzC,GAAIzC,EAAMwC,IAAMqG,KAAKq9D,SAASzjE,GAAGzC,MAAMwC,GAAI,CAC1C,IAAI2jE,EAAOt9D,KAAKnH,SAAS0kE,oBAAsBv9D,KAAKnH,SAAS2kE,aACzDrmE,EAAMsmE,KAAOtmE,EAAMumE,KACtB19D,KAAKxF,IAAImjE,UAAU,CAClBF,IAAKtmE,EAAMsmE,IACXC,IAAKvmE,EAAMumE,GAEP19D,CAAAA,EAAAA,KAAAxF,IAAIojE,QAAQN,KAEjBt9D,KAAKxF,IAAImjE,UAAU,CAClBF,IAAKz9D,KAAKnH,SAASglE,eAAeJ,IAClCC,IAAK19D,KAAKnH,SAASglE,eAAeH,GAAAA,CAAAA,EAE9B19D,KAAAxF,IAAIojE,QAAQN,CAEXQ,GAAAA,OAAAC,KAAK5mE,MAAM6mE,QAAQh+D,KAAKq9D,SAASzjE,GAAGkjC,OAAQ,OAAA,CACpD,EAGH,CAEA,WAAW5/B,EAAwBZ,EAClC0D,CAAAA,KAAKnH,SAAWyD,EAChB,IAAIvF,EAAYiJ,KAAKjJ,UACjBknE,EAAa,CAChBC,OAAQ,CAAET,IAAKnhE,EAAQ6hE,iBAAiBV,IAAKC,IAAMphE,EAAQ6hE,iBAAiBT,GAAAA,EAC5EJ,KAAMhhE,EAAQkhE,aACdY,MAAOlhE,EAAUvD,GACjB0kE,YAAAA,GACAC,UAAWhiE,EAAQC,IAGhB,EAAA,GAAAyD,KAAKxF,MAAQ,KAChBwF,KAAKxF,IAAM,IAAIsjE,OAAOC,KAAKQ,IAAIrhE,EAAW+gE,OAEtC,CACJ,IAAIzjE,EAAMwF,KAAKxF,IACf0C,EAAUyH,YAAY3E,KAAKxF,IAAIgkE,KAAKC,cACpCvhE,EAAAA,EAAUyH,YAAY3E,KAAKxF,IAAIgkE,KAAKE,cAAAA,EACpCpvD,WAAW,UAAA,CACV9U,EAAImkE,WAAW,CAACzhE,UAAWA,EAAUvD,MACnC,GAAA,CACJ,CACAmkE,OAAOC,KAAK5mE,MAAMynE,YAAY5+D,KAAKxF,IAAK,WAAY,SAASrD,EAAAA,CAC5D,MAAM0nE,EAAW,IAAIf,OAAOC,KAAKe,SAEjC,GAAA,CAAK/nE,EAAUM,OAAO+2C,UAAYr3C,EAAUM,OAAOmT,gBAAiB,CACnE,IAAIu0D,EAAQ5nE,EAAM6nE,OACTH,EAAAI,QACR,CAAED,OAAUD,GACZ,SAASG,EAAS72C,EACbA,CAAAA,GAAUy1C,OAAOC,KAAKoB,eAAeC,IAChCL,EAAAG,EAAQ,CAAA,EAAGG,SAASC,SAC5BvoE,EAAU0T,YAAY,CACrBgzD,IAAKsB,EAAMtB,MACXC,IAAKqB,EAAMrB,IACX6B,EAAAA,eAAgBL,EAAQ,CAAGM,EAAAA,kBAC3BlnE,WAAYvB,EAAUwE,WAAW7C,KACjCH,SAAUxB,EAAU2B,KAAKC,IAAI5B,EAAUwE,SAAAA,EAAW7C,KAAM3B,EAAUM,OAAO83C,UAAW,QAAA,CAAA,CAAA,GAG7E5jC,QAAAC,MAAM,wDAA0D6c,CAE1E,CAAA,CAAA,CAEF,CAAA,CAAA,CAEF,CAEA,QAAQnrB,EAIP,CAAA,IAHO4gE,OAAAC,KAAK5mE,MAAMsoE,uBAAuB7oE,MAAAA,EAClCknE,OAAAC,KAAK5mE,MAAMsoE,uBAAuBj7D,QAAAA,EAClCs5D,OAAAC,KAAK5mE,MAAMsoE,uBAAuBviE,CAAAA,EAClCA,EAAU2J,YAChB3J,EAAU2J,WAAW6U,OAAAA,EAEtBxe,EAAUwH,UAAY,EACvB,CAEA,MAAA,eAAqBvN,EACpB,CAAA,IAAIE,EAAS,CACZm/B,MAAOr/B,EAAMkW,KACb5L,SAAU,CAAC,EACXjH,IAAK,CAAC,CAAA,EAGHrD,EAAMsmE,KAAOtmE,EAAMumE,IACtBrmE,EAAOoK,SAAW,CAAEg8D,IAAKtmE,EAAMsmE,IAAKC,IAAKvmE,EAAMumE,GAAAA,EAExCrmE,EAAAoK,SAAW,CAAEg8D,IAAKz9D,KAAKnH,SAASglE,eAAeJ,IAAKC,IAAK19D,KAAKnH,SAASglE,eAAeH,KAE9F,KAAMgC,CAAAA,sBAAEA,CAAgC5B,EAAAA,MAAAA,OAAOC,KAAK4B,cAAc,QAAA,EAC9D,IAAA7iC,EACA98B,KAAKjJ,UAAUwgE,IAAIqI,QAAQC,cAC9BxoE,EAAOmD,IAAMwF,KAAKxF,IAClBsiC,EAAS98B,KAAKjJ,UAAUwgE,IAAIqI,QAAQC,aAAaxoE,KAExCylC,EAAA,IAAI4iC,EAAsBroE,CAAAA,EACnCylC,EAAOtiC,IAAMwF,KAAKxF,KAEZsiC,EAAAgjC,OAAO9/D,KAAKxF,GAAAA,EAEfrD,EAAM,yBAA2B,gBACpC2lC,EAAOgjC,OAAO,IAEfhC,EAAAA,OAAOC,KAAK5mE,MAAMynE,YAAY9hC,EAAQ,QAAS,IAC1C98B,CAAAA,KAAK+/D,YACR//D,KAAK+/D,WAAWC,MAEZhgE,EAAAA,KAAA+/D,WAAa,IAAIjC,OAAOC,KAAKkC,WAAW,CAACC,SAAUlgE,KAAKnH,SAASsnE,qBAAAA,CAAAA,EACtEngE,KAAK+/D,WAAWK,WAAWpgE,KAAKjJ,UAAU+sB,UAAUu8C,iBAAiBlpE,IACrE6I,KAAK+/D,WAAW5d,KAAK,CACpBme,OAAQxjC,EACRtiC,IAAKwF,KAAKxF,GAAAA,CAAAA,CACV,GAEF,IAAI+lE,EAAa,CAACppE,MAAAA,EAAAA,GAAUE,EAAQylC,OAC/B98B,CAAAA,EAAAA,KAAAq9D,SAAShkE,KAAKknE,EACpB,CAEA,kBAAkBpqD,EAAAA,CACjB,QAASvc,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACrCuc,GAAWnW,KAAKq9D,SAASzjE,CAAAA,EAAGzC,MAAMwC,KACrCqG,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,OAAO0jC,WAAAA,IACxBxgE,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,OAAOgjC,OAAO,IAC/B9/D,EAAAA,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,OAAO2jC,YAAY,IAC/BzgE,EAAAA,KAAAq9D,SAASzjE,CAAGkjC,EAAAA,OAAS,KACrB98B,KAAAq9D,SAASj1D,OAAOxO,EAAE,CACvBA,EAAAA,IAGH,CAEA,kBAAkBzC,EACjB,CAAA,QAASyC,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACzC,GAAGoG,KAAKq9D,SAASzjE,CAAGzC,EAAAA,MAAMwC,IAAMxC,EAAMwC,GAAI,CACpCqG,KAAAq9D,SAASzjE,CAAAA,EAAGzC,MAAQA,EACzB6I,KAAKq9D,SAASzjE,CAAAA,EAAG6H,SAASg8D,IAAMtmE,EAAMsmE,IACtCz9D,KAAKq9D,SAASzjE,CAAG6H,EAAAA,SAASi8D,IAAMvmE,EAAMumE,IACtC19D,KAAKq9D,SAASzjE,CAAGyT,EAAAA,KAAOlW,EAAMkW,KAC1B,IAAAqzD,EAAS,IAAI5C,OAAOC,KAAK4C,OAAOxpE,EAAMsmE,IAAKtmE,EAAMumE,GACrD19D,EAAAA,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,OAAO2jC,YAAYC,CAAAA,CACrC,CAEF,CAEA,mBAAAE,CACK,GAAA5gE,KAAKq9D,SAASxjE,OAAS,EAAG,CAC7B,QAASD,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACzCoG,KAAKq9D,SAASzjE,GAAGkjC,OAAOgjC,OAAO,IAEhC9/D,EAAAA,KAAKq9D,SAAW,CACjB,CAAA,CACD,CAEA,QAAQwD,EAAkBC,EAAmBxD,EAC5Ct9D,CAAAA,KAAKxF,IAAImjE,UAAU,CAClBF,IAAKoD,EACLnD,IAAKoD,CAED9gE,CAAAA,EAAAA,KAAAxF,IAAIojE,QAAQN,EAClB,CAEA,MAAA,eAAqByD,EAAAA,CACpB,MAAMlC,EAAW,IAAIf,OAAOC,KAAKe,SAiB1B,OAhBmB,MAAA,IAAI5e,QAAS2B,GAAAA,CAC7Bgd,EAAAI,QACR,CAAE+B,QAAWD,CAAAA,EACb,SAAS7B,EAAS72C,EAAAA,CACbA,GAAUy1C,OAAOC,KAAKoB,eAAeC,GAChCvd,EAAA,CACP4b,IAAKyB,EAAQ,CAAA,EAAGG,SAASC,SAAS7B,IAClCC,EAAAA,IAAKwB,EAAQ,CAAA,EAAGG,SAASC,SAAS5B,IAAAA,CAAAA,CAAAA,GAG3BnyD,QAAAC,MAAM,wDAA0D6c,CACxEw5B,EAAAA,EAAQ,CAAE,CAAA,EAEZ,EACD,CAGF,CAAA,CAAA,CCnMM,MAAMof,EAAAA,CAKZ,YAAYlqE,EAAAA,CACXiJ,KAAKxF,IAAM,KACXwF,KAAKq9D,SAAW,CAChBr9D,EAAAA,KAAKjJ,UAAYA,CAClB,CACA,aAAaI,GACZ,GAAI6I,KAAKq9D,UAAYr9D,KAAKq9D,SAASxjE,OAAS,EAC3C,QAASD,EAAI,EAAGA,EAAKoG,KAAKq9D,SAASxjE,OAAQD,IACtCzC,EAAMwC,IAAOqG,KAAKq9D,SAASzjE,CAAGzC,EAAAA,MAAMwC,KACvCqG,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,OAAOokC,UACxBlhE,EAAAA,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,OAAOqkC,aACpBhqE,EAAAA,EAAMsmE,KAAOtmE,EAAMumE,IACjB19D,KAAAohE,QAAQjqE,EAAMsmE,IAAKtmE,EAAMumE,IAAK19D,KAAKnH,SAAS0kE,oBAAsBv9D,KAAKnH,SAAS2kE,cAErFx9D,KAAKohE,QAAQphE,KAAKnH,SAASglE,eAAeJ,IAAKz9D,KAAKnH,SAASglE,eAAeH,IAAK19D,KAAKnH,SAAS0kE,oBAAsBv9D,KAAKnH,SAAS2kE,YAKxI,EAAA,CAEA,WAAWtgE,EAAwBZ,EAClC,CAAA,IAAIvF,EAAYiJ,KAAKjJ,UACjBsqE,EAAa78D,SAASC,cAAc,KAAA,EACxC48D,EAAW37D,UAAY,aACvB27D,EAAW1nE,GAAK,aACL0nE,EAAArpE,MAAM4N,MAAQ1I,EAAUlF,MAAM4N,MAC9By7D,EAAArpE,MAAM2N,OAASzI,EAAUlF,MAAM2N,OAC1CzI,EAAUyH,YAAY08D,GAElB,IAAA7mE,EAAM8mE,EAAE9mE,IAAI6mE,EAAY,CAC3BnD,OAAQoD,EAAEtC,OAAO1iE,EAAQ6hE,iBAAiBV,IAAKnhE,EAAQ6hE,iBAAiBT,KACxEJ,KAAMhhE,EAAQkhE,aACd/nC,SAAAA,KAED6rC,EAAEC,UAAU,mDAAqDC,EAAAA,MAAMhnE,CACnEA,EAAAA,EAAAinE,GAAG,WAAYphB,eAAellD,EAOjC,CAAA,IAAIkpB,EAAiBq9C,MAAAA,MAAM,mDAAmDvmE,EAAEulE,OAAOjD,GAAWtiE,QAAAA,EAAEulE,OAAOhD,GAN1F,eAAA,CAChBxiC,OAAU,MACVhD,QAAS,CACR,kBAAoB,IAGkHiE,CAAAA,CAAAA,EAAAA,KAAK9X,GAAYA,EAASgC,KAAAA,CAAAA,EAClK,GAAIhC,EAAS28C,QAAS,CACjB,IAAAA,EAAU38C,EAAS28C,QAAQW,QAC/B5qE,EAAU0T,YAAY,CACrBgzD,IAAKtiE,EAAEulE,OAAOjD,IACdC,IAAKviE,EAAEulE,OAAOhD,IACd6B,eAAgByB,EAChB1oE,WAAYvB,EAAUwE,SAAAA,EAAW7C,KACjCH,SAAUxB,EAAU2B,KAAKC,IAAI5B,EAAUwE,SAAAA,EAAW7C,KAAM3B,EAAUM,OAAO83C,UAAW,QAAA,CAAA,CAAA,CACpF,MAEO5jC,QAAAC,MAAM,yCAA0C6Y,EAAS7Y,MAClE,CAEDxL,EAAAA,KAAKxF,IAAMA,EACXwF,KAAKnH,SAAWyD,CACjB,CAEA,QAAQY,EAAAA,CAEP,IADA8C,KAAKxF,IAAIkhB,OACFxe,EAAAA,EAAU2J,YAChB3J,EAAU2J,WAAW6U,OAEtBxe,EAAAA,EAAUwH,UAAY,EACvB,CAEA,eAAevN,EACR,CAAA,MAAAyqE,EAASN,EAAEjzB,KAAK,CACrBwzB,QAAS,8DACTC,SAAc,CAAC,GAAI,EAAA,EACnBC,WAAc,CAAC,GAAI,EACnBC,EAAAA,WAAc,CAAC,GAAI,EAAA,EACnBC,aAAc,CAAC,EAAG,EAEnB,CAAA,CAAA,EAAA,IAAIC,EAAc,CACjBC,SAAU,IACVjC,SAAUlgE,KAAKnH,SAASsnE,uBAEnB,MAAAiC,EAAcd,EAAEe,MAAMH,GAAa9B,WAAWpgE,KAAKjJ,UAAU+sB,UAAUu8C,iBAAiBlpE,CACxFmrE,CAAAA,EAAAA,EAAUhB,EAAEgB,QAAAA,EAAUlC,WAAWjpE,EAAMkW,IAAAA,EAE7C,IAAIk1D,EAAe,CAClBprE,EAAMsmE,IACNtmE,EAAMumE,GAAAA,EAGFvmE,EAAMsmE,KAAQtmE,EAAMumE,MACT6E,EAAA,CAACviE,KAAKnH,SAASglE,eAAeJ,IAAKz9D,KAAKnH,SAASglE,eAAeH,GAAAA,GAE1E,MAGA6C,EAAa,CAACppE,MAAO2lC,EAAAA,OAHZwkC,EAAExkC,OAAOylC,EAAc,CACrCl0B,KAAMuzB,IACJY,UAAUJ,CAAAA,EAAaK,YAAYH,CAAAA,EAASd,MAAMxhE,KAAKxF,GAAAA,CAAAA,EAErDwF,KAAAq9D,SAAShkE,KAAKknE,CACpB,CAAA,CAEA,kBAAkBpqD,GACjB,QAASvc,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACrCuc,GAAWnW,KAAKq9D,SAASzjE,CAAGzC,EAAAA,MAAMwC,KACrCqG,KAAKxF,IAAIkoE,YAAY1iE,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,MAAAA,EACjC98B,KAAAq9D,SAASj1D,OAAOxO,EAAE,CAAA,EACvBA,IAGH,CAEA,kBAAkBzC,EAAAA,CACjB,QAASyC,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACtCoG,KAAKq9D,SAASzjE,CAAAA,EAAGzC,MAAMwC,IAAMxC,EAAMwC,KAChCqG,KAAAq9D,SAASzjE,CAAAA,EAAGzC,MAAQA,EACpBA,EAAMsmE,KAAQtmE,EAAMumE,IAGnB19D,KAAAq9D,SAASzjE,CAAGkjC,EAAAA,OAAO6lC,UAAU,CAACxrE,EAAMsmE,IAAKtmE,EAAMumE,GAFpD19D,CAAAA,EAAAA,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,OAAO6lC,UAAU,CAAC3iE,KAAKnH,SAASglE,eAAeJ,IAAKz9D,KAAKnH,SAASglE,eAAeH,GAAAA,CAAAA,EAMtG,CAEA,oBACC,GAAG19D,KAAKq9D,SAAU,CACjB,QAASzjE,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACzCoG,KAAKxF,IAAIkoE,YAAY1iE,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,QAEvC98B,KAAKq9D,SAAW,CACjB,CAAA,CACD,CAEA,QAAQwD,EAAkBC,EAAmBxD,GAC5Ct9D,KAAKxF,IAAI4mE,QAAQ,CAACP,EAAUC,CAAYxD,EAAAA,CAAAA,CACzC,CAEA,MAAA,eAAqByD,EAAAA,CAOpB,IAAIt/D,EAAe,CAAA,EACf4iB,EAAAA,MAAiBq9C,MAAM,gDAAgDX,gBAP1D,CAChB7lC,OAAU,MACVhD,QAAS,CACR,kBAAoB,IAAA,CAAA,CAAA,EAIqFiE,KAAK9X,GAAYA,EAASgC,KAO9H,CAAA,EAAA,OANHhC,GAAYA,EAASxqB,QACxB4H,EAASg8D,IAAAA,CAAOp5C,EAAS,CAAA,EAAGo5C,IAC5Bh8D,EAASi8D,IAAAA,CAAOr5C,EAAS,CAAA,EAAGu+C,KAEpBr3D,QAAAC,MAAM,sDAAsDu1D,CAAAA,EAAAA,EAE9Dt/D,CACR,CC3JM,CAAA,MAAMohE,EAKZ,CAAA,YAAY9rE,EACXiJ,CAAAA,KAAKxF,IAAM,KACXwF,KAAKq9D,SAAW,CAAA,EAChBr9D,KAAKjJ,UAAYA,CAClB,CACA,aAAaI,EAAAA,CACZ,GAAI6I,KAAKq9D,UAAYr9D,KAAKq9D,SAASxjE,OAAS,EAC3C,QAASD,EAAI,EAAGA,EAAKoG,KAAKq9D,SAASxjE,OAAQD,IAAK,CACnC,MAAMyoE,EAAQriE,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,OAAOgmC,SAAAA,EAClCT,EAAMU,OACNV,GAAAA,EAAM3mD,OAElBvkB,EAAAA,EAAMwC,IAAOqG,KAAKq9D,SAASzjE,CAAGzC,EAAAA,MAAMwC,KACvCqG,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,OAAOkmC,cACpB7rE,EAAMsmE,KAAOtmE,EAAMumE,IACjB19D,KAAAohE,QAAQjqE,EAAMsmE,IAAKtmE,EAAMumE,IAAK19D,KAAKnH,SAAS0kE,oBAAsBv9D,KAAKnH,SAAS2kE,YAErFx9D,EAAAA,KAAKohE,QAAQphE,KAAKnH,SAASglE,eAAeJ,IAAKz9D,KAAKnH,SAASglE,eAAeH,IAAK19D,KAAKnH,SAAS0kE,oBAAsBv9D,KAAKnH,SAAS2kE,YAAAA,EAGtI,CAEF,CAEA,WAAWtgE,EAAwBZ,EAC5B,CAAA,IAAIvF,EAAYiJ,KAAKjJ,UAE3BksE,SAASC,YAAc5mE,EAAQ4mE,YACnB,MAAA1oE,EAAM,IAAIyoE,SAAS1E,IAAI,CACzBrhE,UACAghE,EAAAA,OAAQ,CAAC5hE,EAAQ6hE,iBAAiBT,IAAKphE,EAAQ6hE,iBAAiBV,GAAAA,EAChEH,KAAOhhE,EAAQkhE,aAAe,CAE9BhjE,CAAAA,EAAAA,EAAAinE,GAAG,WAAWphB,eAAellD,EAClC,CAAA,IAAAkpB,EAAiBq9C,MAAAA,MAAM,qDAAqDvmE,EAAEgoE,OAAOzF,GAAQviE,IAAAA,EAAEgoE,OAAO1F,GAAyBnhE,sBAAAA,EAAQ4mE,WAAe/mC,EAAAA,EAAAA,KAAK9X,GAAYA,EAASgC,KAAAA,CAAAA,EACpL,GAAIhC,EAAS++C,SAAS,CACrB,IAAIpC,EAAU38C,EAAS++C,SAAS,CAAGC,EAAAA,WACnCtsE,EAAU0T,YAAY,CACrBgzD,IAAKtiE,EAAEgoE,OAAO1F,IACdC,IAAKviE,EAAEgoE,OAAOzF,IACd6B,eAAgByB,EAChB1oE,WAAYvB,EAAUwE,SAAW7C,EAAAA,KACjCH,SAAUxB,EAAU2B,KAAKC,IAAI5B,EAAUwE,WAAW7C,KAAM3B,EAAUM,OAAO83C,UAAW,WACpF,MAED5jC,QAAQC,MAAM,wCAAA,CACf,GAEKxL,KAAKxF,IAAMA,EACXwF,KAAKnH,SAAWyD,CACvB,CAEA,QAAQY,EAED,CAAA,IADN8C,KAAKxF,IAAIkhB,SACIxe,EAAU2J,YACtB3J,EAAU2J,WAAW6U,SAEhBxe,EAAUwH,UAAY,EAC7B,CAEA,eAAevN,EAAAA,CACR,IAAIE,EAAS,CAClBF,EAAMumE,IACNvmE,EAAMsmE,GAAAA,EAGFtmE,EAAMsmE,KAAQtmE,EAAMumE,MACfrmE,EAAA,CAAC2I,KAAKnH,SAASglE,eAAeH,IAAK19D,KAAKnH,SAASglE,eAAeJ,GAGpE,GAAA,MAAA4E,EAAQ,IAAIY,SAASK,MAAM,CAAEn7D,OAAQ,GAAIo7D,eAAAA,EACpCC,CAAAA,EAAAA,YAAY,GAAGxjE,KAAKnH,SAASsnE,qBAC7BsD,IAAAA,EAAAA,QAAQzjE,KAAKjJ,UAAU+sB,UAAUu8C,iBAAiBlpE,CAAAA,CAAAA,EAKjDopE,EAAa,CAACppE,MAAAA,EAAO2lC,OAJZ,IAAImmC,SAASS,SACvBC,UAAUtsE,CACVusE,EAAAA,SAASvB,GACTb,MAAMxhE,KAAKxF,GAEXwF,CAAAA,EAAAA,KAAAq9D,SAAShkE,KAAKknE,CAAAA,CAC1B,CAEA,kBAAkBpqD,EACjB,CAAA,QAASvc,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACrCuc,GAAWnW,KAAKq9D,SAASzjE,CAAAA,EAAGzC,MAAMwC,KACrCqG,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,OAAOphB,OACP1b,EAAAA,KAAAq9D,SAASj1D,OAAOxO,EAAE,CACnCA,EAAAA,IAGH,CAEA,kBAAkBzC,EACjB,CAAA,QAASyC,EAAI,EAAGA,EAAIoG,KAAKq9D,SAASxjE,OAAQD,IACtCoG,KAAKq9D,SAASzjE,CAAGzC,EAAAA,MAAMwC,IAAMxC,EAAMwC,KAChCqG,KAAAq9D,SAASzjE,GAAGzC,MAAQA,EACpBA,EAAMsmE,KAAQtmE,EAAMumE,IAGnB19D,KAAAq9D,SAASzjE,CAAAA,EAAGkjC,OAAO6mC,UAAU,CAACxsE,EAAMumE,IAAKvmE,EAAMsmE,GAFpDz9D,CAAAA,EAAAA,KAAKq9D,SAASzjE,CAAAA,EAAGkjC,OAAO6mC,UAAU,CAAC3jE,KAAKnH,SAASglE,eAAeH,IAAK19D,KAAKnH,SAASglE,eAAeJ,GAMtG,CAAA,EAAA,CAEA,mBAAAmD,CACC,QAAShnE,EAAI,EAAGA,EAAGoG,KAAKq9D,SAASxjE,OAAQD,IACxCoG,KAAKq9D,SAASzjE,CAAGkjC,EAAAA,OAAOphB,OAEzB1b,EAAAA,KAAKq9D,SAAW,CACjB,CAAA,CAEA,QAAQwD,EAAkBC,EAAmBxD,EAAAA,CAC5Ct9D,KAAKxF,IAAImjE,UAAU,CAACmD,EAAWD,CACpB7gE,CAAAA,EAAAA,KAAAxF,IAAIojE,QAAQN,CAAAA,CACxB,CAEA,MAAA,eAAqByD,EACpB,CAAA,IAAI18C,EAAiBq9C,MAAAA,MAAM,qDAAqDX,CAA4B/gE,sBAAAA,KAAKnH,SAASqqE,WAAAA,EAAAA,EAAe/mC,KAAK9X,GAAYA,EAASgC,KAC/J5kB,CAAAA,EAAAA,EAAe,CAAA,EAOZ,OANH4iB,GAAYA,EAAS++C,SAASvpE,QACjC4H,EAASi8D,IAAMr5C,EAAS++C,SAAS,CAAGlF,EAAAA,OAAO,CAC3Cz8D,EAAAA,EAASg8D,IAAMp5C,EAAS++C,SAAS,CAAGlF,EAAAA,OAAO,IAEnC3yD,QAAAC,MAAM,sDAAsDu1D,CAAAA,EAAAA,EAE9Dt/D,CACR,CAAA,CCrIM,IAAIoiE,GAAe,CACtB,KACA,KACA,KACA,KACA,KACA,KACA,IAAA,EAEAC,EAAyB,UAAA,CACzB,SAASA,EAAQC,EAASzrB,EACtB,CAAA,GAAIA,IAAM,EACN,MAAM,IAAIrxC,MAAM,oCACpBjH,KAAK+jE,QAAUA,EACf/jE,KAAKs4C,EAAIA,CACZ,CAuBD,OAtBAwrB,EAAQE,QAAU,SAAU3sD,EAAAA,CACxB,OAAO,IAAIysD,EAAQD,GAAa98D,QAAQsQ,CAChD,CAAA,CAAA,EAGIysD,EAAQt1D,UAAUy1D,IAAM,SAAU3rB,EAAAA,CAC9B,OAAOt4C,KAAKs4C,IAAMA,EAAIt4C,KAAO,IAAI8jE,EAAQ9jE,KAAK+jE,QAASzrB,CAAAA,CAC/D,EAEIwrB,EAAQt1D,UAAU01D,OAAS,SAAUC,GACjC,OAAOnkE,KAAK+jE,UAAYI,EAAMJ,SAAW/jE,KAAKs4C,IAAM6rB,EAAM7rB,CAClE,EAEIwrB,EAAQt1D,UAAUC,SAAW,UAAA,CACzB,IAAI3R,EAAI+mE,GAAa7jE,KAAK+jE,SAG1B,OAFI/jE,KAAKs4C,IACLx7C,GAAKkD,KAAKs4C,EAAI,EAAI,IAAM,IAAMj+C,OAAO2F,KAAKs4C,CAAAA,EAAKx7C,GAC5CA,CACf,EACIgnE,EAAQt1D,UAAU41D,aAAe,UAAA,CAC7B,OAAOpkE,KAAK+jE,UAAY,EAAI,EAAI/jE,KAAK+jE,QAAU,CACvD,EACWD,CACX,ECtCWO,EAAAA,EAAY,SAAU/yD,EAAAA,CAC7B,OACJ,GADWA,IACX,EACWgzD,GAAW,SAAUhzD,GAC5B,OAAwB,OAAVA,GAAU,QAC5B,EACWizD,GAAe,SAAUjzD,EAAAA,CAChC,OAAwB,OAAVA,GAAU,UAAYuyD,GAAaW,SAASlzD,CAC9D,CAAA,EACWjD,EAAU9L,MAAM8L,QAIhB+iD,GAAQ,SAAUvtD,EAAOC,EACpB,CAARA,IAAQ,SAAUA,EAAMD,GACxBoF,UAAUpP,SAAW,IACrBiK,EAAMD,EACNA,EAAQ,GAGZ,QADI4gE,EAAO,CAAA,EACF7qE,EAAIiK,EAAOjK,EAAIkK,EAAKlK,IACzB6qE,EAAKprE,KAAKO,GACd,OAAO6qE,CACX,EAIWC,EAAS,SAAUpzD,EAAOqzD,EAAAA,CACjC,IAAI/qE,EAAI,EACJ+vB,EAAQ,CAAA,EACZ,GAAItb,EAAQiD,GACR,KAAO1X,EAAI+qE,EAAO/qE,IACd+vB,EAAM/vB,CAAK,EAAA,CAAA,EAAGuG,OAAOmR,CAAAA,MAGzB,MAAO1X,EAAI+qE,EAAO/qE,IACd+vB,EAAM/vB,GAAK0X,EAEnB,OAAOqY,CACX,EAOO,SAASi7C,GAAS9kC,EAAM+kC,EAAcC,EAAAA,CACrCA,IADqCA,SACbA,EAAY,KACxC,IAAIztD,EAAMhd,OAAOylC,CAAAA,EAEjB,OADA+kC,IAA+B,EAC3BxtD,EAAIxd,OAASgrE,EACNxqE,OAAOgd,KAElBwtD,GAA8BxtD,EAAIxd,QACfirE,EAAUjrE,SACzBirE,GAAaJ,EAAOI,EAAWD,EAAeC,EAAUjrE,MAErDirE,GAAAA,EAAUriE,MAAM,EAAGoiE,CAAgBxqE,EAAAA,OAAOgd,CACrD,EAAA,CAIO,IAAI/c,GAAQ,SAAU+c,EAAK0tD,EAAK7jD,GACnC,IAAI8jD,EAAS3tD,EAAI/c,MAAMyqE,GACvB,OAAO7jD,EACD8jD,EAAOviE,MAAM,EAAGye,CAAK/gB,EAAAA,OAAO,CAAC6kE,EAAOviE,MAAMye,CAAK7c,EAAAA,KAAK0gE,CACpDC,CAAAA,CAAAA,EAAAA,CACV,EAgBWC,EAAQ,SAAUvxD,EAAGC,EAAAA,CAC5B,IAAIiqB,EAAIlqB,EAAIC,EAEZ,OAAOiqB,EAAIjqB,EAAI,EAAIiqB,EAAIjqB,EAAIiqB,CAC/B,EAIWsnC,GAAS,SAAUxxD,EAAGC,GAC7B,MAAO,CAAE5R,IAAKiE,KAAK+D,MAAM2J,EAAIC,CAAAA,EAAIwxD,IAAKF,EAAMvxD,EAAGC,CACnD,CAAA,CAAA,EACWyxD,GAAQ,SAAUhsE,GACzB,MAAQirE,CAAAA,EAAUjrE,CAAuB,GAAfA,EAAIS,SAAW,CAC7C,EAQWwrE,EAAW,SAAUjsE,GAC5B,MAAQgsE,CAAAA,GAAMhsE,CAClB,CAAA,EAIWorE,EAAW,SAAUj/C,EAAKqT,EAAAA,CACjC,OAAOysC,EAAS9/C,CAAAA,GAAQA,EAAIxe,QAAQ6xB,CACxC,IADoBrT,EACpB,ECnHW+/C,GAAW,SAAU3oD,EAAGwyC,EAAG/pD,EAAG+N,EAAGvZ,EAAGkD,GAI3C,OAHIqW,IAAM,SAAUA,EAAI,GACpBvZ,aAAgBA,EAAI,GACpBkD,IADoB,SACJA,EAAI,GACjB,IAAI5D,KAAKA,KAAKomB,IAAI3C,EAAGwyC,EAAI,EAAG/pD,EAAG+N,EAAGvZ,EAAGkD,CAAAA,CAAAA,CAChD,EAMWyoE,GAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAA,EAI1DC,GAAU,MAIVC,GAAU,KAMVC,GAAeJ,GAAS,KAAM,EAAG,CAKjCK,EAAAA,GAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAAA,EASjCC,GAAa,SAAUpkC,EAC9B,CAAA,OAAQA,EAAO,GAAM,GAAKA,EAAO,KAAQ,GAAMA,EAAO,KAAQ,CAClE,EACW7zB,GAAS,SAAU2D,GAC1B,OAAOA,aAAiBpY,IAC5B,EACW2sE,GAAc,SAAUv0D,EAAAA,CAC/B,OAAO3D,GAAO2D,KAAWqH,MAAMrH,EAAM2O,QACzC,CAAA,CAAA,EAuBW6lD,GAAY,SAAUptE,EAAAA,CAC7B,OAdsCqtE,EAcbL,GARrBM,EAQettE,EAXCunB,QACN8lD,EAAAA,EAAM9lD,UAIbja,KAAKM,MAAM0/D,EAAeR,EAAAA,EARZ,IAAiBO,EAMlCC,CASR,EAIWC,GAAc,SAAUC,EAC/B,CAAA,OAAO,IAAIhtE,KAAKwsE,GAAazlD,QAAYimD,EAAAA,EAAUV,EACvD,CAAA,EACWW,GAAe,SAAUztE,EAAAA,CAChC,IAAI+oC,EAAQ/oC,EAAK2oB,YACjB,EAAA,OAAOogB,IAAU,GAAKmkC,GAAWltE,EAAK4oB,eAAAA,CAAAA,EAChC,GACAikD,GAAW9jC,EACrB,EAIW2kC,GAAa,SAAU1tE,EAAAA,CAC9B,OAAOitE,GAAYjtE,EAAK8oB,UAAAA,CAAAA,CAC5B,EAIW6kD,GAAa,SAAU7kC,EAAMC,EAAAA,CACpC,IAAI/oC,EAAO4sE,GAAS9jC,EAAMC,EAAQ,EAAG,CACrC,EAAA,MAAO,CAAC2kC,GAAW1tE,GAAOytE,GAAaztE,CAAAA,CAAAA,CAC3C,EAIW4tE,GAAU,SAAU5tE,EAAMm2B,EAAAA,CAEjC,OADAA,EAAOA,GAAQn2B,EACR,IAAIQ,KAAKA,KAAKomB,IAAI5mB,EAAK4oB,eAAAA,EAAkB5oB,EAAK2oB,YAAAA,EAAe3oB,EAAK0oB,WAAcyN,EAAAA,EAAKhuB,SAAYguB,EAAAA,EAAK1sB,aAAc0sB,EAAKhN,WAAAA,EAAcgN,EAAK03C,gBAAAA,CAAAA,CAAAA,CACvJ,EACWC,GAAQ,SAAU9tE,EAEzB,CAAA,OADY,IAAIQ,KAAKR,EAAKunB,QAE9B,CAAA,CAAA,EACWwmD,GAAa,SAAU1iE,EAAAA,CAE9B,QADI2iE,EAAS,CACJ9sE,EAAAA,EAAI,EAAGA,EAAImK,EAAMlK,OAAQD,IAC9B8sE,EAAOrtE,KAAKmtE,GAAMziE,EAAMnK,CAAAA,CAAAA,CAAAA,EAE5B,OAAO8sE,CACX,EAIWxqD,GAAO,SAAUnY,EAAAA,CACxBA,EAAMmY,KAAK,SAAUxI,EAAGC,EAAAA,CACpB,OAAOD,EAAEuM,QAAAA,EAAYtM,EAAEsM,QAAAA,CAC/B,EACA,EACW0mD,GAAoB,SAAU93C,EAAMlQ,GACvCA,aAAkBA,EAAM,IAC5B,IAAIjmB,EAAO,IAAIQ,KAAK21B,CAAAA,EACpB,MAAO,CACH+1C,GAASlsE,EAAK4oB,eAAAA,EAAiB7S,WAAY,EAAG,GAAA,EAC9Cm2D,GAASlsE,EAAK2oB,cAAgB,EAAG,EAAG,GACpCujD,EAAAA,GAASlsE,EAAK0oB,WAAc,EAAA,EAAG,GAC/B,EAAA,IACAwjD,GAASlsE,EAAKgpB,YAAAA,EAAe,EAAG,GAAA,EAChCkjD,GAASlsE,EAAKipB,cAAAA,EAAiB,EAAG,GAAA,EAClCijD,GAASlsE,EAAKkpB,cAAAA,EAAiB,EAAG,GAAA,EAClCjD,EAAM,IAAM,EAAA,EACdta,KAAK,EAAA,CACX,EACWuiE,GAAoB,SAAUC,EACrC,CAAA,IACIC,EADK,qDACKz/C,KAAKw/C,CACnB,EAAA,GAAA,CAAKC,EACD,MAAM,IAAI7/D,MAAM,wBAAwB9G,OAAO0mE,CAAAA,CAAAA,EACnD,OAAO,IAAI3tE,KAAKA,KAAKomB,IAAIrF,SAAS6sD,EAAK,GAAI,EAAK7sD,EAAAA,SAAS6sD,EAAK,CAAA,EAAI,IAAM,EAAG7sD,SAAS6sD,EAAK,CAAA,EAAI,IAAK7sD,SAAS6sD,EAAK,CAAI,EAAA,EAAA,GAAO,EAAG7sD,SAAS6sD,EAAK,CAAI,EAAA,EAAA,GAAO,EAAG7sD,SAAS6sD,EAAK,CAAI,EAAA,EAAA,GAAO,GACvL,EACIC,GAAkB,SAAUruE,EAAMsuE,GAIlC,OAFctuE,EAAK4uC,eAAe,QAAS,CAAE0/B,SAAUA,CAAAA,CAAAA,EAExCzvD,QAAQ,IAAK,KAAO,GACvC,ECpJI0vD,GAA4B,UAAA,CAC5B,SAASA,EAAW/rC,EAAQ7rB,EACxBrP,CAAAA,KAAK4yC,QAAU,KACf5yC,KAAKioC,QAAU,KACfjoC,KAAKknE,QAAU,CAAA,EACflnE,KAAKi4B,MAAQ,EACbj4B,KAAKk7B,OAASA,EACdl7B,KAAKqP,KAAOA,EACR6rB,IAAW,WACXl7B,KAAKioC,QAAU54B,EAAKuR,IACdvR,EAAK83D,OACL,IAAIjuE,KAAKmW,EAAK83D,OAAOlnD,UAAY,CACvCjgB,EAAAA,KAAK4yC,QAAUvjC,EAAKuR,IAAMvR,EAAK+3D,MAAQ,IAAIluE,KAAKmW,EAAK+3D,MAAMnnD,QAAAA,EAAY,CAEvD,GAAXib,IAAW,SAChBl7B,KAAKioC,QAAU54B,EAAKuR,IAAMvR,EAAK2hD,GAAK,IAAI93D,KAAKmW,EAAK2hD,GAAG/wC,QAAY,EAAA,CAAA,EAE5Dib,IAAW,UAChBl7B,KAAK4yC,QAAUvjC,EAAKuR,IAAMvR,EAAK2hD,GAAK,IAAI93D,KAAKmW,EAAK2hD,GAAG/wC,UAAY,CAExE,EAAA,CA6DD,OApDAgnD,EAAWz4D,UAAU64D,OAAS,SAAU3uE,EAClCsH,CAAAA,EAAAA,KAAKi4B,MACP,IAAIqvC,EAAWtnE,KAAK4yC,SAAWl6C,EAAOsH,KAAK4yC,QACvC20B,EAAUvnE,KAAKioC,SAAWvvC,EAAOsH,KAAKioC,QAC1C,GAAIjoC,KAAKk7B,SAAW,UAAW,CAC3B,GAAIosC,EACA,MAAA,GACJ,GAAIC,EACA,MAAO,EACd,SACQvnE,KAAKk7B,SAAW,UACrB,GAAIqsC,EACA,iBAECvnE,KAAKk7B,SAAW,QACrB,MAAIosC,CAAAA,CAAAA,IAEJtnE,KAAKrH,IAAID,OAGb,OAAOsH,KAAKrH,IAAID,EACxB,EAMIuuE,EAAWz4D,UAAU7V,IAAM,SAAUD,EAEjC,CAAA,OADAsH,KAAKknE,QAAQ7tE,KAAKX,CACX,EAAA,EACf,EAOIuuE,EAAWz4D,UAAUqhD,SAAW,UAAA,CAC5B,IAAI/xD,EAAMkC,KAAKknE,QACf,OAAQlnE,KAAKk7B,OAAAA,CACT,IAAK,MACL,IAAK,UACD,OAAOp9B,EAGX,QACI,OAAQA,EAAIjE,OAASiE,EAAIA,EAAIjE,OAAS,CAAK,EAAA,IAAA,CAE3D,EACIotE,EAAWz4D,UAAUg4D,MAAQ,UAAA,CACzB,OAAO,IAAIS,EAAWjnE,KAAKk7B,OAAQl7B,KAAKqP,IAAAA,CAChD,EACW43D,CACX,ECrEIO,EAAAA,GAAgB,SAASpiE,EAAGuO,GAI9B,OAHA6zD,GAAgB14D,OAAO24D,gBAClB,CAAEC,UAAW,CAAA,CAAA,YAAgBnlE,OAAS,SAAU6C,EAAGuO,EAAKvO,CAAAA,EAAEsiE,UAAY/zD,CAAE,GACzE,SAAUvO,EAAGuO,EAAK,CAAA,QAASvU,KAAKuU,EAAO7E,OAAON,UAAUtL,eAAeiI,KAAKwI,EAAGvU,CAAIgG,IAAAA,EAAEhG,GAAKuU,EAAEvU,CAAAA,IACzFooE,GAAcpiE,EAAGuO,CAC1B,CAAA,EAEO,SAASg0D,GAAUviE,EAAGuO,EAC3B,CAAA,GAAWA,OAAAA,GAAM,YAAcA,IAAM,KACjC,MAAM,IAAIi0D,UAAU,uBAAyBvtE,OAAOsZ,CAAAA,EAAK,+BAE7D,EAAA,SAASk0D,IAAO7nE,KAAK0O,YAActJ,CAAI,CADvCoiE,GAAcpiE,EAAGuO,CAAAA,EAEjBvO,EAAEoJ,UAAYmF,IAAM,KAAO7E,OAAOktB,OAAOroB,IAAMk0D,EAAGr5D,UAAYmF,EAAEnF,UAAW,IAAIq5D,EACjF,CAEO,IAAIC,EAAW,WAQpB,OAPAA,EAAWh5D,OAAOi5D,QAAU,SAAkB5+D,EAC1C,CAAA,QAASrM,EAAGlD,EAAI,EAAG0+C,EAAIrvC,UAAUpP,OAAQD,EAAI0+C,EAAG1+C,IAE5C,QAASwF,KADTtC,EAAImM,UAAUrP,CACOkV,EAAAA,OAAON,UAAUtL,eAAeiI,KAAKrO,EAAGsC,CAAAA,IAAI+J,EAAE/J,CAAKtC,EAAAA,EAAEsC,CAE9E,GAAA,OAAO+J,CACV,EACM2+D,EAASllE,MAAM5C,KAAMiJ,UAC9B,EA6KO,SAAS++D,EAActkD,EAAIF,EAAMykD,EACtC,CAAA,GAAIA,GAAQh/D,UAAUpP,SAAW,EAAG,QAAiCqmC,EAAxBtmC,EAAI,EAAGsuE,EAAI1kD,EAAK3pB,OAAYD,EAAIsuE,EAAGtuE,IAAAA,CACxEsmC,GAAQtmC,KAAK4pB,IACR0c,IAAIA,EAAK39B,MAAMiM,UAAU/L,MAAM0I,KAAKqY,EAAM,EAAG5pB,IAClDsmC,EAAGtmC,CAAAA,EAAK4pB,EAAK5pB,CAAAA,GAGrB,OAAO8pB,EAAGvjB,OAAO+/B,GAAM39B,MAAMiM,UAAU/L,MAAM0I,KAAKqY,CACpD,CAAA,CAAA,QAiG8B2kD,iBAAoB,YAAaA,gBCxT/D,ICNWC,EDMPC,GAAoC,SAAUC,EAAAA,CAE9C,SAASD,EAAmBntC,EAAQ7rB,EAAMk5D,EAAAA,CACtC,IAAIC,EAAQF,EAAOn9D,KAAKnL,KAAMk7B,EAAQ7rB,CAAAA,GAASrP,KAE/C,OADAwoE,EAAMD,SAAWA,EACVC,CACV,CAQD,OAbAb,GAAUU,EAAoBC,GAM9BD,EAAmB75D,UAAU7V,IAAM,SAAUD,GACzC,MAAIsH,CAAAA,CAAAA,KAAKuoE,SAAS7vE,EAAMsH,KAAKknE,QAAQrtE,MAAAA,IACjCmG,KAAKknE,QAAQ7tE,KAAKX,CACX,EAAA,GAGnB,EACW2vE,CACX,EAAEpB,EAAAA,EElBEwB,GAAU,CACVC,SAAU,CACN,SACA,SACA,UACA,YACA,WACA,SACA,UAAA,EAEJC,WAAY,CACR,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,UAEJC,EAAAA,OAAQ,CACJC,KAAM,mBACNC,OAAQ,eACRC,aAAc,oBACdC,MAAO,UACP,SAAU,UACV,aAAc,cACd,UAAW,WACX,UAAW,WACX,YAAa,aACb,WAAY,YACZ,UAAW,WACXvH,GAAI,YACJwH,GAAI,SACJC,IAAK,QACLnoB,MAAO,UACPooB,OAAQ,WACRC,MAAO,UACPnF,IAAK,kCACLhT,KAAM,SACNoY,IAAK,QACL,UAAW,WACXxC,MAAO,aACPyC,OAAQ,iBACRC,QAAS,qBACTC,UAAW,uBACXC,SAAU,sBACVC,OAAQ,iBACRC,SAAU,mBACVC,OAAQ,iBACRC,QAAS,eACTC,SAAU,gBACVC,MAAO,aACPC,MAAO,aACPC,IAAK,QACLC,KAAM,UACNC,KAAM,UACNC,OAAQ,cACRC,UAAW,oBACXC,QAAS,eACTC,SAAU,gBACVC,SAAU,gBACVC,MAAO,0BC5DX5uD,GAAW,SAAU0J,EAAKqT,EAAAA,CAC1B,OAAOrT,EAAIxe,QAAQ6xB,CAAAA,MACvB,EACI8xC,GAAiB,SAAU/wE,EAAM,CAAA,OAAOA,EAAG8U,YAC3Ck8D,GAAuB,SAAUnpC,EAAMC,EAAO58B,EAAAA,CAAO,MAAO,GAAG1E,OAAOshC,EAAO,GAAA,EAAKthC,OAAO0E,EAAK,MAAM1E,OAAOqhC,CAAAA,GAS3GopC,GAAwB,WACxB,SAASA,EAAOC,EAAOC,EAASC,EAAUC,EAWtC,CAAA,GAVIF,IAUJ,SAV0BA,EAAUJ,IAChCK,IAAa,SAAUA,EAAWtC,IAClCuC,IAAkB,SAAUA,EAAgBL,IAChD3qE,KAAKqN,KAAO,CACZrN,EAAAA,KAAK+qE,SAAWA,GAAYtC,GAC5BzoE,KAAK8qE,QAAUA,EACf9qE,KAAKgrE,cAAgBA,EACrBhrE,KAAK6qE,MAAQA,EACb7qE,KAAK1D,QAAUuuE,EAAMvuE,QACrB0D,KAAKirE,YAAcJ,EAAMI,YACrBjrE,KAAKirE,YAAYC,WAAY,CAC7B,IAAIA,EAAa,CAAG/qE,EAAAA,OAAOH,KAAK1D,QAAQ4uE,YACpCC,EAAc,CAAA,EAAGhrE,OAAOH,KAAK1D,QAAQ6uE,WACzCD,EAAAA,EAAWhvD,KAAK,SAAUxI,EAAGC,EAAK,CAAA,OAAOD,EAAIC,CAAE,GAC/Cw3D,EAAYjvD,KAAK,SAAUxI,EAAGC,GAAK,OAAOA,EAAID,CAAE,CAAA,EAEhD1T,KAAKkrE,WAAaA,EAAW/qE,OAAOgrE,CAAAA,EAC/BnrE,KAAKkrE,WAAWrxE,SACjBmG,KAAKkrE,WAAa,KACzB,CACD,GAAI7G,EAAUrkE,KAAKirE,YAAYG,SAAAA,EAAY,CACvC,IAAIA,EAAa/8D,EAAQrO,KAAKirE,YAAYG,SAAAA,EAEpCprE,KAAKirE,YAAYG,UADjB,CAACprE,KAAKirE,YAAYG,SAEpBhvE,EAAAA,EAAO/B,OAAO+wE,CAAAA,EAClBprE,KAAKorE,UAAY,CACbC,SAAUD,EAAUz4C,OAAO,SAAUoxC,EAAAA,CACjC,MAAQA,CAAAA,EAAQzrB,CACpC,CACgBgzB,EAAAA,UAAWF,EAAUz4C,OAAO,SAAUoxC,EAClC,CAAA,MAAOn1D,EAAQm1D,EAAQzrB,CAC3C,CACgBizB,EAAAA,WAAYnvE,EAAK2K,QAAQ,IACG,IAD5BwkE,IACInvE,EAAK2K,QAAQ,QAAW,IACxB3K,EAAK2K,QAAQ,IAAA,QACb3K,EAAK2K,QAAQ,IACW,IAFX,IAEb3K,EAAK2K,QAAQ,IAAA,IAAW,IACxB3K,EAAK2K,QAAQ,IACW,IAFX,IAEb3K,EAAK2K,QAAQ,QAAW,GAC5BykE,WAAYpvE,EAAK2K,QAAQ,QAAW,IAChC3K,EAAK2K,QAAQ,IAAA,QACb3K,EAAK2K,QAAQ,IAAA,IADA,IAEb3K,EAAK2K,QAAQ,IACW,IAFX,IAEb3K,EAAK2K,QAAQ,IAAA,IAAW,IACxB3K,EAAK2K,QAAQ,IACW,IAFX,IAEb3K,EAAK2K,QAAQ,QAAW,IAEhC,IAAI0kE,EAAe,SAAU/3D,EAAGC,GAC5B,OAAOD,EAAEqwD,QAAUpwD,EAAEowD,OACrC,EACY/jE,KAAKorE,UAAUC,SAASnvD,KAAKuvD,CAC7BzrE,EAAAA,KAAKorE,UAAUE,UAAUpvD,KAAKuvD,CACzBzrE,EAAAA,KAAKorE,UAAUC,SAASxxE,SACzBmG,KAAKorE,UAAUC,SAAW,MACzBrrE,KAAKorE,UAAUE,UAAUzxE,SAC1BmG,KAAKorE,UAAUE,UAAY,KAClC,MAEGtrE,KAAKorE,UAAY,IAExB,CAmTD,OA5SAR,EAAOc,mBAAqB,SAAUb,EAAAA,CAIlC,GAFMA,EAAAA,EAAMvuE,QAAQqvE,QAAQf,EAAOgB,cAE/Bf,EAAMI,YAAYpE,OAASgE,EAAMI,YAAYr1B,MAC7C,MAAA,GACJ,QAAS3rC,KAAO4gE,EAAMI,YAAa,CAC/B,GAAIpvD,GAAS,CAAC,UAAW,OAAQ,OAAQ,MAAS5R,EAAAA,CAAAA,EAC9C,SACJ,GAAA,CAAK4R,GAAS+uD,EAAOgB,YAAYf,EAAMvuE,QAAQqvE,IAAO1hE,EAAAA,CAAAA,EAClD,QACP,CACD,MAXiB,EAYzB,EACI2gE,EAAOp8D,UAAUk9D,mBAAqB,UAAA,CAClC,OAAOd,EAAOc,mBAAmB1rE,KAAK6qE,KAAAA,CAC9C,EAQID,EAAOp8D,UAAUC,SAAW,UAAA,CACxB,IAAIq8D,EAAU9qE,KAAK8qE,QACnB,GAAA,EAAM9qE,KAAK1D,QAAQqvE,QAAQf,EAAOgB,aAC9B,OAAOd,EAAQ,yDAAA,EAMnB,GAJA9qE,KAAKqN,KAAO,CAACy9D,EAAQ,OAGrB9qE,CAAAA,EAAAA,KAAK6rE,EAAMC,YAAY9rE,KAAK1D,QAAQqvE,IAAAA,CAAAA,EAAAA,EAChC3rE,KAAK1D,QAAQuqE,MAAO,CACpB7mE,KAAKrH,IAAImyE,EAAQ,OACjB,CAAA,EAAA,IAAIjE,EAAQ7mE,KAAK1D,QAAQuqE,MACzB7mE,KAAKrH,IAAIqH,KAAKgrE,cAAcnE,EAAMvlD,eAAAA,EAAkBthB,KAAK+qE,SAASpC,WAAW9B,EAAMxlD,YAAAA,CAAAA,EAAgBwlD,EAAMzlD,WAC5G,CAAA,CAAA,CAAA,MACQphB,KAAK1D,QAAQs5C,OAClB51C,KAAKrH,IAAImyE,EAAQ,KAAA,CAAA,EACZnyE,IAAIqH,KAAK1D,QAAQs5C,MAAMnnC,SAAAA,CAAAA,EACvB9V,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQs5C,OAASk1B,EAAQ,OAAA,EAAWA,EAAQ,MAAA,CAAA,EAI1E,OAFK9qE,KAAK0rE,mBAAAA,GACN1rE,KAAKrH,IAAImyE,EAAQ,iBACd9qE,CAAAA,EAAAA,KAAKqN,KAAKhJ,KAAK,GAC9B,EACIumE,EAAOp8D,UAAUw9D,OAAS,WACtB,IAAIlB,EAAU9qE,KAAK8qE,QACf9qE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,SAAAA,CAAAA,EACnCzO,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAAA,EAAYmsC,EAAQ,OAAA,EAAWA,EAAQ,MACjF,CAAA,CAAA,EACIF,EAAOp8D,UAAUy9D,SAAW,UACxB,CAAA,IAAInB,EAAU9qE,KAAK8qE,QACf9qE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,YACnCzO,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAAA,EAC5BmsC,EAAQ,SAAA,EACRA,EAAQ,QACtB,CAAA,CAAA,EACIF,EAAOp8D,UAAU09D,MAAQ,UACrB,CAAA,IAAIpB,EAAU9qE,KAAK8qE,QACf9qE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,YAC/BzO,KAAKorE,WAAaprE,KAAKorE,UAAUG,WACjCvrE,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAAA,EAC5BmsC,EAAQ,UAAA,EACRA,EAAQ,SAGd9qE,CAAAA,EAAAA,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAYmsC,EAAAA,EAAQ,MAAUA,EAAAA,EAAQ,KAExE9qE,CAAAA,EAAAA,KAAKirE,YAAYkB,UACjBnsE,KAAKrH,IAAImyE,EAAQ,OACjB9qE,KAAKosE,SAAAA,GAELpsE,KAAKkrE,WACLlrE,KAAKqsE,YAEArsE,EAAAA,KAAKorE,UACVprE,KAAKssE,aAEAtsE,KAAKirE,YAAYsB,QACtBvsE,KAAKwsE,SAEjB,EACI5B,EAAOp8D,UAAUi+D,OAAS,WACtB,IAAI3B,EAAU9qE,KAAK8qE,QACf9qE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,SAAAA,CAAAA,EAAY9V,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,UAAYmsC,EAAQ,OAAA,EAAWA,EAAQ,MAAA,CAAA,EAE/G9qE,KAAKorE,WAAaprE,KAAKorE,UAAUG,WAC7BvrE,KAAK1D,QAAQqiC,WAAa,EAC1B3+B,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,UAC5BmsC,EAAQ,UAAA,EACRA,EAAQ,SAAA,CAAA,EAGd9qE,KAAKrH,IAAImyE,EAAQ,IAAOnyE,CAAAA,EAAAA,IAAImyE,EAAQ,UAAA,CAAA,EAGnC9qE,KAAKorE,WAAaprE,KAAKorE,UAAUI,WACtCxrE,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAAA,EAAYmsC,EAAQ,MAAUA,EAAAA,EAAQ,KAG1C,CAAA,GAA1B9qE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAImyE,EAAQ,MACjB9qE,CAAAA,EAAAA,KAAKirE,YAAYkB,UACjBnsE,KAAKrH,IAAImyE,EAAQ,IACjB9qE,CAAAA,EAAAA,KAAKosE,YAELpsE,KAAKkrE,WACLlrE,KAAKqsE,YAAAA,EAEArsE,KAAKorE,WACVprE,KAAKssE,WAELtsE,EAAAA,KAAKirE,YAAYsB,QACjBvsE,KAAKwsE,QAGrB,EAAA,EACI5B,EAAOp8D,UAAUk+D,QAAU,UACvB,CAAA,IAAI5B,EAAU9qE,KAAK8qE,QACf9qE,KAAKirE,YAAYkB,SACbnsE,KAAK1D,QAAQqiC,WAAa,IAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,YAAY9V,IAAImyE,EAAQ,QACnD9qE,CAAAA,EAAAA,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QACzB3+B,GAAAA,KAAKrH,IAAImyE,EAAQ,IAKzB9qE,CAAAA,GAAAA,KAAKosE,aAGDpsE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,YAEnCzO,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAAA,EAC5BmsC,EAAQ,QAAA,EACRA,EAAQ,OAEd9qE,CAAAA,GAAAA,KAAKkrE,WACLlrE,KAAKqsE,cAEArsE,KAAKorE,WAAaprE,KAAKorE,UAAUG,WACtCvrE,KAAKrH,IAAImyE,EAAQ,IAAA,CAAA,EAAOnyE,IAAImyE,EAAQ,UAAA,CAAA,EAE/B9qE,KAAKorE,WACVprE,KAAKssE,WAEjB,CAAA,EACI1B,EAAOp8D,UAAUm+D,OAAS,UACtB,CAAA,IAAI7B,EAAU9qE,KAAK8qE,QACf9qE,KAAKirE,YAAYkB,SACbnsE,KAAK1D,QAAQqiC,WAAa,IAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,SAC/BzO,CAAAA,EAAAA,KAAKrH,IAAImyE,EAAQ,OAAA,CAAA,GAKrB9qE,KAAKosE,SAAAA,IAGDpsE,KAAK1D,QAAQqiC,WAAa,GAC1B3+B,KAAKrH,IAAIqH,KAAK1D,QAAQqiC,SAASlwB,YAEnCzO,KAAKrH,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQqiC,QAAAA,EAAYmsC,EAAQ,OAAA,EAAWA,EAAQ,MAEzE9qE,CAAAA,GAAAA,KAAKkrE,WACLlrE,KAAKqsE,cAEArsE,KAAKorE,WACVprE,KAAKssE,WAAAA,EAELtsE,KAAK1D,QAAQswE,WACb5sE,KAAKrH,IAAImyE,EAAQ,QACZnyE,CAAAA,EAAAA,IAAIqH,KAAKkW,KAAKlW,KAAK1D,QAAQswE,UAAW5sE,KAAKikE,IAAK6G,EAAQ,KACxDnyE,CAAAA,CAAAA,EAAAA,IAAImyE,EAAQ,KAAA,CAAA,EAEjB9qE,KAAK1D,QAAQuwE,UACb7sE,KAAKrH,IAAImyE,EAAQ,IACZnyE,CAAAA,EAAAA,IAAIqH,KAAK+rE,OAAO/rE,KAAK1D,QAAQuwE,SAAShzE,MACrCixE,EAAAA,EAAQ,SACRA,EAAQ,MAAA,CAAA,EACTnyE,IAAIqH,KAAKkW,KAAKlW,KAAK1D,QAAQuwE,SAAUhqE,OAAWioE,EAAQ,KAEzE,CAAA,CAAA,CAAA,EACIF,EAAOp8D,UAAU69D,YAAc,UAC3B,CAAA,IAAIvB,EAAU9qE,KAAK8qE,QACf9qE,KAAKorE,WAAaprE,KAAKorE,UAAUC,SACjCrrE,KAAKrH,IAAImyE,EAAQ,OACZnyE,IAAIqH,KAAKkW,KAAKlW,KAAKorE,UAAUC,SAAUrrE,KAAK8sE,YAAahC,EAAQ,QACjEnyE,IAAImyE,EAAQ,KACZnyE,CAAAA,EAAAA,IAAIqH,KAAKkW,KAAKlW,KAAKkrE,WAAYlrE,KAAKikE,IAAK6G,EAAQ,IAAA,CAAA,CAAA,EAGtD9qE,KAAKrH,IAAImyE,EAAQ,QAAWnyE,CAAAA,EAAAA,IAAIqH,KAAKkW,KAAKlW,KAAKkrE,WAAYlrE,KAAKikE,IAAK6G,EAAQ,QAGzF,EACIF,EAAOp8D,UAAU89D,WAAa,WAC1B,IAAIxB,EAAU9qE,KAAK8qE,QACf9qE,KAAKorE,UAAUC,UAAAA,CAAarrE,KAAKorE,UAAUG,YAC3CvrE,KAAKrH,IAAImyE,EAAQ,IAAA,CAAA,EAAOnyE,IAAIqH,KAAKkW,KAAKlW,KAAKorE,UAAUC,SAAUrrE,KAAK8sE,WAAAA,CAAAA,EAEpE9sE,KAAKorE,UAAUE,YACXtrE,KAAKorE,UAAUC,UACfrrE,KAAKrH,IAAImyE,EAAQ,KACrB9qE,CAAAA,EAAAA,KAAKrH,IAAImyE,EAAQ,QAAA,CAAA,EAAWnyE,IAAIqH,KAAKkW,KAAKlW,KAAKorE,UAAUE,UAAWtrE,KAAK8sE,YAAahC,EAAQ,KAAA,CAAA,CAAA,EAE1G,EACIF,EAAOp8D,UAAUg+D,QAAU,UAAA,CACvB,IAAI1B,EAAU9qE,KAAK8qE,QACnB9qE,KAAKrH,IAAImyE,EAAQ,OAAOnyE,IAAIqH,KAAKkW,KAAKlW,KAAKirE,YAAYsB,OAAQ1pE,OAAWioE,EAAQ,KAAA,CAAA,CAAA,CAC1F,EACIF,EAAOp8D,UAAU49D,SAAW,UAAA,CACxBpsE,KAAKrH,IAAIqH,KAAKkW,KAAKlW,KAAK1D,QAAQ6vE,QAASnsE,KAAK+sE,UAAW/sE,KAAK8qE,QAAQ,KAC9E,CAAA,CAAA,CAAA,EACIF,EAAOp8D,UAAUy1D,IAAM,SAAU3rB,EAAAA,CAE7B,IAAI2rB,EADJ3rB,EAAIr+B,SAASq+B,EAAE7pC,SAAY,EAAA,EAAA,EAE3B,IAAIq8D,EAAU9qE,KAAK8qE,QACnB,GAAIxyB,IAAJ,GACI,OAAOwyB,EAAQ,MAAA,EACnB,IAAIkC,EAAOhnE,KAAK+mB,IAAIurB,GACpB,OAAQ00B,EAAAA,CACJ,IAAK,GACL,IAAK,IACL,IAAK,IACD/I,EAAM+I,EAAOlC,EAAQ,IAAA,EACrB,MACJ,IAAK,GACL,IAAK,IACD7G,EAAM+I,EAAOlC,EAAQ,IACrB,EAAA,MACJ,IAAK,GACL,IAAK,IACD7G,EAAM+I,EAAOlC,EAAQ,MACrB,MACJ,QACI7G,EAAM+I,EAAOlC,EAAQ,IAE7B,CAAA,CAAA,OAAOxyB,EAAI,EAAI2rB,EAAM,IAAM6G,EAAQ,MAAU7G,EAAAA,CACrD,EACI2G,EAAOp8D,UAAUu+D,UAAY,SAAU5d,GACnC,OAAOnvD,KAAK+qE,SAASpC,WAAWxZ,EAAI,CAC5C,CAAA,EACIyb,EAAOp8D,UAAUs+D,YAAc,SAAUG,EAAAA,CACrC,IAAIlJ,EAAUO,GAAS2I,CAASA,GAAAA,EAAO,GAAK,EAAIA,EAAK7I,aACrD,EAAA,OAAS6I,EAAK30B,EAAIt4C,KAAKikE,IAAIgJ,EAAK30B,CAAAA,EAAK,IAAM,IACvCt4C,KAAK+qE,SAASrC,SAAS3E,EACnC,EACI6G,EAAOp8D,UAAUu9D,OAAS,SAAUzzB,EAChC,CAAA,OAAOA,EAAI,KAAQ,CAC3B,EACIsyB,EAAOp8D,UAAU7V,IAAM,SAAUmE,EAG7B,CAAA,OAFAkD,KAAKqN,KAAKhU,KAAK,GACf2G,EAAAA,KAAKqN,KAAKhU,KAAKyD,GACRkD,IACf,EACI4qE,EAAOp8D,UAAU0H,KAAO,SAAUqP,EAAKja,EAAU4hE,EAAYC,GACzD,IAAI3E,EAAQxoE,KACRmtE,IAAU,SAAUA,EAAQ,KAC3B9+D,EAAQkX,CAAAA,IACTA,EAAM,CAACA,CAAAA,GAiBXja,EACIA,GACI,SAAU8hE,EACN,CAAA,OAAOA,EAAE3+D,SAAAA,CAC7B,EACQ,IAAI4+D,EAAe,SAAU7wB,EAAAA,CACzB,OAAOlxC,GAAYA,EAASH,KAAKq9D,EAAOhsB,EACpD,EACQ,OAAI0wB,EAvBY,SAAUvjD,EAAO2jD,EAAWC,EAAAA,CAExC,QADIr3D,EAAO,GACFtc,EAAI,EAAGA,EAAI+vB,EAAM9vB,OAAQD,IAC1BA,IAAM,IACFA,IAAM+vB,EAAM9vB,OAAS,EACrBqc,GAAQ,IAAMq3D,EAAiB,IAG/Br3D,GAAQo3D,EAAY,KAG5Bp3D,GAAQyT,EAAM/vB,CAElB,EAAA,OAAOsc,CACnB,EAU6BqP,EAAI/qB,IAAI6yE,GAAeF,EAAOD,CAAAA,EAGxC3nD,EAAI/qB,IAAI6yE,GAAchpE,KAAK8oE,EAAQ,GAEtD,CAAA,EACWvC,CACX,ICnYI4C,GAAwB,UAAA,CACxB,SAASA,EAAOC,EAAAA,CACZztE,KAAK0tE,KAAAA,GACL1tE,KAAKytE,MAAQA,CAChB,CAiED,OAhEAD,EAAOh/D,UAAU3K,MAAQ,SAAUwJ,GAG/B,OAFArN,KAAKqN,KAAOA,EACZrN,KAAK0tE,KAAO,GACL1tE,KAAK2tE,WAAAA,CACpB,EACIH,EAAOh/D,UAAUo/D,OAAS,UAAA,CACtB,OAAO5tE,KAAK0tE,MAAQ1tE,KAAK6tE,SAAW,IAC5C,EACIL,EAAOh/D,UAAUm/D,WAAa,UAC1B,CAAA,IAAIG,EACAC,EACJ/tE,KAAK6tE,OAAS,KACd7tE,KAAKsR,MAAQ,KACb,EAAG,CACC,GAAItR,KAAK0tE,KACL,MAAO,GAGX,QAASM,KADTF,EAAO,KACY9tE,KAAKytE,MAAO,CAE3B,IAAI3uD,EADG9e,KAAKytE,MAAMO,GACD3mD,KAAKrnB,KAAKqN,IACvByR,EAAAA,IACIgvD,IAAS,MAAQhvD,EAAM,CAAGjlB,EAAAA,OAASi0E,EAAK,CAAGj0E,EAAAA,UAC3Ci0E,EAAOhvD,EACPivD,EAAaC,EAGxB,CAMD,GALIF,GAAQ,OACR9tE,KAAKqN,KAAOrN,KAAKqN,KAAKoa,OAAOqmD,EAAK,CAAA,EAAGj0E,MACnB,EAAdmG,KAAKqN,OAAS,KACdrN,KAAK0tE,KAAO,KAEhBI,GAAQ,KAIR,OAHA9tE,KAAK0tE,KAAAA,GACL1tE,KAAK6tE,OAAS,KAAA,KACd7tE,KAAKsR,MAAQ,KAG7B,OAAiBy8D,IAAe,QAGxB,OAFA/tE,KAAK6tE,OAASE,EACd/tE,KAAKsR,MAAQw8D,EAAAA,EAErB,EACIN,EAAOh/D,UAAU64D,OAAS,SAAUvxD,EAAAA,CAChC,GAAI9V,KAAK6tE,SAAW/3D,EAAM,CACtB,GAAI9V,KAAKsR,MAAO,CACZ,IAAI28D,EAAIjuE,KAAKsR,MAEb,OADAtR,KAAK2tE,aACEM,CACV,CAED,OADAjuE,KAAK2tE,eAER,CACD,MAAO,EACf,EACIH,EAAOh/D,UAAU0/D,aAAe,UAAA,CAC5B,OAAOluE,KAAKqnE,OAAO,QAC3B,CAAA,EACImG,EAAOh/D,UAAU2/D,OAAS,SAAUr4D,EAAAA,CAChC,GAAI9V,KAAKqnE,OAAOvxD,CACZ,EAAA,MAAA,GACJ,MAAM,IAAI7O,MAAM,YAAc6O,EAAO,cAAgB9V,KAAK6tE,MAClE,CAAA,EACWL,CACX,EACe,EAAA,SAASY,GAAU/gE,EAAM09D,EAAAA,CAChCA,IADgCA,SACTA,EAAWtC,IACtC,IAAInsE,EAAU,CAAA,EACV+xE,EAAM,IAAIb,GAAOzC,EAASnC,QAC9B,OAAKyF,EAAIxqE,MAAMwJ,CAAAA,GAIf,WAEIghE,EAAIF,OAAO,OACX,EAAA,IAAI71B,EAAI+1B,EAAIH,aAAAA,EAGZ,GAFI51B,IACAh8C,EAAQqiC,SAAW1kB,SAASq+B,EAAE,CAAI,EAAA,EAAA,GAClC+1B,EAAIT,OAAAA,EACJ,MAAM,IAAI3mE,MAAM,gBACpB,EAAA,OAAQonE,EAAIR,OAAAA,CACR,IAAK,SACDvxE,EAAQqvE,KAAOE,EAAMK,MACjBmC,EAAIV,WAAAA,IACJW,EACAC,EAAAA,EAAAA,GAEJ,MAGJ,IAAK,aACDjyE,EAAQqvE,KAAOE,EAAMY,OACrBnwE,EAAQ8uE,UAAY,CAACS,EAAM2C,GAAI3C,EAAM4C,GAAI5C,EAAM6C,GAAI7C,EAAM8C,GAAI9C,EAAM+C,EAAAA,EACnEP,EAAIV,WAAAA,EACJW,EACAC,EAAAA,EAAAA,EACA,MACJ,IAAK,UACDjyE,EAAQqvE,KAAOE,EAAMY,OACjB4B,EAAIV,WACJkB,IAAAA,EAAAA,EACAP,IACAC,EAEJ,GAAA,MACJ,IAAK,UACDjyE,EAAQqvE,KAAOE,EAAMG,OACjBqC,EAAIV,eACJkB,EACAN,EAAAA,EAAAA,GAEJ,MACJ,IAAK,YACDjyE,EAAQqvE,KAAOE,EAAMI,SACjBoC,EAAIV,WACJkB,IAAAA,EAAAA,EACAN,EAEJ,GAAA,MACJ,IAAK,WACDjyE,EAAQqvE,KAAOE,EAAMa,QACjB2B,EAAIV,WAAAA,IACJkB,EACAN,EAAAA,EAAAA,GAEJ,MACJ,IAAK,UACDjyE,EAAQqvE,KAAOE,EAAMc,OACjB0B,EAAIV,WACJkB,IAAAA,EAAAA,EACAN,KAEJ,MACJ,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,SACDjyE,EAAQqvE,KAAOE,EAAMY,OACrB,IAAIxiE,EAAMokE,EAAIR,OACTpmD,OAAO,EAAG,CAAA,EACV26B,YAEL,EAAA,GADA9lD,EAAQ8uE,UAAY,CAACS,EAAM5hE,CAAAA,CAAAA,EAAAA,CACtBokE,EAAIV,WACL,EAAA,OAEJ,KAAOU,EAAIhH,OAAO,OAAU,GAAA,CACxB,GAAIgH,EAAIT,SACJ,MAAM,IAAI3mE,MAAM,gBAAA,EACpB,IAAI6nE,EAAMC,EAAAA,EACV,GAAKD,CAAAA,EACD,MAAM,IAAI7nE,MAAM,qBAAuBonE,EAAIR,OAAS,oBAExDvxE,EAAAA,EAAQ8uE,UAAU/xE,KAAKwyE,EAAMiD,CAC7BT,CAAAA,EAAAA,EAAIV,WACP,CAAA,CACDW,IA6LZ,UACID,CAAAA,EAAIhH,OAAO,IAAA,EACXgH,EAAIhH,OAAO,KAAA,EACX,IAAIpD,EAAM+K,IACV,GAAK/K,EAIL,IAFA3nE,EAAQ4uE,WAAa,CAACjH,CAAAA,EACtBoK,EAAIV,WAAAA,EACGU,EAAIhH,OAAO,OAAU,GAAA,CAExB,KADApD,EAAM+K,EAAAA,GAEF,MAAM,IAAI/nE,MAAM,qBAAuBonE,EAAIR,OAAS,uBAExDvxE,EAAQ4uE,WAAW7xE,KAAK4qE,CAAAA,EACxBoK,EAAIV,WACP,CAAA,CACJ,EA5MWsB,EACAV,IACA,MACJ,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,WAGD,GAFAjyE,EAAQqvE,KAAOE,EAAMc,OACrBrwE,EAAQ6vE,QAAU,CAAC+C,EAAAA,CAAAA,EAAAA,CACdb,EAAIV,WACL,EAAA,OAEJ,KAAOU,EAAIhH,OAAO,OAAU,GAAA,CACxB,GAAIgH,EAAIT,SACJ,MAAM,IAAI3mE,MAAM,gBAAA,EACpB,IAAIkoD,EAAI+f,EAAAA,EACR,GAAK/f,CAAAA,EACD,MAAM,IAAIloD,MAAM,qBAAuBonE,EAAIR,OAAS,kBAExDvxE,EAAAA,EAAQ6vE,QAAQ9yE,KAAK81D,CACrBkf,EAAAA,EAAIV,WACP,CAAA,CACDkB,IACAN,EACA,EAAA,MACJ,QACI,MAAM,IAAItnE,MAAM,gBAAA,CAAA,CAE3B,EA7HDkoE,EACO7yE,GAFI,KA+HX,SAASuyE,GACL,CAAA,IAAIpN,EAAK4M,EAAIhH,OAAO,IAChB6B,EAAAA,EAAMmF,EAAIhH,OAAO,KAAA,EACrB,GAAM5F,GAAMyH,EAEZ,EAAG,CACC,IAAIjF,EAAM+K,IACNF,EAAMC,EAAAA,EACN5f,EAAI+f,EAAAA,EAER,GAAIjL,EAEI6K,GACAT,EAAIV,WAAAA,EACCrxE,EAAQ8uE,YACT9uE,EAAQ8uE,UAAY,CAAA,GACxB9uE,EAAQ8uE,UAAU/xE,KAAKwyE,EAAMiD,CAAAA,EAAK7K,IAAIA,CAGjC3nE,CAAAA,IAAAA,EAAQ4uE,aACT5uE,EAAQ4uE,WAAa,CACzB5uE,GAAAA,EAAQ4uE,WAAW7xE,KAAK4qE,GACxBoK,EAAIhH,OAAO,QAId,WAAIyH,EACLT,EAAIV,WAAAA,EACCrxE,EAAQ8uE,YACT9uE,EAAQ8uE,UAAY,CAAA,GACxB9uE,EAAQ8uE,UAAU/xE,KAAKwyE,EAAMiD,CAE5B,CAAA,UAAIT,EAAIR,SAAW,aACpBQ,EAAIV,WAAAA,EACCrxE,EAAQ8uE,YACT9uE,EAAQ8uE,UAAY,CAACS,EAAM2C,GAAI3C,EAAM4C,GAAI5C,EAAM6C,GAAI7C,EAAM8C,GAAI9C,EAAM+C,EAAAA,WAGlEP,EAAIR,SAAW,UAAW,CAC/BQ,EAAIV,WACJ,EAAA,IAAIr1B,EAAI+1B,EAAIH,eACZ,GAAK51B,CAAAA,EACD,MAAM,IAAIrxC,MAAM,qBAAuBonE,EAAIR,OAAS,wBAAA,EAGxD,IADAvxE,EAAQuwE,SAAW,CAAC5yD,SAASq+B,EAAE,CAAI,EAAA,EAAA,CAAA,EAC5B+1B,EAAIhH,OAAO,UAAU,CAExB,GAAA,EADA/uB,EAAI+1B,EAAIH,gBAEJ,MAAM,IAAIjnE,MAAM,qBAAuBonE,EAAIR,OAAS,qBAAA,EAExDvxE,EAAQuwE,SAASxzE,KAAK4gB,SAASq+B,EAAE,CAAI,EAAA,EAAA,CAAA,CACxC,CACJ,KACI,CAAA,GAAA,CAAI6W,EAOL,OANAkf,EAAIV,WAAAA,EACCrxE,EAAQ6vE,UACT7vE,EAAQ6vE,QAAU,CAAA,GACtB7vE,EAAQ6vE,QAAQ9yE,KAAK81D,CAIxB,CAAA,CACJ,OAAQkf,EAAIhH,OAAO,OAAYgH,GAAAA,EAAIhH,OAAO,KAAA,GAAUgH,EAAIhH,OAAO,IAAA,EACnE,CACD,SAASiH,IAEL,GADSD,EAAIhH,OAAO,IAAA,EAGpB,EAAG,CACC,IAAI/uB,EAAI+1B,EAAIH,eACZ,GAAK51B,CAAAA,EACD,MAAM,IAAIrxC,MAAM,qBAAuBonE,EAAIR,OAAS,iBAAA,EAGxD,IADAvxE,EAAQiwE,OAAS,CAACtyD,SAASq+B,EAAE,CAAI,EAAA,EAAA,CAAA,EAC1B+1B,EAAIhH,OAAO,UAAU,CAExB,GAAA,EADA/uB,EAAI+1B,EAAIH,gBAEJ,MAAM,IAAIjnE,MAAM,qBAAuBonE,EAAIR,OAAS,iBAAA,EAExDvxE,EAAQiwE,OAAOlzE,KAAK4gB,SAASq+B,EAAE,CAAI,EAAA,EAAA,CAAA,CACtC,CACb,OAAiB+1B,EAAIhH,OAAO,OAAA,GAAYgH,EAAIhH,OAAO,IAC9C,EAAA,CACD,SAAS6H,GACL,CAAA,OAAQb,EAAIR,OAAAA,CACR,IAAK,UACD,MAAO,GACX,IAAK,WACD,MAAO,GACX,IAAK,QACD,MAAO,GACX,IAAK,QACD,MAAO,GACX,IAAK,MACD,MAAO,GACX,IAAK,OACD,MAAO,GACX,IAAK,OACD,MAAO,GACX,IAAK,SACD,MAAO,GACX,IAAK,YACD,MAAO,GACX,IAAK,UACD,MAAO,IACX,IAAK,WACD,MAAO,IACX,IAAK,WACD,MAAO,IACX,QACI,MAAA,GAEX,CACD,SAASkB,GACL,CAAA,OAAQV,EAAIR,OACR,CAAA,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,SACD,OAAOQ,EAAIR,OAAOpmD,OAAO,EAAG,CAAA,EAAG26B,YACnC,EAAA,QACI,QAEX,CAAA,CACD,SAAS4sB,GAAAA,CACL,OAAQX,EAAIR,OAAAA,CACR,IAAK,OAED,OADAQ,EAAIV,WAAAA,EAAAA,GAER,IAAK,QAED,OADAU,EAAIV,WACG,EAAA,EACX,IAAK,SAED,OADAU,EAAIV,WAAAA,EACGU,EAAIhH,OAAO,MAAA,EAAA,GAAe,EACrC,IAAK,QAED,OADAgH,EAAIV,WAAAA,EACGU,EAAIhH,OAAO,MAAA,EAAA,GAAe,EACrC,IAAK,MACD,IAAI4G,EAAIh0D,SAASo0D,EAAI/8D,MAAM,CAAA,EAAI,EAC/B,EAAA,GAAI28D,QAAYA,EAAI,IAChB,MAAM,IAAIhnE,MAAM,qBAAuBgnE,CAE3C,EAAA,OADAI,EAAIV,WACGU,EAAAA,EAAIhH,OAAO,MAAA,EAAA,CAAW4G,EAAIA,EACrC,QACI,MAAO,EAAA,CAElB,CAkBD,SAASM,GACL,CAAA,GAAIF,EAAIR,SAAW,QAAS,CACxB,IAAIn1E,EAAOQ,KAAK2rB,MAAMwpD,EAAIhhE,IAAAA,EAC1B,IAAK3U,EACD,MAAM,IAAIuO,MAAM,2BAA6BonE,EAAIhhE,IAAAA,EACrD/Q,EAAQuqE,MAAQ,IAAI3tE,KAAKR,CAAAA,CAC5B,MACQ21E,EAAIhH,OAAO,KAChB/qE,IAAAA,EAAQs5C,MAAQ37B,SAASo0D,EAAI/8D,MAAM,CAAA,EAAI,EACvC+8D,EAAAA,EAAIF,OAAO,QAGlB,EAAA,CACL,CH3XO,SAASiB,GAAqBzD,EACjC,CAAA,OAAOA,EAAOvD,EAAU4D,MAC5B,EAXA,SAAW5D,EACPA,CAAAA,EAAUA,EAAkB,OAAI,CAAA,EAAK,SACrCA,EAAUA,EAAmB,QAAI,CAAA,EAAK,UACtCA,EAAUA,EAAkB,OAAI,CAAA,EAAK,SACrCA,EAAUA,EAAiB,MAAI,CAAA,EAAK,QACpCA,EAAUA,EAAkB,OAAI,CAAA,EAAK,SACrCA,EAAUA,EAAoB,SAAI,CAAK,EAAA,WACvCA,EAAUA,EAAoB,SAAI,CAAK,EAAA,UAC1C,GAAEA,IAAcA,EAAY,CAAE,IIqF/B,IAAIiH,GAAW,SAAUhiE,EAAM09D,GAE3B,OADIA,IAAa,SAAUA,EAAWtC,IAC/B,IAAIoD,EAAMuC,GAAU/gE,EAAM09D,UACrC,CAAA,EACIzhE,GAAS,CACT,QACA,QACA,WACA,YACA,aACA,WAEJshE,GAAOgB,YAAc,CACrBhB,EAAAA,GAAOgB,YAAYxD,EAAU4D,MAAAA,EAAU1iE,GACvCshE,GAAOgB,YAAYxD,EAAU6D,QAAAA,EAAY3iE,GACzCshE,GAAOgB,YAAYxD,EAAU8D,KAAAA,EAAS,CAAC,QAAA,EAAU/rE,OAAOmJ,EACxDshE,EAAAA,GAAOgB,YAAYxD,EAAUqE,QAAUnjE,GACvCshE,GAAOgB,YAAYxD,EAAUsE,SAAWpjE,GACxCshE,GAAOgB,YAAYxD,EAAUuE,QAAU,CAAC,WAAY,WAAaxsE,EAAAA,OAAOmJ,EAIxE,EAAA,IAGIoiE,GAAqBd,GAAOc,mBCnH5B4D,GAAsB,UAAA,CACtB,SAASA,EAAK5tC,EAAMC,EAAQwnC,EAAQoG,EAChCvvE,CAAAA,KAAK0hC,KAAOA,EACZ1hC,KAAK2hC,OAASA,EACd3hC,KAAKmpE,OAASA,EACdnpE,KAAKuvE,YAAcA,GAAe,CACrC,CAiBD,OAhBAD,EAAK9gE,UAAU3N,SAAW,UAAA,CACtB,OAAOb,KAAK0hC,IACpB,EACI4tC,EAAK9gE,UAAUrM,WAAa,WACxB,OAAOnC,KAAK2hC,MACpB,EACI2tC,EAAK9gE,UAAUqT,WAAa,UACxB,CAAA,OAAO7hB,KAAKmpE,MACpB,EACImG,EAAK9gE,UAAU+3D,gBAAkB,UAC7B,CAAA,OAAOvmE,KAAKuvE,WACpB,EACID,EAAK9gE,UAAUyR,QAAU,UAAA,CACrB,MAAiE,MAA5C,GAAZjgB,KAAK0hC,KAAY,GAAmB,GAAd1hC,KAAK2hC,OAAc3hC,KAAKmpE,QACnDnpE,KAAKuvE,WACjB,EACWD,CACX,IAEIE,GAA0B,SAAUlH,GAEpC,SAASkH,EAAShuC,EAAMC,EAAO58B,EAAK68B,EAAMC,EAAQwnC,EAAQoG,EAAAA,CACtD,IAAI/G,EAAQF,EAAOn9D,KAAKnL,KAAM0hC,EAAMC,EAAQwnC,EAAQoG,CAAgBvvE,GAAAA,KAIpE,OAHAwoE,EAAMhnC,KAAOA,EACbgnC,EAAM/mC,MAAQA,EACd+mC,EAAM3jE,IAAMA,EACL2jE,CACV,CAgJD,OAvJAb,GAAU6H,EAAUlH,GAQpBkH,EAASC,SAAW,SAAU/2E,EAAAA,CAC1B,OAAO,IAAIsH,KAAKtH,EAAK4oB,eAAAA,EAAkB5oB,EAAK2oB,YAAgB,EAAA,EAAG3oB,EAAK0oB,WAAAA,EAAc1oB,EAAKgpB,YAAehpB,EAAAA,EAAKipB,cAAiBjpB,EAAAA,EAAKkpB,gBAAiBlpB,EAAKS,QAAAA,EAAY,GAC3K,CAAA,EACIq2E,EAAShhE,UAAU43D,WAAa,UAC5B,CAAA,OAAOA,GAAW,IAAIltE,KAAK8G,KAAKigB,QAAAA,CAAAA,CAAAA,CACxC,EACIuvD,EAAShhE,UAAUyR,QAAU,UAAA,CACzB,OAAO,IAAI/mB,KAAKA,KAAKomB,IAAItf,KAAKwhC,KAAMxhC,KAAKyhC,MAAQ,EAAGzhC,KAAK6E,IAAK7E,KAAK0hC,KAAM1hC,KAAK2hC,OAAQ3hC,KAAKmpE,OAAQnpE,KAAKuvE,cAActvD,QAC9H,CAAA,EACIuvD,EAAShhE,UAAUrQ,OAAS,UACxB,CAAA,OAAO6B,KAAK6E,GACpB,EACI2qE,EAAShhE,UAAUX,SAAW,UAAA,CAC1B,OAAO7N,KAAKyhC,KACpB,EACI+tC,EAAShhE,UAAUkhE,QAAU,UAAA,CACzB,OAAO1vE,KAAKwhC,IACpB,EACIguC,EAAShhE,UAAUmhE,SAAW,SAAUC,EACpC5vE,CAAAA,KAAKwhC,MAAQouC,CACrB,EACIJ,EAAShhE,UAAUqhE,UAAY,SAAUxmC,GAErC,GADArpC,KAAKyhC,OAAS4H,EACVrpC,KAAKyhC,MAAQ,GAAI,CACjB,IAAIquC,EAAU9pE,KAAK+D,MAAM/J,KAAKyhC,MAAQ,IAClCsuC,EAAW9K,EAAMjlE,KAAKyhC,MAAO,EACjCzhC,EAAAA,KAAKyhC,MAAQsuC,EACb/vE,KAAKwhC,MAAQsuC,EACT9vE,KAAKyhC,QAAU,IACfzhC,KAAKyhC,MAAQ,GACXzhC,EAAAA,KAAKwhC,KAEd,CACT,EACIguC,EAAShhE,UAAUwhE,UAAY,SAAU5zE,EAAM6zE,EACvCA,CAAAA,EAAOjwE,KAAKomE,WACZpmE,EAAAA,KAAK6E,KAAS7E,EAAAA,KAAKomE,aAAe,GAAK,EAAI6J,IAAgB,EAAP7zE,EAGpD4D,KAAK6E,KAAAA,EAAS7E,KAAKomE,WAAAA,EAAe6J,GAAe,EAAP7zE,EAE9C4D,KAAKkwE,OAAAA,CACb,EACIV,EAAShhE,UAAU2hE,SAAW,SAAU/zE,GACpC4D,KAAK6E,KAAOzI,EACZ4D,KAAKkwE,QACb,EACIV,EAAShhE,UAAU4hE,SAAW,SAAUrvD,EAAOsvD,EAAU9D,EAKrD,CAAA,IAJI8D,IAEArwE,KAAK0hC,MAAQ17B,KAAK+D,OAAO,GAAK/J,KAAK0hC,MAAQ3gB,CAASA,EAAAA,KAE/C,CACL/gB,KAAK0hC,MAAQ3gB,EACb,IAAIuvD,EAAKpL,GAAOllE,KAAK0hC,KAAM,IAAK6uC,EAASD,EAAGvuE,IAAKyuE,EAAUF,EAAGnL,IAK9D,GAJIoL,IACAvwE,KAAK0hC,KAAO8uC,EACZxwE,KAAKmwE,SAASI,CAAAA,GAEdnL,GAAMmH,CAAW/H,GAAAA,EAAS+H,EAAQvsE,KAAK0hC,MACvC,KACP,CACT,EACI8tC,EAAShhE,UAAUiiE,WAAa,SAAUC,EAASL,EAAU9D,EAAQoE,EAMjE,CAAA,IALIN,IAEArwE,KAAK2hC,QACD37B,KAAK+D,OAAO,MAAoB,GAAZ/J,KAAK0hC,KAAY1hC,KAAK2hC,SAAW+uC,CAAAA,EAAWA,KAE/D,CACL1wE,KAAK2hC,QAAU+uC,EACf,IAAIJ,EAAKpL,GAAOllE,KAAK2hC,OAAQ,IAAKivC,EAAUN,EAAGvuE,IAAK8uE,EAAYP,EAAGnL,IAKnE,GAJIyL,IACA5wE,KAAK2hC,OAASkvC,EACd7wE,KAAKowE,SAASQ,EAAAA,GAAgBrE,CAE7BnH,IAAAA,GAAMmH,CAAW/H,GAAAA,EAAS+H,EAAQvsE,KAAK0hC,IACvC0jC,KAAAA,GAAMuL,IAAanM,EAASmM,EAAU3wE,KAAK2hC,MAAAA,GAC5C,KAEP,CACT,EACI6tC,EAAShhE,UAAUsiE,WAAa,SAAUC,EAASV,EAAU9D,EAAQoE,EAAUK,EAO3E,CAAA,IANIX,IAEArwE,KAAKmpE,QACDnjE,KAAK+D,OAAO,OAAqB,KAAZ/J,KAAK0hC,KAA4B,GAAd1hC,KAAK2hC,OAAc3hC,KAAKmpE,SAC5D4H,CAAAA,EAAWA,KAEd,CACL/wE,KAAKmpE,QAAU4H,EACf,IAAIT,EAAKpL,GAAOllE,KAAKmpE,OAAQ,EAAK8H,EAAAA,EAAYX,EAAGvuE,IAAKmvE,EAAYZ,EAAGnL,IAKrE,GAJI8L,IACAjxE,KAAKmpE,OAAS+H,EACdlxE,KAAKywE,WAAWQ,EAAAA,GAAkB1E,EAAQoE,KAEzCvL,GAAMmH,CAAAA,GAAW/H,EAAS+H,EAAQvsE,KAAK0hC,IACvC0jC,KAAAA,GAAMuL,CAAanM,GAAAA,EAASmM,EAAU3wE,KAAK2hC,MAAAA,KAC3CyjC,GAAM4L,CAAAA,GAAaxM,EAASwM,EAAUhxE,KAAKmpE,MAAAA,GAC5C,KAEP,CACT,EACIqG,EAAShhE,UAAU0hE,OAAS,UACxB,CAAA,GAAA,EAAIlwE,KAAK6E,KAAO,IAAhB,CAGA,IAAIssE,EAAc9K,GAAWrmE,KAAKwhC,KAAMxhC,KAAKyhC,MAAQ,CAAA,EAAG,GACxD,GAAIzhC,EAAAA,KAAK6E,KAAOssE,GAGhB,KAAOnxE,KAAK6E,IAAMssE,GAAa,CAG3B,GAFAnxE,KAAK6E,KAAOssE,EACVnxE,EAAAA,KAAKyhC,MACHzhC,KAAKyhC,QAAU,KACfzhC,KAAKyhC,MAAQ,EACXzhC,EAAAA,KAAKwhC,KACHxhC,KAAKwhC,KAAOikC,IACZ,OAGR0L,EAAc9K,GAAWrmE,KAAKwhC,KAAMxhC,KAAKyhC,MAAQ,CAAA,EAAG,EACvD,CAhBA,CAiBT,EACI+tC,EAAShhE,UAAU7V,IAAM,SAAU2D,EAAS+zE,EAAAA,CACxC,IAAI1E,EAAOrvE,EAAQqvE,KAAMhtC,EAAWriC,EAAQqiC,SAAUsxC,EAAO3zE,EAAQ2zE,KAAM1D,EAASjwE,EAAQiwE,OAAQoE,EAAWr0E,EAAQq0E,SAAUK,EAAW10E,EAAQ00E,SACpJ,OAAQrF,EACJ,CAAA,KAAKvD,EAAUuE,OACX,OAAO3sE,KAAK2vE,SAAShxC,CACzB,EAAA,KAAKypC,EAAUsE,QACX,OAAO1sE,KAAK6vE,UAAUlxC,GAC1B,KAAKypC,EAAUqE,OACX,OAAOzsE,KAAKgwE,UAAUrxC,EAAUsxC,CACpC,EAAA,KAAK7H,EAAU8D,MACX,OAAOlsE,KAAKmwE,SAASxxC,GACzB,KAAKypC,EAAU4D,OACX,OAAOhsE,KAAKowE,SAASzxC,EAAU0xC,EAAU9D,CAAAA,EAC7C,KAAKnE,EAAU6D,SACX,OAAOjsE,KAAKywE,WAAW9xC,EAAU0xC,EAAU9D,EAAQoE,CAAAA,EACvD,KAAKvI,EAAUgJ,SACX,OAAOpxE,KAAK8wE,WAAWnyC,EAAU0xC,EAAU9D,EAAQoE,EAAUK,GAE7E,EACWxB,CACX,EAAEF,IChLK,SAAS+B,GAAkB/0E,EAI9B,CAAA,QAHIu4B,EAAU,CAGLy8C,EAAAA,EAAK,EAAGC,EAFNziE,OAAOyrB,KAAKj+B,CAAAA,EAESg1E,EAAKC,EAAO13E,OAAQy3E,IAAM,CACtD,IAAIrnE,EAAMsnE,EAAOD,CACZ9M,EAAAA,EAASgN,GAAavnE,CACvB4qB,GAAAA,EAAQx7B,KAAK4Q,CAAAA,EACb0D,GAAOrR,EAAQ2N,CAAAA,CAAAA,GAAAA,CAAU47D,GAAYvpE,EAAQ2N,KAC7C4qB,EAAQx7B,KAAK4Q,CAEpB,CAAA,CACD,GAAI4qB,EAAQh7B,OACR,MAAM,IAAIoN,MAAM,oBAAsB4tB,EAAQxwB,KAAK,IAAA,CAAA,EAEvD,OAAOyjE,EAAS,GAAIxrE,CAAAA,CACxB,CACO,SAASm1E,GAAan1E,EACzB,CAAA,IAAI+oB,EAAOyiD,EAASA,EAAS,CAAA,EAAI4J,IAAkBL,GAAkB/0E,CAAAA,CAAAA,EAGrE,GAFI+nE,EAAUh/C,EAAKssD,QACftsD,IAAAA,EAAKsmD,KAAOE,EAAMc,SAChBtI,EAAUh/C,EAAKsmD,IAASE,GAAAA,CAAAA,EAAMC,YAAYzmD,EAAKsmD,IAAAA,EACjD,MAAM,IAAI1kE,MAAM,sBAAsB9G,OAAOklB,EAAKsmD,KAAM,GAAKxrE,EAAAA,OAAO7D,EAAQqvE,IAAAA,CAAAA,EAahF,GAXKtmD,EAAKusD,UACNvsD,EAAKusD,QAAU,IAAI14E,KAAK,IAAIA,OAAO6mB,gBAAgB,KAClDskD,EAAUh/C,EAAK4qD,IAGX3L,EAAAA,GAASj/C,EAAK4qD,IAInB5qD,IAAAA,EAAK4qD,KAAO5qD,EAAK4qD,KAAKlM,SANtB1+C,EAAK4qD,KAAOpE,EAAM2C,GAAGzK,QAQrBM,EAAUh/C,EAAKwsD,QAAAA,EAAW,CACtBvN,GAASj/C,EAAKwsD,QACdxsD,IAAAA,EAAKwsD,SAAW,CAACxsD,EAAKwsD,QAC1B,GAAA,QAASj4E,EAAI,EAAGA,EAAIyrB,EAAKwsD,SAASh4E,OAAQD,IAEtC,IADIq0E,EAAI5oD,EAAKwsD,SAASj4E,CAAAA,KACZ,GADYA,EACLq0E,SAAaA,GAAK,KAC/B,MAAM,IAAIhnE,MAAM,4DAAA,CAG3B,CACD,KAAcoe,EAAKwnD,UACfxH,EAAShgD,EAAKwnD,QAAAA,GACdxH,EAAShgD,EAAKunD,YACNvnD,EAAK6lD,YACb7F,EAAShgD,EAAK6lD,UACd7G,GAAAA,EAAUh/C,EAAK+lD,SAAAA,GACf/G,EAAUh/C,EAAKssD,QAAAA,GACf,OAAQtsD,EAAKsmD,MACT,KAAKE,EAAMc,OACFtnD,EAAK8mD,UACN9mD,EAAK8mD,QAAU9mD,EAAKusD,QAAQvwD,cAAgB,GAChDgE,EAAK6lD,WAAa7lD,EAAKusD,QAAQxwD,WAC/B,EAAA,MACJ,KAAKyqD,EAAMa,QACPrnD,EAAK6lD,WAAa7lD,EAAKusD,QAAQxwD,aAC/B,MACJ,KAAKyqD,EAAMY,OACPpnD,EAAK+lD,UAAY,CAAChF,GAAW/gD,EAAKusD,UAe9C,GAVIvN,EAAUh/C,EAAK8mD,OAAAA,GAAAA,CAAa99D,EAAQgX,EAAK8mD,OAAAA,IACzC9mD,EAAK8mD,QAAU,CAAC9mD,EAAK8mD,OAAAA,GAGrB9H,EAAUh/C,EAAKunD,aACdv+D,EAAQgX,EAAKunD,SACdtI,GAAAA,GAASj/C,EAAKunD,SACdvnD,IAAAA,EAAKunD,UAAY,CAACvnD,EAAKunD,SAAAA,GAGtBvI,EAAUh/C,EAAK6lD,YAIf,GAAI78D,EAAQgX,EAAK6lD,UAAAA,EAAa,CAC/B,IAAIA,EAAa,CACbC,EAAAA,EAAc,GAClB,IAASvxE,EAAI,EAAGA,EAAIyrB,EAAK6lD,WAAWrxE,OAAQD,IAAK,CAC7C,IAAIq0E,GAAI5oD,EAAAA,EAAK6lD,WAAWtxE,CAAAA,GAChB,EACJsxE,EAAW7xE,KAAK40E,CAEXA,EAAAA,EAAI,GACT9C,EAAY9xE,KAAK40E,CAExB,CAAA,CACD5oD,EAAK6lD,WAAaA,EAClB7lD,EAAK8lD,YAAcA,CACtB,MACQ9lD,EAAK6lD,WAAa,GACvB7lD,EAAK8lD,YAAc,CAAC9lD,EAAK6lD,UAAAA,EACzB7lD,EAAK6lD,WAAa,CAAA,IAGlB7lD,EAAK8lD,YAAc,GACnB9lD,EAAK6lD,WAAa,CAAC7lD,EAAK6lD,kBAxBxB7lD,EAAK6lD,WAAa,CAClB7lD,EAAAA,EAAK8lD,YAAc,CA8BvB,EAAA,GAJI9G,EAAUh/C,EAAKwnD,YAAcx+D,EAAQgX,EAAKwnD,QAC1CxnD,IAAAA,EAAKwnD,SAAW,CAACxnD,EAAKwnD,QAAAA,GAGrBxI,EAAUh/C,EAAK+lD,SAAAA,EAGf,GAAI9G,GAASj/C,EAAK+lD,SACnB/lD,EAAAA,EAAK+lD,UAAY,CAAC/lD,EAAK+lD,SACvB/lD,EAAAA,EAAKysD,WAAa,aAEbvN,GAAal/C,EAAK+lD,SACvB/lD,EAAAA,EAAK+lD,UAAY,CAACtH,EAAQE,QAAQ3+C,EAAK+lD,WAAWrH,OAClD1+C,EAAAA,EAAKysD,WAAa,aAEbzsD,EAAK+lD,qBAAqBtH,EAC1Bz+C,CAAAA,EAAK+lD,UAAU9yB,GAAKjzB,EAAKsmD,KAAOE,EAAMa,SACvCrnD,EAAK+lD,UAAY,CAAC/lD,EAAK+lD,UAAUrH,OACjC1+C,EAAAA,EAAKysD,WAAa,OAGlBzsD,EAAKysD,WAAa,CAAC,CAACzsD,EAAK+lD,UAAUrH,QAAS1+C,EAAK+lD,UAAU9yB,CAAAA,CAAAA,EAC3DjzB,EAAK+lD,UAAY,UAGpB,CACD,IAAIA,EAAY,CACZ0G,EAAAA,EAAa,CACjB,EAAA,IAASl4E,EAAI,EAAGA,EAAIyrB,EAAK+lD,UAAUvxE,OAAQD,IAAK,CAC5C,IAAIqzE,EAAO5nD,EAAK+lD,UAAUxxE,CACtB0qE,EAAAA,GAAS2I,GACT7B,EAAU/xE,KAAK4zE,CAGV1I,EAAAA,GAAa0I,GAClB7B,EAAU/xE,KAAKyqE,EAAQE,QAAQiJ,GAAMlJ,OAGpCkJ,EAAAA,CAAAA,EAAK30B,GAAKjzB,EAAKsmD,KAAOE,EAAMa,QAC7BtB,EAAU/xE,KAAK4zE,EAAKlJ,OAGpB+N,EAAAA,EAAWz4E,KAAK,CAAC4zE,EAAKlJ,QAASkJ,EAAK30B,CAE3C,CAAA,CAAA,CACDjzB,EAAK+lD,UAAY/F,EAAS+F,CAAaA,EAAAA,EAAY,KACnD/lD,EAAKysD,WAAazM,EAASyM,CAAAA,EAAcA,EAAa,IACzD,MA1CGzsD,EAAKysD,WAAa,KAkEtB,OAtBKzN,EAAUh/C,EAAKknD,MAAAA,EAGXjI,GAASj/C,EAAKknD,MAAAA,IACnBlnD,EAAKknD,OAAS,CAAClnD,EAAKknD,MAAAA,GAHpBlnD,EAAKknD,OAASlnD,EAAKsmD,KAAOE,EAAMG,OAAS,CAAC3mD,EAAKusD,QAAQlwD,YAAAA,CAAAA,EAAiB,KAMvE2iD,EAAUh/C,EAAKsrD,QAAAA,EAIXrM,GAASj/C,EAAKsrD,YACnBtrD,EAAKsrD,SAAW,CAACtrD,EAAKsrD,WAJtBtrD,EAAKsrD,SACDtrD,EAAKsmD,KAAOE,EAAMI,SAAW,CAAC5mD,EAAKusD,QAAQjwD,iBAAmB,KAMjE0iD,EAAUh/C,EAAK2rD,QAAAA,EAIX1M,GAASj/C,EAAK2rD,QAAAA,IACnB3rD,EAAK2rD,SAAW,CAAC3rD,EAAK2rD,QAAAA,GAJtB3rD,EAAK2rD,SACD3rD,EAAKsmD,KAAOE,EAAMuF,SAAW,CAAC/rD,EAAKusD,QAAQhwD,cAAAA,CAAAA,EAAmB,KAK/D,CAAEmwD,cAAe1sD,CAC5B,CAAA,CCnLO,SAAS2sD,GAAYC,GACxB,IAAI31E,EAAU21E,EACT33E,MAAM;AAAA,GACNE,IAAI03E,EAAAA,EACJv/C,OAAO,SAAU/V,GAAK,OAAOA,IAAM,IAAK,CAAA,EAC7C,OAAOkrD,EAASA,EAAS,CAAA,EAAIxrE,EAAQ,CAAKA,CAAAA,EAAAA,EAAQ,CACtD,CAAA,CAAA,CACO,SAAS61E,GAAaC,EAAAA,CACzB,IAAI91E,EAAU,CAAA,EACV+1E,EAAkB,+CAA+ChrD,KAAK+qD,CAC1E,EAAA,GAAA,CAAKC,EACD,OAAO/1E,EAEX,IAAIg2E,EAAOD,EAAgB,CAAA,EAAIT,EAAUS,EAAgB,CAAA,EAKzD,OAJIC,IACAh2E,EAAQg2E,KAAOA,GAEnBh2E,EAAQs1E,QAAUhL,GAAkBgL,CAC7Bt1E,EAAAA,CACX,CACA,SAAS41E,GAAUD,EAEf,CAAA,GAAA,EADAA,EAAYA,EAAU16D,QAAQ,YAAa,EAAA,GAC5B1d,OACX,OAAO,KACX,IAAIy4B,EAAS,iBAAiBjL,KAAK4qD,EAAU7vB,YAC7C,CAAA,EAAA,GAAA,CAAK9vB,EACD,OAAOigD,GAAWN,CAEtB,EAAA,IAAIhoE,EAAMqoB,EAAO,GACjB,OAAQroB,EAAIm4C,YACR,EAAA,CAAA,IAAK,QACL,IAAK,SACD,OAAOmwB,GAAWN,GACtB,IAAK,UACD,OAAOE,GAAaF,GACxB,QACI,MAAM,IAAIhrE,MAAM,wBAAwB9G,OAAO8J,EAAK,MAAQ9J,EAAAA,OAAO8xE,CAE/E,CAAA,CAAA,CAAA,CACA,SAASM,GAAWH,GAChB,IACI91E,EAAU61E,GADKC,EAAK76D,QAAQ,WAAY,EAAA,CAAA,EAiD5C,OA/CY66D,EAAK76D,QAAQ,sBAAuB,EAAA,EAAIjd,MAAM,GAAA,EACpDS,QAAQ,SAAU+qB,EAAAA,CACpB,IAAIwqD,EAAKxqD,EAAKxrB,MAAM,GAAA,EAAM2P,EAAMqmE,EAAG,GAAIh/D,EAAQg/D,EAAG,CAClD,EAAA,OAAQrmE,EAAIm4C,YACR,EAAA,CAAA,IAAK,OACD9lD,EAAQqvE,KAAOvD,EAAU92D,EAAM8wC,YAC/B,CAAA,EAAA,MACJ,IAAK,OACD9lD,EAAQ2zE,KAAOuC,GAAKlhE,EAAM8wC,YAC1B,CAAA,EAAA,MACJ,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,WACD,IAAIlhC,EA6BpB,SAAqB5P,EACjB,CAAA,OAAIA,EAAMvK,QAAQ,GAAA,IAAlB,GACiBuK,EAAMhX,MAAM,GAAA,EACXE,IAAIi4E,EAAAA,EAEfA,GAAsBnhE,CACjC,CAAA,EAnCsCA,CAClBohE,EAAAA,EAAYzoE,EAAIyL,YAAAA,EAGpBpZ,EAAQo2E,CAAaxxD,EAAAA,EACrB,MACJ,IAAK,YACL,IAAK,QACD5kB,EAAQ8uE,UAkCxB,SAAsB95D,EAClB,CAAA,IAAIlV,EAAOkV,EAAMhX,MAAM,GACvB,EAAA,OAAO8B,EAAK5B,IAAI,SAAUqK,EACtB,CAAA,GAAIA,EAAIhL,SAAW,EAEf,OAAO24E,GAAK3tE,CAGhB,EAAA,IAAI8tE,EAAQ9tE,EAAIia,MAAM,4BACtB,EAAA,GAAA,CAAK6zD,GAASA,EAAM94E,OAAS,EACzB,MAAM,IAAI+4E,YAAY,2BAA2BzyE,OAAO0E,CAAAA,CAAAA,EAE5D,IAAIyzC,EAAI3pC,OAAOgkE,EAAM,CAAA,CAAA,EACjBE,EAAWF,EAAM,CAAA,EACjB1F,EAAOuF,GAAKK,GAAU9O,QAC1B,OAAO,IAAID,EAAQmJ,EAAM30B,CACjC,CAAA,CAAA,CACA,EAnDiDhnC,GACjC,MACJ,IAAK,UACL,IAAK,OAED,IAAIsgE,EAAUO,GAAaC,CAAAA,EAC3B91E,EAAQg2E,KAAOV,EAAQU,KACvBh2E,EAAQs1E,QAAUA,EAAQA,QAC1B,MACJ,IAAK,QACDt1E,EAAQuqE,MAAQD,GAAkBt1D,CAAAA,EAClC,MACJ,IAAK,WACDhV,EAAQq1E,SAAWhjE,OAAO2C,CAC1B,EAAA,MACJ,QACI,MAAM,IAAIrK,MAAM,2BAA6BgD,EAAM,GAAA,CAAA,CAEnE,GACW3N,CACX,CAQA,SAASm2E,GAAsBnhE,GAC3B,MAAI,aAAakJ,KAAKlJ,CAAAA,EACX3C,OAAO2C,CAEXA,EAAAA,CACX,CC3GA,IAAIwhE,GAA8B,UAC9B,CAAA,SAASA,EAAap6E,EAAM45E,GACxB,GAAI35D,MAAMjgB,EAAKunB,QAAAA,CAAAA,EACX,MAAM,IAAI8yD,WAAW,qCAEzB/yE,EAAAA,KAAKtH,KAAOA,EACZsH,KAAKsyE,KAAOA,CACf,CAwBD,OAvBAxjE,OAAOkkE,eAAeF,EAAatkE,UAAW,QAAS,CACnD2V,IAAK,WACD,MAAQnkB,CAAAA,KAAKsyE,MAAQtyE,KAAKsyE,KAAKlwB,YAAAA,IAAkB,KACpD,EACD6wB,WAAAA,GACAC,aAAc,EAAA,CAAA,EAElBJ,EAAatkE,UAAUC,SAAW,UAC9B,CAAA,IAAIoU,EAAU8jD,GAAkB3mE,KAAKtH,KAAKunB,QAAAA,EAAWjgB,KAAKmzE,KAAAA,EAC1D,OAAKnzE,KAAKmzE,MAGH,IAAIhzE,OAAO0iB,GAFP,SAAS1iB,OAAOH,KAAKsyE,KAAM,KAAKnyE,OAAO0iB,CAAAA,CAG1D,EACIiwD,EAAatkE,UAAUyR,QAAU,UAAA,CAC7B,OAAOjgB,KAAKtH,KAAKunB,QACzB,CAAA,EACI6yD,EAAatkE,UAAU4kE,YAAc,UACjC,CAAA,OAAIpzE,KAAKmzE,MACEnzE,KAAKtH,MZ4HcA,EY1HRsH,KAAKtH,KZ0HSsuE,EY1HHhnE,KAAKsyE,KZ2HtCe,EAAgBC,KAAKC,iBAAiBC,gBAAkBxM,EAAAA,SAExDyM,EAAgB,IAAIv6E,KAAK6tE,GAAgBruE,EAAM26E,CAAAA,CAAAA,EAE/CK,EADiB,IAAIx6E,KAAK6tE,GAAgBruE,KAA4D,KAAA,CAAA,EAC5EunB,QAAYwzD,EAAAA,EAAcxzD,UACjD,IAAI/mB,KAAKR,EAAKunB,QAAAA,EAAYyzD,IANT,IAAUh7E,EAAMsuE,EACpCqM,EAEAI,EAEAC,CY9HR,EACWZ,CACX,IC5BO,SAASa,GAAgBr3E,EAK5B,CAAA,QdkC2BwjC,EctCvB+qC,EAAQ,CACR+G,EAAAA,EAAU,GACVr3C,EAAOzrB,OAAOyrB,KAAKj+B,CAAAA,EACnBk1E,EAAc1iE,OAAOyrB,KAAKm3C,EACrB93E,EAAAA,EAAI,EAAGA,EAAI2gC,EAAK1gC,OAAQD,IAC7B,GAAI2gC,EAAK3gC,CAEJ4qE,IAFW,QAEXA,EAASgN,EAAaj3C,EAAK3gC,CAAAA,CAAAA,EAAhC,CAEA,IAAIqQ,EAAMswB,EAAK3gC,CAAAA,EAAGwoD,YACd9wC,EAAAA,EAAQhV,EAAQi+B,EAAK3gC,CAAAA,CAAAA,EACrBg6E,EAAW,GACf,GAAKvP,EAAU/yD,CAAAA,IAAAA,CAAWjD,EAAQiD,CAAAA,GAAWA,EAAMzX,QAAnD,CAEA,OAAQoQ,GACJ,IAAK,OACD2pE,EAAW/H,EAAMC,YAAYxvE,EAAQqvE,IAAAA,EACrC,MACJ,IAAK,OAEGiI,EADAtP,GAAShzD,CACE,EAAA,IAAIwyD,EAAQxyD,CAAO7C,EAAAA,SAAAA,EAGnB6C,EAAM7C,SAAAA,EAErB,MACJ,IAAK,YAYDxE,EAAM,QACN2pE,GdDe9zC,EcCIxuB,EdA3BjD,EAAQyxB,CAAAA,EACDA,EAEJ,CAACA,CAAAA,GcFStlC,IAAI,SAAUyyE,GACf,OAAIA,aAAgBnJ,EACTmJ,EAEP5+D,EAAQ4+D,CACD,EAAA,IAAInJ,EAAQmJ,EAAK,GAAIA,EAAK,CAAA,CAAA,EAE9B,IAAInJ,EAAQmJ,EACvC,CACqBx+D,EAAAA,SAAAA,EACL,MACJ,IAAK,UACDmjE,EAAUiC,GAAaviE,EAAOhV,EAAQg2E,MACtC,MACJ,IAAK,QACDsB,EAAWjN,GAAkBr1D,EAAQhV,CAAAA,EAAQg2E,IAC7C,EAAA,MACJ,QACI,GAAIjkE,EAAQiD,CAAQ,EAAA,CAEhB,QADIwiE,EAAY,CAAA,EACPpuD,EAAI,EAAGA,EAAIpU,EAAMzX,OAAQ6rB,IAC9BouD,EAAUpuD,CAAAA,EAAKrrB,OAAOiX,EAAMoU,IAEhCkuD,EAAWE,EAAUrlE,SACxB,CAAA,MAEGmlE,EAAWv5E,OAAOiX,CAAAA,CAAAA,CAG1BsiE,GACA/I,EAAMxxE,KAAK,CAAC4Q,EAAK2pE,CAzDR,CAAA,CAAA,CALA,CAiEjB,IAAInG,EAAQ5C,EACPrwE,IAAI,SAAU81E,EACf,CAAA,IAAIrmE,EAAMqmE,EAAG,GAAIh/D,EAAQg/D,EAAG,CAC5B,EAAA,MAAO,GAAGnwE,OAAO8J,EAAK,GAAK9J,EAAAA,OAAOmR,EAAM7C,SAChD,CAAA,CAAA,CAAA,EACSpK,KAAK,GAAA,EACN0vE,EAAa,GAIjB,OAHItG,IAAU,KACVsG,EAAa,SAAS5zE,OAAOstE,CAE1B,GAAA,CAACmE,EAASmC,CAAYphD,EAAAA,OAAO,SAAU/V,EAAAA,CAAK,QAASA,CAAE,CAAA,EAAIvY,KAAK;AAAA,CAAA,CAC3E,CACA,SAASwvE,GAAajC,EAASU,EAAAA,CAC3B,OAAKV,EAGE,UAAY,IAAIkB,GAAa,IAAI55E,KAAK04E,CAAUU,EAAAA,CAAAA,EAAM7jE,WAFlD,EAGf,CC7FA,SAASulE,GAAU97E,EAAMkgB,EACrB,CAAA,OAAI7V,MAAM8L,QAAQnW,KACTqK,MAAM8L,QAAQ+J,CAEflgB,GAAAA,EAAK2B,SAAWue,EAAMve,QAEnB3B,EAAK8wE,MAAM,SAAUtwE,EAAMkB,EAAAA,CAAK,OAAOlB,EAAKunB,YAAc7H,EAAMxe,CAAAA,EAAGqmB,QAAY,CAAA,CAAA,EAEtF/nB,aAAgBgB,KACTkf,aAAiBlf,MAAQhB,EAAK+nB,YAAc7H,EAAM6H,QAAAA,EAEtD/nB,IAASkgB,CACpB,CACA,IAAI67D,GAAuB,UACvB,CAAA,SAASA,IACLj0E,KAAKk0E,IAAAA,GACLl0E,KAAKmnE,OAAS,CACdnnE,EAAAA,KAAKonE,MAAQ,CAAA,EACbpnE,KAAKm0E,QAAU,CAAA,CAClB,CAqED,OA/DAF,EAAMzlE,UAAU4lE,UAAY,SAAUC,EAAM/iE,EAAOjC,EAC3CiC,CAAAA,IACAA,EAAQA,aAAiBpY,KAAOstE,GAAMl1D,CAASm1D,EAAAA,GAAWn1D,IAE1D+iE,IAAS,MACTr0E,KAAKk0E,IAAM5iE,GAGXjC,EAAKilE,OAAShjE,EACdtR,KAAKq0E,GAAMh7E,KAAKgW,CAAAA,EAE5B,EAQI4kE,EAAMzlE,UAAU+lE,UAAY,SAAUF,EAAMhlE,EAAAA,CACxC,IAAImlE,EAAS,GACTC,EAAWplE,EAAOP,OAAOyrB,KAAKlrB,CAAAA,EAAQ,CACtCqlE,EAAAA,EAAgB,SAAU50C,EAC1B,CAAA,QAASlmC,EAAI,EAAGA,EAAI66E,EAAS56E,OAAQD,IAAK,CACtC,IAAIqQ,EAAMwqE,EAAS76E,CAAAA,EACnB,IAAKo6E,GAAU3kE,EAAKpF,CAAM61B,EAAAA,EAAK71B,IAC3B,MAAO,EAEd,CACD,MAAA,EACZ,EACY0qE,EAAe30E,KAAKq0E,CAAAA,EACxB,GAAIA,IAAS,MACTG,EAASx0E,KAAKk0E,YAET7lE,EAAQsmE,CAGb,EAAA,QAAS/6E,EAAI,EAAGA,EAAI+6E,EAAa96E,OAAQD,IAAK,CAC1C,IAAIkmC,EAAO60C,EAAa/6E,CAAAA,EACxB,GAAI66E,CAAAA,EAAS56E,SAAU66E,EAAc50C,CAAAA,EAArC,CAEA00C,EAAS10C,EAAKw0C,OACd,KAFa,CAGhB,CAEL,IAAKE,GAAUx0E,KAAKk0E,IAAK,CAGrB,IAAIU,EAAa,IAAI3N,GAAWoN,EAAMhlE,GACtC,IAASzV,EAAI,EAAGA,EAAIoG,KAAKk0E,IAAIr6E,QACpB+6E,EAAWvN,OAAOrnE,KAAKk0E,IAAIt6E,CAAAA,CAAAA,EADCA,IAIrC46E,CAAAA,EAASI,EAAW/kB,SACpB7vD,EAAAA,KAAKo0E,UAAUC,EAAMG,EAAQnlE,CAChC,CAAA,CACD,OAAOhB,EAAQmmE,GACT/N,GAAW+N,CAAAA,EACXA,aAAkBt7E,KACdstE,GAAMgO,CACNA,EAAAA,CAClB,EACWP,CACX,ECtFIY,EAAAA,GAAW7M,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,CAAA,EAAItD,EAAO,EAAG,MAAYA,EAAAA,EAAO,EAAG,EAAA,EAAA,IAAYA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,EAAA,EAAA,EAAYA,EAAAA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,MAAYA,EAAAA,EAAO,EAAG,EAAA,EAAA,IAAYA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,EAAA,EAAA,EAAYA,EAAAA,EAAO,GAAI,EAAK,EAAA,EAAA,EAAOA,EAAO,GAAI,MAAYA,EAAAA,EAAO,GAAI,EAAA,EAAA,IAAYA,EAAO,EAAG,CAAI,EAAA,EAAA,EAC9doQ,GAAW9M,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,CAAA,EAAItD,EAAO,EAAG,EAAA,EAAA,EAAYA,EAAAA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,MAAYA,EAAAA,EAAO,EAAG,EAAA,EAAA,IAAYA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,EAAA,EAAA,EAAYA,EAAAA,EAAO,EAAG,EAAK,EAAA,EAAA,EAAOA,EAAO,EAAG,MAAYA,EAAAA,EAAO,GAAI,EAAA,EAAA,IAAYA,EAAO,GAAI,EAAK,EAAA,EAAA,EAAOA,EAAO,GAAI,EAAA,EAAA,EAAYA,EAAAA,EAAO,EAAG,CAAI,EAAA,EAAA,EAC9dqQ,GAAM3jB,GAAM,EAAG,EACf4jB,EAAAA,GAAM5jB,GAAM,EAAG,IACf6jB,GAAM7jB,GAAM,EAAG,EAAA,EACf8jB,EAAM9jB,GAAM,EAAG,EACf+jB,EAAAA,GAAcnN,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,CAAIkN,EAAAA,EAAAA,IAAYF,GAAK,EAAA,EAAOE,EAAK,EAAA,EAAOD,GAAK,EAAA,EAAOC,EAAK,EAAA,EAAOD,KAAYC,EAAAA,EAAAA,EAAYA,EAAAA,EAAAA,IAAYD,GAAK,EAAA,EAAOC,EAAK,EAAA,EAAOD,KAAYC,EAAAA,EAAAA,EAAYA,EAAAA,EAAIzyE,MAAM,EAAG,CAAA,EAAA,EACrW2yE,EAAAA,GAAcpN,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,CAAIkN,EAAAA,EAAAA,IAAYH,GAAK,EAAA,EAAOG,EAAK,EAAA,EAAOD,KAAYC,EAAAA,EAAAA,EAAYD,EAAAA,GAAAA,IAAYC,EAAK,EAAA,EAAOA,EAAK,EAAA,EAAOD,KAAYC,EAAAA,EAAAA,EAAYD,EAAAA,GAAAA,IAAYC,EAAK,EAAA,EAAOA,EAAIzyE,MAAM,EAAG,CAAI,EAAA,EAAA,EACzW4yE,GAAOjkB,GAAAA,IAAW,CAClBkkB,EAAAA,GAAOlkB,GAAO,IAAI,GAClBmkB,GAAOnkB,GAAAA,IAAW,CAAA,EAClBokB,EAAOpkB,GAAAA,IAAW,CAAA,EAClBqkB,GAAezN,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,CAAA,EAAIwN,IAAaF,EAAAA,GAAAA,EAAaE,EAAAA,EAAAA,IAAaD,GAAM,EAAA,EAAOC,EAAM,EAAA,EAAOD,KAAaC,EAAAA,EAAAA,EAAaA,EAAAA,EAAAA,IAAaD,GAAM,EAAA,EAAOC,EAAM,EAAA,EAAOD,KAAaC,EAAAA,EAAAA,EAAaA,EAAAA,EAAK/yE,MAAM,EAAG,CAAA,EAAA,EACnXizE,EAAAA,GAAe1N,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAcA,EAAc,CAAIwN,EAAAA,EAAAA,IAAaH,GAAM,EAAA,EAAOG,EAAM,EAAA,EAAOD,KAAaC,EAAAA,EAAAA,EAAaD,EAAAA,GAAAA,IAAaC,EAAM,EAAA,EAAOA,EAAM,EAAA,EAAOD,GAAM,EAAA,EAAOC,EAAM,EAAA,EAAOD,KAAaC,EAAAA,EAAAA,EAAaA,EAAAA,EAAK/yE,MAAM,EAAG,CAAA,EAAA,EACnXkzE,EAAAA,GAAY,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACpEC,EAAAA,GAAY,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACpEC,EAAAA,GAAW,WAEX,QADIC,EAAW,CAAA,EACNl8E,EAAI,EAAGA,EAAI,GAAIA,IACpBk8E,EAAWA,EAAS31E,OAAOixD,GAAM,CAAA,CAAA,EACrC,OAAO0kB,CACV,ECvBM,EAAA,SAASC,GAAYv0C,EAAMllC,EAAAA,CAC9B,IAUI05E,EACAC,EAXAC,EAAY5Q,GAAS9jC,EAAM,EAAG,GAC9B20C,EAAUvQ,GAAWpkC,CAAQ,EAAA,IAAM,IACnC40C,EAAcxQ,GAAWpkC,EAAO,GAAK,IAAM,IAC3C60C,EAAcvQ,GAAUoQ,GACxBI,EAAclQ,GAAW8P,CACzB9nE,EAAAA,EAAS05D,EAASA,EAAS,CAAEqO,QAASA,EAASC,YAAaA,EAAaC,YAAaA,EAAaC,YAAaA,GAgGxH,SAAuB90C,EAAAA,CACnB,IAAI20C,EAAUvQ,GAAWpkC,CAAQ,EAAA,IAAM,IACnC00C,EAAY5Q,GAAS9jC,EAAM,EAAG,CAC9ByrC,EAAAA,EAAO7G,GAAW8P,CACtB,EAAA,OAAIC,IAAY,IACL,CACHI,MAAO1B,GACP2B,SAAUpB,GACVqB,UAAWf,GACXI,SAAUD,GAASpzE,MAAMwqE,CACzByJ,EAAAA,OAAQd,EAGhB,EAAO,CACHW,MAAOzB,GACP0B,SAAUrB,GACVsB,UAAWhB,GACXK,SAAUD,GAASpzE,MAAMwqE,GACzByJ,OAAQf,EAAAA,CAEhB,EApHqJn0C,IAAQ,CAAEm1C,QAAS,IACpK,CAAA,EAAA,GAAIvR,GAAM9oE,EAAQuwE,QACd,EAAA,OAAOz+D,EAEXA,EAAOuoE,QAAUjS,EAAO,EAAGyR,EAAU,CAGrC,EAAA,IAAIS,EAAWZ,EAAY/Q,EAAM,EAAIqR,EAAch6E,EAAQ2zE,KAAM,GAC7D2G,GAAW,GACXA,EAAU,EAGVX,EAAW7nE,EAAO+nE,QAAUlR,EAAMqR,EAAch6E,EAAQ2zE,KAAM,CAAA,GAK9DgG,EAAWE,EAAUS,EAKzB,QAHI70E,EAAMiE,KAAK+D,MAAMksE,EAAW,CAAA,EAC5B9Q,EAAMF,EAAMgR,EAAU,CACtBY,EAAAA,EAAW7wE,KAAK+D,MAAMhI,EAAMojE,EAAM,CAAA,EAC7Bz/C,EAAI,EAAGA,EAAIppB,EAAQuwE,SAAShzE,OAAQ6rB,IAAK,CAC9C,IAAI4yB,EAAIh8C,EAAQuwE,SAASnnD,GAIzB,GAHI4yB,EAAI,IACJA,GAAKu+B,EAAW,GAEdv+B,EAAI,GAAKA,GAAKu+B,EAApB,CAGA,IAAIj9E,EAAI,OACJ0+C,EAAI,GACJ1+C,EAAIg9E,EAAoB,GAATt+B,EAAI,GACfs+B,IAAYZ,IACZp8E,GAAK,EAAIo8E,IAIbp8E,EAAIg9E,EAER,QAAStzE,EAAI,EAAGA,EAAI,IAChB8K,EAAOuoE,QAAQ/8E,CAAK,EAAA,EACpBA,IACIwU,EAAO0nE,SAASl8E,CAAO0C,IAAAA,EAAQ2zE,MAHhB3sE,IAXtB,CAAA,CAiBJ,CACD,GAAIkhE,EAASloE,EAAQuwE,SAAU,CAAI,IAG3BjzE,EAAIg9E,EAAqB,EAAXC,EACdD,IAAYZ,IACZp8E,GAAK,EAAIo8E,GACTp8E,EAAIu8E,GAGJ,IAASzwD,EAAI,EAAGA,EAAI,IAChBtX,EAAOuoE,QAAQ/8E,CAAAA,EAAK,EACpBA,GAAK,EACDwU,EAAO0nE,SAASl8E,KAAO0C,EAAQ2zE,MAHhBvqD,IAO9B,CACD,GAAIkxD,EAAS,CAOT,IAAIE,EAAAA,OACJ,GAAKtS,EAASloE,EAAQuwE,SAAAA,EAelBiK,EAAAA,EAAAA,OAfiC,CACjC,IAAIC,EAAe3Q,GAAWd,GAAS9jC,EAAO,EAAG,EAAG,CAAA,CAAA,EAChDw1C,EAAW/R,EAAM,EAAI8R,EAAa59E,QAAAA,EAAYmD,EAAQ2zE,KAAM,GAC5DgH,EAAWrR,GAAWpkC,EAAO,CAAA,EAAK,IAAM,IACxC01C,EAAAA,OACAF,GAAY,GACZA,EAAW,EACXE,EAASD,EAAWhS,EAAM8R,EAAez6E,EAAQ2zE,KAAM,CAAA,GAGvDiH,EAASf,EAAUS,EAEvBE,EAAY9wE,KAAK+D,MAAM,GAAKk7D,EAAMiS,EAAQ,CAAA,EAAK,EAClD,CAID,GAAI1S,EAASloE,EAAQuwE,SAAUiK,CAC3B,EAAA,IAASl9E,EAAI,EAAGA,EAAIg9E,EAASh9E,IACzBwU,EAAOuoE,QAAQ/8E,GAAK,CAE/B,CACD,OAAOwU,CACX,CC/FA,IAAI+oE,GAA0B,UAE1B,CAAA,SAASA,EAAS76E,EACd0D,CAAAA,KAAK1D,QAAUA,CAClB,CA0KD,OAzKA66E,EAAS3oE,UAAU4oE,QAAU,SAAU51C,EAAMC,EACzC,CAAA,IAAInlC,EAAU0D,KAAK1D,QAInB,GAHIklC,IAASxhC,KAAKq3E,WACdr3E,KAAKs3E,SAAWvB,GAAYv0C,EAAMllC,CAElC+oE,GAAAA,EAAS/oE,EAAQw1E,UAAAA,IAChBrwC,IAAUzhC,KAAKu3E,WAAa/1C,IAASxhC,KAAKq3E,UAAW,CACtD,IAAI/G,EAAKtwE,KAAKs3E,SAAUnB,EAAU7F,EAAG6F,QAASO,EAASpG,EAAGoG,OAAQZ,EAAWxF,EAAGwF,SAChF91E,KAAKw3E,UCrBV,SAAsBh2C,EAAMC,EAAO00C,EAASO,EAAQZ,EAAUx5E,EACjE,CAAA,IAAI8R,EAAS,CACTipE,SAAU71C,EACV+1C,UAAW91C,EACXg2C,UAAW,CAAA,CAAA,EAEXC,EAAS,CAAA,EACb,GAAIp7E,EAAQqvE,OAASE,EAAMc,OACvB,GAAIvH,GAAM9oE,EAAQ6vE,OACduL,EAAAA,EAAS,CAAC,CAAC,EAAGvB,CAGd,CAAA,MAAA,SAASzwD,EAAI,EAAGA,EAAIppB,EAAQ6vE,QAAQtyE,OAAQ6rB,IACxC+b,EAAQnlC,EAAQ6vE,QAAQzmD,CAAAA,EACxBgyD,EAAOr+E,KAAKq9E,EAAOj0E,MAAMg/B,EAAQ,EAAGA,EAAQ,SAI/CnlC,EAAQqvE,OAASE,EAAMa,UAC5BgL,EAAS,CAAChB,EAAOj0E,MAAMg/B,EAAQ,EAAGA,EAAQ,CAAA,CAAA,GAE9C,GAAI2jC,GAAMsS,GACN,OAAOtpE,EAKX,IADAA,EAAOqpE,UAAY/S,EAAO,EAAGyR,CACpBzwD,EAAAA,EAAI,EAAGA,EAAIgyD,EAAO79E,OAAQ6rB,IAI/B,QAHI++C,EAAOiT,EAAOhyD,CAAAA,EACdq7B,EAAQ0jB,EAAK,CAAA,EACbxT,EAAOwT,EAAK,GAAK,EACZnhE,EAAI,EAAGA,EAAIhH,EAAQw1E,WAAWj4E,OAAQyJ,IAAK,CAChD,IAAI1J,EAAI,OACJ02E,EAAKh0E,EAAQw1E,WAAWxuE,CAAI2pE,EAAAA,EAAOqD,EAAG,CAAA,EAAIh4B,EAAIg4B,EAAG,CACjDh4B,EAAAA,EAAI,GACJ1+C,EAAIq3D,EAAiB,GAAT3Y,EAAI,GAChB1+C,GAAKqrE,EAAM6Q,EAASl8E,CAAAA,EAAKqzE,EAAM,CAG/BrzE,IAAAA,EAAImnD,EAAkB,GAATzI,EAAI,GACjB1+C,GAAKqrE,EAAM,EAAI6Q,EAASl8E,CAAKqzE,EAAAA,EAAM,CAEnClsB,GAAAA,GAASnnD,GAAKA,GAAKq3D,IACnB7iD,EAAOqpE,UAAU79E,GAAK,EAC7B,CAEL,OAAOwU,CACX,ED1B0CozB,EAAMC,EAAO00C,EAASO,EAAQZ,EAAUx5E,CAAAA,CACzE,CACG+nE,EAAU/nE,EAAQq1E,QAClB3xE,IAAAA,KAAK23E,WE1BV,SAAgBh7D,EAAGxU,EACP,CAAXA,IAAW,SAAUA,EAAS,GAClC,IAAIuL,EAAIiJ,EAAI,GACRhJ,EAAI3N,KAAK+D,MAAM4S,EAAI,GAAA,EACnB/d,EAAI+d,EAAI,IACRvX,EAAIY,KAAK+D,MAAM4J,EAAI,CAAA,EACnBxY,EAAIwY,EAAI,EACRzF,EAAIlI,KAAK+D,OAAO4J,EAAI,GAAK,EAAA,EACzBikE,EAAI5xE,KAAK+D,OAAO4J,EAAIzF,EAAI,GAAK,CAAA,EAC7BiF,EAAInN,KAAK+D,MAAM,GAAK2J,EAAIC,EAAIvO,EAAIwyE,EAAI,EAAM,EAAA,GAC1Ch+E,EAAIoM,KAAK+D,MAAMnL,EAAI,CAAA,EACnB0E,EAAI1E,EAAI,EACRspE,EAAIliE,KAAK+D,MAAM,GAAK,EAAI5O,EAAI,EAAIvB,EAAIuZ,EAAI7P,CAAAA,EAAK,EAC7C6rD,EAAInpD,KAAK+D,OAAO2J,EAAI,GAAKP,EAAI,GAAK+0D,GAAK,GAAA,EACvCzmC,EAAQz7B,KAAK+D,OAAOoJ,EAAI+0D,EAAI,EAAI/Y,EAAI,KAAO,EAC3CtqD,EAAAA,GAAQsO,EAAI+0D,EAAI,EAAI/Y,EAAI,KAAO,GAAM,EACrCz2D,EAAOQ,KAAKomB,IAAI3C,EAAG8kB,EAAQ,EAAG58B,EAAMsD,CAAAA,EACpC0vE,EAAY3+E,KAAKomB,IAAI3C,EAAG,EAAG,CAAA,EAC/B,MAAO,CAAC3W,KAAK6pC,MAAMn3C,EAAOm/E,QAC9B,CAAA,CAAA,EFOqCr2C,EAAMllC,EAAQq1E,QAEnD,EAAA,EACI7iE,OAAOkkE,eAAemE,EAAS3oE,UAAW,WAAY,CAClD2V,IAAK,WACD,OAAOnkB,KAAKw3E,UAAYx3E,KAAKw3E,UAAUH,SAAW,IACrD,EACDpE,WAAAA,GACAC,aAAc,EAAA,CAAA,EAElBpkE,OAAOkkE,eAAemE,EAAS3oE,UAAW,YAAa,CACnD2V,IAAK,WACD,OAAOnkB,KAAKw3E,UAAYx3E,KAAKw3E,UAAUD,UAAY,IACtD,EACDtE,WAAAA,GACAC,aAAc,EAAA,CAAA,EAElBpkE,OAAOkkE,eAAemE,EAAS3oE,UAAW,UAAW,CACjD2V,IAAK,WACD,OAAOnkB,KAAKs3E,SAASnB,OACxB,EACDlD,WAAY,GACZC,aAAc,EAAA,CAAA,EAElBpkE,OAAOkkE,eAAemE,EAAS3oE,UAAW,cAAe,CACrD2V,IAAK,UACD,CAAA,OAAOnkB,KAAKs3E,SAASjB,WACxB,EACDpD,WAAAA,GACAC,aAAc,EAAA,CAAA,EAElBpkE,OAAOkkE,eAAemE,EAAS3oE,UAAW,SAAU,CAChD2V,IAAK,WACD,OAAOnkB,KAAKs3E,SAASZ,MACxB,EACDzD,WAAY,GACZC,aAAc,EAAA,CAAA,EAElBpkE,OAAOkkE,eAAemE,EAAS3oE,UAAW,WAAY,CAClD2V,IAAK,UAAA,CACD,OAAOnkB,KAAKs3E,SAASxB,QACxB,EACD7C,WAAY,GACZC,eAEJpkE,CAAAA,EAAAA,OAAOkkE,eAAemE,EAAS3oE,UAAW,QAAS,CAC/C2V,IAAK,UAAA,CACD,OAAOnkB,KAAKs3E,SAASf,KACxB,EACDtD,cACAC,aAAAA,EAEJpkE,CAAAA,EAAAA,OAAOkkE,eAAemE,EAAS3oE,UAAW,UAAW,CACjD2V,IAAK,UACD,CAAA,OAAOnkB,KAAKs3E,SAASX,OACxB,EACD1D,WAAAA,GACAC,aAAAA,EAEJpkE,CAAAA,EAAAA,OAAOkkE,eAAemE,EAAS3oE,UAAW,YAAa,CACnD2V,IAAK,UAAA,CACD,OAAOnkB,KAAKw3E,UAAYx3E,KAAKw3E,UAAUC,UAAY,CACtD,CAAA,EACDxE,WAAY,GACZC,eAEJpkE,CAAAA,EAAAA,OAAOkkE,eAAemE,EAAS3oE,UAAW,cAAe,CACrD2V,IAAK,UAAA,CACD,OAAOnkB,KAAKs3E,SAASlB,WACxB,EACDnD,cACAC,aAAAA,EAEJpkE,CAAAA,EAAAA,OAAOkkE,eAAemE,EAAS3oE,UAAW,WAAY,CAClD2V,IAAK,UACD,CAAA,OAAOnkB,KAAKs3E,SAASd,QACxB,EACDvD,WAAAA,GACAC,aAAAA,KAEJpkE,OAAOkkE,eAAemE,EAAS3oE,UAAW,YAAa,CACnD2V,IAAK,UACD,CAAA,OAAOnkB,KAAKs3E,SAASb,SACxB,EACDxD,WAAAA,GACAC,aAAc,EAAA,CAAA,EAElBiE,EAAS3oE,UAAUspE,QAAU,UACzB,CAAA,MAAO,CAAC1mB,GAAMpxD,KAAKm2E,OAAAA,EAAU,EAAGn2E,KAAKm2E,QAC7C,EACIgB,EAAS3oE,UAAUupE,QAAU,SAAUxvE,EAAGk5B,EAAAA,CAItC,QAHI59B,EAAQ7D,KAAK02E,OAAOj1C,EAAQ,CAAA,EAC5B39B,EAAM9D,KAAK02E,OAAOj1C,CAClBxiB,EAAAA,EAAMylD,EAAO,KAAM1kE,KAAKm2E,OACnBv8E,EAAAA,EAAIiK,EAAOjK,EAAIkK,EAAKlK,IACzBqlB,EAAIrlB,GAAKA,EACb,MAAO,CAACqlB,EAAKpb,EAAOC,CAC5B,CAAA,EACIqzE,EAAS3oE,UAAUwpE,QAAU,SAAUx2C,EAAMC,EAAO58B,EAAAA,CAKhD,QAHIoa,EAAMylD,EAAO,KAAM1kE,KAAKm2E,QAAU,CAAA,EAClCv8E,EAAIksE,GAAUR,GAAS9jC,EAAMC,EAAO58B,CAAQ7E,CAAAA,EAAAA,KAAKq2E,YACjDxyE,EAAQjK,EACH8rB,EAAI,EAAGA,EAAI,IAChBzG,EAAIrlB,CAAKA,EAAAA,EAAAA,EACPA,EACEoG,KAAK81E,SAASl8E,CAAOoG,IAAAA,KAAK1D,QAAQ2zE,MAHnBvqD,IAMvB,CAAA,MAAO,CAACzG,EAAKpb,EAAOjK,CAC5B,CAAA,EACIu9E,EAAS3oE,UAAUypE,QAAU,SAAUz2C,EAAMC,EAAO58B,EAChD,CAAA,IAAIoa,EAAMylD,EAAO,KAAM1kE,KAAKm2E,OAAAA,EACxBv8E,EAAIksE,GAAUR,GAAS9jC,EAAMC,EAAO58B,CAAQ7E,CAAAA,EAAAA,KAAKq2E,YAErD,OADAp3D,EAAIrlB,CAAKA,EAAAA,EACF,CAACqlB,EAAKrlB,EAAGA,EAAI,CAAA,CAC5B,EACIu9E,EAAS3oE,UAAU0pE,SAAW,SAAUx2C,EAAMn5B,EAAG4gE,EAAQoG,EACrD,CAAA,IAAI/G,EAAQxoE,KACRif,EAAM,CAKV,EAAA,OAJAjf,KAAK1D,QAAQq0E,SAAS51E,QAAQ,SAAU4mC,GACpC1iB,EAAMA,EAAI9e,OAAOqoE,EAAM2P,SAASz2C,EAAMC,EAAQwnC,EAAQoG,CAAAA,CAAAA,CAClE,GACQrzD,GAAK+C,CAAAA,EACEA,CACf,EACIk4D,EAAS3oE,UAAU2pE,SAAW,SAAUz2C,EAAMC,EAAQp5B,EAAGgnE,EACrD,CAAA,IAAItwD,EAAMjf,KAAK1D,QAAQ00E,SAASx2E,IAAI,SAAU2uE,EAAU,CAAA,OAAO,IAAImG,GAAK5tC,EAAMC,EAAQwnC,EAAQoG,CAAa,CAAA,CAAA,EAE3G,OADArzD,GAAK+C,CAAAA,EACEA,CACf,EACIk4D,EAAS3oE,UAAU4pE,SAAW,SAAU12C,EAAMC,EAAQwnC,EAAQoG,EAAAA,CAC1D,MAAO,CAAC,IAAID,GAAK5tC,EAAMC,EAAQwnC,EAAQoG,GAC/C,EACI4H,EAAS3oE,UAAU6pE,UAAY,SAAU1M,EACrC,CAAA,OAAQA,EACJ,CAAA,KAAKvD,EAAUuE,OACX,OAAO3sE,KAAK83E,QAAQliE,KAAK5V,IAC7B,EAAA,KAAKooE,EAAUsE,QACX,OAAO1sE,KAAK+3E,QAAQniE,KAAK5V,IAAAA,EAC7B,KAAKooE,EAAUqE,OACX,OAAOzsE,KAAKg4E,QAAQpiE,KAAK5V,IAAAA,EAC7B,KAAKooE,EAAU8D,MAEf,QACI,OAAOlsE,KAAKi4E,QAAQriE,KAAK5V,IAAAA,CAAAA,CAEzC,EACIm3E,EAAS3oE,UAAU8pE,WAAa,SAAU3M,EACtC,CAAA,OAAQA,GACJ,KAAKvD,EAAU4D,OACX,OAAOhsE,KAAKk4E,SAAStiE,KAAK5V,IAC9B,EAAA,KAAKooE,EAAU6D,SACX,OAAOjsE,KAAKm4E,SAASviE,KAAK5V,IAC9B,EAAA,KAAKooE,EAAUgJ,SACX,OAAOpxE,KAAKo4E,SAASxiE,KAAK5V,IAAAA,CAAAA,CAE1C,EACWm3E,CACX,EGvLO,EAAA,SAASoB,GAAa1G,EAAU2G,EAAS30E,EAAOC,EAAK20E,EAAIC,EAE5D,CAAA,QADIC,EAAU,GACLjzD,EAAI,EAAGA,EAAImsD,EAASh4E,OAAQ6rB,IAAK,CACtC,IAAIkzD,EAAAA,OACAC,EAAU,OACVjpC,EAAMiiC,EAASnsD,GACfkqB,EAAM,GACNgpC,EAAS5yE,KAAK+D,MAAM6lC,EAAM4oC,EAAQ3+E,MAClCg/E,EAAAA,EAAU5T,EAAMr1B,EAAK4oC,EAAQ3+E,MAG7B++E,IAAAA,EAAS5yE,KAAK+D,OAAO6lC,EAAM,GAAK4oC,EAAQ3+E,MACxCg/E,EAAAA,EAAU5T,EAAMr1B,EAAM,EAAG4oC,EAAQ3+E,MAAAA,GAGrC,QADIi/E,EAAM,CACDx1E,EAAAA,EAAIO,EAAOP,EAAIQ,EAAKR,IAAK,CAC9B,IAAIs1B,EAAM8/C,EAAOp1E,CACZ+gE,EAAAA,EAAUzrC,CAEfkgD,GAAAA,EAAIz/E,KAAKu/B,CACZ,CAAA,CACD,IAAIh/B,EAAAA,OAEAA,EADAg/E,EAAS,EACLE,EAAIr2E,MAAMm2E,CAAQ,EAAA,CAAA,EAGlBE,EAAIF,CAAAA,EAEZ,IAAI/pD,EAAO2pD,EAAQK,CACfngF,EAAAA,EAAOutE,GAAYwS,EAAGpC,YAAcz8E,CACpCkE,EAAAA,EAAMwoE,GAAQ5tE,EAAMm2B,CAAAA,EAGnB21C,EAASmU,EAAS76E,IACnB66E,EAAQt/E,KAAKyE,CACpB,CAAA,CAED,OADAoe,GAAKy8D,CAAAA,EACEA,CACX,CC/BO,SAASI,GAAKnE,EAAYt4E,EAC7B,CAAA,IAAIs1E,EAAUt1E,EAAQs1E,QAASjG,EAAOrvE,EAAQqvE,KAAMhtC,EAAWriC,EAAQqiC,SAAUkoC,EAAQvqE,EAAQuqE,MAAOgL,EAAWv1E,EAAQu1E,SACvHj8B,EAAQt5C,EAAQs5C,MACpB,GAAIA,IAAU,GAAKjX,IAAa,EAC5B,OAAOq6C,GAAWpE,CAEtB,EAAA,IAAIqE,EAAczJ,GAASC,SAASmC,CAChC6G,EAAAA,EAAK,IAAItB,GAAS76E,GACtBm8E,EAAGrB,QAAQ6B,EAAYz3C,KAAMy3C,EAAYx3C,KAEzC,EAAA,QADI+2C,EAqGR,SAAqBC,EAAIQ,EAAa38E,EAClC,CAAA,IAAIqvE,EAAOrvE,EAAQqvE,KAAMY,EAASjwE,EAAQiwE,OAAQoE,EAAWr0E,EAAQq0E,SAAUK,EAAW10E,EAAQ00E,SAClG,OAAI5B,GAAqBzD,CAAAA,EXgEtB,SAAsBtmD,EAAAA,CACzB,IAAI6zD,EAAoB7zD,EAAKusD,QAAQ3xD,QAAAA,EAAY,IACjD,GAAA,CAAKmvD,GAAqB/pD,EAAKsmD,IAAAA,EAC3B,MAAO,CAAA,EAEX,IAAI6M,EAAU,CAAA,EAQd,OAPAnzD,EAAKknD,OAAOxxE,QAAQ,SAAU2mC,EAAAA,CAC1Brc,EAAKsrD,SAAS51E,QAAQ,SAAU4mC,EAAAA,CAC5Btc,EAAK2rD,SAASj2E,QAAQ,SAAUouE,EAAAA,CAC5BqP,EAAQn/E,KAAK,IAAIi2E,GAAK5tC,EAAMC,EAAQwnC,EAAQ+P,CAAAA,CAAAA,CAC5D,CACA,CAAA,CAAA,CACA,GACWV,CACX,EW7E4Bl8E,CAAAA,EAEnBqvE,GAAQE,EAAMG,QACf3G,EAASkH,KACR/H,EAAS+H,EAAQ0M,EAAYv3C,IAAAA,GAC7BiqC,GAAQE,EAAMI,UACX5G,EAASsL,CAAAA,GAAAA,CACRnM,EAASmM,EAAUsI,EAAYt3C,MACnCgqC,GAAAA,GAAQE,EAAMuF,UACX/L,EAAS2L,CACRxM,GAAAA,CAAAA,EAASwM,EAAUiI,EAAY9P,MAAAA,EAC7B,CAAA,EAEJsP,EAAGH,WAAW3M,CAAd8M,EAAoBQ,EAAYv3C,KAAMu3C,EAAYt3C,OAAQs3C,EAAY9P,OAAQ8P,EAAY1J,WAAAA,CACrG,EAtH8BkJ,EAAIQ,EAAa38E,CAAAA,IAClC,CACL,IAAIg0E,EAAKmI,EAAGJ,UAAU1M,CAAAA,EAAMsN,EAAYz3C,KAAMy3C,EAAYx3C,MAAOw3C,EAAYp0E,GAAM6zE,EAAAA,EAASpI,EAAG,CAAA,EAAIzsE,EAAQysE,EAAG,CAAA,EAAIxsE,EAAMwsE,EAAG,GACvHD,EAAW8I,GAAmBT,EAAQ70E,EAAOC,EAAK20E,EAAIn8E,CAAAA,EAC1D,GAAI+oE,EAASwM,GAET,QADI8G,EAAUJ,GAAa1G,EAAU2G,EAAS30E,EAAOC,EAAK20E,EAAIC,GACrDhzD,EAAI,EAAGA,EAAIizD,EAAQ9+E,OAAQ6rB,IAAK,CACrC,IAAI5nB,EAAM66E,EAAQjzD,CAClB,EAAA,GAAImhD,GAAS/oE,EAAM+oE,EACf,OAAOmS,GAAWpE,CAEtB,EAAA,GAAI92E,GAAO8zE,EAAS,CAChB,IAAIwB,EAAcgG,GAAet7E,EAAKxB,CAAAA,EAItC,GAHKs4E,CAAAA,EAAWvN,OAAO+L,CACnB,GAEAx9B,GACEA,CAAAA,EAAAA,EAEE,OAAOojC,GAAWpE,EAG7B,CACJ,KAGD,KAASlvD,EAAI7hB,EAAO6hB,EAAI5hB,EAAK4hB,IAAK,CAC9B,IAAI2zD,EAAaX,EAAOhzD,CACxB,EAAA,GAAK2+C,EAAUgV,CAIf,EAAA,QADI3gF,EAAOutE,GAAYwS,EAAGpC,YAAcgD,CAC/B/1E,EAAAA,EAAI,EAAGA,EAAIk1E,EAAQ3+E,OAAQyJ,IAAK,CACrC,IAAIurB,EAAO2pD,EAAQl1E,CAAAA,EAKnB,GAJIxF,EAAMwoE,GAAQ5tE,EAAMm2B,CACxB,EAAIg4C,GAAS/oE,EAAM+oE,GAGf/oE,GAAO8zE,IACHwB,EAAcgG,GAAet7E,EAAKxB,CACtC,EAAA,CAAKs4E,EAAWvN,OAAO+L,CAAAA,GAGnBx9B,GAAAA,CAAAA,EACEA,GAEE,OAAOojC,GAAWpE,CAG7B,CACJ,CACJ,CAOL,GALIt4E,EAAQqiC,WAAa,IAIzBs6C,EAAYtgF,IAAI2D,EAAS+zE,CAAAA,EACrB4I,EAAYz3C,KAAOikC,IACnB,OAAOuT,GAAWpE,CAEjBxF,EAAAA,GAAqBzD,KACtB6M,EAAUC,EAAGH,WAAW3M,CAAAA,EAAMsN,EAAYv3C,KAAMu3C,EAAYt3C,OAAQs3C,EAAY9P,OAAQ,CAAA,GAE5FsP,EAAGrB,QAAQ6B,EAAYz3C,KAAMy3C,EAAYx3C,KAC5C,CAAA,CACL,CACA,SAAS63C,GAAWb,EAAIY,EAAY/8E,GAChC,IAAI6vE,EAAU7vE,EAAQ6vE,QAASU,EAAWvwE,EAAQuwE,SAAUzB,EAAY9uE,EAAQ8uE,UAAWuG,EAAWr1E,EAAQq1E,SAAUzG,EAAa5uE,EAAQ4uE,WAAYC,EAAc7uE,EAAQ6uE,YAAayB,EAAYtwE,EAAQswE,UAChN,OAASvH,EAAS8G,KAAa3H,EAAS2H,EAASsM,EAAGlC,MAAM8C,KACrDhU,EAASwH,CAAAA,GAAAA,CAAc4L,EAAG9B,QAAQ0C,IAClChU,EAAS+F,CAAAA,GAAAA,CAAe5G,EAAS4G,EAAWqN,EAAG3C,SAASuD,CAAAA,CAAAA,GACxDhU,EAASoT,EAAGhB,SAAegB,GAAAA,CAAAA,EAAGhB,UAAU4B,CAAAA,GACxC1H,IAAa,MAASnN,CAAAA,EAASiU,EAAGd,WAAY0B,KAC7ChU,EAAS6F,CAAAA,GAAe7F,EAAS8F,CAAAA,IAAAA,CAC9B3G,EAAS0G,EAAYuN,EAAGjC,SAAS6C,CAAAA,CAAAA,GAAAA,CACjC7U,EAAS2G,EAAasN,EAAGhC,UAAU4C,CAAAA,CAAAA,GACvChU,EAASuH,CACJyM,IAAAA,EAAaZ,EAAGtC,SAAAA,CACb3R,EAASoI,EAAWyM,EAAa,CACjC7U,GAAAA,CAAAA,EAASoI,GAAY6L,EAAGtC,QAAUkD,CAClCA,GAAAA,GAAcZ,EAAGtC,SACb3R,CAAAA,EAASoI,EAAWyM,EAAa,EAAIZ,EAAGtC,OAAAA,GAAAA,CACxC3R,EAASoI,EAAAA,CAAY6L,EAAGrC,YAAciD,EAAaZ,EAAGtC,OAAAA,EAC3E,CACA,SAASiD,GAAe1gF,EAAM4D,EAAAA,CAC1B,OAAO,IAAIw2E,GAAap6E,EAAM4D,EAAQg2E,MAAMc,YAChD,CAAA,CACA,SAAS4F,GAAWpE,GAChB,OAAOA,EAAW/kB,SACtB,CAAA,CACA,SAASspB,GAAmBT,EAAQ70E,EAAOC,EAAK20E,EAAIn8E,EAAAA,CAEhD,QADI+zE,KACKkJ,EAAa11E,EAAO01E,EAAaz1E,EAAKy1E,IAAc,CACzD,IAAIF,EAAaX,EAAOa,CACxBlJ,GAAAA,EAAWiJ,GAAWb,EAAIY,EAAY/8E,CAElCo8E,KAAAA,EAAOW,CAAc,EAAA,KAC5B,CACD,OAAOhJ,CACX,CCxGO,IAAImC,GAAO,CACdhE,GAAI,IAAI1K,EAAQ,GAChB2K,GAAI,IAAI3K,EAAQ,CAAA,EAChB4K,GAAI,IAAI5K,EAAQ,CAChB6K,EAAAA,GAAI,IAAI7K,EAAQ,CAAA,EAChB8K,GAAI,IAAI9K,EAAQ,CAChB0V,EAAAA,GAAI,IAAI1V,EAAQ,GAChB2V,GAAI,IAAI3V,EAAQ,CAAA,CAAA,EAET4N,GAAkB,CACzB/F,KAAMvD,EAAUuE,OAChBiF,QAAS,KACTjzC,SAAU,EACVsxC,KAAMuC,GAAKhE,GACX54B,MAAO,KACPixB,MAAO,KACPyL,KAAM,KACNT,SAAU,KACV1F,QAAS,KACTjB,WAAY,KACZC,YAAa,KACbyB,UAAW,KACXC,SAAU,KACVzB,UAAW,KACX0G,WAAY,KACZvF,OAAQ,KACRoE,SAAU,KACVK,SAAU,KACVW,SAAU,IAAA,EAEHH,GAAc1iE,OAAOyrB,KAAKm3C,EAOjC7F,EAAAA,EAAuB,UACvB,CAAA,SAASA,EAAMvvE,EAASo9E,EAAAA,CAChBp9E,IADgBo9E,SACMp9E,EAAU,CAAE,GAClCo9E,IADkC,SACZA,MAE1B15E,KAAK25E,OAASD,EAAU,KAAO,IAAIzF,GAEnCj0E,KAAKirE,YAAcoG,GAAkB/0E,CACrC,EAAA,IAAIy1E,EAAgBN,GAAan1E,GAASy1E,cAC1C/xE,KAAK1D,QAAUy1E,CAClB,CAuKD,OAtKAlG,EAAMuC,UAAY,SAAU/gE,EAAM09D,EAC9B,CAAA,OAAOqD,GAAU/gE,EAAM09D,EAC/B,EACIc,EAAMwD,SAAW,SAAUhiE,EAAM09D,EAC7B,CAAA,OAAOsE,GAAShiE,EAAM09D,CAC9B,CAAA,EACIc,EAAM+N,WAAa,SAAUviE,EACzB,CAAA,OAAO,IAAIw0D,EAAMA,EAAMmG,YAAY36D,CAAAA,GAAAA,MAC3C,CAAA,EACIw0D,EAAMr9D,UAAUqrE,MAAQ,SAAUjF,EAAAA,CAC9B,OAAOmE,GAAKnE,EAAY50E,KAAK1D,OAAAA,CACrC,EACIuvE,EAAMr9D,UAAU+lE,UAAY,SAAUF,EAAMhlE,EACxC,CAAA,MAAA,CAAA,CAAKrP,KAAK25E,QAEH35E,KAAK25E,OAAOpF,UAAUF,EAAMhlE,CAAAA,CAC3C,EACIw8D,EAAMr9D,UAAU4lE,UAAY,SAAUC,EAAM/iE,EAAOjC,EAAAA,CAC/C,GAAKrP,KAAK25E,OAEV,OAAO35E,KAAK25E,OAAOvF,UAAUC,EAAM/iE,EAAOjC,CAAAA,CAClD,EAOIw8D,EAAMr9D,UAAU0lE,IAAM,SAAU3L,EAC5B,CAAA,GAAIA,EACA,OAAOvoE,KAAK65E,MAAM,IAAIxR,GAAmB,MAAO,CAAE,EAAEE,CAAAA,CAAAA,EAExD,IAAIn6D,EAASpO,KAAKu0E,UAAU,KAAA,EAK5B,OAJInmE,IAAW,KACXA,EAASpO,KAAK65E,MAAM,IAAI5S,GAAW,MAAO,CAAE,CAC5CjnE,CAAAA,EAAAA,KAAKo0E,UAAU,MAAOhmE,IAEnBA,CACf,EASIy9D,EAAMr9D,UAAU2lE,QAAU,SAAU/M,EAAOD,EAAQvmD,EAAK2nD,GAEpD,GADI3nD,IAAQ,SAAUA,EAAAA,KACjBilD,GAAYuB,CAAAA,GAAAA,CAAWvB,GAAYsB,CAAAA,EACpC,MAAM,IAAIlgE,MAAM,yCAEpB,EAAA,IAAIoI,EAAO,CACP83D,OAAQA,EACRC,MAAOA,EACPxmD,IAAKA,CAAAA,EAET,GAAI2nD,EACA,OAAOvoE,KAAK65E,MAAM,IAAIxR,GAAmB,UAAWh5D,EAAMk5D,CAAAA,CAAAA,EAE9D,IAAIn6D,EAASpO,KAAKu0E,UAAU,UAAWllE,CAKvC,EAAA,OAJIjB,IAIJ,KAHIA,EAASpO,KAAK65E,MAAM,IAAI5S,GAAW,UAAW53D,CAC9CrP,CAAAA,EAAAA,KAAKo0E,UAAU,UAAWhmE,EAAQiB,CAE/BjB,GAAAA,CACf,EAQIy9D,EAAMr9D,UAAU24D,OAAS,SAAUnW,EAAIpwC,EAAAA,CAEnC,GADIA,IAAQ,SAAUA,EAAM,IAAA,CACvBilD,GAAY7U,CAAAA,EACb,MAAM,IAAI/pD,MAAM,wCAEpB,EAAA,IAAIoI,EAAO,CAAE2hD,GAAIA,EAAIpwC,IAAKA,GACtBxS,EAASpO,KAAKu0E,UAAU,SAAUllE,GAKtC,OAJIjB,IAAW,KACXA,EAASpO,KAAK65E,MAAM,IAAI5S,GAAW,SAAU53D,IAC7CrP,KAAKo0E,UAAU,SAAUhmE,EAAQiB,IAE9BjB,CACf,EAQIy9D,EAAMr9D,UAAU44D,MAAQ,SAAUpW,EAAIpwC,EAElC,CAAA,GADIA,IACJ,SADsBA,EAAAA,IACjBilD,CAAAA,GAAY7U,GACb,MAAM,IAAI/pD,MAAM,uCAAA,EAEpB,IAAIoI,EAAO,CAAE2hD,GAAIA,EAAIpwC,IAAKA,CACtBxS,EAAAA,EAASpO,KAAKu0E,UAAU,QAASllE,CAKrC,EAAA,OAJIjB,IAIJ,KAHIA,EAASpO,KAAK65E,MAAM,IAAI5S,GAAW,QAAS53D,CAAAA,CAAAA,EAC5CrP,KAAKo0E,UAAU,QAAShmE,EAAQiB,CAAAA,GAE7BjB,CACf,EAKIy9D,EAAMr9D,UAAUonC,MAAQ,UACpB,CAAA,OAAO51C,KAAKk0E,IAAMr6E,EAAAA,MAC1B,EAOIgyE,EAAMr9D,UAAUC,SAAW,UAAA,CACvB,OAAOklE,GAAgB3zE,KAAKirE,WACpC,CAAA,EAKIY,EAAMr9D,UAAUsrE,OAAS,SAAUhP,EAASC,EAAUC,EAAAA,CAClD,Od1EK,SAAUH,EAAOC,EAASC,EAAUC,GAC7C,OAAO,IAAIJ,GAAOC,EAAOC,EAASC,EAAUC,CAAAA,EAAev8D,SAC/D,CAAA,EcwEsBzO,KAAM8qE,EAASC,EAAUC,CAAAA,CAC/C,EACIa,EAAMr9D,UAAUurE,yBAA2B,UAAA,CACvC,OAAOrO,GAAmB1rE,IAAAA,CAClC,EAKI6rE,EAAMr9D,UAAUg4D,MAAQ,UAAA,CACpB,OAAO,IAAIqF,EAAM7rE,KAAKirE,WAAAA,CAC9B,EAEIY,EAAMC,YAAc,CAChB,SACA,UACA,SACA,QACA,SACA,WACA,UAAA,EAEJD,EAAMc,OAASvE,EAAUuE,OACzBd,EAAMa,QAAUtE,EAAUsE,QAC1Bb,EAAMY,OAASrE,EAAUqE,OACzBZ,EAAMK,MAAQ9D,EAAU8D,MACxBL,EAAMG,OAAS5D,EAAU4D,OACzBH,EAAMI,SAAW7D,EAAU6D,SAC3BJ,EAAMuF,SAAWhJ,EAAUgJ,SAC3BvF,EAAM2C,GAAKgE,GAAKhE,GAChB3C,EAAM4C,GAAK+D,GAAK/D,GAChB5C,EAAM6C,GAAK8D,GAAK9D,GAChB7C,EAAM8C,GAAK6D,GAAK7D,GAChB9C,EAAM+C,GAAK4D,GAAK5D,GAChB/C,EAAM2N,GAAKhH,GAAKgH,GAChB3N,EAAM4N,GAAKjH,GAAKiH,GAChB5N,EAAMmG,YAAcA,GACpBnG,EAAM8H,gBAAkBA,GACjB9H,CACX,IC3NI6F,GAAkB,CAClBE,QAAS,KACT73B,MAAO,GACPigC,OAAQ,GACRC,YACAC,WAAAA,GACA5H,KAAM,MAEH,SAAS6H,GAAWr9E,EAAGR,EAAAA,CAC1B,IAAI89E,EAAY,CAAA,EACZC,EAAY,CAAA,EACZC,EAAa,CACbC,EAAAA,EAAa,CACbC,EAAAA,EAAgBrI,GAAar1E,CAC7B80E,EAAAA,EAAU4I,EAAc5I,QACxBU,EAAOkI,EAAclI,KACrBmI,EA0HR,SAAwB39E,EAAGk9E,EACR,CAEf,GAFIA,IAAW,SAAUA,EAAAA,IACzBl9E,EAAIA,GAAKA,EAAEwa,QACNxa,EACD,MAAM,IAAImK,MAAM,wBAGpB,GAAK+yE,CAAAA,EACD,OAAOl9E,EAAExC,MAAM,IAEnB,EAEA,QAFImgF,EAAQ39E,EAAExC,MAAM;AAAA,CAChBV,EAAAA,EAAI,EACDA,EAAI6gF,EAAM5gF,QAAQ,CAErB,IAAIu4E,EAAQqI,EAAM7gF,CAAAA,EAAK6gF,EAAM7gF,CAAAA,EAAG2d,QAAQ,QAAS,EAAA,EAC5C66D,EAGIx4E,EAAI,GAAKw4E,EAAK,CAAA,IAAO,KAC1BqI,EAAM7gF,EAAI,CAAA,GAAMw4E,EAAK3vE,MAAM,GAC3Bg4E,EAAMryE,OAAOxO,EAAG,CAAA,GAGhBA,GAAK,EAPL6gF,EAAMryE,OAAOxO,EAAG,EASvB,CACD,OAAO6gF,CACX,EArJ+B39E,EAAGR,EAAQ09E,MAmCtC,EAAA,OAlCAS,EAAM1/E,QAAQ,SAAUq3E,EACpB,CAAA,IAAI9B,EACJ,GAAK8B,EAAL,CAEA,IAAIsI,EA0GZ,SAAuBtI,EAAAA,CACnB,IAAI9B,EAdR,SAAqB8B,EACjB,CAAA,GAAIA,EAAKrrE,QAAQ,GACb,IADJ,GACI,MAAO,CACH+O,KAAM,QACNxE,MAAO8gE,CAAAA,EAGf,IAAI9B,EAAKh2E,GAAM83E,EAAM,IAAK,CAAIt8D,EAAAA,EAAOw6D,EAAG,CAAIh/D,EAAAA,EAAQg/D,EAAG,CAAA,EACvD,MAAO,CACHx6D,KAAMA,EACNxE,MAAOA,EAEf,EAEyB8gE,CAAOt8D,EAAAA,EAAOw6D,EAAGx6D,KAAMxE,EAAQg/D,EAAGh/D,MACnDqpE,EAAQ7kE,EAAKxb,MAAM,GAAA,EACvB,IAAKqgF,EACD,MAAM,IAAI1zE,MAAM,uBACpB,MAAO,CACH6O,KAAM6kE,EAAM,GAAGv4B,YACfu4B,EAAAA,MAAOA,EAAMl4E,MAAM,GACnB6O,MAAOA,CAAAA,CAEf,EApH+B8gE,GAAOt8D,EAAO4kE,EAAG5kE,KAAM6kE,EAAQD,EAAGC,MAAOrpE,EAAQopE,EAAGppE,MAC3E,OAAQwE,EAAKssC,YAAAA,EAAAA,CACT,IAAK,QACD,GAAIu4B,EAAM9gF,OACN,MAAM,IAAIoN,MAAM,2BAA2B9G,OAAOw6E,EAAMt2E,KAAK,OAEjE+1E,EAAU/gF,KAAK24E,GAAYI,CAAAA,CAAAA,EAC3B,MACJ,IAAK,QACD,IAA4FwI,IAAlFtK,EAAK,4BAA4BjpD,KAAK+qD,CAAAA,KAAW,MAAQ9B,IAAnB8B,OAAmC9B,EAAK,CAAmB,GAAA,CAAA,EACvGsK,IAActI,IACdA,EAAOsI,GAEXP,EAAYA,EAAUl6E,OAAO06E,GAAWvpE,EAAOqpE,IAC/C,MACJ,IAAK,SACD,GAAIA,EAAM9gF,OACN,MAAM,IAAIoN,MAAM,4BAA4B9G,OAAOw6E,EAAMt2E,KAAK,GAAA,CAAA,CAAA,EAElEi2E,EAAWjhF,KAAK24E,GAAY1gE,CAC5B,CAAA,EAAA,MACJ,IAAK,SACDipE,EAAaA,EAAWp6E,OAAO06E,GAAWvpE,EAAOqpE,CAAAA,CAAAA,EACjD,MACJ,IAAK,UACD,MACJ,QACI,MAAM,IAAI1zE,MAAM,yBAA2B6O,CAAAA,CAAAA,CA5BxC,CA8BnB,CAAA,EACW,CACH87D,QAASA,EACTU,KAAMA,EACN8H,UAAWA,EACXC,UAAWA,EACXC,WAAYA,EACZC,WAAYA,CAAAA,CAEpB,CAmCO,SAASO,GAASh+E,EAAGR,EAAAA,CAExB,OADIA,IAAY,SAAUA,EAAU,CAAE,GAnC1C,SAAmBQ,EAAGR,EAClB,CAAA,IAAIg0E,EAAK6J,GAAWr9E,EAAGR,CAAU89E,EAAAA,EAAY9J,EAAG8J,UAAWC,EAAY/J,EAAG+J,UAAWC,EAAahK,EAAGgK,WAAYC,EAAajK,EAAGiK,WAAY3I,EAAUtB,EAAGsB,QAASU,EAAOhC,EAAGgC,KACzKoH,EAAUp9E,EAAQy9C,QAAU,GAKhC,GAJIz9C,EAAQ49E,aACR59E,EAAQ29E,SAAAA,GACR39E,EAAQ09E,OAAAA,IAER19E,EAAQ29E,UACRG,EAAUvgF,OAAS,GACnBwgF,EAAUxgF,QACVygF,EAAWzgF,QACX0gF,EAAW1gF,OAAQ,CACnB,IAAIkhF,EAAS,IAAIC,GAAStB,GAiB1B,OAhBAqB,EAAOnJ,QAAQA,CAAAA,EACfmJ,EAAOzI,KAAKA,GAAAA,MACZ8H,EAAAA,EAAUr/E,QAAQ,SAAU69B,EAAAA,CACxBmiD,EAAOlQ,MAAM,IAAIgB,EAAMoP,GAAkBriD,EAAKg5C,EAASU,GAAOoH,CAC1E,CAAA,CAAA,CAAA,EACQW,EAAUt/E,QAAQ,SAAUrC,EACxBqiF,CAAAA,EAAOG,MAAMxiF,CAAAA,CACzB,GACQ4hF,EAAWv/E,QAAQ,SAAU69B,EAAAA,CACzBmiD,EAAOI,OAAO,IAAItP,EAAMoP,GAAkBriD,EAAKg5C,EAASU,CAAOoH,EAAAA,CAAAA,CAAAA,CAC3E,GACQa,EAAWx/E,QAAQ,SAAUrC,EAAAA,CACzBqiF,EAAOK,OAAO1iF,CAAAA,CAC1B,CACY4D,EAAAA,EAAQ49E,YAAc59E,EAAQs1E,SAC9BmJ,EAAOG,MAAMtJ,GACVmJ,CACV,CACD,IAAIniD,EAAMwhD,EAAU,CAAM,GAAA,CAAA,EAC1B,OAAO,IAAIvO,EAAMoP,GAAkBriD,EAAKA,EAAIg5C,SAAWt1E,EAAQs1E,SAAWA,EAASh5C,EAAI05C,MAAQh2E,EAAQg2E,MAAQA,CAAOoH,EAAAA,CAAAA,CAC1H,EAGqB58E,EAKrB,SAA2BR,EAAAA,CACvB,IAAIu4B,EAAU,CAAA,EACV0F,EAAOzrB,OAAOyrB,KAAKj+B,CACnBk1E,EAAAA,EAAc1iE,OAAOyrB,KAAKm3C,IAK9B,GAJAn3C,EAAKx/B,QAAQ,SAAUkP,GACdu6D,EAASgN,EAAavnE,CACvB4qB,GAAAA,EAAQx7B,KAAK4Q,CACzB,CAAA,CAAA,EACQ4qB,EAAQh7B,OACR,MAAM,IAAIoN,MAAM,oBAAsB4tB,EAAQxwB,KAAK,IAEvD,CAAA,EAAA,OAAOyjE,EAASA,EAAS,CAAA,EAAI4J,EAAAA,EAAkBp1E,CACnD,CAAA,EAjB0CA,CAC1C,CAAA,CAAA,CACA,SAAS2+E,GAAkBriD,EAAKg5C,EAASU,EAAAA,CACrC,OAAOxK,EAASA,EAAS,CAAE,EAAElvC,CAAM,EAAA,CAAEg5C,QAASA,EAASU,KAAMA,CACjE,CAAA,CAAA,CAyEA,SAASuI,GAAWQ,EAAUV,EAE1B,CAAA,OATJ,SAA0BA,EACtBA,CAAAA,EAAM5/E,QAAQ,SAAUugF,GACpB,GAAK,CAAA,+BAA+B9gE,KAAK8gE,CAAAA,EACrC,MAAM,IAAIr0E,MAAM,kCAAoCq0E,CAAAA,CAEhE,EACA,EAEqBX,CACVU,EAAAA,EAAS/gF,MAAM,GAAKE,EAAAA,IAAI,SAAUqoB,EAAAA,CAAW,OAAO+jD,GAAkB/jD,CAAAA,CAAW,CAC5F,CAAA,CCnLA,SAAS04D,GAAmBC,EAAAA,CACxB,IAAIhT,EAAQxoE,KACZ,OAAO,SAAUy7E,EAIb,CAAA,GAHIA,IAGJ,SAFIjT,EAAM,IAAIroE,OAAOq7E,CAAcC,CAAAA,EAAAA,GAE/BjT,EAAM,IAAIroE,OAAOq7E,CAAAA,CAAAA,IAFcC,OAG/B,OAAOjT,EAAM,IAAIroE,OAAOq7E,CAAAA,CAAAA,EAE5B,QAAS5hF,EAAI,EAAGA,EAAI4uE,EAAMkT,OAAO7hF,OAAQD,IAAK,CAC1C,IAAI+hF,EAAUnT,EAAMkT,OAAO9hF,CAAAA,EAAGqxE,YAAYuQ,CAAAA,EAC1C,GAAIG,EACA,OAAOA,CAEd,CACT,CACA,CACA,IAAIX,GAA0B,SAAU1S,GAQpC,SAAS0S,EAAStB,EACE,CAAZA,IAAY,SAAUA,EAAU,IACpC,IAAIlR,EAAQF,EAAOn9D,KAAKnL,KAAM,GAAI05E,IAAY15E,KAO9C,OANAwoE,EAAMoJ,QAAU2J,GAAmB34E,MAAM4lE,EAAO,CAAC,SAAA,CAAA,EACjDA,EAAM8J,KAAOiJ,GAAmB34E,MAAM4lE,EAAO,CAAC,MAC9CA,CAAAA,EAAAA,EAAMkT,OAAS,CAAA,EACflT,EAAMoT,OAAS,CACfpT,EAAAA,EAAMqT,QAAU,CAChBrT,EAAAA,EAAMsT,QAAU,CAAA,EACTtT,CACV,CA+GD,OAhIAb,GAAUqT,EAAU1S,GAkBpB0S,EAASxsE,UAAUqrE,MAAQ,SAAUjF,GACjC,OCzCD,SAAiBA,EAAY8G,EAAQG,EAASD,EAAQE,EAASxJ,EAClE,CAAA,IAAIyJ,EAAc,CAAA,EACdC,EAAUpH,EAAWvN,OACzB,SAAS4U,EAAW7U,EAAOD,EAAAA,CACvB0U,EAAQ9gF,QAAQ,SAAU8vE,EACtBA,CAAAA,EAAMsJ,QAAQ/M,EAAOD,EAAAA,EAAcpsE,EAAAA,QAAQ,SAAUrC,EACjDqjF,CAAAA,EAAYptE,OAAOjW,CAAAA,CAAAA,EAAAA,EACnC,CACA,CAAA,CAAA,CACK,CACDojF,EAAQ/gF,QAAQ,SAAUrC,EAAAA,CACtB,IAAIwjF,EAAY,IAAIpJ,GAAap6E,EAAM45E,CAAMc,EAAAA,YAAAA,EAC7C2I,EAAYptE,OAAOutE,CAAAA,CAAAA,EAAAA,EAC3B,CAAA,EACItH,EAAWvN,OAAS,SAAU3uE,EAC1B,CAAA,IAAIs4D,EAAKriD,OAAOjW,CAChB,EAAA,OAAIigB,MAAMq4C,CACCgrB,EAAAA,EAAQ7wE,KAAKnL,KAAMtH,MACzBqjF,EAAY/qB,CAAAA,IACbirB,EAAW,IAAI/iF,KAAK83D,EAAK,CAAA,EAAI,IAAI93D,KAAK83D,EAAK,CACtC+qB,CAAAA,EAAAA,CAAAA,EAAY/qB,CACb+qB,MAAAA,EAAY/qB,MACLgrB,EAAQ7wE,KAAKnL,KAAMtH,GAI1C,EACQk8E,EAAW15C,SAAW,YACtB+gD,EAAWrH,EAAWvlE,KAAK+3D,MAAOwN,EAAWvlE,KAAK83D,MAClDyN,EAAAA,EAAWvN,OAAS,SAAU3uE,GAC1B,IAAIs4D,EAAKriD,OAAOjW,CAAAA,EAChB,QAAKqjF,EAAY/qB,CAAAA,IACb+qB,EAAY/qB,CAAAA,EAAAA,GACLgrB,EAAQ7wE,KAAKnL,KAAMtH,CAAAA,EAG1C,GAEI,QAASkB,EAAI,EAAGA,EAAIgiF,EAAO/hF,OAAQD,IAAK,CACpC,IAAIsiF,EAAY,IAAIpJ,GAAa8I,EAAOhiF,GAAI04E,CAAMc,EAAAA,YAAAA,EAClD,GAAKwB,CAAAA,EAAWvN,OAAO,IAAInuE,KAAKgjF,EAAUj8D,YACtC,KACP,CACDy7D,EAAO3gF,QAAQ,SAAU8vE,EACrBkO,CAAAA,GAAKnE,EAAY/J,EAAMvuE,QAC/B,CACI,EAAA,IAAIwB,EAAM82E,EAAW1N,QAErB,OADAhrD,GAAKpe,CACG82E,EAAAA,EAAW15C,QACf,IAAK,MACL,IAAK,UACD,OAAOp9B,EACX,IAAK,SACD,OAASA,EAAIjE,QAAUiE,EAAIA,EAAIjE,OAAS,IAAO,KAEnD,QACI,OAASiE,EAAIjE,QAAUiE,EAAI,CAAA,GAAO,IAE9C,CAAA,EDjBuB82E,EAAY50E,KAAK07E,OAAQ17E,KAAK67E,QAAS77E,KAAK47E,OAAQ57E,KAAK87E,QAAS97E,KAAKsyE,KAC9F,CAAA,CAAA,EAMI0I,EAASxsE,UAAUq8D,MAAQ,SAAUA,EAAAA,CACjCsR,GAAStR,EAAO7qE,KAAK07E,MAC7B,CAAA,EAMIV,EAASxsE,UAAU2sE,OAAS,SAAUtQ,EAAAA,CAClCsR,GAAStR,EAAO7qE,KAAK67E,OAAAA,CAC7B,EAMIb,EAASxsE,UAAU0sE,MAAQ,SAAUxiF,EACjC0jF,CAAAA,GAAS1jF,EAAMsH,KAAK47E,MAAAA,CAC5B,EAMIZ,EAASxsE,UAAU4sE,OAAS,SAAU1iF,EAClC0jF,CAAAA,GAAS1jF,EAAMsH,KAAK87E,OAAAA,CAC5B,EAMId,EAASxsE,UAAU6tE,OAAS,UAAA,CACxB,OAAOr8E,KAAK07E,OAAOlhF,IAAI,SAAUW,EAAK,CAAA,OAAO2/E,GAAS3/E,EAAEsT,SAAAA,CAAAA,CAAc,CAC9E,CAAA,EAMIusE,EAASxsE,UAAU8tE,QAAU,UACzB,CAAA,OAAOt8E,KAAK67E,QAAQrhF,IAAI,SAAUW,EAAAA,CAAK,OAAO2/E,GAAS3/E,EAAEsT,SAAc,CAAA,CAAA,CAAA,CAC/E,EAMIusE,EAASxsE,UAAU+tE,OAAS,UAAA,CACxB,OAAOv8E,KAAK47E,OAAOphF,IAAI,SAAUW,GAAK,OAAO,IAAIjC,KAAKiC,EAAE8kB,UAAa,CAC7E,CAAA,EAMI+6D,EAASxsE,UAAUguE,QAAU,UACzB,CAAA,OAAOx8E,KAAK87E,QAAQthF,IAAI,SAAUW,EAAK,CAAA,OAAO,IAAIjC,KAAKiC,EAAE8kB,QAAa,CAAA,CAAA,CAAA,CAC9E,EACI+6D,EAASxsE,UAAUrV,QAAU,UAAA,CACzB,IAAIiV,EAAS,CAAA,EAoBb,MAnBKpO,CAAAA,KAAK07E,OAAO7hF,QAAUmG,KAAKy8E,WAC5BruE,EAASA,EAAOjO,OAAOwzE,GAAgB,CAAE/B,QAAS5xE,KAAKy8E,QAE3Dz8E,CAAAA,CAAAA,GAAAA,KAAK07E,OAAO3gF,QAAQ,SAAU8vE,EAC1Bz8D,CAAAA,EAASA,EAAOjO,OAAO0qE,EAAMp8D,SAAWnU,EAAAA,MAAM;AAAA,CAC1D,CAAA,CAAA,CAAA,EACQ0F,KAAK67E,QAAQ9gF,QAAQ,SAAUogF,EAAAA,CAC3B/sE,EAASA,EAAOjO,OAAOg7E,EAClB1sE,SAAAA,EACAnU,MAAM;AAAA,CACNE,EAAAA,IAAI,SAAU43E,EAAAA,CAAQ,OAAOA,EAAK76D,QAAQ,UAAW,SAAA,IACrDob,OAAO,SAAUy/C,EAAQ,CAAA,MAAA,CAAQ,WAAW53D,KAAK43D,CAAAA,CAAQ,CAC1E,CAAA,CAAA,CAAA,EACYpyE,KAAK47E,OAAO/hF,QACZuU,EAAO/U,KAAKqjF,GAAe,QAAS18E,KAAK47E,OAAQ57E,KAAKsyE,KAEtDtyE,CAAAA,CAAAA,EAAAA,KAAK87E,QAAQjiF,QACbuU,EAAO/U,KAAKqjF,GAAe,SAAU18E,KAAK87E,QAAS97E,KAAKsyE,KAAAA,CAAAA,CAAAA,EAErDlkE,CACf,EAOI4sE,EAASxsE,UAAUC,SAAW,UAC1B,CAAA,OAAOzO,KAAK7G,QAAUkL,EAAAA,KAAK;AAAA,CACnC,CAAA,EAII22E,EAASxsE,UAAUg4D,MAAQ,UACvB,CAAA,IAAImW,EAAM,IAAI3B,EAAAA,CAAAA,CAAWh7E,KAAK25E,MAAAA,EAK9B,OAJA35E,KAAK07E,OAAO3gF,QAAQ,SAAU6hF,GAAQ,OAAOD,EAAI9R,MAAM+R,EAAKpW,QAAW,CACvExmE,EAAAA,KAAK67E,QAAQ9gF,QAAQ,SAAU6hF,EAAQ,CAAA,OAAOD,EAAIxB,OAAOyB,EAAKpW,MAAW,CAAA,CAAA,CAAA,EACzExmE,KAAK47E,OAAO7gF,QAAQ,SAAUrC,EAAAA,CAAQ,OAAOikF,EAAIzB,MAAM,IAAIhiF,KAAKR,EAAKunB,QAAAA,CAAAA,CAAAA,CAAc,GACnFjgB,KAAK87E,QAAQ/gF,QAAQ,SAAUrC,EAAQ,CAAA,OAAOikF,EAAIvB,OAAO,IAAIliF,KAAKR,EAAKunB,QAAc,CAAA,CAAA,CAAA,CAAA,EAC9E08D,CACf,EACW3B,CACX,EAAEnP,GAEF,SAASsQ,GAAStR,EAAOnkD,EAAAA,CACrB,KAAMmkD,aAAiBgB,GACnB,MAAM,IAAIjE,UAAUvtE,OAAOwwE,CAAAA,EAAS,wBAEnCrG,EAAAA,EAAS99C,EAAWlsB,IAAIH,MAAAA,EAASA,OAAOwwE,CAAAA,CAAAA,GACzCnkD,EAAWrtB,KAAKwxE,CAAAA,CAExB,CACA,SAASuR,GAAS1jF,EAAMguB,EAAAA,CACpB,GAAMhuB,EAAAA,aAAgBQ,MAClB,MAAM,IAAI0uE,UAAUvtE,OAAO3B,GAAQ,uBAElC8rE,EAAAA,EAAS99C,EAAWlsB,IAAImU,QAASA,OAAOjW,CAAAA,CAAAA,IACzCguB,EAAWrtB,KAAKX,GAChBwjB,GAAKwK,CAAAA,EAEb,CACA,SAASg2D,GAAep1D,EAAOi1D,EAAQjK,EACnC,CAAA,IAAIa,GAASb,GAAQA,EAAKlwB,YAAAA,IAAkB,MACxC9vB,EAAS6gD,EAAQ,GAAGhzE,OAAOmnB,EAAO,GAAO,EAAA,GAAGnnB,OAAOmnB,EAAO,UAAUnnB,OAAOmyE,EAAM,GACjF3vD,EAAAA,EAAa45D,EACZ/hF,IAAI,SAAU0gF,EAAS,CAAA,OAAOvU,GAAkBuU,EAAM/hF,QAAAA,EAAWg6E,KACjE9uE,KAAK,GACV,EAAA,MAAO,GAAGlE,OAAOmyB,GAAQnyB,OAAOwiB,CAAAA,CACpC,CExKO,MAAMk6D,GAKZ,YAAY9lF,EACXiJ,CAAAA,KAAK88E,WAAa/lF,CACnB,CAEA,SAAAomE,CACC,MAAMpmE,EAAYiJ,KAAK88E,WAYvB,OAXK98E,KAAK+8E,eACJ/8E,KAAA+8E,aAAev4E,SAASC,cAAc,KAC3CzE,EAAAA,KAAK+8E,aAAar3E,UAAY,0CAEpB3O,EAAAg/B,SAASupB,YAAYt/C,KAAK+8E,eAElChmF,EAAUM,OAAOo0C,IACdzrC,KAAA+8E,aAAaptE,UAAUhX,IAAI,mBAE3BqH,EAAAA,KAAA+8E,aAAaptE,UAAU+L,OAAO,mBAE7B1b,EAAAA,KAAK+8E,YACb,CAEA,YAAYplE,EAAAA,CAEJ,OADP3X,KAAKg9E,MAAQrlE,EACN3X,IACR,CAIA,KAAK9H,EAA2BD,GAC/B,MAAMlB,EAAYiJ,KAAK88E,WACjBpnD,EAAa3+B,EAAUk5C,YACvB/yC,EAAYsH,SAASqO,KACrB8E,EAAO3X,KAAKm9D,QAOd,EAAA,GALAznC,EAAW/Z,UAAUhE,EAAMza,CAC9B8C,IAAAA,KAAKK,OACLnD,EAAUyH,YAAYgT,CAGnB3X,GAAAA,KAAKi9E,kBAAkB/kF,CAAO,EAAA,CAC3B,MAAAuJ,EAAWzB,KAAKk9E,0BAA0BhlF,CAAAA,EAChDD,EAAMwJ,EAASxJ,IACfC,EAAOuJ,EAASvJ,IACjB,CAMO,OAJFyf,EAAA3f,MAAMC,IAAMA,EAAM,KAClB0f,EAAA3f,MAAME,KAAOA,EAAO,KAEfnB,EAAAg/B,SAASwpB,mBAAmB5nC,CAAAA,EAC/B3X,IACR,CACA,MACC,CAAA,MAAMjJ,EAAYiJ,KAAK88E,WACjBnlE,EAAO3X,KAAKm9D,UAKX,OAJJxlD,GAAQA,EAAK1V,YACV0V,EAAA1V,WAAWC,YAAYyV,CAAAA,EAEnB5gB,EAAAg/B,SAASypB,kBAAkB7nC,CAC9B3X,EAAAA,IACR,CAEA,WAAWvH,EAGH,CAAA,OAFMuH,KAAKm9D,QACbz4D,EAAAA,UAAYjM,EACVuH,IACR,CAGQ,kBAAkB7I,EACzB,CAAA,MAAA,EAAA,CAAKA,GAAgBA,OAAAA,GAAU,WAGxB,YAAaA,GAAS,YAAaA,CAC3C,CAEQ,cAAAgmF,CACA,OAAAn9E,KAAKg9E,OAASx4E,SAASqO,IAC/B,CAGQ,0BAA0B1b,EACjC,CAAA,MAAMJ,EAAYiJ,KAAK88E,WACjBpnD,EAAa3+B,EAAUk5C,YAEvBmtC,EAAYp9E,KAAKq9E,iBACjBC,EAAAA,EAAct9E,KAAKm9D,QACnBmF,EAAAA,EAAoB,CACzBrqE,IAAI,EACJC,KAAM,EACN0N,MAAO03E,EAAYhpE,YACnB3O,OAAQ23E,EAAYlpE,aACpBsI,OAAQ,EACRtE,MAAO,CAAA,EAGFmlE,EAAUxmF,EAAUM,OAAOmmF,iBAC3BC,EAAU1mF,EAAUM,OAAOqmF,iBAE3BxgF,EAAYsH,SAASqO,KACrB8qE,EAAQjoD,EAAWjZ,yBAAyBtlB,EAAO+F,CAAAA,EACnD0gF,EAAeloD,EAAWxY,gBAAgBhgB,CAChDygF,EAAAA,EAAMhhE,GAAKihE,EAAajhE,EAExB2lD,EAAQrqE,IAAM0lF,EAAMhhE,EACpB2lD,EAAQpqE,KAAOylF,EAAM/gE,EACrB0lD,EAAQrqE,KAAOwlF,EACfnb,EAAQpqE,MAAQqlF,EACRjb,EAAA5lD,OAAS4lD,EAAQrqE,IAAMqqE,EAAQ38D,OAC/B28D,EAAAlqD,MAAQkqD,EAAQpqE,KAAOoqE,EAAQ18D,MAEjC,MAAAkV,EAAYlkB,OAAOinF,QAAU3gF,EAAU4d,UA4BtC,OA1BJwnD,EAAQrqE,IAAMmlF,EAASnlF,IAAM6iB,GAC/BwnD,EAAQrqE,IAAMmlF,EAASnlF,IACfqqE,EAAA5lD,OAAS4lD,EAAQrqE,IAAMqqE,EAAQ38D,QAC/B28D,EAAQ5lD,OAAS0gE,EAAS1gE,SAClC4lD,EAAQ5lD,OAAS0gE,EAAS1gE,OAClB4lD,EAAArqE,IAAMqqE,EAAQ5lD,OAAS4lD,EAAQ38D,QAGrC28D,EAAQpqE,KAAOklF,EAASllF,MAC1BoqE,EAAQpqE,KAAOklF,EAASllF,KAChBoqE,EAAAlqD,MAAQglE,EAASllF,KAAOoqE,EAAQ18D,OAChC08D,EAAQlqD,MAAQglE,EAAShlE,QACjCkqD,EAAQlqD,MAAQglE,EAAShlE,MACjBkqD,EAAApqE,KAAOoqE,EAAQlqD,MAAQkqD,EAAQ18D,OAGrC+3E,EAAM/gE,GAAK0lD,EAAQpqE,MAAQylF,EAAM/gE,GAAK0lD,EAAQlqD,QAChDkqD,EAAQpqE,KAAOylF,EAAM/gE,EAAI0lD,EAAQ18D,MAAQ23E,EACjCjb,EAAAlqD,MAAQkqD,EAAQpqE,KAAOoqE,EAAQ18D,OAGrC+3E,EAAMhhE,GAAK2lD,EAAQrqE,KAAO0lF,EAAMhhE,GAAK2lD,EAAQ5lD,SAC/C4lD,EAAQrqE,IAAM0lF,EAAMhhE,EAAI2lD,EAAQ38D,OAAS83E,EACjCnb,EAAA5lD,OAAS4lD,EAAQrqE,IAAMqqE,EAAQ38D,QAGjC28D,CACR,CAEQ,kBAAA+a,CACP,MAAMtmF,EAAYiJ,KAAK88E,WACjBpnD,EAAa3+B,EAAUk5C,YACvB/yC,EAAY8C,KAAKm9E,eACvB,IAGIvtC,EAHAwtC,EAAWlgF,EACX4d,EAAYlkB,OAAOinF,QAAUr5E,SAASqO,KAAKiI,UAC3CE,EAAapkB,OAAOknF,QAAUt5E,SAASqO,KAAKmI,WAWzC,OARJ9d,IAAcnG,EAAUgnF,aAC1BX,EAAWrmF,EAAUinF,OACTljE,EAAA,EACCE,EAAA,EACP40B,EAAAla,EAAWxY,gBAAgBnmB,EAAUinF,MAAAA,GAErCpuC,EAAAla,EAAWxY,gBAAgBkgE,CAE3B,EAAA,CACNllF,KAAK03C,EAAIhzB,EAAI5B,EACb/iB,IAAK23C,EAAIjzB,EAAI7B,EACblV,MAAOgqC,EAAIhqC,MACXD,OAAQiqC,EAAIjqC,OACZ+W,OAAQkzB,EAAIjzB,EAAIizB,EAAIjqC,OAASmV,EAC7B1C,MAAOw3B,EAAIhzB,EAAIgzB,EAAIhqC,MAAQoV,CAE7B,CAAA,CAAA,CCrKM,MAAMijE,EAQZ,CAAA,YAAYlnF,EAAAA,CALZiJ,KAAQk+E,WAAqB,GAMvBl+E,KAAAsiE,QAAU,IAAIua,GAAQ9lF,CAAAA,EAC3BiJ,KAAK88E,WAAa/lF,EACbiJ,KAAAwmC,WAAazvC,EAAUogB,qBAC5BnX,EAAAA,KAAKm+E,sBACN,CAAA,CAEA,YACCn+E,CAAAA,KAAKsiE,QAAQjiE,KAAAA,EACbL,KAAKwmC,WAAWzvB,UAAAA,CACjB,CACA,cACC/W,KAAKo+E,UAAAA,CACN,CACA,OAAO/mF,EACN,CAAA,IAAIub,EAAOpO,SAASqO,KACpB,MAAM9b,EAAYiJ,KAAK88E,WACjBpnD,EAAa3+B,EAAUk5C,YACzB54C,EAAOR,SACV+b,EAAO7b,EAAU+c,OAGlB,IAAIuqE,EAAkB,KAChB,MAAAttE,EAAW5Z,GACV,CAAA,MAAAmnF,EAAc5oD,EAAW3Y,cAAc5lB,CACvConF,EAAAA,EAAa7oD,EAAWp6B,QAAQgjF,EAAajnF,EAAO+jB,QAAAA,EAC1D,GAAGsa,EAAW/Z,UAAU2iE,EAAat+E,KAAKsiE,QAAQnF,QACjD,CAAA,EAAA,OAGD,MAAMqhB,EAAiB,KACJH,EAAAE,EACXlnF,EAAAonF,aAAatnF,EAAOonF,CAAU,CAAA,EAGnCF,EACCE,GAAcA,IAAeF,EACxBhnF,EAAAqnF,YAAYvnF,EAAOonF,IAEnBlnF,EAAAsnF,aAAaxnF,EAAOknF,CAAAA,EACTA,EAAA,KAEfE,GAAcA,IAAeF,GAChBG,KAIdD,GACaC,EAAAA,CAEjB,EAGIx+E,KAAA8W,OAAOzf,EAAO+jB,QAAAA,EACnBpb,KAAKwmC,WAAW5vB,OAAOhE,EAAM,YAAa7B,CACrC/Q,EAAAA,KAAAk+E,WAAW7mF,EAAO+jB,QAAAA,EAAY,CAClCzD,KAAM/E,EACN7B,QAEFnX,CAAA,CAAA,CAEA,OAAOwhB,GACA,MAAAwjE,EAAW5+E,KAAKk+E,WAAW9iE,GAC9BwjE,GACF5+E,KAAKwmC,WAAW1vB,OAAO8nE,EAASjnE,KAAM,YAAainE,EAAS7tE,OAAAA,CAE9D,CAEA,WAAW1Z,EACJ,CAAA,MAAAwnF,EAAiB1nF,GACtB,CAAA,IAAIqvE,EAAQrvE,EAOL,OAJJqN,SAA4B,mBAAA,CAAMA,SAASgmB,cAErCg8C,EAAAhiE,SAA4B,kBAAErN,CAEhCqvE,GAAAA,CAAA,EAERxmE,KAAKm+E,sBACLn+E,EAAAA,KAAK4W,OAAO,CACXwE,SAAU/jB,EAAO+jB,SACjBvkB,OAAQQ,EAAOR,OACf4nF,aAAa,CAACtnF,EAAmBwgB,IAChC,CAAA,MAAMlf,EAAOpB,EAAOoB,KAAKtB,EAAOwgB,CAAAA,EAC7Blf,GACFuH,KAAK8+E,UAAUD,EAAc1nF,CAAAA,EAAQsB,CACtC,CAAA,EAEDimF,YAAY,CAACvnF,EAAmBwgB,IAC/B,CAAA,MAAMlf,EAAOpB,EAAOoB,KAAKtB,EAAOwgB,CAAAA,EAC7Blf,EACFuH,KAAK8+E,UAAUD,EAAc1nF,CAAAA,EAAQsB,IAErCuH,KAAK8+E,UAAU3vE,eACfnP,EAAAA,KAAKo+E,YACN,EAEDO,aAAa,IACZ3+E,CAAAA,KAAK8+E,UAAU3vE,eACfnP,EAAAA,KAAKo+E,UAAU,CAAA,CAAA,CAAA,CAGlB,CAEQ,uBAAAD,CACP,MAAMpnF,EAAYiJ,KAAK88E,WAEpB98E,KAAK8+E,WACP9+E,KAAK8+E,UAAU3vE,eAEbnP,EAAAA,KAAKo+E,WACPp+E,KAAKo+E,UAAUjvE,eAEhBnP,EAAAA,KAAKsiE,QAAQjiE,KAAAA,EAEbL,KAAK8+E,UAAaC,GAAsB/vE,MAAM,CAAC7X,EAAmBsB,IAAAA,CAC9D1B,EAAU8I,UAAU,kBAAmB,CAAC1I,CAC1C6I,CAAAA,IAFgEvH,GAEhEuH,KAAKsiE,QAAQjiE,KAERL,GAAAA,KAAAsiE,QAAQlC,WAAW3nE,GACnBuH,KAAAsiE,QAAQ0c,KAAK7nF,CAAAA,EACnB,EACEJ,EAAUM,OAAO4nF,iBAAmB,CAAA,EAEvCj/E,KAAKo+E,UAAaW,GAAsB/vE,MAAM,IAAA,CAC7ChP,KAAK8+E,UAAU3vE,eAAAA,EACfnP,KAAKsiE,QAAQjiE,MAAK,EAChBtJ,EAAUM,OAAO6nF,sBAAwB,EAC7C,CClHc,CAAA,MAAAC,GAAA,CACdC,aCzCc,SAASroF,EAAAA,CAExBA,EAAUM,OAAOgoF,iBAAmB,MACpCtoF,EAAUuoF,mBAAqB,SAASnkF,GACvC,IACIuoB,EADQvoB,EAAEE,OACCP,aAAa,gBACxBykF,EAAAA,EAAMxoF,EAAU2B,KAAKspB,YAAYjrB,EAAUM,OAAOurD,SAAU,GAAA,IAChE,GAAIl/B,EAIH,OAHA3sB,EAAU0V,eAAe8yE,EAAI77D,CAAK3sB,EAAAA,EAAUM,OAAOgoF,gBAC/ClkF,EAAAA,GAAKA,EAAEyxB,gBACVzxB,EAAEyxB,eACI,EAAA,EAET,EACA71B,EAAUkE,YAAY,mBAAoB,UAAA,CACzC,IAAIukF,EAAa,SAASv1E,EAAKw1E,EAAAA,CAC9BA,EAAWA,GAAax1E,EAAI,cAExBlT,EAAU+sB,UAAU,qBAAsB27D,KAC7C1oF,EAAU+sB,UAAU,qBAAsB27D,CAAAA,EAAY1oF,EAAU+sB,UAAU27D,CAAAA,GAE3E,IAAIC,EAAS3oF,EAAU+sB,UAAU,qBAAsB27D,CACnDE,EAAAA,EAAM5oF,EAAU2B,KAAKyoB,YAAYpqB,EAAUM,OAAOurD,UACtD7rD,EAAU+sB,UAAU27D,CAAY,EAAA,SAAS/mF,GACxC,MAAO,sBAAwBinF,EAAIjnF,CAAAA,EAAQ,cAAgBgnF,EAAOhnF,CAAAA,EAAQ,MAC7E,CACA,EAIC,GAFA8mF,EAAW,MACXA,EAAAA,EAAW,GAAI,WACXx/E,EAAAA,KAAK/C,OACR,QAASgN,KAAOjK,KAAK/C,OACpBuiF,EAAWv1E,CAGbjK,EAAAA,KAAKirC,gBAAgBjrC,KAAK+pB,KAAM,QAAShzB,EAAUuoF,kBACnDvoF,EAAAA,EAAUI,MAAM6I,KAAK+pB,KAAM,QAAShzB,EAAUuoF,mBAC/C,CAEA,CAAA,EDGCM,cE1Cc,SAAS7oF,GAExBA,EAAU2B,KAAKmnF,kBAAoB,SAASnnF,GAC3C,OAAO3B,EAAU2B,KAAKC,IAAID,EAAM,EAAG,MAAA,CACpC,EAEA3B,EAAU+sB,UAAUg8D,mBAAqB,SAASj8E,EAAMC,EAAIrH,GAC3D,OAAIA,EAAG4C,OACCW,KAAK+uB,SAAStyB,EAAGnE,WAAYmE,EAAGlE,SAAUkE,GAAI,IAAIuD,KAAKwkD,WAAW3gD,CAAAA,EAElE9M,EAAU+sB,UAAUiL,SAASlrB,CAAO,EAAA,YAAY9M,EAAU+sB,UAAUiL,SAASjrB,CACtF,CAAA,EACA/M,EAAU+sB,UAAUi8D,mBAAqB,SAASl8E,EAAMC,EAAI3M,EAC3D,CAAA,OAAOA,EAAMkW,IACd,EACAtW,EAAU+sB,UAAUk8D,mBAAqB,UAAA,CAAY,MAAO,EAAG,EAE/DjpF,EAAU2B,KAAKunF,oBAAoB,UAAA,CAAY,OAAOlpF,EAAU2B,KAAKwF,UAAUnH,EAAU0J,aAAgB,CAAA,CAAA,EAEzG1J,EAAUkE,YAAY,mBAAmB,UACxC,CAAA,IAAIilF,EAA4BnpF,EAAUopF,sBAC1CppF,EAAUopF,sBAAwB,WACjC,GAAIngF,KAAKoB,OAAS,gBAATA,CACHpB,KAAK3I,OAAO+2C,UAAYpuC,KAAK3I,OAAOmT,iBACxCxK,KAAKyK,YAAAA,UAEFy1E,EACH,OAAOA,EAA0Bt9E,MAAM5C,KAAMiJ,SAAAA,CAEjD,EAGC,IAAI4W,EAAM9oB,EAAU4V,YACpB5V,EAAU4V,YAAY,SAAS9N,EAC9B,CAAA,GAAImB,KAAKoB,OAAS,gBAGjB,OAAOye,EAAIjd,MAAM5C,KAAKiJ,SAAAA,EAFtBm3E,EAGH,CAAA,EAEC,IAAIC,EAAuBtpF,EAAU6V,iBA4BrC,SAASwzE,IAGR,IAAI95D,EAASvvB,EAAUmvD,mBAAAA,EACvB5/B,EAAOpK,KAAK,SAASxI,EAAEC,EAAAA,CAAI,OAAOD,EAAEpb,WAAWqb,EAAErb,WAAW,EAAG,EAAE,CAMjE,EAAA,QAHIwkD,EAEArkD,EAAK,gCAHO1B,EAAUg/B,SAAS8mB,qBAGgB,EAAA,IAC1CjjD,EAAE,EAAGA,EAAE0sB,EAAOzsB,OAAQD,IAAI,CAClC,IAAI6C,EAAK6pB,EAAO1sB,CACZw0D,EAAAA,EAAY3xD,EAAGyvD,MAAO,oCAAoCzvD,EAAGyvD,MAAM,IAAK,GACxEA,EAASzvD,EAAGkwD,UAAW,+BAA+BlwD,EAAGkwD,UAAU,IAAK,GACxE2zB,EAAWvpF,EAAU+sB,UAAU2gC,YAAYhoD,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAE3EqgD,EAAAA,EAAwB/lD,EAAUg/B,SAAS+mB,sBAAsBrgD,CACjE,EAAA,IAAI8jF,EAA0BxpF,EAAUg/B,SAASgnB,uBAEjDtkD,EAAAA,GAAM,QAAQqkD,EAAsB,2BAA2BwjC,EAAS,IAAIA,EAAS,IACnF,eAAe7jF,EAAG9C,GAAG,KAAK5C,EAAUM,OAAOqC,gBAAgB,KAAK+C,EAAG9C,GAAG,YAAYuyD,EAASkC,GAC1F3xD,EAAGuvD,aAAa,IAAI,yCACpBj1D,EAAUM,OAAOo0C,IAAM10C,EAAU+sB,UAAU08D,YAAY/jF,EAAGlE,SAASkE,EAAGnE,WAAYmE,GAAI1F,EAAU+sB,UAAU08D,YAAY/jF,EAAGnE,WAAYmE,EAAGlE,SAASkE,CAClJ,GAAA,SACFhE,GAAM,QAAQ8nF,CAAAA;AAAAA;AAAAA,iBAGd9nF,GAAM,SAAS1B,EAAU+sB,UAAU28D,YAAYhkF,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,EAAI,eAC/E,CACDhE,GAAM,yCAGN1B,EAAUwJ,KAAmB,aAAE,GAAGmE,UAAYjM,EAC9C1B,EAAUwJ,KAAmB,aAAE,CAAGqG,EAAAA,WAAW,CAAGkU,EAAAA,UAAY/jB,EAAU2pF,kBAAkB,EAGxF,IAAIC,EAAc5pF,EAAUwJ,KAAmB,aAAE,CAAGqG,EAAAA,WAAW,GAChD+5E,EAAY/5E,WAAW+5E,EAAY/5E,WAAW/M,OAAO,CAC3D7B,EAAAA,MAAM2N,OAAUg7E,EAAYvsE,aAAerd,EAAUwJ,KAAmB,aAAE,GAAG6T,aAAgB,OAAUusE,EAAYvsE,aAAa,KAEzI,IAAIjL,EAAEpS,EAAUwJ,KAAmB,aAAE,CAAGsG,EAAAA,WAAWD,WAE/Cg6E,EAAc7pF,EAAUqgD,mBACzBwpC,EAKH,IALGA,IACFA,EAAYl8E,UAAU3N,EAAU+sB,UAAU+8D,YAAY9pF,EAAU6J,UAAW7J,EAAU4J,UAAW5J,EAAUqK,KAG3GrK,GAAAA,EAAUg3B,UAAU,CACpB,EAASn0B,EAAE,EAAGA,EAAIuP,EAAEtP,OAAO,EAAGD,IAC7B7C,EAAUg3B,UAAUn0B,CAAAA,EAAGuP,EAAEvP,CAAAA,CAE1B,CA9ED7C,EAAU6V,iBAAmB,UAK5B,CAAA,OAJG5M,KAAKoB,OAAS,kBAChBrK,EAAU2pF,iBAAmB3pF,EAAUwJ,KAAmB,aAAE,CAAGqG,EAAAA,WAAW,GAAGkU,UAC7E/jB,EAAUwJ,KAAmB,aAAE,GAAGqG,WAAW,CAAA,EAAGkU,UAAY,GAEtDulE,EAAqBz9E,MAAM5C,KAAKiJ,SACzC,CAAA,EA0EClS,EAAU+pF,mBAAmB,SAAS5lF,EAAAA,CACrCnE,EAAU6J,UAAY7J,EAAUM,OAAO0pF,cAAchqF,EAAU2B,KAAKunF,oBAAoBlpF,EAAUiT,KAAAA,EAClGjT,EAAU4J,UAAY5J,EAAUM,OAAO2pF,YAAYjqF,EAAU2B,KAAKmnF,kBAAkB9oF,EAAU6J,UAAW,GAxE1G,SAAuB1F,EAAAA,CACtB,GAAIA,EAAK,CACR,IAAIgtE,EAAInxE,EAAUooB,OAAO6P,OAErBiyD,EAAUlqF,EAAUg/B,SAAS2mB,qBAAAA,EAC7BwkC,EAAanqF,EAAUg/B,SAAS4mB,qBAAqBurB,EAAExvE,MACvDyoF,EAAoBpqF,EAAUg/B,SAAS6mB,4BAA4BsrB,EAAE9jC,WAEzErtC,EAAAA,EAAUwJ,KAAqB,eAAE,GAAGmE,UAAU,QAAQu8E,EAAR,wDACrCC,EAAW,IAAIhZ,EAAExvE,KADoB,sEAEmByoF,EAAkB,IAAIjZ,EAAE9jC,YAF3C,gBAI9CrtC,EAAUoK,YAAY,GACtBpK,EAAU60C,UAAAA,CACV,CACD,EA2Dc1wC,CACVA,EAAAA,GACHnE,EAAUwO,MAAQ,KAClBxO,EAAUi5C,OAAS,KACnBj5C,EAAUoK,YAAc,GAExBi/E,KAEArpF,EAAUoK,YAAAA,EAGb,CACA,EAGA,EFjGCigF,YG3Cc,SAASrqF,EAAAA,CAEvBA,EAAU2B,KAAK2oF,WAAa,SAAS3oF,EAAMkoB,GAC1C,OAAO7pB,EAAU2B,KAAKC,IAAID,EAAM,EAAEkoB,EAAK,OACzC,CAAA,EAEC7pB,EAAU+sB,UAAU08D,YAAc,SAAS38E,EAAMC,EAAIrH,EACpD,CAAA,OAAIA,EAAG4C,OACC,GAAGW,KAAKwkD,WAAW3gD,CAAY7D,CAAAA,MAAAA,KAAKwkD,WAAW1gD,CAE/C/M,CAAAA,GAAAA,EAAUooB,OAAO6P,OAAO+R,QAElC,EACChqC,EAAU+sB,UAAU28D,YAAc,SAAS58E,EAAMC,EAAIrH,EACpD,CAAA,OAAOA,EAAG4Q,IACZ,EAEC,MAAMi0E,EAAevqF,EAAU2B,KAAKyoB,YAAY,OAC1CogE,EAAAA,EAAcxqF,EAAU2B,KAAKyoB,YAAY,IAE/CpqB,EAAAA,EAAU+sB,UAAU09D,WAAa,SAAS9oF,EAAAA,CACzC,MAAO,oCAAoC4oF,EAAa5oF,CACtB6oF,CAAAA;AAAAA,oCAAAA,EAAY7oF,UAChD,EACC3B,EAAU+sB,UAAU+8D,YAAc,SAASh9E,EAAOC,EAAAA,CACjD,OAAO/M,EAAU+sB,UAAU0+B,WAAWzrD,EAAUwE,SAAW7C,EAAAA,IAAAA,CAC7D,EAEC3B,EAAU2B,KAAKqoF,aAAa,SAASroF,GACpC,OAAO3B,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKR,CAAAA,CAAAA,CAC7C,EAEC,IAAIoiB,EAAY,EAEhB/jB,EAAUkE,YAAY,mBAAmB,WACxC,IAAIilF,EAA4BnpF,EAAUopF,sBAC1CppF,EAAUopF,sBAAwB,UAAA,CACjC,GAAIngF,KAAKoB,OAAS,SACZpB,CAAAA,KAAK3I,OAAO+2C,UAAYpuC,KAAK3I,OAAOmT,iBACxCxK,KAAKyK,YAAAA,UAEFy1E,EACH,OAAOA,EAA0Bt9E,MAAM5C,KAAMiJ,SAElD,CAAA,EAGE,IAAI4W,EAAM9oB,EAAU4V,YACpB5V,EAAU4V,YAAY,SAAS9N,EAC9B,CAAA,GAAImB,KAAKoB,OAAS,SAGjB,OAAOye,EAAIjd,MAAM5C,KAAKiJ,WAFtBm3E,EAGJ,CAAA,EAEE,IAAIC,EAAuBtpF,EAAU6V,iBASrC,SAASwzE,GACR,CAAA,MAAM95D,EAASvvB,EAAUmvD,mBAAAA,EACzB5/B,EAAOpK,KAAK,SAASxI,EAAEC,EAAAA,CAAI,OAAOD,EAAEpb,WAAWqb,EAAErb,WAAW,EAAG,EAAE,GAEjE,MAAMmpF,EAAe,CAAA,EACrB,IAAIxoF,EAAWlC,EAAUwE,SAAWwJ,EAAAA,SACpC,MAAMkjC,EAAUlxC,EAAUwE,SAAWyJ,EAAAA,SACrC,KAAM/L,EAASE,QAAAA,EAAY8uC,EAAQ9uC,QAAAA,GAClCsoF,EAAaxoF,EAASE,QAAAA,CAAAA,EAAa,CACnCF,EAAAA,EAAWlC,EAAU2B,KAAKC,IAAIM,EAAU,EAAG,OAG5C,IAAIyoF,EAAAA,GAaJ,GAXAp7D,EAAOvrB,QAAS0B,GAAAA,CACf,IAAI2B,EAAarH,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKuD,EAAGnE,UAAAA,CAAAA,EACtD,KAAO8F,EAAWjF,UAAYsD,EAAGlE,SAASY,QACrCsoF,GAAAA,EAAarjF,EAAWjF,QAC3BsoF,CAAAA,IAAAA,EAAarjF,EAAWjF,QAAAA,CAAAA,EAAWE,KAAKoD,CACxCilF,EAAAA,EAAAA,IAEDtjF,EAAarH,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAIyF,EAAY,EAAG,KACxE,CAAA,CAAA,CAAA,EAGEsjF,EAEC,CACJ,IAAIjpF,EAAO,GACX,QAAQoM,KAAO48E,EACdhpF,GAAQkpF,EAAU,IAAIzoF,KAAS,EAAJ2L,CAAAA,EAAQ48E,EAAa58E,CAGjD9N,CAAAA,EAAAA,EAAUwJ,KAAmB,aAAE,GAAGmE,UAAYjM,CAC9C,MARA1B,EAAUwJ,KAAmB,aAAE,CAAA,EAAGmE,UAsB5B,yCAAyC3N,EAAUooB,OAAO6P,OAAOmV,UAZxEptC,SAAAA,EAAUwJ,KAAmB,aAAE,CAAA,EAAGua,UAAYA,EAE9C,IAAI3R,EAAIpS,EAAUwJ,KAAmB,aAAE,GAAG9G,iBAAiB,4BAAA,EAC3D1C,EAAUg3B,UAAY,CACtB,EAAA,QAASn0B,EAAI,EAAGA,EAAIuP,EAAEtP,OAAS,EAAGD,IACjC7C,EAAUg3B,UAAUn0B,CAAKuP,EAAAA,EAAEvP,EAE5B,CAQD,SAAS+nF,EAAU98E,EAAKyhB,GACvB,GAAIA,CAAAA,EAAOzsB,OACV,MAAO,GAER,IAAIpB,EAAO;AAAA;AAAA,0CAE4B1B,EAAU+sB,UAAU09D,WAAW38E,CAAAA,CAAAA;AAAAA;AAAAA,EAStE,OALAyhB,EAAOvrB,QAAS6mF,GACfnpF,CAAAA,GAOF,SAAwBoM,EAAK+8E,GAC5B,MAAM79E,EAAQhN,EAAU+sB,UAAU08D,YAAYoB,EAActpF,WAAYspF,EAAcrpF,SAAUqpF,GAC1FC,EAAa9qF,EAAUwE,SAAW2yC,EAAAA,UAClCyI,EAAM5/C,EAAU+sB,UAAU2gC,YAAYm9B,EAActpF,WAAYspF,EAAcrpF,SAAUqpF,CACxFx9C,EAAAA,EAAcrtC,EAAU+sB,UAAU28D,YAAYmB,EAActpF,WAAYspF,EAAcrpF,SAAUqpF,CAAAA,EAEtG,IAAI5pF,EAAQ,GACZ,OAAG4pF,EAAc11B,OAAS01B,EAAcj1B,aAGvC30D,EAAQ,WAFI4pF,EAAc11B,MAAS,oCAAsC01B,EAAc11B,MAAQ,IAAO,EACvF01B,GAAAA,EAAcj1B,UAAa,+BAAiCi1B,EAAcj1B,UAAY,IAAO,EAE5G,MAEM,yCAAyChW,GAAK,EAAMirC,IAAAA,EAAcjoF,IAAMkoF,EAAa,qCAAuC,EAAO7pF,KAAAA,CAAAA,IAASjB,EAAUM,OAAOqC,eAAAA,KAAoBkoF,EAAcjoF,EAAAA;AAAAA;AAAAA,+CAE1JoK;+CACAqgC,CAE5C;AAAA,OAAA,EAzBwBv/B,EAAK+8E,EAAc,CAG3CnpF,EAAAA,GAAQ,eACDA,CACP,CA3ED1B,EAAU6V,iBAAmB,UAK5B,CAAA,OAJG5M,KAAKoB,OAAS,WAChB0Z,EAAY/jB,EAAUwJ,KAAmB,aAAE,CAAA,EAAGua,UAC9C/jB,EAAUwJ,KAAmB,aAAE,CAAA,EAAGua,UAAY,GAExCulE,EAAqBz9E,MAAM5C,KAAKiJ,SAC1C,CAAA,EA2FElS,EAAUqqF,YAAY,SAASlmF,EAC9B,CAAIA,GACHnE,EAAU6J,UAAY7J,EAAUM,OAAO0pF,cAAgBhqF,EAAU2B,KAAKqoF,aAAahqF,EAAUiT,KAAAA,EAC7FjT,EAAU4J,UAAY5J,EAAUM,OAAO2pF,YAAcjqF,EAAU2B,KAAK2oF,WAAWtqF,EAAU6J,UAAW,CACpG7J,EAAAA,EAAUwO,MAAQ,KAClBxO,EAAUi5C,OAAS,KACnBj5C,EAAUoK,YAAc,GAELpK,EAAUqgD,mBAAAA,EAClB1yC,UAAY3N,EAAU+sB,UAAU+8D,YAAY9pF,EAAUiT,OAEjEo2E,EACJ,GACIrpF,EAAUoK,YAAAA,EAGd,CACA,CAAA,CAeA,EH7IC+xC,UI5Cc,SAASn8C,EAEvBA,CAAAA,EAAUM,OAAO67C,UAAY,QAC7Bn8C,EAAUM,OAAOyqF,gBAAkB,GAEnC,IAAIC,EAAiB,SAAUtlF,EAC9B,CAAA,MAAA,GAAMA,EAAGlE,SAAWkE,EAAGnE,kBAA4B,KAKhDvB,EAAU0I,YAAc,UAAY1I,EAAUyI,UAAY/C,EAAG9C,EAIlE,EAIC5C,EAAUirF,WAAa,SAAS7qF,EAAAA,CAC/B,IAAI8qF,EAAQ,KACXh1E,EAAOlW,EAAUizD,YAAY7yD,GAY9B,OAXGA,EAAMwjE,YACRsnB,EAAQlrF,EAAUqE,SAASjE,EAAMwjE,SAG9BsnB,GAAAA,GAASA,EAAMC,cAAc/qF,CAAAA,IAAAA,OACzB8V,EAAK2tD,aAAAA,OACL3tD,EAAK0tD,UACL1tD,OAAAA,EAAK8wB,YACL9wB,OAAAA,EAAKnO,UAGNmO,CACT,EAEC,IAAIk1E,EAA4BprF,EAAUmxD,wBACtCk6B,EAA6BrrF,EAAUkxD,yBAEvCo6B,EAAmB,SAAUxjF,EAAKynD,EACrC,CAAA,OAAKtmD,KAAKmB,YAIHihF,EAA2Bj3E,KAAKnL,KAAMnB,EAAKynD,CAH1C67B,EAAAA,EAA0Bh3E,KAAKnL,KAAMnB,EAAKynD,CAIpD,CAAA,EAECvvD,EAAUmxD,wBAA0BnxD,EAAUkxD,yBAA2B,SAASppD,EAAKynD,EAAAA,CACtF,IAAKtmD,KAAK3I,OAAO67C,WACflzC,KAAKmB,aAAenB,KAAKoB,OAAS,SAClCpB,KAAKoB,OAAS,SAAYpB,CAAAA,KAAK3I,OAAOyqF,gBACvC,OAAOO,EAAiBl3E,KAAKnL,KAAMnB,EAAKynD,CAEzC,EAAA,QAAS1sD,EAAE,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CAClC,IAAI6C,EAAGoC,EAAIjF,CAAAA,EAEX,IAAI6C,EAAG4C,OAGP,GAAIW,KAAK3I,OAAO67C,WAAa,SACvB6uC,EAAetlF,CAAAA,EADrB,CASA,IAAI6lF,EAAKtiF,KAAKgiF,WAAWvlF,GACrBA,EAAG8lF,SAGND,EAAGt3B,aAAAA,GAFHs3B,EAAGt3B,aAAAA,GAIJs3B,EAAGl1B,gBACHk1B,EAAGC,SAAW,GACdD,EAAGhqF,WAAa,IAAIY,KAAKopF,EAAGhqF,YAEvBkqF,EAAiB/lF,CAAAA,GAIrB6lF,EAAG/pF,SAAWkqF,EAAWH,EAAGhqF,UAAAA,EACxB0H,KAAK3I,OAAO0J,WAAa,KAC5BuhF,EAAG/pF,SAAWmqF,EAAYJ,EAAGhqF,WAAY0H,KAAK3I,OAAO0J,SAAAA,IALtDuhF,EAAG/pF,SAAW,IAAIW,KAAKuD,EAAGlE,UAS3B,IAAIoqF,EAAAA,GACAL,EAAGhqF,WAAa0H,KAAKW,WAAa2hF,EAAG/pF,SAAWyH,KAAKY,WAAa0hF,EAAGhqF,WAAagqF,EAAG/pF,WACxFsG,EAAIjF,CAAK0oF,EAAAA,EACTK,MAMD,IAAIC,EAAK5iF,KAAKgiF,WAAWvlF,CAQzB,EAAA,GAPAmmF,EAAGL,SAAAA,GACHK,EAAGrqF,SAAW,IAAIW,KAAK0pF,EAAGrqF,QACtBqqF,EAAAA,EAAGtqF,WAAa0H,KAAKY,UACxBgiF,EAAGtqF,WAAaoqF,EAAY1iF,KAAKY,UAAWZ,KAAK3I,OAAOyJ,UAExD8hF,EAAAA,EAAGtqF,WAAaoqF,EAAYD,EAAWhmF,EAAGnE,UAAAA,EAAa0H,KAAK3I,OAAOyJ,UAAAA,EAEhE8hF,EAAGtqF,WAAa0H,KAAKW,WAAaiiF,EAAGtqF,WAAasqF,EAAGrqF,SAAU,CAClE,GAAA,CAAIoqF,EAEE,CACL9jF,EAAIjF,GAAOgpF,EAAAA,EACX,QACA,CAJA/jF,EAAIuJ,OAAOxO,EAAE,EAAE,EAAEgpF,GAKlBA,EAAG33B,YAAAA,EACP,MACIq3B,EAAGr3B,YAAAA,GACHq3B,EAAGl1B,eAjDH,MALKptD,KAAKoB,OAAS,SACjBvC,EAAIuJ,OAAOxO,IAAK,CAAA,CAwDnB,CAGD,IAAIipF,EAAU7iF,KAAKP,YAAc,QAAc6mD,EAC/C,OAAO+7B,EAAiBl3E,KAAKnL,KAAMnB,EAAKgkF,CAAAA,EAGxC,SAASL,EAAiB/lF,GACzB,IAAIqmF,EAAWL,EAAWhmF,EAAGnE,YAC7B,MAASmE,CAAAA,EAAGlE,SAAYuqF,CAAAA,CACxB,CACD,SAASL,EAAW/pF,EACnB,CAAA,IAAIoqF,EAAW/rF,EAAU2B,KAAKC,IAAID,EAAM,EAAG,KAE3C,EAAA,OADAoqF,EAAW/rF,EAAU2B,KAAKwF,UAAU4kF,CAAAA,CAEpC,CACD,SAASJ,EAAYhqF,EAAMqoB,EAAAA,CAC1B,IAAI6X,EAAM7hC,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKR,IAE5C,OADAkgC,EAAIl5B,SAASqhB,CAAAA,EACN6X,CACP,CACH,EACC,IAAImqD,EAAyBhsF,EAAUmvD,mBACvCnvD,EAAUmvD,mBAAqB,SAASC,EACvC,CAAA,OAAMnmD,KAAK3I,OAAO67C,WAAalzC,KAAK3I,OAAOugD,UAEpCmrC,EAAuB53E,KAAKnL,KAAM,EAAA,EADjC+iF,EAAuB53E,KAAKnL,KAAMmmD,CAE5C,CAAA,EACCpvD,EAAUkE,YAAY,qBAAsB,SAAU+nF,EAAUC,EAAU/nF,EAAMxC,GAE/E,OADA3B,EAAUs8C,WAAcn4C,GAAQ,OAASA,GAAQ,QAAUnE,EAAUY,QAAQuD,KAE/E,CAAA,EAECnE,EAAUsvD,oBAAsB,SAAS5pD,EACxC,CAAA,MAAA,CAAA,EAAUA,EAAG4C,QAAUW,KAAK3I,OAAO67C,YAAtB7zC,IAA6CW,KAAK3I,OAAO67C,WAAa,SAAW6uC,EAAetlF,CAAAA,EAC/G,EAEC,IAAIymF,EAAYnsF,EAAU8V,YAC1B9V,EAAU8V,YAAc,SAASlT,EAIhC,CAAA,IACIwpF,EACArvC,EAFAr3C,EAAK1F,EAAUqE,SAASzB,GAGzB8C,IACF0mF,EAAoBpsF,EAAUM,OAAO67C,WAAen8C,EAAAA,EAAUuI,cAAcvI,EAAUqsB,QAAQzpB,CAAQ5C,CAAAA,GAAAA,EAAUwE,SAAWgxB,EAAAA,YAE1HunB,EAAU/8C,EAAUM,OAAOi8C,cAC3Bv8C,EAAUM,OAAOi8C,cAAgB,IAGnC4vC,EAAUtgF,MAAM7L,EAAWkS,SAExBxM,EAAAA,GACE0mF,IACHpsF,EAAUM,OAAOi8C,cAAgBQ,EAGrC,CAEA,EJtICsvC,UK7Cc,SAASrsF,EAAAA,CAExB,IAAIssF,EACAlc,EAIJ,SAASmc,EAAgBC,EACLxsF,CAAAA,EAAUo8C,qBACVowC,IAClBF,EAAetsF,EAAUqE,SAASmoF,GAAUxsF,EAAUskD,sBAAAA,CAAAA,EAExD,CAPAtkD,EAAUM,OAAOmsF,gBAAkB,EASnCzsF,EAAUkE,YAAY,eAAe,SAAStB,EAAAA,CAE7C,OADA2pF,EAAgB3pF,KAEjB,CAAA,EACA5C,EAAUkE,YAAY,mBAAmB,SAAStB,EAAAA,CACjD,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAAAA,EAG5B,OAFAwtE,EAAS,CAAC1qE,EAAGnE,WAAYmE,EAAGlE,QAAAA,EAC5B+qF,EAAgB3pF,CAAAA,EAAAA,EAEjB,CAAA,EACA5C,EAAUkE,YAAY,iBAAiB,SAAStB,EAAAA,CAC/C,IAAKA,GAAO5C,CAAAA,EAAUqE,SAASzB,CAAAA,EAAK,SACpC,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAC5B,EAAA,GAAA,CAAK5C,EAAU0sF,eAAehnF,GAAI,CACjC,GAAA,CAAK0qE,EAAQ,MAAA,GACb1qE,EAAGnE,WAAa6uE,EAAO,CAAA,EACvB1qE,EAAGlE,SAAW4uE,EAAO,CACrB1qE,EAAAA,EAAG4C,OAAOW,KAAKV,cAAc7C,CAC7B,CAAA,CACD,QACD,CAAA,EACA1F,EAAUkE,YAAY,uBAAuB,SAASwB,EAAGtB,EAAE+4C,EAAAA,CAC1D,OAAOn9C,EAAU0sF,eAAehnF,CACjC,CAAA,CAAA,EACA1F,EAAUkE,YAAY,eAAe,SAAStB,EAAG8C,GACnC1F,EAAU0sF,eAAehnF,CAErC1F,GAAAA,EAAUg9B,YAAYp6B,CACxB,CAAA,CAAA,EACA5C,EAAUkE,YAAY,cAAc,SAAStB,EAAI+pF,EAAWxvC,EAAAA,CAK3D,IAJAwvC,EAAY3sF,EAAU4L,YAAY+gF,IACxB/pF,GAAKA,EAAAA,CAGV+pF,EAAUprF,YAAAA,CAAcorF,EAAUnrF,SAAU,CAChD,IAAIkE,EAAK1F,EAAUqE,SAASzB,CAAAA,EAC5B+pF,EAAUprF,WAAa,IAAIY,KAAKuD,EAAGnE,UACnCorF,EAAAA,EAAUnrF,SAAW,IAAIW,KAAKuD,EAAGlE,QAAAA,CACjC,CAKD,OAHGmrF,EAAU5kF,UACZ/H,EAAU4sF,iBAAiBD,CAErB3sF,EAAAA,EAAU0sF,eAAeC,CAAAA,CACjC,GAEA3sF,EAAU6sF,0BAA4B,SAAS7iC,EAAOooB,GACrD,IAAIjvE,EAASnD,EAAUskD,sBAAAA,EACvB,OAAI0F,EAAM7mD,CAAAA,GAAWivE,EAAOjvE,CAAAA,GAAW6mD,EAAMpnD,IAAMwvE,EAAOxvE,EAG3D,EAEA5C,EAAU0sF,eAAiB,SAAShnF,EACnC,CAAA,IAAIoC,EAAM,CACN2kF,EAAAA,EAAkBzsF,EAAUM,OAAOmsF,gBAEvC,GAAI/mF,EAAGqC,SAEN,QADI+kF,EAAY9sF,EAAU+sF,YAAYrnF,CAAAA,EAC9B6G,EAAE,EAAGA,EAAEugF,EAAUhqF,OAAQyJ,IAEhC,QADIygF,EAAOhtF,EAAUy1B,UAAUq3D,EAAUvgF,CAAGhL,EAAAA,WAAYurF,EAAUvgF,CAAG/K,EAAAA,QAAAA,EAC7DmtB,EAAE,EAAGA,EAAEq+D,EAAKlqF,OAAQ6rB,KACtBq+D,EAAKr+D,GAAGi1C,WAAaopB,EAAKr+D,CAAG/rB,EAAAA,KAAO8C,EAAG9C,IAC3CkF,EAAIxF,KAAK0qF,EAAKr+D,QAGX,CACN7mB,EAAM9H,EAAUy1B,UAAU/vB,EAAGnE,WAAYmE,EAAGlE,QAC5C,EAAA,QAASqB,EAAE,EAAGA,EAAEiF,EAAIhF,OAAQD,IAAK,CAChC,IAAIoqF,EAAanlF,EAAIjF,CAErB,EAAA,GAAIoqF,EAAWrqF,IAAM8C,EAAG9C,IAAOqqF,EAAWppB,cAAgB,CAACopB,EAAWrpB,UAAWqpB,EAAWppB,YAAcv2D,EAAAA,KAAK,MAAQ5H,EAAG9C,GAAK,CAC9HkF,EAAIuJ,OAAOxO,EAAE,CAAA,EACb,KACA,CACD,CACD,CAED,IAAIqqF,EAAeltF,EAAUo8C,kBACzBj5C,EAAAA,EAASnD,EAAUskD,sBAAAA,EAEnB6oC,KACJ,GAAID,EAAc,CACjB,IAAIruC,EAAQ,EAEZ,IAASh8C,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC3BiF,EAAIjF,CAAGD,EAAAA,IAAM8C,EAAG9C,IAAMqG,KAAK4jF,0BAA0B/kF,EAAIjF,CAAI6C,EAAAA,CAAAA,GAChEm5C,IAGEA,GAAS4tC,IAEZU,EAAS,GAEV,MAEKrlF,EAAIhF,QAAU2pF,IAClBU,EAAAA,IAEF,GAAKA,CAAAA,EAAQ,CACZ,IAAIpmF,GAAO/G,EAAU8I,UAAU,mBAAmB,CAACpD,EAAGoC,CAItD,CAAA,EAAA,OAHKf,IACJrB,EAAGvC,GAAUmpF,GAAc5mF,EAAGvC,CAExB4D,GAAAA,CACP,CACD,OAAOomF,CAER,CAEA,EL9ECC,qBM9Cc,SAASptF,EAAAA,CAEvBA,EAAUM,OAAO8sF,wBACjBptF,EAAUM,OAAO+sF,qBAAuB,GACxCrtF,EAAUM,OAAOgtF,cAAgB,GACjCttF,EAAUM,OAAOitF,aAAe,IAEhC,IAAIC,EAAuBxtF,EAAUywD,mBAGjCg9B,EAAAA,GACAC,EAAe,EACfC,EAAkB,EAEtB3tF,EAAUywD,mBAAqB,SAAS3oD,EAAKynD,EAAAA,CAC5C,IAAMvvD,EAAUM,OAAO8sF,sBAAwBK,CAAAA,EAC9C,OAAOD,EAAqB3hF,MAAM5C,KAAMiJ,SAAAA,EAGzC,IAAI8+C,EAAK/nD,KAAKsS,GAAGge,WACb03B,EAAQhoD,KAAKgwC,OAAOG,QACpBh9B,EAAInT,KAAKgwC,OAAOG,QAAU,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7C3pC,EAAOxG,KAAKO,KAAmB,aAAE,GAOrC,GAFC1B,EAHImB,KAAKmB,YAGHnB,KAAKioD,yBAAyBppD,EAAKynD,CAFnCtmD,EAAAA,KAAKkoD,wBAAwBrpD,EAAKynD,CAAAA,EAIrCtmD,KAAKmB,YACR,GAAImlD,EACHtmD,KAAKgwC,OAAOG,QAAU6X,MAChB,CACN,IAAI28B,EAAMn+E,EAAKK,WACf,MAAMuK,EAAOuzE,EAAIlrF,iBAAiB,oBAClC,EAAA,GAAI2X,EAAM,CACT,QAASxX,EAAI,EAAGA,EAAIwX,EAAKvX,OAAQD,IAAK,CAGrC,GAFAuZ,EAAEvZ,CAEGuZ,IAAAA,EAAEvZ,CAAMmuD,EAAAA,EAAK/nD,KAAKgwC,OAAOrqC,OAAS3F,KAAKsS,GAAGg6B,kBAAmB,CAEjE,IAAI/yC,EAAQ6X,EAAKxX,GAAGH,iBAAiB,qBAAA,EAEjC4uD,EAAUroD,KAAKgwC,OAAOrqC,OAAS3F,KAAKsS,GAAGg6B,kBACX,EAA7BtsC,KAAK3I,OAAOswD,mBAAuB3nD,KAAK3I,OAAOswD,kBAAoBx0C,EAAEvZ,CAAMoG,GAAAA,KAAK3I,OAAOswD,iBACzFU,EAAUl1C,EAAEvZ,CAAAA,EAAKmuD,GACP/nD,KAAK3I,OAAOswD,iBAAmB,GAAKI,EAAK/nD,KAAKgwC,OAAOrqC,OAAS3F,KAAKsS,GAAGg6B,oBAChF+b,GAAWroD,KAAK3I,OAAOswD,iBAAmB,GAAKI,GAGhD32C,EAAKxX,GAAG5B,MAAM2N,OAAU0iD,EAAUroD,KAAKsS,GAAGg6B,kBAAqB,KAG/D,QAAS5mB,EAAI,EAAGA,EAAInsB,EAAMM,OAAQ6rB,IACjCnsB,EAAMmsB,CAAAA,EAAG9e,WAAW,CAAA,EAAG5O,MAAM2N,OAAS0iD,EAAU,KAEjDl1C,EAAEvZ,IAAMuZ,EAAEvZ,EAAI,CAAM,GAAA,GAAKL,EAAM,CAAG6a,EAAAA,YAClC,CAEDjB,EAAEvZ,IAAMuZ,EAAEvZ,EAAI,CAAM,GAAA,GAAKwX,EAAKxX,CAAGH,EAAAA,iBAAiB,qBAAuB,EAAA,CAAA,EAAG2a,YAC5E,CACDjB,EAAEm1C,QAAQ,CAAA,EACNq8B,EAAI1iF,WAAWmS,aAAeuwE,EAAI1iF,WAAWsmD,cAAiBo8B,EAAIC,MAK3E,SACU/lF,EAAIhF,QAAUmG,KAAKO,KAAoB,cAAE,CAAGvI,EAAAA,MAAMsgB,YAAc,YACpEnF,EAAE,OACCtU,EAAIhF,QAAUsZ,EAAE,CAAA,GAAO,GAAG,CAG7B,IAAIwU,GAAOxU,EAAE,CAAA,EAAK,GAAK40C,EAAK,EACzB28B,GAAmB/8D,EAAK,IAC1B3nB,KAAK+pB,KAAK/xB,MAAM2N,OAAU8+E,EAAeC,EAAkB/8D,EAAK,EAAK,MAEtEA,GAAM,KACN,MAAMk9D,EAAY7kF,KAAKO,KAAsB,gBAAE,GAAG6T,aAC5C0wE,EAAgB9kF,KAAKO,KAAqB,eAAE,CAAG6T,EAAAA,aACrD5N,EAAKxO,MAAM2N,OAAU3F,KAAK+pB,KAAK3V,aAAeywE,EAAYC,GAAgB9kF,KAAKsS,GAAG65B,YAAc,GAAM,KACtG,IAAI8kB,EAAOjxD,KAAKO,KAAoB,cAAE,CACtC0wD,EAAAA,EAAKj5D,MAAM2N,OAASgiB,EACpBspC,EAAKj5D,MAAMsgB,WAAcnF,EAAE,CAAW,GAAJ,GAAI,SAAW,WACjD89C,EAAOjxD,KAAKO,KAAoB,cAAE,CAC7BvI,GAAAA,MAAM2N,OAASgiB,EACpBspC,EAAKj5D,MAAMsgB,WAAcnF,EAAE,CAAW,GAA3BmF,GAA2B,SAAW,UAC9C24C,EAAKj5D,MAAMsgB,YAAc,SAC3B24C,EAAKj5D,MAAM0a,QAAU,OAErBu+C,EAAKj5D,MAAM0a,QAAU,GAEtBu+C,EAAKvrD,UAAYyN,EAAE,CAAK,EAAA,qBAAuB,2BAC/CnT,KAAKo1C,WAAajiC,EAAE,CAAA,EAAK,GAAK40C,EAC9B50C,EAAE,CAAK,EAAA,CACP,CAEF,CAGF,OAAOtU,CACT,EAEC,IAAIkmF,EAAe,CAAC,kBAAmB,iBAAkB,gBAAiB,cAAA,EACtEC,EAAyB,SAASC,EAAAA,CACrCR,EAAe,EACf,QAAS7qF,EAAI,EAAGA,EAAImrF,EAAalrF,OAAQD,IAAK,CAE7C,IAAI8L,EAAYq/E,EAAanrF,CAAAA,EACzBsrF,EAAenuF,EAAUwJ,KAAKmF,CAAc3O,EAAAA,EAAUwJ,KAAKmF,CAAAA,EAAW,GAAK,KAC3EC,EAAS,EACb,OAAQD,GACP,IAAK,kBACL,IAAK,iBACJC,EAASu/E,EAAY9wE,aACrB,MACD,IAAK,gBACJzO,EAAS7I,EAAgBooF,EAAY9wE,aAAe,EAAI,EACxDswE,EAAkB/+E,EAClB,MACD,IAAK,eACJ,IAAIzK,EAAOnE,EAAUwE,WAAWL,KAEhC,GAAGgqF,EAAYt+E,WAAW,IAAM1L,GAAQ,QAAS,CAChD,IAAIiqF,EAAY,EAChB,QAAQvrF,EAAI,EAAGA,EAAIsrF,EAAYt+E,WAAW/M,OAAQD,IAC9CsrF,EAAYt+E,WAAWhN,CAAGwa,EAAAA,aAAe+wE,IAC3CA,EAAYD,EAAYt+E,WAAWhN,CAAAA,EAAGwa,cAGxCzO,EAASw/E,CACT,MAEAx/E,EAASK,KAAKC,IAAIi/E,EAAY9wE,aAAe,EAAG8wE,EAAY38B,YAE7D,EAAA,GAAIrtD,GAAQ,QACPnE,EAAUM,OAAO+sF,sBAAAA,CAAyBa,IAE7Ct/E,EADkBu/E,EAAYzrF,iBAAiB,oBAAA,EAAsBI,OAC9C9C,EAAUM,OAAO+sF,sBAErCa,IACHC,EAAYltF,MAAM2N,OAASA,EAAS,cAG7BzK,GAAQ,OAChByK,EAAS,IAAM5O,EAAUM,OAAO+tF,eAEzBlqF,GAAQ,SAAS,CAExB,GADAyK,EAAS,EACNu/E,EAAYt+E,YAAcs+E,EAAYt+E,WAAW/M,OACnD,QAAQ6rB,EAAI,EAAGA,EAAIw/D,EAAYt+E,WAAW/M,OAAQ6rB,IACjD/f,GAAUu/E,EAAYt+E,WAAW8e,CAAAA,EAAGtR,aAInCzO,EAAS,EAAI5O,EAAUM,OAAOgtF,cAChC1+E,EAAS5O,EAAUM,OAAOgtF,cAG1B1+E,GAAU,CAEX,SACQzK,GAAQ,cAAc,CAK9B,QAHCmqF,EAEG31C,EAHA4b,EAAav0D,EAAUub,GAAGgzE,yBAA2BvuF,EAAUM,OAAOgtF,cAIlE/gF,EAAI,EAAGA,EAAI4hF,EAAYt+E,WAAW/M,OAAQyJ,IAEjD,IADAosC,EAASw1C,EAAYt+E,WAAWtD,CAAAA,EACxBoiB,EAAI,EAAGA,EAAIgqB,EAAO9oC,WAAW/M,OAAQ6rB,IAAK,CAIjD,QAHItS,EAAc,EACjBmyE,EAAkB71C,EAAO9oC,WAAW8e,CAAAA,EAAG9e,WAAW,CAAA,EAE3CgxE,EAAG,EAAGA,EAAI2N,EAAgB3+E,WAAW/M,OAAQ+9E,IACpDxkE,GAAemyE,EAAgB3+E,WAAWgxE,GAAGxjE,aAG9CixE,EAAajyE,EAAcrc,EAAUub,GAAGgzE,0BACxCD,EAAc/hF,GAAK,GAAMoiB,GAAK,GAAKA,GAAK,EAAuB2/D,EAAJ,EAAbA,GAE7B/5B,IAChBA,EAAa+5B,EAEd,CAGF1/E,EAAsB,EAAb2lD,CACT,SACOpwD,GAAQ,MAAO,CACtByK,EAAS,EACT,IAAI9G,EAAMqmF,EAAYzrF,iBAAiB,eAEvC,EAAA,IAASisB,EAAI,EAAGA,EAAI7mB,EAAIhF,OAAQ6rB,IAC/B/f,GAAU9G,EAAI6mB,CAAGtR,EAAAA,aAGdzO,EAAS,EAAI5O,EAAUM,OAAOitF,aACjC3+E,EAAS5O,EAAUM,OAAOitF,aAG1B3+E,GAAU,CAEX,SACO5O,EAAUyuF,UAGjB,GAFA7/E,EAAS,EAELu/E,EAAYt+E,WAAW,CAAA,EAAGA,WAAW,CAAGA,EAAAA,YAAcs+E,EAAYt+E,WAAW,GAAGA,WAAW,CAAA,EAAGA,WAAW/M,OAAQ,CAGpH,IAFIgF,EAAMqmF,EAAYt+E,WAAW,GAAGA,WAAW,CAAA,EAAGA,WAAW,CAAA,EAAGA,WAEvD8e,EAAI,EAAGA,EAAI7mB,EAAIhF,OAAQ6rB,IAC/B/f,GAAU9G,EAAI6mB,CAAAA,EAAGtR,cAGlBzO,GAAU,GAEE5O,EAAUM,OAAOgtF,gBAC5B1+E,EAAS5O,EAAUM,OAAOgtF,cAE3B,MAEA1+E,EAAS5O,EAAUM,OAAOgtF,cAI5B,GAAIttF,EAAUkG,QAAUlG,EAAUkG,OAAO/B,GAAO,CAC/C,GAAI+pF,EACHt/E,GAAU,EACVu/E,EAAYltF,MAAM2N,OAASA,EAAS,SAC9B,CACNA,EAAS,EAGT,QAFI3K,EAAMjE,EAAUkG,OAAO/B,GACvBkW,EAAOpW,EAAIyqF,OACP7nD,EAAE,EAAGA,EAAIxsB,EAAKvX,OAAQ+jC,IAC7Bj4B,GAAU3K,EAAI0qF,iBAAiBt0E,EAAKwsB,CAAAA,EAAG3zB,KAGrClT,EAAUyC,WAAW0Z,aAAenc,EAAUyC,WAAWmsF,cAC3DhgF,GAAUigF,EAEX,EAAA,CACDjgF,GAAU,CACV,EACGzK,GAAQ,OAASA,GAAQ,QAAWnE,EAAUiG,QAAUjG,EAAUiG,OAAO9B,CAC5EyK,KAAAA,GAAU,EAKb8+E,CAAAA,GADA9+E,GAAU,CAEV,CACD5O,EAAUgzB,KAAK/xB,MAAM2N,OAAS2yC,EAAiB,KAE1C2sC,GACJluF,EAAU2V,WACb,CAAA,EAEC,SAASm5E,GAAAA,CACRrB,KACAztF,EAAU8I,UAAU,yBAA0B,IAC9C2kF,EAAS,EACT,CAED,IAAIsB,EAAmC,UACtC,CAAA,GAAA,CAAK/uF,EAAUM,OAAO8sF,sBAAwBK,CAAAA,EAC7C,MAAO,GAER,IAAItpF,EAAOnE,EAAUwE,SAAWL,EAAAA,KAEhC,IAAIA,EACH,MAAA,GAGD,IAAI6qF,EAAenvF,OAAOovF,uBAAyBpvF,OAAO0Y,WACtDwL,EAAYtW,SAASyO,gBAAgB6H,UAEzCirE,EAAa,YACThvF,EAAU0c,YAAe1c,EAAU80C,cAGtCm5C,GACH,CAEQjuF,EAAAA,EAAUkG,QAAUlG,EAAUkG,OAAO/B,CAAkB,GAARA,GAAQ,QAC5D6qF,EAAa,YACThvF,EAAU0c,YAAe1c,EAAU80C,eAGtCm5C,IACAxgF,EAAAA,SAASyO,gBAAgB6H,UAAYA,EACrC+qE,EACA,EAAA,EAAE,CAEHA,EAAAA,EAAAA,CAEH,EA8CC,SAASD,GAAAA,CACR,IAAI7jF,EAAMyC,SAASC,cAAc,KAAA,EACjC1C,EAAI/J,MAAM6lC,QAAU,uIAEpBr5B,SAASqO,KAAKlO,YAAY5C,GAC1B,IAAIP,EAAOO,EAAIuS,YAAcvS,EAAImR,YAEjC,OADA1O,SAASqO,KAAK3Q,YAAYH,CAAAA,EACnBP,CACP,CApDDzK,EAAUkE,YAAY,qBAAsB,UAC3C,CAAA,IAAIgrF,EAAkBlvF,EAAUM,OAAO8sF,qBAOvC,GANIptF,EAAUub,GAAG4zE,yBAChBnvF,EAAUub,GAAG4zE,uBAAyBnvF,EAAUub,GAAG+X,cAGpDtzB,EAAUub,GAAG+X,aAAe47D,EAAkB,EAAIlvF,EAAUub,GAAG4zE,uBAE5DnvF,EAAUkG,OACZ,QAAQrD,KAAK7C,EAAUkG,OAAO,CAC7B,IAAIovB,EAAWt1B,EAAUkG,OAAOrD,CAAAA,EAC5ByyB,EAAS85D,+BACZ95D,EAAS85D,6BAA+B95D,EAAS+5D,oBAGjD/5D,EAAS+5D,mBAAAA,CADPH,GAG4B55D,EAAS85D,4BAExC,CAEF,MAAA,EACF,CAAA,EAECpvF,EAAUkE,YAAY,eAAgB6qF,CACtC/uF,EAAAA,EAAUkE,YAAY,QAAS6qF,CAAAA,EAC/B/uF,EAAUkE,YAAY,iBAAkB6qF,CACxC/uF,EAAAA,EAAUkE,YAAY,iBAAkB6qF,GACxC/uF,EAAUkE,YAAY,eAAgB6qF,CAAAA,EACtC/uF,EAAUkE,YAAY,iBAAkB6qF,CAAAA,EACxC/uF,EAAUkE,YAAY,yBAA0B6qF,CAChD/uF,EAAAA,EAAUkE,YAAY,aAAc6qF,CAAAA,EAGpC/uF,EAAUkE,YAAY,iBAAkB,UAEvC,CAAA,OADAupF,EAAS,GAAA,EAEX,CAECztF,EAAAA,EAAUkE,YAAY,mBAAoB,WAEzC,OADAupF,EAAAA,GACO,EACT,EAaA,ENhTC6B,OO/Cc,SAAStvF,EAAAA,CAoBvB,SAASuvF,EAAcvvF,EAAAA,CACtB,OAAQA,EAAUgzB,KAAKpwB,IAAM,aAAe,WAC5C,CAED,IAAIonD,EAAQ,GACZhqD,EAAUkE,YAAY,qBAAqB,SAASq7D,EAAQD,EAAQn7D,EAAKxC,GAExE,GAAIqoD,GAAShqD,EAAUwvF,aAAa,CACnC,IAAIC,EAAsBzvF,EAAUwvF,aAAAA,GACjCC,EAAoB9tF,MAAQ8tF,EAAoBtrF,MAAQsrF,EAAoBrvF,SAC9E4pD,EAAQ,GAET,CAED,IAAIslC,EAASC,EAAcvvF,CAAAA,EAE3B,GAAIgqD,EAAM,CACTA,EAAAA,GACA,IAAI0lC,EAjCN,SAAmB3wE,EAAAA,CAClB,IAAImI,EAASnI,EAAO,IACpB,GAAItR,SAAS6hF,OAAOxsF,OAAS,EAAG,CAC/B,IAAIsO,EAAS3D,SAAS6hF,OAAOt/E,QAAQkX,CACrC,EAAA,GAAI9V,GAAJ,GAAkB,CACjBA,GAAU8V,EAAOpkB,OACjB,IAAIiK,EAAMU,SAAS6hF,OAAOt/E,QAAQ,IAAKoB,CAAAA,EAGvC,OAFIrE,GAAQ,KACXA,EAAMU,SAAS6hF,OAAOxsF,QAChB2K,SAAS6hF,OAAO53C,UAAUtmC,EAAQrE,CAAAA,CACzC,CACD,CACD,MAAO,EACP,EAoBiCuiF,CAChC,EAAA,GAAII,EAAgB,CAEf1vF,EAAU6J,YAGb7J,EAAU6J,UAAYlI,IAGvB+tF,EAAkBC,SAASD,CAAAA,EAAiBnsF,MAAM,GAAA,GAClC,GAAK0F,KAAK6oB,SAASC,UAAU29D,EAAgB,IAC7D,IAAIrpF,EAAO4C,KAAKw0C,aAAaiyC,EAAgB,CAAA,CAAA,EAAMA,EAAgB,CAAA,EAAKvrF,EACvExC,OAAAA,EAAQigB,MAAAA,CAAO8tE,EAAgB,CAAA,CAAA,EAA2B/tF,EAArB+tF,EAAgB,CAAA,EAEtD7vF,OAAO0Y,WAAW,UACdvY,CAAAA,EAAU0c,YAGb1c,EAAU0V,eAAe/T,EAAK0E,CAAAA,CAC9B,EAAC,CAAA,EAAA,EAEF,CACD,CACD,MAAO,EACT,GAECrG,EAAUkE,YAAY,eAAgB,SAAU0rF,EAAU7/C,EACzD,CAAA,IAhEuB8/C,EACnBvvE,EA+DAgvE,EAASC,EAAcvvF,CAAAA,EACvBsW,EAAOorB,OAAOz4B,KAAK6oB,SAASmX,WAAW8G,CAAS,EAAA,OAhEhDzvB,EAiEMgvE,EAjEO,IAiEwCh5E,IAlElCu5E,EAkEN,yCAjE8B,KAAKA,EAAc,IAClEpiF,SAAS6hF,OAAShvE,CAiEpB,CAGC,EAAA,IAAIwvE,EAAW9vF,EAAUusB,MACzBvsB,EAAUusB,MAAQ,WACjB,IAAIjU,EAAOpG,UAEX,GAAKlS,EAAUiT,MAMd68E,EAASjkF,MAAM5C,KAAMqP,CANA,MAAA,CACrB,IAAIguB,EAAOr9B,KACXpJ,OAAO0Y,WAAW,UACjBu3E,CAAAA,EAASjkF,MAAMy6B,EAAMhuB,CAAAA,CACrB,EAAC,CAAA,CACL,CAGA,CACA,EPpCC6oD,YQ9Cc,SAASnhE,GACvBoiE,GAAqB,eAAgBpiE,EAAU2oD,MAAAA,CAChD,ER6CConC,aS/Cc,SAAS/vF,EACvBoiE,CAAAA,GAAqB,eAAgBpiE,EAAU2oD,MAAAA,CAChD,ET8CCqnC,QUlDc,SAAShwF,EAExBA,CAAAA,EAAU+4D,YAAmB,MAAE,CAC9BtjD,OAAO,SAASikD,EACVA,CAAAA,EAAIu2B,iBACRv2B,EAAIu2B,eAAiB,IACtB,IAAIlpF,EAAM,GAEV,OADAA,GAAO,eAAe2yD,EAAIl0D,KAAK,WAE/B,EACD0zD,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGpF,IAChC,UACC4vF,CAAAA,EAAAA,EACA,IAAIttF,EAAK5C,EAAUkE,YAAY,kBAAkB,UAEhDgsF,CAAAA,EAAAA,EACAlwF,EAAUkf,YAAYtc,CAAAA,CAC1B,CACG,EAAA,SAASstF,GACR,CAAA,GAAGtvE,EAAKuvE,QAAUvvE,EAAKuvE,OAAOC,UAAW,CACxC,IAAIC,EAAQzvE,EAAKuvE,OACdE,EAAMC,OACRD,EAAMC,OACED,EAAAA,EAAM3nD,YACd2nD,EAAM3nD,aAGP2nD,EAAMD,UAAYC,EAAME,QAAU,IAClC,CACD,CACD,GAnBD,EAoBA1wF,OAAO2wF,kBAAoBlwF,EAAOmwF,YAAY,IAC9C7vE,EAAKuvE,OAAS,IAAIO,YAAY9vE,EAAMtgB,EAAOye,KAAM6B,EAAKrD,YAAY,CAAA,EAC9Djd,EAAOw5D,UACVl5C,EAAKuvE,OAAOjsF,YAAY,WAAY5D,EAAOw5D,QAAAA,EAExCx5D,EAAOqwF,gBACV/vE,EAAKuvE,OAAOS,gBAAgBtwF,EAAOqwF,cAAAA,EACpC,IAAIN,EAAQzvE,EAAKuvE,OAGjB,GAFAE,EAAMQ,oBAAoBvwF,EAAOwwF,UAAWxwF,EAAOywF,aAAa,KAAQzwF,CAAAA,CAAAA,EAAO0iD,KAE1E1iD,EAAAA,EAAOywF,YAgBL,CACN,IAAIC,EAActrF,EAAGpF,EAAO6C,MAAAA,EACxB6tF,EACC1wF,EAAO2vF,eAAee,CACzBX,GAAAA,EAAMY,UAAUD,EAAa1wF,EAAO2vF,eAAee,CAAAA,CAAAA,EACnDX,EAAMa,QAAQ,GACdb,EAAMc,aAAa,CACnBd,EAAAA,EAAMa,QAAQ,CAEdlxF,GAAAA,EAAUmtB,KAAKC,IAAI9sB,EAAOywF,YAAY,OAAOC,EAAY,QAAQhxF,EAAUiM,IAAO,EAAA,SAASoL,EAC1F,CAAA,IACIyX,EADAf,EAAe1W,EAAOwW,OAAOE,aAEjC,IAECe,EADUtH,KAAKsG,MAAMC,CAAAA,EACTxoB,QAAQ,CAAG+Q,EAAAA,IACvB,OAEAwY,EADa9uB,EAAUmtB,KAAKoB,MAAM,WAAYlX,EAAOwW,MAAAA,EAAQ,CAC9Che,EAAAA,WAAW,GAAGmf,SAC7B,CACD1uB,EAAO2vF,eAAee,GAAeliE,EACrCuhE,EAAMY,UAAUD,EAAaliE,GAC7BuhE,EAAMa,QAAQ,CACdb,EAAAA,EAAMc,aAAa,CACnBd,EAAAA,EAAMa,QAAQ,CAAA,CACpB,CAGIb,EAAAA,EAAMe,cAAc,EAAA,CAErB,KA7CwB,CAExB,QADIC,EAAc,GACTxuF,EAAI,EAAGA,EAAIvC,EAAOiF,QAAQzC,OAAQD,IAAK,CAC/C,IAAI+sB,EAAStvB,EAAOiF,QAAQ1C,CACxByuF,EAAAA,EAAgB,CACnB1hE,EAAO1c,IACP0c,EAAOd,MACPc,EAAOnuB,GAER4vF,EAAAA,EAAY/uF,KAAKgvF,CAAAA,CACjB,CAED,GADAjB,EAAMY,UAAUI,CAAAA,EACZ3rF,EAAGpF,EAAO6C,MAAAA,EAAS,CACtB,IAAI0J,EAAQwjF,EAAMkB,gBAAgB7rF,EAAGpF,EAAO6C,SAC5CktF,EAAMc,aAAatkF,CACnB,CAAA,CACJ,CA8BE,EACDmsD,UAAU,SAASp4C,EAAKlb,EAAGpF,EAC1B,CAAA,IAAI0wF,EAAcpwE,EAAKuvE,OAAOqB,iBAI9B,EAAA,OAHIlxF,EAAOywF,cACVzwF,EAAO2vF,eAAee,CAAAA,EAAepwE,EAAKuvE,OAAOsB,mBAE3CT,CACP,EACD/wD,MAAM,SAASrf,EACd,CAAA,CAAA,EAGF5gB,EAAU+4D,YAAmB,MAAE,CAC9BtjD,OAAO,SAASikD,EAAAA,CACf,IAAI3yD,EAAM,GACVA,GAAO,2CAA2C2yD,EAAIg4B,SAAW,yBAA0B,EAAyBh4B,uBAAAA,EAAI9qD,cACxH,QAAS/L,EAAE,EAAGA,EAAE62D,EAAIn0D,QAAQzC,OAAQD,IAAK,CACxC,IAAID,EAAK5C,EAAUiM,IAAAA,EACnBlF,GAAO,0CAA0CnE,EAAG,gBAAgBA,EAAG,wBAAwB82D,EAAI36C,KAAK,YAAY26C,EAAIn0D,QAAQ1C,CAAGqQ,EAAAA,IAA5H,YAA+IwmD,EAAIn0D,QAAQ1C,CAAGisB,EAAAA,MAAM,iBAC3K,CAGD,OAFA/nB,GAAO,QAGP,EACDmyD,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGpF,EAAAA,CAEhC,QADIqxF,EAAe/wE,EAAK0Z,qBAAqB,SACpCz3B,EAAI,EAAGA,EAAI8uF,EAAa7uF,OAAQD,IAAK,CAC7C8uF,EAAa9uF,CAAAA,EAAGg4D,QAAU,GAC1B,IAAI+2B,EAAgBlsF,EAAGpF,EAAO6C,MAAAA,GAASoX,EACnCo3E,EAAa9uF,GAAG0X,OAASq3E,IAC5BD,EAAa9uF,CAAAA,EAAGg4D,WAEjB,CACD,EACD7B,UAAU,SAASp4C,EAAKlb,EAAGpF,EAE1B,CAAA,QADIqxF,EAAe/wE,EAAK0Z,qBAAqB,OAAA,EACrCz3B,EAAE,EAAGA,EAAE8uF,EAAa7uF,OAAQD,IACnC,GAAG8uF,EAAa9uF,CAAGg4D,EAAAA,QAClB,OAAO82B,EAAa9uF,CAAAA,EAAG0X,KAGzB,EACD0lB,MAAM,SAASrf,EAAAA,CACd,CAGF5gB,EAAAA,EAAU+4D,YAAsB,SAAE,CACjCtjD,OAAO,SAASikD,GACf,OAAI15D,EAAUM,OAAO44B,UACb,4CAEA,EACR,EACDggC,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGpF,EAChCsgB,CAAAA,EAAK5gB,EAAU+1C,UAAU76B,cAAc,IAAI5a,EAAOsC,MAClD,IAAIA,EAAK5C,EAAUiM,IAAAA,EACf4lF,EAAoBvxF,EAAOsxF,uBAAgCr3E,GAASja,EAAOsxF,cAAkBr3E,CAAAA,CAAAA,EACjGqG,EAAKjS,WAAa,oBAClB,IAAImjF,EAAa,cAAclvF,EAAG,wCAAwCtC,EAAOye,KAAK,KAAKs3D,EAAY,iBAAiB,IAAI,KACxH0b,EAAa,eAAenvF,EAAG,MAAM5C,EAAUooB,OAAO6P,OAAO,WAAW33B,EAAOye,IAAAA,GAAOze,EAAOye,MAAM,WAOvG,GANI/e,EAAUM,OAAO44B,WACpBtY,EAAKjT,UAAYokF,EACjBnxE,EAAK6D,YAAY9W,UAAUmkF,GAE3BlxE,EAAKjT,UAAUmkF,EAAWC,EAEvBzxF,EAAO0Z,QAAS,CACnB,IAAIg4E,EAAWpxE,EAAK0Z,qBAAqB,OAAS,EAAA,CAAA,EAClD,GAAG03D,EAASr4E,gBACX,OAEDq4E,EAASr4E,mBACT3Z,EAAUI,MAAM4xF,EAAU,QAAS1xF,EAAO0Z,OAAAA,CAE1C,CACD,EACDg/C,UAAU,SAASp4C,EAAKlb,EAAGpF,EAAAA,CAE1B,IAAI0xF,GADJpxE,EAAK5gB,EAAU+1C,UAAU76B,cAAc,IAAI5a,EAAOsC,EAAAA,EAAAA,GAC9B03B,qBAAqB,OAAS,EAAA,CAAA,EAGlD,OAFK03D,IACJA,EAAWpxE,EAAK6D,YAAY6V,qBAAqB,OAAA,EAAS,IACnD03D,EAAgB,QAAG1xF,EAAOsxF,eAAAA,GAAsBtxF,EAAO2xF,iBAAAA,EAC/D,EACDhyD,MAAM,SAASrf,EAAAA,CACd,CAIF,CAAA,EV5HCsxE,OWnDc,SAASlyF,EAAAA,CAExBA,EAAUwgE,IAAI2xB,WAAa,CAC1BC,WAAY,IAGbpyF,EAAAA,EAAUkyF,OAAS,UAClB,CAAA,GAAIlyF,EAAU8I,UAAU,iBAAkB,CAA1C,CAAA,EAAA,CAEA,IAAIsJ,EAAIpS,EAAUgzB,KAClB,GACC5gB,EAAEigF,UAAYjgF,EAAEnR,MAAMyJ,UAAY,GAClC0H,EAAEnR,MAAMyJ,SAAW,gBACV0H,EAAIA,EAAElH,aAAekH,EAAEnR,QACjCmR,EAAIpS,EAAUgzB,MACZ/xB,MAAMyJ,SAAW,WACnB0H,EAAEkgF,OAASlgF,EAAEnR,MAAM4N,MACnBuD,EAAEmgF,QAAUngF,EAAEnR,MAAM2N,OACpBwD,EAAEnR,MAAM4N,MAAQuD,EAAEnR,MAAM2N,OAAS,OACjCwD,EAAEnR,MAAMC,IAAMkR,EAAEnR,MAAME,KAAO,MAE7B,IAAID,EAAMuM,SAASqO,KACnB5a,EAAI6iB,UAAY,GAEhB7iB,EAAMA,EAAIgK,cAEThK,EAAI6iB,UAAY,GACjBtW,SAASqO,KAAK02E,UAAY/kF,SAASqO,KAAK7a,MAAMwxF,UAAY,GAC1DhlF,SAASqO,KAAK7a,MAAMwxF,SAAW,SAC/BzyF,EAAU0yF,UACV1yF,EAAAA,EAAU8I,UAAU,WAAY,GAtBxB,CAuBT,EACA9I,EAAU2yF,SAAW,WACpB,GAAI3yF,EAAU8I,UAAU,mBAAoB,IAA5C,CAEA,IAAIsJ,EAAIpS,EAAUgzB,KAClB,GACC5gB,EAAEnR,MAAMyJ,SAAW0H,EAAEigF,iBACZjgF,EAAIA,EAAElH,aAAekH,EAAEnR,QACjCmR,EAAIpS,EAAUgzB,MACZ/xB,MAAM4N,MAAQuD,EAAEkgF,OAClBlgF,EAAEnR,MAAM2N,OAASwD,EAAEmgF,QACnB9kF,SAASqO,KAAK7a,MAAMwxF,SAAWhlF,SAASqO,KAAK02E,UAC7CxyF,EAAU0yF,UACV1yF,EAAAA,EAAU8I,UAAU,aAAc,CAAA,CAAA,CAV1B,CAWT,EACA9I,EAAUkE,YAAY,mBAAoB,UACzC,CAAA,IAAIkO,EAAI3E,SAASC,cAAc,KAC/B0E,EAAAA,EAAEzD,UAAY,kBACd3O,EAAUwgE,IAAI2xB,WAAWC,WAAahgF,EACtCA,EAAEzE,UAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAad3N,EAAUgzB,KAAKplB,YAAYwE,CAC3BpS,EAAAA,EAAUI,MAAMgS,EAAG,QAAU,UACvBpS,CAAAA,EAAUo3C,SAEdp3C,EAAU2yF,SAAAA,EADV3yF,EAAUkyF,OAAAA,CAEb,EACA,CACAlyF,EAAAA,EAAU0yF,UAAY,UAAA,CACrBzpF,KAAKmuC,SAAYnuC,CAAAA,KAAKmuC,SACnBnuC,KAAKmuC,SACPnuC,KAAKu3D,IAAI2xB,WAAWC,WAAWx5E,UAAUhX,IAAI,2BAG7CqH,EAAAA,KAAKu3D,IAAI2xB,WAAWC,WAAWx5E,UAAU+L,OAAO,6BAMjD,QADIiuE,EAAa,CAAC,OAAQ,KACjB/vF,EAAAA,EAAI,EAAGA,EAAI+vF,EAAW9vF,OAAQD,IAAK,CAE3C,IAAIgwF,EAAc7yF,EAAU,gBAAkB4yF,EAAW/vF,CAAAA,CAAAA,EACrD7C,EAAUub,GAAG,UAAYq3E,EAAW/vF,CAAAA,CAAAA,GACvC7C,EAAU,gBAAkB4yF,EAAW/vF,CAAM7C,CAAAA,EAAAA,EAAUub,GAAG,UAAYq3E,EAAW/vF,CACjF7C,CAAAA,EAAAA,EAAUub,GAAG,UAAYq3E,EAAW/vF,CAAM,CAAA,EAAA,GAEtCgwF,IACH7yF,EAAUub,GAAG,UAAYq3E,EAAW/vF,IAAM7C,EAAU,gBAAkB4yF,EAAW/vF,CAAAA,CAAAA,EAAAA,OAC1E7C,EAAU,gBAAkB4yF,EAAW/vF,CAGhD,CAAA,EAAA,CAED7C,EAAU0V,eACX,CAAA,CAGA,EXhDCo9E,WYpDc,SAAS9yF,EAGxB,EAAA,UAAA,CAEA,SAASw5D,EAASn3D,EAAK0wF,EACtB,CAAA,QAAS7/E,KAAO6/E,EACV1wF,EAAI6Q,CACR7Q,IAAAA,EAAI6Q,GAAO6/E,EAAI7/E,CAAAA,GACjB,OAAO7Q,CACR,CAEA,SAAS2wF,EAAgBtvF,EAAS1D,EAAAA,CACjC,IAAIizF,EAAQ,CAAA,EASZ,OARAvvF,EAAU1D,EAAUwJ,KAAK9F,CACVA,IAAAA,EAAQ,IACtBuvF,EAAMptE,EAAIniB,EAAQ,CAAA,EAAGkrF,YACrBqE,EAAMrtE,EAAIliB,EAAQ,CAAA,EAAG8tD,eAErByhC,EAAMptE,EAAI,EACVotE,EAAMrtE,EAAI,GAEJqtE,CACR,CAGIpzF,OAAOqzF,aACVrzF,OAAOqzF,WAAa,CACnBtoC,KAAM,SAASp+B,EAAK/c,EAAM8E,EACzB,CAAA,OAAO1U,OAAOszF,KAAKhmE,KAAKy9B,KAAKp+B,EAAK/c,EAAM8E,CACxC,CAAA,EACD6Y,IAAK,SAASZ,EAAKjY,EAClB,CAAA,OAAO1U,OAAOstB,KAAKC,IAAIZ,EAAKjY,CAAAA,CAC5B,CAIH,GAAA,SAA4BvU,GA0K3B,SAASozF,GAAAA,CACR,IAAIjvF,EAAOnE,EAAUwE,SAAAA,EAAWL,KAChC,OAAInE,EAAUkG,QAAUlG,EAAUkG,OAAO/B,CAAAA,EACjCnE,EAAUkG,OAAO/B,CAAAA,EAElB,IACP,CA9KDnE,EAAUg0C,YAAc,SAAS1zC,EAChCA,EAAAA,EAASk5D,EAAUl5D,GAAU,GAAK,CACjCye,KAAK,eACL4I,OAAO,KACP0rE,YAAY,YACZC,IAAI,GACJ/sB,KAAK,EACL7xB,IAAK10C,EAAUM,OAAOo0C,GAEhBhzC,CAAAA,GAAAA,KAAOuH,KAAKsqF,aAAajzF,CAAAA,EAChCA,EAAO6D,KAAO8E,KAAKzE,SAAWL,EAAAA,KAC9B8E,KAAKuqF,gBAAgBlzF,EAAQ,KAC/B,CAAA,EAECN,EAAU+zC,YAAc,SAASzzC,EAChCA,EAAAA,EAASk5D,EAAUl5D,GAAU,GAAK,CACjCye,KAAK,eACL4I,OAAO,KACP0rE,YAAY,YACZC,IAAI,GACJ/sB,KAAK,EACL7xB,IAAK10C,EAAUM,OAAOo0C,GAEhBhzC,CAAAA,GAAAA,KAAOuH,KAAKsqF,aAAajzF,CAChCA,EAAAA,EAAO6D,KAAO8E,KAAKzE,WAAWL,KAC9B8E,KAAKuqF,gBAAgBlzF,EAAQ,MAC/B,EAECN,EAAUyzF,aAAe,SAASnzF,GACjCA,EAASk5D,EAAUl5D,GAAU,GAAK,CACjCye,KAAK,gBACLtP,KAAKxG,KAAKyqF,iBAAiB,KAAMpzF,CAElC2I,CAAAA,CAAAA,EAAAA,KAAKuqF,gBAAgBlzF,EAAQ,MAAA,CAC/B,EAECN,EAAU2zF,cAAgB,SAASrzF,EAAAA,CAClCA,EAASk5D,EAAUl5D,GAAU,GAAK,CACjCye,KAAK,gBACL0gB,MAAM,SACNhwB,KAAKxG,KAAKyqF,iBAAkBzqF,KAAK8jB,UAAUyF,WAAYlyB,CAAAA,EACvDs2D,QAAQ3tD,KAAK2qF,mBAAAA,CAAAA,CAAAA,EAEd3qF,KAAKuqF,gBAAgBlzF,EAAQ,OAC/B,CAAA,EAECN,EAAU6zF,gBAAkB,SAASpkF,EAAMjK,EAAM+O,EACzC9E,CAAAA,OAAAA,EAAK8E,SACZ,IAAIiY,EAAM/c,EAAKqkF,QAAU,sCAEzBj0F,OAAOqzF,WAAWtoC,KAAKp+B,EACtB,QAAQhnB,EAAK,iBAAiB+hB,mBAAmBC,KAAKC,UAAUhY,CAAAA,CAAAA,EAChE,SAASye,EAAAA,CACR,IACI6lE,EAAO,KAEX,GAHW7lE,EAAAA,EAAOL,OAAOyD,OAAS,KAIjC,GACCyiE,CAAAA,EAAOvsE,KAAKsG,MAAMI,EAAOL,OAAOE,YAAAA,CAChC,MAAM3pB,CAAI,CAEZmQ,EAASw/E,EACT,CAEJ,CAAA,EAEC/zF,EAAUg0F,mBAAqB,SAAS/8E,EAAQ0Q,EAAAA,CAC/C,IAAIrjB,EAAS,CAAA,EACb,QAAS4O,KAAO+D,EACf3S,EAAO4O,CAAAA,EAAO+D,EAAO/D,CAAAA,EAMtB,OAJA5O,EAAO/C,WAAaomB,EAAOrjB,EAAO/C,YAClC+C,EAAO9C,SAAWmmB,EAAOrjB,EAAO9C,UAChC8C,EAAO2vF,MAAQhrF,KAAK8jB,UAAUq4B,WAAWnuC,EAAO1V,WAAY0V,EAAOzV,SAAUyV,GAEtE3S,CACT,EAECtE,EAAU0zF,iBAAmB,SAAS/rE,EAAQrnB,EAAAA,CAG7C,IAAIivB,EAFJ5H,EAASA,GAAU3nB,EAAU2B,KAAKyoB,YAAY,gBAAiB,EAAA,EAI9DmF,EADGjvB,GAAUA,EAAOwM,OAASxM,EAAOyM,IAC3B/M,EAAUy1B,UAAUn1B,EAAOwM,MAAOxM,EAAOyM,GAAAA,EAEzC/M,EAAUy1B,UAGpB,EAAA,QADIhmB,EAAO,GACF5M,EAAI,EAAGA,EAAG0sB,EAAOzsB,OAAQD,IACjC4M,EAAK5M,CAAKoG,EAAAA,KAAK+qF,mBAAmBzkE,EAAO1sB,CAAAA,EAAI8kB,CAE9C,EAAA,OAAOlY,CACT,EAECzP,EAAU4zF,mBAAqB,UAAA,CAC9B,MAAO,CACN,CAAEhxF,GAAG,aAAc24B,OAAO,aAAc1sB,MAAM,EAC9C,EAAA,CAAEjM,GAAG,WAAY24B,OAAO,WAAY1sB,MAAM,IAC1C,CAAEjM,GAAG,QAAS24B,OAAO,OAAQ1sB,MAAM,GAAA,CAAA,CAEtC,EAEC7O,EAAUwzF,gBAAkB,SAAS/jF,EAAMjK,EAS1C,CAAA,GARIiK,EAAK84B,UACR94B,EAAK84B,QAAUvoC,EAAUuoC,SAGtB94B,EAAKspB,OACRtpB,EAAKspB,KAAO/4B,EAAU+4B,MAGnBtpB,EAAK8E,SACP,OAAOvU,EAAU6zF,gBAAgBpkF,EAAMjK,EAAMiK,EAAK8E,QAEpD,EAAA,IAAIyjC,EAAO/uC,KAAKirF,sBAEhBl8C,EAAKloC,WAAWw0B,OAAS70B,EAAKqkF,QAAU,sCACxC97C,EAAKloC,WAAWD,WAAW,GAAG0K,MAAQiN,KAAKC,UAAUhY,CAAAA,EACrDuoC,EAAKloC,WAAWD,WAAW,CAAG0K,EAAAA,MAAQ/U,EACtCwyC,EAAKloC,WAAWqkF,OAClB,CAAA,EAECn0F,EAAUk0F,oBAAsB,UAAA,CAC/B,GAAKjrF,CAAAA,KAAKmrF,oBAAoB,CAC7B,IAAIhiF,EAAInJ,KAAKmrF,oBAAsB3mF,SAASC,cAAc,KAC1D0E,EAAAA,EAAEnR,MAAM0a,QAAU,OAClBvJ,EAAEzE,UAAY,uHACdF,SAASqO,KAAKlO,YAAYwE,CAAAA,CAC1B,CACD,OAAOnJ,KAAKmrF,mBACd,EAECp0F,EAAUq0F,iBAAmB,SAAS1sE,EAAQ0rE,EAAa9sB,EAAM+sB,EAAK/3D,EAAQ+4D,EAAQ30C,GAErF2zC,EAAMpwE,SAASowE,CAAK,EAAA,MAAQ,EAE5B,IAAIL,EAAQ,CACXsB,GAAK,CAAE1uE,EAAE,IAAKD,EAAE,GAAA,EAChB4uE,GAAK,CAAE3uE,EAAE,IAAKD,EAAE,KAChB6uE,GAAK,CAAE5uE,EAAE,IAAKD,EAAE,GAChB8uE,EAAAA,GAAK,CAAE7uE,EAAE,IAAKD,EAAE,GAAA,EAChB+uE,GAAK,CAAE9uE,EAAE,IAAKD,EAAE,GAChBgvE,EAAAA,GAAK,CAAE/uE,EAAE,IAAKD,EAAE,IAAA,CAAA,EAGbivE,EAAQ7B,EAAgB,eAAgB/pF,IAAM4c,EAAAA,EAK9CivE,EAAQ,CACXlvE,EALWotE,EAAgB,eAAgB/pF,MAAM2c,EACtCotE,EAAgB,iBAAkB/pF,IAAAA,EAAM2c,EACxCotE,EAAgB,gBAAiB/pF,IAAM2c,EAAAA,CAAAA,EAiBnD,OAVCkvE,EAAMjvE,EADH8B,IAAW,OACJktE,EAEA5lF,KAAK+D,OAAQqgF,IAAgB,YAAcJ,EAAMtrE,CAAAA,EAAQ/B,EAAIqtE,EAAMtrE,GAAQ9B,GAAKytE,CAAAA,EAGvF3zC,IACHm1C,EAAMjvE,GAAMkvE,WAAWp1C,EAAO95B,CAAM,GAAA,EACpCivE,EAAMlvE,GAAMmvE,WAAWp1C,EAAO/5B,CAAAA,GAAM,GAG9BkvE,CACT,EA0DC90F,EAAUuzF,aAAe,SAAUlxF,EAClC,CAAA,IAhDI2yF,EACHx9D,EAEGlC,EA6CA2/D,GAhDAD,EAAAA,OACHx9D,EAAAA,QAEGlC,EAAW89D,EAAAA,KAEd57D,EAAalC,EAASkC,WACtBw9D,EAAiB1/D,EAAS4/D,iBAGpB,CACN15E,WAAYxb,EAAUub,GAAGC,WACzB8X,aAActzB,EAAUub,GAAG+X,aAC3B6hE,YAAan1F,EAAUgzB,KAAK/xB,MAAM4N,MAClCumF,aAAcp1F,EAAUgzB,KAAK/xB,MAAM2N,OACnCymF,oBAAqB79D,EACrB89D,yBAA0BN,CAkCvBvqF,GAAAA,EAAOzK,EAAUq0F,iBAAiBhyF,EAAIslB,OAAQtlB,EAAIgxF,YAAahxF,EAAIkkE,KAAMlkE,EAAIixF,IAAKjxF,EAAIk5B,OAAQl5B,EAAIiyF,OAAQjyF,EAAIs9C,MAAAA,EAE9Gj+C,EAAO,GACX,GAAA,EAjCD,SAAwB+I,EAAMwqF,GAC7Bj1F,EAAUgzB,KAAK/xB,MAAM4N,MAASpE,EAAKob,EAAI,KACvC7lB,EAAUgzB,KAAK/xB,MAAM2N,OAASnE,EAAKmb,EAAI,KAEvC5lB,EAAUub,GAAGC,WAAa,EAC1Bxb,EAAUub,GAAG+X,aAAe,EAE5B,IAAIgC,EAAW89D,KACX6B,EAAaI,qBAAuBJ,EAAaK,4BAEpDhgE,EAASkC,WAAa,GACtBlC,EAAS4/D,gBAAAA,GAEV,GAqBgBzqF,EAAMwqF,CAAAA,EACrBj1F,EAAU0V,eACVhU,EAAAA,EAAO1B,EAAUgzB,KAAKrlB,SACtB,OAAQvJ,EAGRoQ,CAAAA,QAAQC,MAAMrQ,CACjB,CAAA,QAAY,EA1BX,SAAyB6wF,GACxBj1F,EAAUub,GAAG+X,aAAe2hE,EAAa3hE,aACzCtzB,EAAUub,GAAGC,WAAay5E,EAAaz5E,WACvCxb,EAAUgzB,KAAK/xB,MAAM4N,MAASomF,EAAaE,YAC3Cn1F,EAAUgzB,KAAK/xB,MAAM2N,OAASqmF,EAAaG,aAE3C,IAAI9/D,EAAW89D,EACX6B,GAAAA,EAAaI,qBAAuBJ,EAAaK,4BACpDhgE,EAASkC,WAAay9D,EAAaI,oBACnC//D,EAAS4/D,gBAAkBD,EAAaK,yBAEzC,GAgBiBL,CAChBj1F,EAAAA,EAAU0V,eACV,CAAA,CAED,OAAOhU,CACT,CAEA,EAEmB1B,EAGlB,GA9RD,CAgSA,EZ9OCu1F,UanDc,SAASv1F,EACvBoiE,CAAAA,GAAqB,OAAQpiE,EAAU2oD,OACxC,EbkDC6sC,ectDc,SAASx1F,EAAAA,CAExBA,EAAUkE,YAAY,mBAAmB,UAExC,CAAA,QADI6G,EAAM0C,SAASqO,KAAKwe,qBAAqB,OACpCz3B,EAAE,EAAGA,EAAIkI,EAAIjI,OAAQD,IAAK,CAClC,IAAI6qC,EAAK3iC,EAAIlI,CAAG8L,EAAAA,WAAW,GAE3B,IADA++B,EAAKA,EAAGnqC,MAAM,GAAA,GACPT,QAAU,GAAK4qC,EAAG,CAAA,GAAM,WAAW,CACzC,IAAI1lB,EAAO,YAAajd,EAAIlI,GAAG8K,WAAW,IAAI6S,QAAQ,MAAO,QAAQA,QAAQ,KAAK,KAAQA,EAAAA,QAAQ,WAAW,EAAI,EAAA,KACjHwH,EAAO2nE,SAAS3nE,GAAMxH,QAAQ,uBAAuB,SAAS28D,EAAIr1D,GACjE,MAAO,QAAQA,EAAK,IACxB,GACG9nB,EAAU+sB,UAAU2gB,EAAG,CAAA,CAAA,EAAIl2B,SAAS,QAAQ,MAAM,KAAKwQ,CAAAA,EACvDjd,EAAIlI,CAAG5B,EAAAA,MAAM0a,QAAQ,MACrB,CACD,CACF,CAAA,CAEA,EdqCCsnD,QenCc,SAASjjE,EAyCtB,CAAA,SAASy1F,EAAStxF,EAAAA,CACjB,IAAIuxF,EAAS,CACZC,cAAgB31F,EAAU2iE,oBAAoByC,cAC9CwwB,YAAc51F,EAAU2iE,oBAAoB0C,YAC5CrlE,UAAYA,EAAU2iE,oBAAoBkzB,cAC1C18C,SAAYn5C,EAAU2iE,oBAAoBmzB,SAC1CC,SAAY/1F,EAAU2iE,oBAAoBgD,SAC1CvlE,MAASJ,EAAU2iE,oBAAoB+C,KAGpCswB,EAAAA,EAAY,CAAA,EAChB,QAAQnzF,KAAK6yF,EACZM,EAAUnzF,EAAE8b,YAAiB+2E,CAAAA,EAAAA,EAAO7yF,CAIrC,EAAA,OAAOmzF,EAFP7xF,GAAQA,EAAO,IAAIwa,YAAAA,CAAAA,GAEO+2E,EAAO11F,SACjC,CAzDDA,EAAUM,OAAO2iE,WACjBjjE,EAAUM,OAAO21F,aAAe,GAChCj2F,EAAUk2F,YAAc,SAASC,EAAUn8E,EAASo8E,EACnD,CAAA,IAAIC,EAAcZ,EAASW,GACxBC,GACFA,EAAY5+E,UAAUoH,KAAKs3E,EAAUn8E,CAEzC,CAAA,EAEEha,EAAUs2F,mBAAqB,SAASH,EAAUC,EAAAA,CACjD,IAAIC,EAAcZ,EAASW,CAC3B,EAAA,GAAGC,EAAY,CACd,IAAIE,EAAWv2F,EAAU2iE,oBAAoB6zB,UAAU1oE,MAAMqoE,CAC7D,EAAA,GAAGI,EAASzzF,OACX,OAAOuzF,EAAY5+E,UAAUg/E,YAAYF,EAAS,CAEnD,CAAA,CAAA,CACJ,EAEEv2F,EAAU02F,eAAiB,SAASP,EAAUC,EAC7C,CAAA,IAAIC,EAAcZ,EAASW,CAAAA,EACxBC,GACFA,EAAY5+E,UAAUk/E,OAAOR,CAAAA,CAEjC,EAEEn2F,EAAUigC,MAAQ,UACjB,CAAA,GAAIjgC,EAAUM,OAAO2iE,QAArB,CAGA,IAAI2zB,EAAO52F,EAAU2iE,oBAAoBc,WACzCmzB,EAAK5xB,OACL,EAAA,IAAIE,EAAa0xB,EAAKryB,cAAAA,EAAAA,CAClBW,GAAcA,aAAsBllE,EAAU2iE,oBAAoByC,eAAiBF,aAAsBllE,EAAU2iE,oBAAoB0C,YAC1IuxB,EAAKC,eAELD,EAAAA,EAAKnxE,UAAUmxE,EAAKryB,cAAAA,CAAAA,CAPpB,CASJ,EAqBEvkE,EAAU2iE,oBAAsB,GAEhC3iE,EAAU82F,SAAW,UAGpB,CAAA,QAFIlb,EAAQpwE,MAAMiM,UAAU/L,MAAM0I,KAAKlC,UAAW,GAC9CnL,EAAM,CAAA,EACFlE,EAAI,EAAGA,EAAI+4E,EAAM94E,OAAQD,IAAI,CACpC,IAAIR,EAAMu5E,EAAM/4E,GAKhB,QAAQwF,KAJS,OAAPhG,GAAO,aAChBA,EAAM,IAAIA,GAGEA,EACZ0E,EAAIsB,CAAKhG,EAAAA,EAAIgG,CAEd,CAAA,CACD,OAAOtB,CACV,EChGe,SAAS/G,EAAAA,CAExBA,EAAU2iE,oBAAoB6zB,UAAY,CACzCO,cAAe,WACd,MAAO,CACNC,UAAU,CACT3tE,SACA4tE,IAAAA,GACAC,KAAAA,GACAC,KAAQ,EAAA,EAET34D,QAAS,IAAA,CAEV,EACD1Q,MAAO,SAASqoE,EAIf,CAAA,QAHII,EAAW,CAAA,EAEXa,EAAOnuF,KAAKouF,eAAepuF,KAAKsX,KAAK41E,CACjCtzF,CAAAA,EAAAA,EAAI,EAAGA,EAAIu0F,EAAKt0F,OAAQD,IAAI,CAKnC,QAJIy0F,EAAQruF,KAAKsuF,SAASH,EAAKv0F,CAAAA,CAAAA,EAE3B20F,EAAUvuF,KAAK8tF,gBAEXpoE,EAAI,EAAGA,EAAI2oE,EAAMx0F,OAAQ6rB,IAC7B1lB,KAAKwuF,YAAYH,EAAM3oE,CACzB6oE,CAAAA,EAAAA,EAAQR,UAAUM,EAAM3oE,OAChB1lB,KAAKyuF,YAAYJ,EAAM3oE,IAC/B6oE,EAAQh5D,QAAUv1B,KAAKyuF,YAAYJ,EAAM3oE,CAEzC6oE,CAAAA,EAAAA,EAAQh5D,QAAU84D,EAAM3oE,GAAGgpE,WAAW,CAAA,EAIxCpB,EAASj0F,KAAKk1F,EACd,CACD,OAAOjB,CACP,EAEDqB,oBAAqB,SAASC,EAAAA,CAC7B,IAAIL,EAAUvuF,KAAK8tF,cACnBS,EAAAA,EAAQR,UAAU3tE,MAAAA,CAAAA,CAAUwuE,EAAStiC,SACrCiiC,EAAQR,UAAUC,IAAAA,CAAAA,CAAQY,EAASC,OACnCN,EAAQR,UAAUE,KAAAA,CAAAA,CAASW,EAAS1zB,QACpCqzB,EAAQR,UAAUG,KAAAA,CAAAA,CAASU,EAASzzB,QACpCozB,EAAQh5D,QAAUq5D,EAASt5D,OAASs5D,EAASr5D,QAE1Cg5D,EAAQh5D,SAAW,IAAMg5D,EAAQh5D,SAAW,MAE9Cg5D,EAAQh5D,SAAW,IAGpB,IAAIu5D,EAAez0F,OAAO00F,aAAaR,EAAQh5D,OAI/C,EAAA,OAHGu5D,IACFP,EAAQh5D,QAAUu5D,EAAap5E,YAAAA,EAAcg5E,WAAW,CAElDH,GAAAA,CACP,EAEDS,iBAAkB,SAASJ,EAC1B,CAAA,OAAO5uF,KAAKivF,QAAQjvF,KAAK2uF,oBAAoBC,CAAAA,CAAAA,CAC7C,EAEDK,QAAS,SAASV,EACjB,CAAA,IAAI5b,EAAQ,CAAA,EACZ,QAAQ/4E,KAAK20F,EAAQR,UACjBQ,EAAQR,UAAUn0F,CAAAA,GACpB+4E,EAAMt5E,KAAKO,GAKb,OAFA+4E,EAAMt5E,KAAKk1F,EAAQh5D,SAEZo9C,EAAMtuE,KAAKrE,KAAKkvF,YAAAA,CACvB,EAEDd,eAAgB,SAASlB,EACxB,CAAA,OAAOA,EAAS5yF,MAAM0F,KAAKkvF,YAC3B,CAAA,EACDZ,SAAU,SAASa,EAAAA,CAClB,OAAOA,EAAK70F,MAAM0F,KAAKovF,eAAAA,CACvB,EACD93E,KAAM,SAAS41E,EACd,CAAA,OAAOA,EAAS31E,QAAQ,MAAO,EAC/B,CAAA,EACD23E,aAAa,IACbE,gBAAgB,IAChBZ,YAAY,CACXpuE,MAAS,GACT4tE,IAAO,GACPC,KAAQ,GACRC,KAAQ,EAAA,EAETO,YAAY,CACXY,UAAa,EACbh9D,IAAO,EACPi9D,MAAS,GACTC,IAAO,GACPC,MAAS,GACTC,GAAM,GACNC,KAAQ,GACRx3F,KAAQ,GACRkgB,MAAS,GACTu3E,KAAQ,GACR7rF,IAAO,GACP8rF,OAAU,GACVC,SAAY,GACZ5zD,OAAU,GACV6zD,OAAU,GACVC,KAAO,IACPC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,GAAM,IACNC,IAAO,IACPC,IAAO,IACPC,IAAO,KAIT,EDzBqB55F,CElGN,EAAA,SAASA,GAExBA,EAAU2iE,oBAAoBk3B,aAAe,CAC5CC,UAAW,KACXrD,YAAa,SAASe,GACjBvuF,KAAK6wF,YAAW7wF,KAAK6wF,UAAY,CAAA,GACrC,IACIprC,EADY1uD,EAAU2iE,oBAAoB6zB,UACzB0B,QAAQV,CAE7B,EAAA,OAAOvuF,KAAK6wF,UAAUprC,CAAAA,CACtB,EAEDqrC,SAAU,SAASvC,EAASpzF,EAAAA,CAC3B,IAAI4V,EAAU/Q,KAAKwtF,YAAYe,CAAAA,EAC5Bx9E,IACFA,EAAQ5F,KAAKnL,KAAM7E,CAAAA,EAEfA,EAAEyxB,eAAgBzxB,EAAEyxB,eACnBzxB,EAAAA,EAAE41F,YAAc,GAGtB,EACDn7E,KAAM,SAASs3E,EAAUn8E,EAAAA,CACpB/Q,KAAK6wF,YAAW7wF,KAAK6wF,UAAY,CAAA,GAKrC,QAHItD,EAAYx2F,EAAU2iE,oBAAoB6zB,UAE1CD,EAAWC,EAAU1oE,MAAMqoE,GACvBtzF,EAAI,EAAGA,EAAI0zF,EAASzzF,OAAQD,IACnCoG,KAAK6wF,UAAUtD,EAAU0B,QAAQ3B,EAAS1zF,CAAAA,CAAAA,CAAAA,EAAOmX,CAElD,EACD28E,OAAQ,SAASR,EAIhB,CAAA,QAHIK,EAAYx2F,EAAU2iE,oBAAoB6zB,UAE1CD,EAAWC,EAAU1oE,MAAMqoE,CACvBtzF,EAAAA,EAAI,EAAGA,EAAI0zF,EAASzzF,OAAQD,IAChCoG,KAAK6wF,UAAUtD,EAAU0B,QAAQ3B,EAAS1zF,aACrCoG,KAAK6wF,UAAUtD,EAAU0B,QAAQ3B,EAAS1zF,CAGnD,CAAA,CAAA,CAAA,EAEDo3F,QAAS,SAASx2F,GACjB,QAAQZ,KAAKY,EACZwF,KAAK4V,KAAKhc,EAAGY,EAAIZ,CAAAA,CAAAA,CAElB,EACDq3F,SAAU,UAAA,CACLjxF,KAAK6wF,YACR7wF,KAAK6wF,UAAY,IACf7wF,KAAKu6B,MACPv6B,KAAKgxF,QAAQhxF,KAAKu6B,IAAAA,CAEnB,EAGF,EF0CexjC,CGnGA,EAAA,SAASA,GAGvBA,EAAU2iE,oBAAoB59C,kBAAoB/kB,EAAU8oD,mBAE5D9oD,EAAU2iE,oBAAoBF,UAAY,SAAmB5mD,EAAMzX,EAClE,CAAA,GAAGA,EAAEo6B,SAAW,EAAG,MAAA,GAKnB,QAOe27D,EAVX55D,EAAYvgC,EAAU2iE,oBAAoB59C,kBAAkBlJ,CAC5Du+E,EAAAA,EAAe3sF,SAAS6X,cACxB+0E,KACIx3F,EAAI,EAAGA,EAAI09B,EAAUz9B,OAAQD,IACpC,GAAG09B,EAAU19B,IAAMu3F,EAAa,CAC/BC,EAAex3F,EACf,KACA,CAIF,GAAGuB,EAAEmxD,UAOJ,GADA4kC,EAAW55D,EAFE85D,GAAgB,EAAM95D,EAAUz9B,OAAS,EAAMu3F,EAAe,CAAA,EAM1E,OAFAF,EAASl6D,MAAAA,EACT77B,EAAEyxB,eAAAA,EAAAA,WAQHskE,EAAW55D,EADE85D,GAAgB95D,EAAUz9B,OAAS,EAAK,EAAKu3F,EAAe,GAKxE,OAFAF,EAASl6D,MACT77B,EAAAA,EAAEyxB,oBAMJ,MAAA,EACF,CAGA,EHmDmB71B,CAAAA,EIpGJ,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoB58B,OAAS,CACtCxnB,MAAO,UAEN,CAAA,QADI7O,EAAO1P,EAAUyC,WAAWC,iBAAiB,iBACzCG,EAAAA,EAAI,EAAGA,EAAI6M,EAAK5M,OAAQD,IAC/B6M,EAAK7M,CAAGqI,EAAAA,WAAWC,YAAYuE,EAAK7M,GAErC,EACD6K,cAAe,UACd,CAAA,IAAIhK,EAAU+J,SAASC,cAAc,KAGrC,EAAA,OAFAhK,EAAQsV,aAAa,WAAA,EACrBtV,EAAAA,EAAQiL,UAAY,iBACbjL,CACP,EAED42F,eAAgB,SAASxtF,EAAOC,EAAKo3B,EAIpC,CAAA,QAHIz0B,EAAO,CAAA,EACP6qF,EAAe,IAAIp4F,KAAK2K,CACxB0tF,EAAAA,EAAa,IAAIr4F,KAAK8M,KAAKE,IAAIpC,EAAI3K,QAAWpC,EAAAA,EAAU2B,KAAKC,IAAI5B,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAK2K,CAAAA,CAAAA,EAAS,EAAG,KAAA,EAAO1K,YACpHm4F,EAAan4F,QAAAA,EAAY2K,EAAI3K,QAAAA,GAElCsN,EAAOA,EAAKtG,OAAO+6B,EAAO/vB,KAAKnL,KAAMsxF,EAAc,IAAIp4F,KAAK8M,KAAKE,IAAIqrF,EAAWp4F,QAAW2K,EAAAA,EAAI3K,cAC/Fm4F,EAAev6F,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAI24F,EAAc,EAAG,QAE5EC,EAAax6F,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAI24F,EAAc,EAAG,QAC1EC,EAAa,IAAIr4F,KAAK8M,KAAKE,IAAIqrF,EAAWp4F,QAAAA,EAAW2K,EAAI3K,QAAAA,CAAAA,CAAAA,EAG1D,OAAOsN,CACP,EAGD+F,OAAQ,SAAS3I,EAAOC,EAAKnI,EAAAA,CAC5BqE,KAAKsV,MAAAA,EACL,IAAI7O,EAAO,CAAA,EAEP0/B,EAAQpvC,EAAU2iE,oBAAoBgD,SAASluD,UAAUgjF,OAE7D,OADWz6F,EAAU2iE,oBAAoBgD,SAASluD,UAAUijF,SAAAA,EAAAA,CAE3D,KAAKtrD,EAAMz8B,MACVjD,EAAOzG,KAAK0xF,qBAAqB7tF,EAAOC,EAAKnI,CAC7C,EAAA,MACD,KAAKwqC,EAAM9Z,SACV5lB,EAAOzG,KAAK2xF,qBAAqB9tF,EAAOC,EAAKnI,CAAAA,EAC7C,MACD,KAAKwqC,EAAM3E,KACV/6B,EAAOA,EAAKtG,OAAOH,KAAKqxF,eAAextF,EAAOC,EAAK9D,KAAK4xF,gBAAAA,CAAAA,EACxD,MACD,KAAKzrD,EAAM1E,MACVh7B,EAAOzG,KAAK6xF,kBAAkBhuF,EAAOC,CACrC,EAAA,MACD,KAAKqiC,EAAM2rD,WACVrrF,EAAOA,EAAKtG,OAAOH,KAAKqxF,eAAextF,EAAOC,EAAK9D,KAAK+xF,sBAAAA,CAAAA,EACxD,MACD,KAAK5rD,EAAMjwB,KACVzP,EAAOzG,KAAKgyF,mBAAmBnuF,EAAOC,CACtC,EAAA,MACD,KAAKqiC,EAAM8rD,WACVxrF,EAAOA,EAAKtG,OAAOH,KAAKqxF,eAAextF,EAAOC,EAAK9D,KAAK0xF,oBAI1D1xF,CAAAA,CAAAA,CAAAA,KAAKkyF,gBAAgBzrF,EAAM5C,EAAOC,EAAKnI,CAAAA,EACvCqE,KAAKmyF,kBAAkB1rF,EAAM5C,EAAOC,EAAKnI,CAEzC,EAAA,QAAQ/B,EAAI6M,EAAK5M,OAAS,EAAGD,GAAK,EAAGA,IACpC,GAAG6M,EAAK7M,CAAG0a,EAAAA,YACV,OAAO7N,EAAK7M,GAId,OAAO,IACP,EAEDu4F,kBAAmB,SAAS1rF,EAAM5C,EAAOC,EAAKnI,EAAAA,CAM7C,QALIy2F,EAAYr7F,EAAU2B,KAAKyoB,YAAYpqB,EAAUM,OAAOurD,QAExDp/B,EAAAA,EAAO4uE,EAAUvuF,CACpB6f,EAAAA,EAAK0uE,EAAUtuF,CAAAA,EAERlK,EAAI,EAAGA,EAAI6M,EAAK5M,OAAQD,IAC/B6M,EAAK7M,CAAAA,EAAGmW,aAAa,kBAAmByT,GACxC/c,EAAK7M,CAAAA,EAAGmW,aAAa,gBAAiB2T,GACnC/nB,GACF8K,EAAK7M,CAAGmW,EAAAA,aAAa,eAAgBpU,CAGvC,CAAA,EAEDu2F,gBAAiB,SAASzrF,EAAM5C,EAAOC,EAAKnI,EAC3C,CAAA,IAAIkqB,EAAQ,GAER3qB,EADQnE,EAAUwE,SAAAA,EACLL,KAEbm3F,EAAgB,GAiBpB,GAfAxsE,GAAS9uB,EAAU+sB,UAAUiL,SAASlrB,CAElC9M,EAAAA,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAK2K,IAAQ1K,QAAa0K,GAAAA,EAAM1K,QAChE0sB,IAAAA,GAAS,IAAM9uB,EAAU+sB,UAAUiO,WAAWluB,CAAAA,EAC9CwuF,MAGGt7F,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAK2K,CAAAA,CAAAA,EAAQ1K,QAAapC,GAAAA,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAK4K,CAAAA,CAAAA,EAAM3K,YAElG0sB,GAAS,MAAQ9uB,EAAU+sB,UAAUiL,SAASjrB,CAC3CuuF,GAAAA,GAAkBt7F,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAK4K,CAAM3K,CAAAA,EAAAA,QAAAA,GAAa2K,EAAI3K,QAC7E0sB,KAAAA,GAAS,IAAM9uB,EAAU+sB,UAAUiO,WAAWjuB,CAAAA,IAI7CnI,GACF,GAAG5E,EAAUkG,QAAUlG,EAAUkG,OAAO/B,CAAAA,EAAM,CAC7C,MAAMmxB,EAAWt1B,EAAUkG,OAAO/B,GAC5Bo3F,EAAgBjmE,EAASo5D,OAAOp5D,EAASxmB,MAAMlK,CACrDkqB,CAAAA,EAAAA,GAAS,KAAO9uB,EAAU+sB,UAAU5oB,EAAO,cAAA,EAAgBo3F,EAAcroF,IAAKqoF,EAAczsE,MAAOysE,CACvG,CAAA,SAAYv7F,EAAUiG,QAAUjG,EAAUiG,OAAO9B,GAAM,CACnD,MAAMwO,EAAQ3S,EAAUiG,OAAO9B,CACzBo3F,EAAAA,EAAgB5oF,EAAMpN,QAAQoN,EAAM7D,MAAMlK,CAAAA,CAAAA,EAEhDkqB,GAAS,KAAO9uB,EAAU+sB,UAAU5oB,EAAO,aAAeo3F,EAAAA,EAAcroF,IAAKqoF,EAAczsE,MAAOysE,CAClG,CAAA,EAIF,QAAQ14F,EAAI,EAAGA,EAAI6M,EAAK5M,OAAQD,IAC/B7C,EAAUg/B,SAAS+lB,cAAcr1C,EAAK7M,CAAAA,EAAI,CACzC,aAAcisB,EACd,YAAa,QAAA,CAAA,CAGf,EAEDksE,uBAAwB,SAASz5F,EAAYC,EAAAA,CAO5C,QANIkO,EAAO1P,EAAUyC,WAAWC,iBAAiB,oCAAA,EAE7CR,EAAWlC,EAAU2B,KAAKY,WAAW,IAAIJ,KAAKnC,EAAUwE,SAAAA,EAAWwJ,QAEnEnB,CAAAA,EAAAA,EAAAA,GACA2uF,EAAax7F,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKZ,CAC3CsB,CAAAA,EAAAA,EAAI,EAAGA,EAAI6M,EAAK5M,SACvB+J,IACG7M,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKD,IAAWE,QAAao5F,GAAAA,EAAWp5F,QAFzCS,GAAAA,IAK9BX,EAAWlC,EAAU2B,KAAKC,IAAIM,EAAU,EAAG,KAG7C,EAAA,OAAG2K,GAAH,GAAuB5D,KAAKwyF,SAAS/rF,EAAK7C,CACnC,CAAA,EAAA,CAAA,CACP,EAED4uF,SAAU,SAASv5C,EAClB,CAAA,IAAInc,EAAS98B,KAAKyE,cAAAA,EAMlB,OALAq4B,EAAO9kC,MAAMC,IAAMghD,EAAK/+B,UAAY,KACpC4iB,EAAO9kC,MAAME,KAAO+gD,EAAK9+B,WAAa,KACtC2iB,EAAO9kC,MAAM4N,MAAQqzC,EAAK3kC,YAAc,KACxCwoB,EAAO9kC,MAAM2N,OAASszC,EAAK7kC,aAAe,KAC1C6kC,EAAKt0C,YAAYm4B,GACV,CAACA,CAAAA,CACR,EACD80D,iBAAkB,SAASt5F,EAAYC,EAAAA,CACtC,IAAI0gD,EAAOliD,EAAU07F,eAAen6F,CACpC2gD,EAAAA,EAAKjhD,MAAMyJ,SAAW,WACtB,IAAIq7B,EAAS98B,KAAKyE,cAMlB,EAAA,OALAq4B,EAAO9kC,MAAMC,IAAM,MACnB6kC,EAAO9kC,MAAME,KAAO,MACpB4kC,EAAO9kC,MAAM4N,MAAQ,OACrBk3B,EAAO9kC,MAAM2N,OAAS,OACtBszC,EAAKt0C,YAAYm4B,CACV,EAAA,CAACA,CACR,CAAA,EAEDk1D,mBAAoB,SAAS15F,EAAYC,EACxC,CAAA,IAAIgM,EAAQvE,KAAKyE,cAAAA,EAOjB,OANAF,EAAMvM,MAAM2N,OAAS,MACrBpB,EAAMvM,MAAM4N,MAAQ,OACpBrB,EAAMvM,MAAM06F,QAAU,EACtBnuF,EAAMvM,MAAMC,IAAM,MAClBsM,EAAMvM,MAAME,KAAO,MACnBnB,EAAUyC,WAAWyY,cAAc,eAAA,EAAiBtN,YAAYJ,CAAAA,EACzD,CAACA,CACR,CAAA,EAEDotF,qBAAsB,SAASr5F,EAAYC,EAAUoD,EAAAA,CACpD,IAAIg3F,EAAY57F,EAAUsM,WAAW,CAAE,EAAEtM,EAAUkG,OAAOlG,EAAUqK,KAChE+D,CAAAA,EAAAA,EAAQwtF,EAAUttF,QAEtBstF,EAAUC,eAAiB,GAC3B,IAAI9tF,EAAS,CAAA,EAETC,EAAWzM,EAAa,IAAIY,KAAKZ,CAAAA,EAAcvB,EAAU6J,UACzDoE,EAAWzM,EAAW,IAAIW,KAAKX,CAAAA,EAAYxB,EAAU4J,UAOzD,GALGoE,EAAS5L,QAAAA,EAAYpC,EAAU6J,UAAUzH,QAAAA,IAC3C4L,EAAW,IAAI7L,KAAKnC,EAAU6J,SAAAA,GAC5BoE,EAAS7L,QAAAA,EAAYpC,EAAU4J,UAAUxH,QAAAA,IAC3C6L,EAAW,IAAI9L,KAAKnC,EAAU4J,SAAAA,GAAAA,CAE3BgyF,EAAUE,SAAU,OAAO/tF,EAE/B,QAAQlL,EAAI,EAAGA,EAAI+4F,EAAUE,SAASh5F,QAAAA,CAClC9C,EAAU+7F,mBAAmBH,EAAUE,SAASj5F,CAAAA,CAAAA,EADNA,KAI9C,GAAGA,GAAK+4F,EAAUE,SAASh5F,OAC1B,OAAOiL,EAER,IAAIF,EAAOO,EAAMxJ,CAAAA,EAEjB,GAAMoJ,EAAAA,EAAWxM,GAAYyM,EAAW1M,GACvC,OAAOwM,EAER,IAAIP,EAAQvE,KAAKyE,cAEjB,EAAA,IAAIsuF,EACAC,EAEJ,SAASC,EAAcjlF,EAAQ3S,GAE9BA,EAAOklB,QAAQ,CAEfllB,EAAAA,EAAO0rC,YAAY/4B,EAAOJ,YAAAA,CAAAA,EAC1BvS,EAAOolB,SAASzS,EAAOH,SACvBxS,CAAAA,EAAAA,EAAOklB,QAAQvS,EAAOzP,UACtB,CAED,GAAIxH,EAAUY,QAAAA,EAAUyE,KAGnB,CAEJ,MAAM82F,EAAY,IAAIh6F,KAAKZ,CAC3B26F,EAAAA,EAAcl8F,EAAU6J,UAAWsyF,GACnC,MAAMC,EAAU,IAAIj6F,KAAKX,GACzB06F,EAAcl8F,EAAU6J,UAAWuyF,CAAAA,EACnCJ,EAAYh8F,EAAUq8F,eAAe,CAAC96F,WAAY46F,MAAmBP,CAAAA,EACrEK,EAAUj8F,EAAUq8F,eAAe,CAAC96F,WAAY66F,CAAU,EAAA,GAAOR,EACjE,MAVAI,EAAYh8F,EAAUq8F,eAAe,CAAC96F,WAAYA,CAAa,EAAA,GAAOq6F,GACtEK,EAAUj8F,EAAUq8F,eAAe,CAAC96F,WAAYC,CAAW,EAAA,GAAOo6F,CAWnE,EAAA,IAAIhtF,EAAWgtF,EAAUU,gBAAgB13F,CAAS,EAAA,GAAOg3F,EAAU7qE,GAAK,EAEpE7vB,EAAM,EACNlB,EAAUu8F,UAAU,MAAA,IACvBr7F,EAAM2M,EAAKsV,UACX64E,GAAaJ,EAAUnkE,GACvBwkE,GAAWL,EAAUnkE,GACrB5pB,EAAO7N,EAAUyC,WAAWyY,cAAc,eAI3C,GAAA,IAAIrM,EAAQI,KAAKC,IAAI,EAAG+sF,EAAUD,EAAY,CAAA,EAC9C,IAAIlsD,EAAY,OAWhB,OAVG9vC,EAAUM,OAAOo0C,MACnB5E,EAAY,SAEbtiC,EAAMvM,MAAM6lC,QAAU,UAAUl4B,CAAakhC,OAAAA,CAAAA,IAAaksD,cAAsBntF,CAAgB3N,WAAAA,CAAAA,MAE7F2M,IACFA,EAAKD,YAAYJ,CACjBO,EAAAA,EAAOzL,KAAKkL,CAAAA,GAGNO,CACP,EAEDyuF,gBAAiB,SAAS76F,EAAAA,CAIzB,QAHIa,EAAQxC,EAAUyC,WAAWC,iBAAiB,iBAAA,EAE9CgN,EAAO,CAAA,EACH7M,EAAI,EAAGA,EAAIL,EAAMM,OAAQD,IAChC6M,EAAKpN,KAAKE,EAAMK,CAAAA,EAAGqI,YAGpB,IAEI2B,EAAAA,GACA4vF,EAAa,EACbC,EAAY,GACZx6F,EALYlC,EAAU2B,KAAKY,WAAW,IAAIJ,KAAKnC,EAAUwE,WAAWwJ,QAMpEwtF,CAAAA,EAAAA,EAAax7F,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKR,CACnD,CAAA,EAAA,IAAQkB,EAAI,EAAGA,EAAI6M,EAAK5M,SACvB+J,IAEG6vF,GAAY,GACdD,IACAC,EAAW,GAEXA,IAGE18F,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKD,CAAAA,CAAAA,EAAWE,QAAao5F,GAAAA,EAAWp5F,WAVzCS,IAa9BX,EAAWlC,EAAU2B,KAAKC,IAAIM,EAAU,EAAG,KAI7C,EAAA,GAAG2K,GAAH,GACC,MAAO,CAGR,EAAA,IAAI1L,EAAOnB,EAAUi5C,OAAOyjD,CAAAA,EACxBx7F,EAAMlB,EAAUi5C,OAAOG,QAAQqjD,CAAAA,EAE/BzxF,EAAM/B,KAAKyE,cAAAA,EACf1C,EAAI/J,MAAMC,IAAMA,EAAM,KACtB8J,EAAI/J,MAAME,KAAOA,EAAO,KACxB6J,EAAI/J,MAAM4N,MAAQ7O,EAAUwO,MAAMkuF,CAAY,EAAA,KAC9C1xF,EAAI/J,MAAM2N,QAAW5O,EAAUi5C,OAAOG,QAAQqjD,EAAa,CAAA,EAAKv7F,GAAQlB,EAAUi5C,OAAOrqC,QAAU,KAGnG,IAAIzI,EAAYnG,EAAUyC,WAAWyY,cAAc,eAE/CyhF,EAAAA,EAAYx2F,EAAU+U,cAAc,sBAAA,EAMxC,OALGyhF,EAAUl4E,YACZte,EAAUue,aAAa1Z,EAAK2xF,EAAUl4E,aAEtCte,EAAUyH,YAAY5C,CAEhBA,EAAAA,CACP,EACD8vF,kBAAmB,SAASv5F,EAAYC,EAAAA,CAGvC,QAFIuF,EAAM,CACNkqC,EAAAA,EAAc1vC,EACZ0vC,EAAY7uC,QAAAA,EAAYZ,EAASY,QAAAA,GACtC2E,EAAIzE,KAAK2G,KAAKuzF,gBAAgBvrD,IAC9BA,EAAcjxC,EAAU2B,KAAKC,IAAIqvC,EAAa,EAAG,KAAA,EAElD,OAAOlqC,CACP,EAED4zF,qBAAsB,SAASp5F,EAAYC,EAAUoD,GACpD,IAAIiI,EAAQ7M,EAAUiK,kBAAkB1I,GAEpCmO,EAAO,CAAA,EACP7B,EAAO,KAEPhG,EAAI7H,EAAUM,OAClB,GAAGN,EAAUyO,SAAS5B,CAAQ,EAAA,OAAO6C,EAErC,GAAI1P,EAAUiG,QAAUjG,EAAUiG,OAAOjG,EAAUqK,QAAUzF,EAAS,CACrE,IAAIyB,EAAOrG,EAAUiG,OAAOjG,EAAUqK,KACtCwC,EAAAA,EAAQxG,EAAKyI,MAAMlK,CAAAA,EAEnB,IAAImK,EAAc1I,EAAKyI,MAAMlK,CAAAA,EACxByB,EAAKhB,KAAO,EAQhBwH,EAAQ7M,EAAUiK,kBAAkB1I,CAAAA,EAAcwN,GAPlDlC,EAAQkC,EACJ1I,EAAKoE,MAASoC,EAAQxG,EAAKqE,SAASrE,EAAKoE,OAC5CoC,EAAQ,GAQV,CAED,GAAA,EADAgB,EAAO7N,EAAUgP,cAAcnC,CACnBgB,IAAAA,EAAKqN,cAAc,iBAE9B,EAAA,OAAOzN,SAASC,cAAc,OAG/B,IAAIZ,EAAQmC,KAAKC,IAA2B,GAAtB3N,EAAWuI,SAAAA,EAAgBvI,EAAW6J,WAAAA,EAA4B,GAAbvD,EAAEkC,UAAAA,EAGzEgD,EAAMkC,KAAKE,IAAyB,GAApB3N,EAASsI,SAAgBtI,EAAAA,EAAS4J,aAA2B,GAAZvD,EAAEmC,SAKvE,EAAA,GAAA,CAJI+C,GAAQ/M,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKX,CAAWY,CAAAA,EAAAA,QAAAA,EAAYpC,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKZ,CAAaa,CAAAA,EAAAA,QAAAA,IACnH2K,EAAkB,GAAZlF,EAAEmC,WAGL+C,GAAOD,EACV,MAAO,CAAA,EAGR,IAAIU,EAAQvE,KAAKyE,cAGb0B,EAAAA,EAAmBpP,EAAUM,OAAO+O,aAAaxH,EAAEmC,UAAY,EAC/DsF,EAAU,KAMd,OALA9B,EAAMvM,MAAMC,IAAO+N,KAAKM,OAAa,GAANzC,EAAS,IAAK9M,EAAUM,OAAOyJ,WAAWuF,GAAStP,EAAUM,OAAO+O,aAAaC,CAAWF,EAAAA,EAAoB,KAC/I5B,EAAMvM,MAAM27F,WAAapvF,EAAMvM,MAAM2N,OAASK,KAAKC,IAAKD,KAAKM,MAAmB,IAAXxC,EAAID,GAAU,IAAM9M,EAAUM,OAAO+O,aAAaC,CAAYF,EAAAA,EAAkB,GAAG,KACxJ5B,EAAMvM,MAAM4N,MAAQ,OACpBhB,EAAKD,YAAYJ,CACjBkC,EAAAA,EAAKpN,KAAKkL,CACHkC,EAAAA,EAAK,CAEZ,CAAA,CAAA,CAGF,EJnSS1P,CAAAA,EKrGM,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoBkzB,cAAgB,aAE9C71F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAYzX,EAAU82F,SACjE92F,EAAU2iE,oBAAoBk3B,aAC9B,CACCgD,eAAgB,UACf,CAAA,IAAIj8E,EAAO,IAAI5gB,EAAU2iE,oBAAoBgD,SAK7C,OAHI/kD,EAAKukD,QACRvkD,IAAAA,EAAOA,EAAKw9C,SAAAA,GAENx9C,CACP,EAED65E,OAAO,CACN/vD,MAAO,QACPD,KAAM,OACNywD,WAAY,aACZ5lE,SAAS,WACT3iB,MAAM,QACNooF,WAAY,aACZ57E,KAAM,MAAA,EAEP29E,QAAS,UAAA,CACR,IAEI34F,EAFQnE,EAAUwE,SAELL,EAAAA,KACjB,OAAInE,EAAUkG,QAAUlG,EAAUkG,OAAO/B,GACjC8E,KAAKwxF,OAAOnlE,SACTt1B,EAAUiG,QAAUjG,EAAUiG,OAAO9B,CACxC8E,EAAAA,KAAKwxF,OAAO9nF,MACXxO,GAAQ,QACT8E,KAAKwxF,OAAO/vD,MACXvmC,GAAQ,OACT8E,KAAKwxF,OAAOhwD,KACXtmC,GAAQ,cACT8E,KAAKwxF,OAAOM,WACX52F,GAAQ,OAASA,GAAQ,UAAanE,EAAUw0C,OAASx0C,EAAU,QAAUmE,GAC9E8E,KAAKwxF,OAAOt7E,KAEZlW,KAAKwxF,OAAOS,UAEpB,EAEDj7D,MAAO,UAAA,CACNjgC,EAAUigC,MAAAA,CACV,EAED88D,KAAM,WAEL,EAED7L,QAAS,UACRlxF,CAAAA,EAAUyC,WAAWuW,aAAa,WAAY,GAC9C,CAAA,EACDgsD,OAAQ,UACJhlE,CAAAA,EAAUyC,YACZzC,EAAUyC,WAAWqjE,gBAAgB,UAAA,CACtC,EACDzlE,UAAW,WACV,OAAOL,EAAUyC,WAAW0f,aAAa,WACzC,EAGD66E,eAAgB,SAASrgF,EAAGC,GAC3B,OAAID,EAAEpb,WAAWa,QAAAA,GAAawa,EAAErb,WAAWa,QAAAA,EACnCua,EAAE/Z,GAAKga,EAAEha,GAAK,EAAA,GACf+Z,EAAEpb,WAAWa,QAAYwa,EAAAA,EAAErb,WAAWa,QAAAA,EAAY,IACzD,EAED66F,WAAY,SAASxwE,EAAME,EAAIuwE,EAASphE,EACvC,CAAA,IAAIu+B,EAAQr6D,EAAUwE,SAAAA,EACtBioB,EAAO,IAAItqB,KAAK8M,KAAKC,IAAImrD,EAAMrsD,SAAS5L,UAAWqqB,EAAKrqB,QAAAA,CAAAA,CAAAA,EACxDuqB,EAAK,IAAIxqB,KAAK8M,KAAKE,IAAIkrD,EAAMpsD,SAAS7L,QAAWuqB,EAAAA,EAAGvqB,QAEpD,CAAA,CAAA,EAAA,IAAI0F,EAAM9H,EAAUy1B,UAAUhJ,EAAME,CAAAA,EACpC7kB,EAAIqd,KAAKlc,KAAK+zF,cACXlhE,EAAAA,IACFh0B,EAAMA,EAAIg0B,QAAAA,GAIX,QADIvb,IAAS28E,EACLr6F,EAAG,EAAGA,EAAIiF,EAAIhF,QAAUyd,EAAM1d,IAClCiF,EAAIjF,GAAGD,IAAMs6F,IACf38E,EAAO,IAERzY,EAAIuJ,OAAOxO,EAAG,CACdA,EAAAA,IAGD,IAAQA,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAE9B,GADmB,IAAI7C,EAAU2iE,oBAAoB+C,MAAM59D,EAAIjF,CAAGD,EAAAA,EAAAA,EAClDwjE,UACf,OAAOt+D,EAAIjF,CAGb,EAAA,OAAO,IACP,EAEDs6F,iBAAkB,SAASv6F,EAAAA,CAC1B,IAAIsiE,EAAallE,EAAU2iE,oBAAoBc,WAAWyB,WAEtDg4B,EAAUt6F,GAAOsiE,GAAcA,EAAW9lD,QAE1Cg+E,EAAY,KAChB,GAAGF,GAAWl9F,EAAUqE,SAAS64F,CAAS,EAAA,CACzC,IAAIG,EAAYr9F,EAAUqE,SAAS64F,CAAAA,EAEnCE,EAAYp9F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUwlF,WACjEI,EAAU97F,WACVvB,EAAU2B,KAAKC,IAAIy7F,EAAU97F,WAAY,EAAG,MAAA,EAC5C87F,EAAUz6F,GACV,EAAA,CAGD,CACD,GAAA,CAAIw6F,IAAcx6F,EAAG,CACpB,IAAI06F,EAAet9F,EAAUwE,SAE7B44F,EAAAA,EAAYp9F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUwlF,WACjEK,EAAatvF,SACbhO,EAAU2B,KAAKC,IAAI07F,EAAatvF,SAAU,EAAG,MAC7C,EAAA,KAAA,EAGD,CAAA,CAED,GAAGovF,EAAU,CAEZ,IAAIG,EAAS,IAAIv9F,EAAU2iE,oBAAoB+C,MAAM03B,EAAUx6F,IAC3D26F,EAAOp4B,QAAAA,GAGPD,GAAYA,EAAW63B,OAC1B/8F,EAAU2iE,oBAAoBc,WAAWoC,cAAc03B,CAHvDt0F,GAAAA,KAAKk0F,iBAAiBC,EAAUx6F,GAKjC,CACD,EAED46F,iBAAkB,SAAS56F,GAC1B,IAAIsiE,EAAallE,EAAU2iE,oBAAoBc,WAAWyB,WAEtDg4B,EAAUt6F,GAAOsiE,GAAcA,EAAW9lD,QAE1Cg+E,EAAY,KAChB,GAAGF,GAAWl9F,EAAUqE,SAAS64F,CAAS,EAAA,CACzC,IAAIG,EAAYr9F,EAAUqE,SAAS64F,CAAAA,EAEnCE,EAAYp9F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUwlF,WACjEj9F,EAAU2B,KAAKC,IAAIy7F,EAAU77F,YAAc,MAAA,EAC3C67F,EAAU77F,SACV67F,EAAUz6F,GACV,EAAA,CAED,CACD,GAAA,CAAIw6F,IAAcx6F,EAAG,CACpB,IAAI06F,EAAet9F,EAAUwE,SAE7B44F,EAAAA,EAAYp9F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUwlF,WACjEj9F,EAAU2B,KAAKC,IAAI07F,EAAarvF,SAAAA,GAAc,MAAA,EAC9CqvF,EAAarvF,SACb,KAAA,EAGD,CAAA,CAED,GAAGmvF,EAAU,CACZ,IAAIG,EAAS,IAAIv9F,EAAU2iE,oBAAoB+C,MAAM03B,EAAUx6F,EAC3D26F,EAAAA,EAAOp4B,QAGPD,GAAAA,GAAYA,EAAW63B,KAC1B/8F,EAAAA,EAAU2iE,oBAAoBc,WAAWoC,cAAc03B,CAHvDt0F,GAAAA,KAAKu0F,iBAAiBJ,EAAUx6F,GAKjC,CACD,EAED4gC,KAAM,CAEL,gEAAiE,SAASp/B,EAAAA,CACzE,IAAIo3B,EAAOx7B,EAAU2iE,oBAAoB86B,WAAWhmF,UAAUimF,SAAS,iCACnExqF,EAAM9O,EAAE8O,IACTA,IAAQpH,SACVoH,EAAM9O,EAAEo6B,QAAU,IAEhBhD,EAAS,EAAJtoB,EAAQ,CACfsoB,GAAAA,EAAS,EAAJtoB,EAAQ,CAAA,EAAGwG,MAEjB,CAAA,EAED,sBAAuB,SAAStV,EAAAA,CAC/BpE,EAAUm2B,OAAOwB,qBACjB,EACD,wBAAyB,SAASvzB,EAAAA,CACjCpE,EAAUm2B,OAAOuB,oBAAAA,CACjB,EACD,kBAAkB,SAAStzB,EACXpE,CAAAA,EAAUyC,WAAWyY,cAAc,eACzC6I,EAAAA,WAAa,EACtB,EACD,sBAAuB,SAAS3f,EAAAA,CAChBpE,EAAUyC,WAAWyY,cAAc,eACzC6I,EAAAA,WAAa,EACtB,EAGD3f,EAAK,UACJ6E,CAAAA,KAAKk0F,iBACL,CAAA,EAEDvE,KAAQ,UACP54F,CAAAA,EAAU0V,eAAe,IAAIvT,KAC7B,EAED,UAAW,UACV8G,CAAAA,KAAKu0F,kBACL,EAED,wBAAyB,UACxBx9F,CAAAA,EAAU0T,YAAY,CAACnS,WAAY,IAAIY,KAAKnC,EAAUwE,SAAW7C,EAAAA,IAAAA,CAAAA,CAAAA,CACjE,EAED,gBAAiB,SAASyC,EACzBpE,CAAAA,EAAUskE,oBAAoBlgE,CAAAA,CAC9B,EACD,gBAAiB,SAASA,EACzBpE,CAAAA,EAAUskE,oBAAoBlgE,CAC9B,CAAA,EACD,gBAAiB,SAASA,GACzBpE,EAAUskE,oBAAoBlgE,CAC9B,CAAA,CAAA,CAAA,CAAA,EAMJpE,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAU+rB,IAAAA,CAEpH,EL1IiBxjC,CAAAA,EMtGF,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoBg7B,WAAa,aAE3C39F,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAYzX,EAAU82F,SAC9D92F,EAAU2iE,oBAAoBk3B,aAC9B,CACC10B,QAAS,UACR,CAAA,MAAA,EACA,EACD/G,SAAU,UACT,CAAA,OAAO,IACP,EAEDw/B,OAAQ,SAAUl6F,EAAAA,CACjB1D,EAAU2iE,oBAAoBc,WAAWoC,cAAcniE,CAAAA,CACvD,EAEDm6F,UAAW,SAASjhF,EAEnB,CAAA,GAAA,CAAIA,EAAG,MAAA,GACP,QAAQ/Z,KAAKoG,KAAK,CACjB,GAAKA,CAAAA,CAAAA,KAAKpG,CAAQ+Z,GAAAA,CAAAA,CAAAA,EAAE/Z,GAAI,MAAO,GAE/B,IAAIi7F,EAAAA,EAAAA,CAAsB70F,KAAKpG,CAAMoG,GAAAA,CAAAA,KAAKpG,CAAG6U,EAAAA,UACzCqmF,KAAsBnhF,EAAE/Z,CAAAA,GAAAA,CAAM+Z,EAAE/Z,CAAAA,EAAG6U,UACvC,GAAGqmF,GAAoBD,EAAkB,MAAA,GACzC,GAAKC,GAAoBD,GAGxB,GAAGlhF,EAAE/Z,CAAG6U,EAAAA,SAAAA,GAAczO,KAAKpG,CAAAA,EAAG6U,SAC7B,EAAA,MAAA,WAHEkF,EAAE/Z,CAAMoG,GAAAA,KAAKpG,CAAI,EAAA,MAAA,EAKrB,CACD,MAAA,EACA,EAEDujE,QAAS,UAAY,CAAA,EACrBnmC,MAAO,UAAA,CACN,IAAIrf,EAAO3X,KAAKm9D,QACbxlD,EAAAA,IACFA,EAAK5H,aAAa,WAAY,IAE3B4H,EAAAA,EAAKqf,OAAOrf,EAAKqf,MAAAA,EAGrB,EACD88D,KAAM,WACL,IAAIn8E,EAAO3X,KAAKm9D,QAAAA,EACbxlD,GACFA,EAAK5H,aAAa,WAAY,IAAA,CAG/B,GAKH,EN6CWhZ,COvGI,EAAA,SAASA,GAExBA,EAAU2iE,oBAAoB86B,WAAa,SAAS5wF,GACnD5D,KAAK4D,MAAQA,GAAS,CACvB,EAEA7M,EAAU2iE,oBAAoB86B,WAAWhmF,UAAYzX,EAAU82F,SAC9D92F,EAAU2iE,oBAAoBg7B,WAC9B,CACCv3B,QAAS,SAASv5D,EACjBA,CAAAA,EAAQA,GAAS5D,KAAK4D,OAAS,EAC/B,IAAImY,EAAQ/b,KAAKy0F,SACjB,EAAA,GAAG14E,EAAMnY,CAAQ,EAAA,OAAOmY,EAAMnY,CAAAA,CAC9B,EAED6wF,SAAU,SAASr5E,EAClBA,CAAAA,EAAWA,GAAY,CACrB,wCACA,wCACA,yCACA,iCACC/W,KAAK,IAAA,EAER,IAAI0X,EAAQxZ,MAAMiM,UAAU/L,MAAM0I,KAAKpU,EAAUyC,WAAWC,iBAAiB2hB,CAAAA,CAAAA,EAI7E,OAHAW,EAAMG,KAAK,SAASxI,EAAGC,EACtB,CAAA,OAAOD,EAAEyG,WAAaxG,EAAEwG,UAC5B,CAAA,EACU4B,CACP,EAED80E,UAAU,KAEV30B,QAAS,WACR,MAASl8D,CAAAA,CAAAA,KAAKm9D,QAAQn9D,KAAK4D,MAC3B,EACDuxD,SAAS,UACR,CAAA,IAAI4/B,EAAc/0F,KAAKm9D,QAAQ,CAI/B,EAAA,OAHI43B,IACHA,EAAc,IAAIh+F,EAAU2iE,oBAAoBgD,UAE1Cq4B,CACP,EAEDx6D,KAAM,CACLriC,KAAQ,UACP,CAAA,IAAIgvC,EAAWlnC,KAAK4D,MAAQ,EACzBsjC,EAAW,IACbA,EAAWlnC,KAAKy0F,SAAAA,EAAW56F,OAAS,GAGrCmG,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoB86B,WAAWttD,CAEzD,CAAA,CAAA,EACD9uB,MAAS,UAAA,CACR,IAAI8uB,EAAWlnC,KAAK4D,MAAQ,EACzBsjC,GAAYlnC,KAAKy0F,SAAAA,EAAW56F,SAC9BqtC,EAAW,GAGZlnC,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoB86B,WAAWttD,CAAAA,CAAAA,CACzD,EACDwoD,KAAQ,WACP1vF,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoBgD,QAC9C,CAAA,EAED4yB,MAAS,UAAA,CACR,IAAI33E,EAAO3X,KAAKm9D,QACbxlD,EAAAA,GACFA,EAAKlH,MAEN,CAAA,CAAA,CAAA,CAAA,EAKJ1Z,EAAU2iE,oBAAoB86B,WAAWhmF,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoB86B,WAAWhmF,UAAU+rB,IAAAA,CAE9G,EP2BcxjC,GQxGC,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoB+C,MAAQ,SAAS9iE,EAAAA,CAE9C,GADAqG,KAAKmW,QAAU,KACZpf,EAAUqE,SAASzB,GAAI,CACzB,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAC5BqG,EAAAA,KAAK6D,MAAQ,IAAI3K,KAAKuD,EAAGnE,UAAAA,EACzB0H,KAAK8D,IAAM,IAAI5K,KAAKuD,EAAGlE,QAEvByH,EAAAA,KAAKrE,QAAUqE,KAAKg1F,YAAYv4F,CAChCuD,EAAAA,KAAKmW,QAAUxc,CACf,CACF,EAEA5C,EAAU2iE,oBAAoB+C,MAAMjuD,UAAYzX,EAAU82F,SACzD92F,EAAU2iE,oBAAoBg7B,WAC9B,CACCO,UAAW,WACV,OAAO1yF,MAAMiM,UAAU/L,MAAM0I,KAAKpU,EAAUyC,WAAWC,iBAAiB,IAAI1C,EAAUM,OAAOqC,gBAAgB,GAC7G,CAAA,CAAA,EAED83F,OAAQz6F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUgjF,OAE9DqC,QAAS98F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUqlF,QAE/DhD,UAAW,KACX30B,QAAS,WACR,MAAUnlE,EAAAA,CAAAA,EAAUqE,SAAS4E,KAAKmW,OAAYnW,GAAAA,CAAAA,KAAKm9D,QACnD,EAAA,EACDhI,SAAU,UACT,CAAA,IAAIj+D,EAAY8I,KAAKi1F,YAAY,CAC7BC,EAAAA,EAAiB,KACrB,GAAIh+F,GAAeH,EAAUy2B,cAAct2B,CAEtC,EAAA,CACJ,IAAIyC,EAAK5C,EAAUy2B,cAAct2B,CAAAA,EACjCg+F,EAAiB,IAAIn+F,EAAU2iE,oBAAoB+C,MAAM9iE,EACzD,MAJAu7F,EAAiB,IAAIn+F,EAAU2iE,oBAAoBgD,SAMpD,OAAOw4B,CACP,EAEDC,mBAAoB,SAAU7+E,EAAAA,CAC7B,IAAI8+E,EAAW9+E,EAAGiE,sBACd86E,EAAAA,EAAWt+F,EAAUyC,WAAWyY,cAAc,eAAiBsI,EAAAA,sBAAAA,EAEnE,MAAG66E,EAAAA,EAAS14E,OAAS24E,EAASp9F,KAAOm9F,EAASn9F,IAAMo9F,EAAS34E,OAI7D,EAEDygD,QAAS,UAAA,CAER,IAAIm4B,EAAa,IAAIv+F,EAAUM,OAAOqC,gBAAgB,KAAKsG,KAAKmW,QAAQ,KAEpEo/E,EAAex+F,EAAU2iE,oBAAoBc,WAAWg7B,gBAAgBx1F,KAAKmW,OAAAA,EACjF,GAAGo/E,EACF,OAAOA,EAEP,GAAGx+F,EAAU0+F,qBAAuB1+F,EAAU0+F,oBAAoB1+F,EAAUqE,SAAS4E,KAAKmW,UAAU,CAEnG,QADI4F,EAAQhlB,EAAUyC,WAAWC,iBAAiB67F,CAC1C17F,EAAAA,EAAI,EAAGA,EAAImiB,EAAMliB,OAAQD,IAChC,GAAGoG,KAAKm1F,mBAAmBp5E,EAAMniB,CAAAA,CAAAA,EAChC,OAAOmiB,EAAMniB,CAAAA,EAGf,OAAOmiB,EAAM,EAClB,CACK,OAAOhlB,EAAUyC,WAAWyY,cAAcqjF,CAM5C,CAAA,EAEDt+D,MAAO,UAAA,CACN,IAAI7/B,EAAQJ,EAAUqE,SAAS4E,KAAKmW,SAEhCnF,EAAWja,EAAUwE,SACtBpE,GAAAA,EAAMmB,WAAWa,QAAY6X,EAAAA,EAAShM,SAAS7L,QAAAA,GAAahC,EAAMoB,SAASY,QAAAA,GAAa6X,EAASjM,SAAS5L,YAC5GpC,EAAU0V,eAAetV,EAAMmB,UAAAA,EAGhC,IAAIqf,EAAO3X,KAAKm9D,QACZn9D,EAAAA,KAAKm1F,mBAAmBx9E,CAAAA,EAC3B5gB,EAAU2iE,oBAAoBc,WAAWqB,oBAAmB,UAAA,CAC3D9kE,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUwoB,MAAMp0B,MAAM5C,IAAAA,CAC/D,GAAE4V,KAAK5V,IAAAA,CAAAA,EAERjJ,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUwoB,MAAMp0B,MAAM5C,IAAAA,CAGhE,EACD8zF,KAAM,UAAA,CACL/8F,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUslF,KAAKlxF,MAAM5C,IAAAA,CAC9D,EAGDg1F,YAAa,SAASv4F,EACrB,CAAA,IAAId,EAAU,KACVT,EAAOnE,EAAUwE,SAAAA,EAAWL,KAQhC,OAPGnE,EAAUkG,QAAUlG,EAAUkG,OAAO/B,CAEvCS,EAAAA,EAAUc,EADK1F,EAAUkG,OAAOlG,EAAUwE,SAAAA,EAAWL,IAC/BjB,EAAAA,UAAAA,EACdlD,EAAUiG,QAAUjG,EAAUiG,OAAO9B,CAAAA,IAE7CS,EAAUc,EADC1F,EAAUiG,OAAO9B,CAAAA,EACVhB,SAEZyB,CACP,EACD+5F,YAAa,SAAS16C,GACrB,IAAIv+C,EAAK1F,EAAUqE,SAAS4E,KAAKmW,OAAAA,EACjC,GAAG1Z,EAAG,CACL,IAAId,EAASqE,KAAKg1F,YAAYv4F,GAC1Bk5F,EAAO,IAAI5+F,EAAU2iE,oBAAoBgD,SAASjgE,EAAGnE,WAAY,KAAMqD,CAAAA,EAC3EqE,KAAK20F,OAAOgB,EAAKh5B,SAASg5B,EAAM36C,GACpC,MACIh7C,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoBgD,QAAAA,CAE/C,EAEDniC,KAAM,CACLriC,KAAQ,UAAA,CACP8H,KAAK01F,YAAY,OACjB,EAEDt9E,MAAS,UACRpY,CAAAA,KAAK01F,YAAY,OACjB,CAAA,EACDhG,KAAQ,UAAA,CACJ1vF,KAAK6zF,QAAa7zF,GAAAA,KAAKwxF,OAAOt7E,KAChCnf,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAU0lF,iBAAAA,EAEtDl0F,KAAK01F,YAAY,MAAA,CAElB,EAEDlG,MAAS,WACR,IAAI73E,EAAO3X,KAAKm9D,QAAAA,EACbxlD,GAAQA,EAAKlH,MACfkH,EAAKlH,MAAAA,EAELzQ,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoBgD,QAG/C,CAAA,EAED+yB,GAAM,UAAA,CACFzvF,KAAK6zF,QAAa7zF,GAAAA,KAAKwxF,OAAOt7E,KAChCnf,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAU+lF,iBAAAA,EAEtDv0F,KAAK01F,YAAY,IAAA,CAElB,EAEDz5D,OAAU,WACNllC,EAAUqE,SAAS4E,KAAKmW,OAAAA,EAC1Bpf,EAAUm2B,OAAO0J,QAAgB,OAAE52B,KAAKmW,SAExCnW,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoBgD,QAE/C,CAAA,EAGD4yB,MAAS,UAAA,CACLv4F,EAAUqE,SAAS4E,KAAKmW,OAC1Bpf,EAAAA,EAAU+3C,aAAa9uC,KAAKmW,OAAAA,EAE5BnW,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoBgD,QAE/C,CAAA,CAAA,CAAA,CAAA,EAIJ3lE,EAAU2iE,oBAAoB+C,MAAMjuD,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoB+C,MAAMjuD,UAAU+rB,IAAAA,CAEpG,ERzEQxjC,CAAAA,ESzGO,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoBgD,SAAW,SAASl5C,EAAME,EAAI/nB,EAASi6F,EAAAA,CACpE,IAAIx8D,EAAQriC,EAAUwE,SAAAA,EAClB8wB,EAAWt1B,EAAUkG,QAAUlG,EAAUkG,OAAOm8B,EAAMl+B,IAAAA,EAEtDsoB,IACHA,EAAOxjB,KAAK61F,eAGTnyE,GAAAA,IAGFA,EADE2I,EACGt1B,EAAU2B,KAAKC,IAAI6qB,EAAM6I,EAASmkB,OAAQnkB,EAASokB,MAAAA,EAEnD15C,EAAU2B,KAAKC,IAAI6qB,EAAMzsB,EAAUM,OAAO21F,aAAc,QAAA,GAK/DhtF,KAAKrE,QAAUA,GAAWqE,KAAK81F,mBAAAA,EAC/B91F,KAAK1H,WAAa,IAAIY,KAAKsqB,CAAAA,EAC3BxjB,KAAKzH,SAAW,IAAIW,KAAKwqB,CAAAA,EACzB1jB,KAAK41F,WAAaA,GAAc,IACjC,EAEA7+F,EAAU2iE,oBAAoBgD,SAASluD,UAAYzX,EAAU82F,SAC5D92F,EAAU2iE,oBAAoBg7B,WAC9B,CACC7D,UAAU,KAEVgF,eAAgB,UACf,CAAA,IAAIryE,EACA4V,EAAQriC,EAAUwE,SAClBw6F,EAAAA,EAAc,IAAI78F,KAAKkgC,EAAM1gC,IACjCq9F,EAAAA,EAAYj2E,WAAW,CAAA,EACvBi2E,EAAYh2E,gBAAgB,CAE5B,EAAA,IAAIi2E,EAAU,IAAI98F,KAClB88F,EAAQl2E,WAAW,GACnBk2E,EAAQj2E,gBAAgB,CAExB,EAAA,IAAIsM,EAAWt1B,EAAUkG,QAAUlG,EAAUkG,OAAOm8B,EAAMl+B,IACtD+6F,EAAAA,EAAAA,GAKJ,GAJGF,EAAY58F,QAAc68F,IAAAA,EAAQ78F,QACpC88F,IAAAA,EAAAA,IAGE5pE,EACC4pE,GACC5pE,EAASokB,SAAW,OACtBulD,EAAQt2F,SAAS,CACjBs2F,EAAAA,EAAQr2F,WAAW,CACS,GAApB0sB,EAASokB,SAAW,QAC5BulD,EAAQr2F,WAAW,CAAA,EAEpB6jB,EAAOwyE,GAEPxyE,EAAOzsB,EAAU2B,KAAK2zB,EAASvW,KAAO,UAAU,IAAI5c,KAAKkgC,EAAM1gC,IAAAA,CAAAA,EAGhE8qB,EAAOxjB,KAAKk2F,kBAAkB1yE,CAW9B,UATAA,EAAO,IAAItqB,KAAKnC,EAAUwE,SAAAA,EAAWwJ,UAClCkxF,IACFzyE,EAAOwyE,GAERxyE,EAAOxjB,KAAKk2F,kBAAkB1yE,CAAAA,EAC1ByyE,GACHzyE,EAAK9jB,SAAS3I,EAAUM,OAAOyJ,UAAAA,EAAAA,CAG5B/J,EAAUoK,YAAY,CACzB,IAAIwmC,EAAgB5wC,EAAUyC,WAAWyY,cAAc,eACpD01B,EAAAA,EAAc7sB,WAChB0I,EAAK9jB,SAAS3I,EAAUM,OAAOyJ,WAAakF,KAAK6pC,KAAKlI,EAAc7sB,UAAY/jB,EAAUM,OAAO+O,YAAAA,CAAAA,CAElG,CAGF,OAAOod,CACP,EAEDgjD,MAAO,SAAS2vB,EAAAA,CACf,OAAO,IAAIp/F,EAAU2iE,oBAAoBgD,SAASy5B,EAAS79F,WAAY69F,EAAS59F,SAAU49F,EAASx6F,QAASw6F,EAASP,UAAAA,CACrH,EACDQ,qBAAsB,WACrB,IACIh5F,EADAg8B,EAAQriC,EAAUwE,WAOtB,OALGxE,EAAUiG,QAAUjG,EAAUiG,OAAOo8B,EAAMl+B,IAAAA,EAC7CkC,EAAOrG,EAAUiG,OAAOo8B,EAAMl+B,IAAAA,EACtBnE,EAAUkG,QAAUlG,EAAUkG,OAAOm8B,EAAMl+B,IACnDkC,IAAAA,EAAOrG,EAAUkG,OAAOm8B,EAAMl+B,IAExBkC,GAAAA,CACP,EAED04F,mBAAoB,UACnB,CAAA,IAAIn6F,EAAU,KAKd,OAJWqE,KAAKo2F,qBAAAA,GAAAA,CACJz6F,IACXA,EAAUqE,KAAKq2F,gBAET16F,GAAAA,CACP,EAED06F,gBAAiB,SAASt+F,EAAWijD,EAAAA,CACpC,IAAI59C,EAAO4C,KAAKo2F,qBACZhF,EAAAA,EAAeh0F,EAAKyI,MAAM9N,CAAAA,EAC1Bu+F,EAAYlF,GAEfkF,EADElF,WACWA,EAAep2C,EAEf59C,EAAKoE,MAAQpE,EAAKqE,SAAYrE,EAAKqE,SAAW,GAG7C,IACd60F,EAAY,GAEb,IAAIh6F,EAAUc,EAAKd,SAAWc,EAAKqoF,OAOnC,OALG6Q,GAAah6F,EAAQzC,SACvBy8F,EAAYh6F,EAAQzC,OAAS,GAI3ByC,EAAQg6F,GACHh6F,EAAQg6F,CAAAA,EAAWrsF,IAEnB,IAER,EAGDiyD,QAAS,UAAA,CACR,IAAI9iC,EAAQriC,EAAUwE,SAGtB,EAGA,GALkByE,KAAK1H,WAAWa,UAAYigC,EAAMr0B,SAAS5L,QAAa6G,GAAAA,KAAK1H,WAAWa,QAAAA,GAAaigC,EAAMp0B,SAAS7L,WAKlH6G,CAAAA,KAAKqY,UAAUrY,KAAK1H,WAAY0H,KAAKzH,QAAAA,EAAW,SAEpD,IAAI6E,EAAO4C,KAAKo2F,uBAEhB,MAAGh5F,CAAAA,GACMA,EAAKyI,MAAM7F,KAAKrE,OAAAA,IADtByB,MAMH,EAED+3D,SAAS,WAER,IAAIohC,EAAc,IAAIx/F,EAAU2iE,oBAAoBgD,SACpD,OAAI65B,EAAYr6B,QAAAA,EAGRq6B,EAFA,IAAIx/F,EAAU2iE,oBAAoBmzB,QAI1C,EAED4H,SAAU,UAAA,CACT,OAAOlyF,MAAMiM,UAAU/L,MAAM0I,KAAKpU,EAAUyC,WAAWC,iBAAiB,iBACxE,CAAA,CAAA,EACD0jE,QAAS,UAAA,CACR,OAAOn9D,KAAKy0F,SAAAA,EAAW,CACvB,CAAA,EAEDz9D,MAAO,UACHh3B,CAAAA,KAAKrE,SAAW5E,EAAUY,WAAaZ,EAAUY,QAAAA,EAAUs0F,iBAAmBl1F,EAAUY,UAAUs3D,UAAal4D,CAAAA,EAAUyC,WAAWyY,cAAc,qBAAqBjS,KAAKrE,OAC9K5E,IAAAA,GAAAA,EAAUY,UAAUs3D,SAAS,CAACtzD,QAASqE,KAAKrE,UAE7C5E,EAAU2iE,oBAAoB58B,OAAOtwB,OAAOxM,KAAK1H,WAAY0H,KAAKzH,SAAUyH,KAAKrE,SACjF5E,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUwoB,MAAMp0B,MAAM5C,IAAAA,EAC/DjJ,EAAU2iE,oBAAoBO,WAAaj6D,KAAK1H,WAChDvB,EAAU2iE,oBAAoBQ,cAAgBl6D,KAAKrE,OAEnD,EACDm4F,KAAM,WACL/8F,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUslF,KAAKlxF,MAAM5C,IAAAA,EAC9DjJ,EAAU2iE,oBAAoB58B,OAAOxnB,MACrC,CAAA,EAEDk8E,OAAQz6F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUgjF,OAE9DC,SAAU16F,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAUqlF,QAEhE2C,aAAc,SAAS99F,EAAMsiD,EAAKvrC,EAAAA,CACjC,IAAI3R,EACJ,OAAQk9C,EACP,CAAA,IAAK,KACJl9C,EAAM/G,EAAU2B,KAAKC,IAAID,KAAU,MAAA,EACnC,MACD,IAAK,OACJoF,EAAM/G,EAAU2B,KAAKC,IAAID,EAAM,EAAG,MAAA,EAClC,MACD,IAAK,OACJoF,EAAM/G,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAID,EAAO,GAAG,QAC5DoF,EAAMkC,KAAKk2F,kBAAkBp4F,EAAAA,IAC7B,MACD,IAAK,QACJA,EAAM/G,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAID,EAAM,EAAG,KAC3DoF,CAAAA,EAAAA,EAAMkC,KAAKk2F,kBAAkBp4F,EAAK,CAClC,EAAA,MACD,QACCA,EAAM/G,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKR,CAAAA,CAAAA,CAAAA,CAI1C,IAAI0gC,EAAQriC,EAAUwE,SAKtB,EAAA,OAJG7C,EAAKS,QAAAA,EAAYigC,EAAMr0B,SAAS5L,QAAAA,GAAAA,CAAesW,GAAU/W,EAAKS,WAAaigC,EAAMp0B,SAAS7L,QAC5F2E,KAAAA,EAAM,IAAI5E,KAAKkgC,EAAMr0B,QAGfjH,GAAAA,CACP,EAED24F,cAAe,SAASd,EAAM36C,EAAKvrC,EAElC,CAAA,IAAI5L,EAAOC,EAMX,OALAD,EAAQ7D,KAAKw2F,aAAab,EAAKr9F,WAAY0iD,EAAKvrC,CAAAA,GAE1C/P,SAAS3I,EAAUM,OAAOyJ,UAChCgD,GAAAA,EAAM,IAAI5K,KAAK2K,IACXnE,SAAS3I,EAAUM,OAAO0J,SAAAA,EACvB,CAACzI,WAAYuL,EAAOtL,SAAUuL,CAAAA,CACrC,EAED4yF,eAAgB,SAASh+F,EAAMk6C,EAASjpC,EAAM0kB,EAE7C,CAAA,QADI2Z,EAAc,IAAI9uC,KAAK05C,CAAAA,EACrB5K,EAAY7uC,QAAAA,EAAYT,EAAKS,QAClC6uC,GAAAA,EAAcjxC,EAAU2B,KAAKC,IAAIqvC,EAAa3Z,EAAM1kB,CAOrD,EAAA,OAJGq+B,EAAY7uC,QAAYT,EAAAA,EAAKS,QAC/B6uC,IAAAA,EAAcjxC,EAAU2B,KAAKC,IAAIqvC,EAAc3Z,CAAAA,EAAM1kB,IAG/Cq+B,CACP,EAED2uD,iBAAkB,SAAShB,EAAM36C,EAAKvrC,EAAAA,CACrC,IAAI2pB,EAAQriC,EAAUwE,SAAAA,EAClB6B,EAAOrG,EAAUkG,OAAOm8B,EAAMl+B,IAAAA,EAE9BsyC,EAAaxtC,KAAK02F,eAAef,EAAKr9F,WAAYvB,EAAU2B,KAAK0E,EAAK0Y,KAAO,QAAA,EAAU,IAAI5c,KAAKy8F,EAAKr9F,UAAc8E,CAAAA,EAAAA,EAAKqzC,OAAQrzC,EAAKozC,QACrI/C,EAAUztC,KAAK02F,eAAef,EAAKp9F,SAAUxB,EAAU2B,KAAK0E,EAAK0Y,KAAO,UAAU,IAAI5c,KAAKy8F,EAAKp9F,QAAAA,CAAAA,EAAY6E,EAAKqzC,OAAQrzC,EAAKozC,MAE/H/C,EAAAA,EAAQt0C,WAAaq0C,EAAUr0C,QAAAA,IACjCs0C,EAAU12C,EAAU2B,KAAKC,IAAI60C,EAAWpwC,EAAKozC,OAAQpzC,EAAKqzC,MAE3D,GAAA,IAAImmD,EAAS52F,KAAKwmE,MAAMmvB,CAMxB,EAAA,OALAiB,EAAOt+F,WAAak1C,EACpBopD,EAAOr+F,SAAWk1C,EAClBmpD,EAAOj7F,QAAUg6F,EAAKh6F,SAAWqE,KAAKq2F,gBAAAA,EAG9Br7C,GACP,IAAK,KACJ47C,EAAOj7F,QAAUqE,KAAKq2F,gBAAgBV,EAAKh6F,QAAAA,IAC3C,MACD,IAAK,OACJi7F,EAAOj7F,QAAUqE,KAAKq2F,gBAAgBV,EAAKh6F,QAAS,GACpD,MACD,IAAK,OACJi7F,EAAOt+F,WAAa0H,KAAKk2F,kBAAkBn/F,EAAU2B,KAAKC,IAAIi+F,EAAOt+F,WAAAA,CAAa8E,EAAKozC,OAAQpzC,EAAKqzC,MAAU,EAAA,EAAA,EAC9GmmD,EAAOr+F,SAAWxB,EAAU2B,KAAKC,IAAIi+F,EAAOt+F,WAAY8E,EAAKozC,OAAQpzC,EAAKqzC,MAC1E,EAAA,MACD,IAAK,QACJmmD,EAAOt+F,WAAa0H,KAAKk2F,kBAAkBn/F,EAAU2B,KAAKC,IAAIi+F,EAAOt+F,WAAY8E,EAAKozC,OAAQpzC,EAAKqzC,MAAAA,EAAS,GAC5GmmD,EAAOr+F,SAAWxB,EAAU2B,KAAKC,IAAIi+F,EAAOt+F,WAAY8E,EAAKozC,OAAQpzC,EAAKqzC,MAiB5E,CAAA,CAAA,OATGmmD,EAAOt+F,WAAWa,UAAYigC,EAAMr0B,SAAS5L,QAAay9F,GAAAA,EAAOt+F,WAAWa,QAAAA,GAAaigC,EAAMp0B,SAAS7L,aACvGsW,GAAUmnF,EAAOt+F,WAAWa,QAAAA,GAAaigC,EAAMp0B,SAAS7L,QAAAA,EAC1Dy9F,EAAOt+F,WAAa,IAAIY,KAAKkgC,EAAMp0B,QAEnC4xF,GAAAA,EAAOt+F,WAAavB,EAAU2B,KAAK0gC,EAAMl+B,KAAO,UAAUnE,EAAU2B,KAAKC,IAAIygC,EAAM1gC,KAAMsiD,GAAO,OAAPA,GAAqB,EAAG5hB,EAAMl+B,IACvH07F,CAAAA,EAAAA,EAAOr+F,SAAWxB,EAAU2B,KAAKC,IAAIi+F,EAAOt+F,WAAY8E,EAAKozC,OAAQpzC,EAAKqzC,MAAAA,IAIrEmmD,CACP,EAEDC,cAAe,SAASlB,EAAM36C,EAAKvrC,EAAAA,CAClC,IAAImnF,EAAS52F,KAAKwmE,MAAMmvB,CAAAA,EACxBiB,EAAOj7F,QAAUg6F,EAAKh6F,SAAWqE,KAAKq2F,kBAEtC,IAAI16F,EAAUg6F,EAAKh6F,SAAWqE,KAAKq2F,gBAC/Bj9D,EAAAA,EAAQriC,EAAUwE,SAAAA,EAClB6B,EAAOrG,EAAUiG,OAAOo8B,EAAMl+B,IAAAA,EAClC,OAAQ8/C,EAAAA,CACP,IAAK,OACJr/C,EAAUqE,KAAKq2F,gBAAgBV,EAAKh6F,QAAAA,IACpC,IAAIm7F,EAAe15F,EAAKoE,KAAQpE,EAAKoE,KAAO,EAAKpE,EAAKd,QAAQzC,OAE3DuD,EAAKhB,KAAO,GAAMgB,EAAKyI,MAAMlK,CAAYm7F,GAAAA,EAAe,GACvD//F,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAa,GAAG,OAAOa,QAAaigC,GAAAA,EAAMr0B,SAAS5L,QAAAA,IAC7Ey9F,EAAS52F,KAAK+2F,YAAYpB,EAAM36C,EAAKvrC,IAGvC,MACD,IAAK,QACJ9T,EAAUqE,KAAKq2F,gBAAgBV,EAAKh6F,QAAS,CAAA,EAC1CyB,EAAKhB,KAAO,GAAA,CAAMgB,EAAKyI,MAAMlK,IAC5B5E,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAY,EAAG,KAAA,EAAOa,QAAYigC,EAAAA,EAAMp0B,SAAS7L,QAC3Ey9F,IAAAA,EAAS52F,KAAK+2F,YAAYpB,EAAM36C,EAAKvrC,CAAAA,GAIvC,MACD,QACCmnF,EAAS52F,KAAK+2F,YAAYpB,EAAM36C,EAAKvrC,CACrC9T,EAAAA,EAAUg6F,EAAKh6F,OAAAA,CAIjB,OADAi7F,EAAOj7F,QAAUA,EACVi7F,CACP,EAEDI,UAAW,SAAS3gC,EAASrb,EAAAA,CAC5B,IAAIlU,EAAU9mC,KAAKk2F,kBAAkBn/F,EAAU2B,KAAKC,IAAI09D,EAASrb,EAAK,KAAA,EAAQA,GAG9E,OAFAlU,EAAQpnC,SAAS22D,EAAQx1D,YACzBimC,EAAQnnC,WAAW02D,EAAQl0D,WAAAA,CAAAA,EACpB2kC,CACP,EAEDmwD,iBAAkB,SAASv+F,EAAMw+F,GAChC,IAAIxmB,EAAUh4E,EAAKyJ,WAAAA,EAClB4e,EAAQroB,EAAKmI,SAAAA,EACbE,EAAYhK,EAAUM,OAAO0J,UAC9B,OAAQggB,EAAQhgB,GAAAA,CAAem2F,IAAiBn2F,GAAa,IAAMggB,GAAShgB,IAAAA,CAAe2vE,CAC3F,EACDymB,iBAAkB,SAASz+F,EAAMw+F,GAChC,IAAIxmB,EAAUh4E,EAAKyJ,WAAAA,EAClB4e,EAAQroB,EAAKmI,SAAAA,EACbC,EAAa/J,EAAUM,OAAOyJ,WAC9BC,EAAYhK,EAAUM,OAAO0J,UAC9B,OAAQggB,GAASjgB,GAAAA,CAAgBo2F,IAAiBxmB,IAAc3vD,CAAAA,GAAUhgB,GAAa,IAAQggB,GAAShgB,EACxG,EACDq2F,mBAAoB,SAAS1+F,EAAMw+F,EAClC,CAAA,OAAQl3F,KAAKi3F,iBAAiBv+F,EAAMw+F,CAAgBl3F,GAAAA,KAAKm3F,iBAAiBz+F,EAAMw+F,EAChF,EAEDH,YAAa,SAASpB,EAAM36C,EAAKvrC,EAChC,CAAA,IAAI5L,EAAOC,EAEPkpF,EAAej2F,EAAUM,OAAO21F,aAEhCt0F,EAAOsH,KAAK02F,eAAef,EAAKr9F,WAAYvB,EAAU2B,KAAKgoB,UAAU,IAAIxnB,KAAKy8F,EAAKr9F,aAAc,SAAU00F,CAAAA,EAG3GqK,EAAW1B,EAAKr9F,WAEpB,OAAQ0iD,EAAAA,CACP,IAAK,KAGJ,GAFAn3C,EAAQ9M,EAAU2B,KAAKC,IAAID,GAAOs0F,EAAc,QAAA,EAAA,CAE5ChtF,KAAKo3F,mBAAmBvzF,IACtB4L,IAAAA,CAAAA,GAAUzP,KAAKo3F,mBAAmBC,EAAU,EAAA,GAAO,CAEvD,IAAIC,KACD7nF,GAAU1Y,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAK2K,CAAQ1K,CAAAA,EAAAA,QAAAA,GAAapC,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKm+F,IAAWl+F,QAChHm+F,IAAAA,EAAAA,IACEA,IACFzzF,EAAQ7D,KAAKk2F,kBAAkBn/F,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAAA,GAAgB,KAAA,EAAA,KAExEuL,EAAMnE,SAAS3I,EAAUM,OAAO0J,WAChC8C,EAAMlE,WAAW,CACjBkE,EAAAA,EAAQ9M,EAAU2B,KAAKC,IAAIkL,EAAQmpF,CAAAA,EAAc,SACjD,CAEFlpF,EAAM/M,EAAU2B,KAAKC,IAAIkL,EAAOmpF,EAAc,QAC9C,EAAA,MACD,IAAK,OACJnpF,EAAQ9M,EAAU2B,KAAKC,IAAID,EAAMs0F,EAAc,QAE/C,EAAA,IAAIuK,EAAU9nF,EAAS5L,EAAQ9M,EAAU2B,KAAKC,IAAIkL,EAAOmpF,EAAc,QACnEhtF,EAAAA,KAAKo3F,mBAAmBG,EAAAA,EACvB9nF,GAAAA,GAAAA,CAAUzP,KAAKo3F,mBAAmBC,EAAAA,EAChC5nF,IAAAA,GAKA6nF,KACAvgG,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKm+F,CAAAA,CAAAA,EAAWl+F,QAAak+F,GAAAA,EAASl+F,YACtEm+F,EAAY,IAETA,IACHzzF,EAAQ7D,KAAKk2F,kBAAkBn/F,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAY,EAAG,KAAQ,EAAA,CAAA,GAE/EuL,EAAMnE,SAAS3I,EAAUM,OAAOyJ,UAAAA,EAChC+C,EAAMlE,WAAW,CAAA,EACjBkE,EAAQ9M,EAAU2B,KAAKC,IAAIkL,EAAOmpF,EAAc,QAAA,KAbhDnpF,EAAQ7D,KAAKk2F,kBAAkBn/F,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAY,EAAG,KAAA,EAAQ,IACxEoH,SAAS3I,EAAUM,OAAOyJ,UAAAA,EAChC+C,EAAMlE,WAAW,CAAA,IAgBpBmE,EAAM/M,EAAU2B,KAAKC,IAAIkL,EAAOmpF,EAAc,QAAA,EAC9C,MACD,IAAK,OACJnpF,EAAQ7D,KAAKg3F,UAAUrB,EAAKr9F,WAAa,EAAA,EACzCwL,EAAM9D,KAAKg3F,UAAUrB,EAAKp9F,SAAAA,IAC1B,MACD,IAAK,QACJsL,EAAQ7D,KAAKg3F,UAAUrB,EAAKr9F,WAAY,CAAA,EACxCwL,EAAM9D,KAAKg3F,UAAUrB,EAAKp9F,SAAU,GACpC,MACD,QACCsL,EAAQnL,EACRoL,EAAM/M,EAAU2B,KAAKC,IAAIkL,EAAOmpF,EAAc,QAIhD,CAAA,CAAA,MAAO,CAAC10F,WAAYuL,EAAOtL,SAAUuL,CAAAA,CACrC,EACD0zF,mBAAoB,SAAS7B,EAAM36C,EAAAA,CAClC,IAAIn3C,EAAOC,EACPs1B,EAAQriC,EAAUwE,SAEtB,EAAA,OAAQy/C,GACP,IAAK,OACL,IAAK,OACJn3C,EAAQ9M,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAa,GAAG,QACzEuL,EAAQ7D,KAAKk2F,kBAAkBryF,EAAAA,IAC/B,MACD,IAAK,KACL,IAAK,QACJA,EAAQ9M,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAIg9F,EAAKr9F,WAAY,EAAG,KAAA,CAAA,EACxEuL,EAAQ7D,KAAKk2F,kBAAkBryF,EAAO,CAAA,EACtC,MACD,QACCA,EAAQ9M,EAAU2B,KAAKgoB,UAAUi1E,EAAKr9F,YASxC,OANGq9F,EAAKr9F,WAAWa,QAAAA,EAAYigC,EAAMr0B,SAAS5L,QAAAA,GAAaw8F,EAAKr9F,WAAWa,WAAaigC,EAAMp0B,SAAS7L,QACtG0K,KAAAA,EAAQ,IAAI3K,KAAKkgC,EAAMr0B,QAGxBjB,IAAAA,EAAM,IAAI5K,KAAK2K,CAAAA,GACXnE,SAAS3I,EAAUM,OAAO0J,SACvB,EAAA,CAACzI,WAAYuL,EAAOtL,SAAUuL,CACrC,CAAA,EACD2zF,eAAgB,SAAS9B,EAAM36C,EAC9B,CAAA,MAAO,CAAC1iD,WAAYq9F,EAAKr9F,WAAYC,SAAUo9F,EAAKp9F,QAAAA,CACpD,EAGDm/F,cAAe,SAASh/F,EACvB,CAAA,GAAA,CAAI3B,EAAUq5C,kBACb,MAAA,GAED,IAEIxsC,EAFAyoB,EAAWt1B,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUwE,SAAWL,EAAAA,IAAAA,EASzE,OALC0I,EADEyoB,EACMt1B,EAAUsjD,gBAAgBhuB,EAAU3zB,CAEpC3B,EAAAA,EAAUiK,kBAAkBtI,CAAAA,EAAAA,CAG7B3B,EAAUyO,SAAS5B,CAAAA,CAC3B,EAEDsyF,kBAAmB,SAASryF,EAAOm3C,EAAAA,CAClC,IAAItiD,EAAOmL,EACXm3C,EAAMA,GAAO,EAGb,QAFIoW,EAAQr6D,EAAUwE,SAEfyE,EAAAA,CAAAA,KAAK03F,cAAch/F,CAAWsiD,IAAAA,EAAM,GAAKtiD,EAAKS,WAAai4D,EAAMpsD,SAAS7L,QAAe6hD,GAAAA,EAAM,GAAKtiD,EAAKS,QAAAA,GAAai4D,EAAMrsD,SAAS5L,YAC3IT,EAAOsH,KAAK23F,eAAej/F,EAAMsiD,GAGlC,OAAOtiD,CACP,EAEDi/F,eAAgB,SAAS9zF,EAAOm3C,EAAAA,CAC/BA,EAAMA,GAAO,EACb,IAAI3uB,EAAWt1B,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUwE,SAAWL,EAAAA,IAAAA,EASzE,OANGmxB,EACKt1B,EAAU2B,KAAKC,IAAIkL,EAAOm3C,EAAM3uB,EAASmkB,OAAQnkB,EAASokB,MAE1D15C,EAAAA,EAAU2B,KAAKgoB,UAAU3pB,EAAU2B,KAAKC,IAAIkL,EAAOm3C,EAAK,OAIhE,EAED3iC,UAAU,SAASmL,EAAME,GACxB,GAAI3sB,CAAAA,EAAUq5C,kBACb,MAAA,GAID,QAFIwnD,EAAU,IAAI1+F,KAAKsqB,CAEjBo0E,EAAAA,EAAQz+F,QAAYuqB,EAAAA,EAAGvqB,WAAU,CACtC,GAAG6G,KAAK03F,cAAcE,GAAU,MAAO,GACvCA,EAAU53F,KAAK23F,eAAeC,CAC9B,CAAA,CACD,MAAO,EACP,EAEDj7B,SAAU,SAASg5B,EAAM36C,EAAK59C,EAAMqS,EACnC,CAAA,IAAIqC,EACJ1U,EAAOA,GAAQ4C,KAAKyxF,SAAAA,EAEpB,IAAIoG,EAAW9gG,EAAU2iE,oBAAoBgD,SAASluD,UAAUg4D,MAAMmvB,GAEtE,OAAQv4F,EAAAA,CACP,KAAK4C,KAAKwxF,OAAO9nF,MAChBoI,EAAO9R,KAAK62F,cAAcgB,EAAU78C,EAAKvrC,CACzC,EAAA,MACD,KAAKzP,KAAKwxF,OAAOnlE,SAChBva,EAAO9R,KAAK22F,iBAAiBkB,EAAU78C,EAAKvrC,CAAAA,EAC5C,MACD,KAAKzP,KAAKwxF,OAAOhwD,KAGjB,KAAKxhC,KAAKwxF,OAAO/vD,MAChB3vB,EAAO9R,KAAKy2F,cAAcoB,EAAU78C,EAAKvrC,CAAAA,EACzC,MACD,KAAKzP,KAAKwxF,OAAOM,WAChBhgF,EAAO9R,KAAKw3F,mBAAmBK,EAAU78C,EAAKvrC,GAC9C,MACD,KAAKzP,KAAKwxF,OAAOt7E,KAChBpE,EAAO9R,KAAKy3F,eAAeI,EAAU78C,EAAKvrC,CAC1C,EAAA,MACD,KAAKzP,KAAKwxF,OAAOS,WAChBngF,EAAO9R,KAAK+2F,YAAYc,EAAU78C,EAAKvrC,CAAAA,CAAAA,CAQzC,OAJGqC,EAAKxZ,WAAWa,QAAa2Y,GAAAA,EAAKvZ,SAASY,QAAAA,IAC7C2Y,EAAO9R,KAAK28D,SAAS7qD,EAAMkpC,EAAK59C,CAG1BrG,GAAAA,EAAU2iE,oBAAoBgD,SAASluD,UAAUg4D,MAAM10D,CAAAA,CAE9D,EAEDgmF,WAAY,SAASnC,EAAM36C,EAAAA,CAC1B,IACIlpC,EACJ,OAFW9R,KAAKyxF,SAAAA,EAAAA,CAGf,KAAKzxF,KAAKwxF,OAAO9nF,MAEfoI,EADEkpC,GAAO,QAAUA,GAAO,QACnBh7C,KAAK62F,cAAclB,EAAM36C,GAEzBh7C,KAAK+3F,gBAAgBpC,EAAM36C,CAAAA,EAEnC,MACD,KAAKh7C,KAAKwxF,OAAOnlE,SAEfva,EADEkpC,GAAO,QAAUA,GAAO,KACnBh7C,KAAK22F,iBAAiBhB,EAAM36C,CAE5Bh7C,EAAAA,KAAKg4F,mBAAmBrC,EAAM36C,CAAAA,EAEtC,MACD,KAAKh7C,KAAKwxF,OAAOhwD,KAGjB,KAAKxhC,KAAKwxF,OAAO/vD,MAChB3vB,EAAO9R,KAAKi4F,gBAAgBtC,EAAM36C,CAClC,EAAA,MACD,KAAKh7C,KAAKwxF,OAAOS,WAChBngF,EAAO9R,KAAKk4F,cAAcvC,EAAM36C,CAChC,EAAA,MACD,KAAKh7C,KAAKwxF,OAAOM,WAChBhgF,EAAO9R,KAAKm4F,qBAAqBxC,EAAM36C,CACvC,EAAA,MACD,QACClpC,EAAO6jF,EAIT,IAAIvkC,EAAQr6D,EAAUwE,SAAAA,EAYtB,OAXGuW,EAAKxZ,WAAWa,QAAYi4D,EAAAA,EAAMrsD,SAAS5L,QAC7C2Y,IAAAA,EAAKxZ,WAAa0H,KAAKk2F,kBAAkB9kC,EAAMrsD,QAAAA,EAC/C+M,EAAKxZ,WAAWoH,SAAS3I,EAAUM,OAAOyJ,UAGxCgR,GAAAA,EAAKvZ,SAASY,QAAYi4D,EAAAA,EAAMpsD,SAAS7L,QAAAA,IAE3C2Y,EAAKvZ,SAAWyH,KAAKk2F,kBAAkB9kC,EAAMpsD,WAIvCjO,GAAAA,EAAU2iE,oBAAoBgD,SAASluD,UAAUg4D,MAAM10D,CAAAA,CAC9D,EAEDkmF,mBAAoB,SAASrC,EAAM9uD,EAAAA,CAClC,OAAO7mC,KAAKo4F,kBAAkB,CAC7BlgG,KAAO,aACPkgB,MAAQ,YAERu9E,EACA9uD,EACA,UAED,CAAA,EAEDsxD,qBAAsB,SAASxC,EAAM9uD,EACpC,CAAA,OAAO7mC,KAAKo4F,kBAAkB,CAC5BlgG,KAAO,aACPkgB,MAAQ,UAAA,EAETu9E,EACA9uD,EACA,aAED,EAEDuxD,kBAAmB,SAASC,EAAmB1C,EAAM9uD,EAAWtqC,EAAAA,CAC/D,IAAIuV,EACAwmF,EAAW3C,EAAKC,WAMpB,GAJI0C,IACHA,EAAWD,EAAkBxxD,CAAAA,GAAAA,CAG1ByxD,GAAaD,CAAAA,EAAkBxxD,GAClC,OAAO8uD,EAGR,GAAG9uD,CAAAA,EASF,OAAO9vC,EAAU2iE,oBAAoBgD,SAASluD,UAAUg4D,MAAMmvB,CAR9D7jF,GAAAA,EAAO9R,KAAK28D,SAAS,CAACrkE,WAAYq9F,EAAK2C,CAAW38F,EAAAA,QAASg6F,EAAKh6F,OAAUkrC,EAAAA,EAAWtqC,EAAM,EAAA,GAEnFjE,WAAWa,QAAaw8F,GAAAA,EAAKr9F,WAAWa,QAAAA,IAC/C2Y,EAAO9R,KAAK28D,SAAS,CAACrkE,WAAYwZ,EAAKxZ,WAAYqD,QAAQmW,EAAKnW,OAAAA,EAAUkrC,EAAWtqC,EAAM,EAAA,GAG5FuV,EAAK8jF,WAAa0C,EAKnB,IAAIC,EAAWv4F,KAAKw4F,gBAAgB7C,EAAM7jF,EAAMA,EAAK8jF,UASrD,EAAA,OAPG2C,EAAShgG,SAASY,QAAao/F,GAAAA,EAASjgG,WAAWa,QACrD2Y,IAAAA,EAAK8jF,WAAa9jF,EAAK8jF,YAAc,WAAa,aAAe,YAElE2C,EAAWv4F,KAAKw4F,gBAAgB7C,EAAM7jF,EAAMA,EAAK8jF,YAEjD9jF,EAAKxZ,WAAaigG,EAASjgG,WAC3BwZ,EAAKvZ,SAAWggG,EAAShgG,SAClBuZ,CACP,EAED0mF,gBAAiB,SAASC,EAASC,EAASC,GAC3C,IAAI76F,EAAM,CAACxF,WAAW,KAAMC,SAAS,IAAA,EASrC,OAPGogG,GAAiB,cACnB76F,EAAIxF,WAAaogG,EAAQpgG,WACzBwF,EAAIvF,SAAWkgG,EAAQlgG,WAEvBuF,EAAIxF,WAAamgG,EAAQngG,WACzBwF,EAAIvF,SAAWmgG,EAAQpgG,YAEjBwF,CAEP,EAEDm6F,gBAAiB,SAAStC,EAAM9uD,EAAAA,CAe/B,OAdI8uD,EAAO31F,KAAKo4F,kBAAkB,CAChC3I,GAAK,aACLC,KAAO,WACPx3F,KAAO,aACPkgB,MAAQ,UAETu9E,EAAAA,EACA9uD,EACA,OAAA,GAGIvuC,WAAWoH,SAAS3I,EAAUM,OAAOyJ,UAAAA,EAC1C60F,EAAKp9F,SAAWxB,EAAU2B,KAAKC,IAAIg9F,EAAKp9F,SAAW,GAAG,KACtDo9F,EAAAA,EAAKp9F,SAASmH,SAAS3I,EAAUM,OAAO0J,SAAAA,EACjC40F,CACP,EAEDoC,gBAAiB,SAASpC,EAAM9uD,GAC/B,IAAI/0B,EAEJ,OAAQ+0B,EAAAA,CACP,IAAK,OACL,IAAK,KACJ/0B,EAAO9R,KAAKk4F,cAAcvC,EAAM9uD,CAChC,EAAA,MACD,QACC/0B,EAAO6jF,CAAAA,CAIT,OADA7jF,EAAKnW,QAAUg6F,EAAKh6F,QACbmW,CACP,EACDomF,cAAe,SAASvC,EAAM9uD,EAC7B,CAAA,OAAO7mC,KAAKo4F,kBAAkB,CAC5B3I,GAAK,aACLC,KAAO,WACPx3F,KAAO,aACPkgB,MAAQ,YAETu9E,EACA9uD,EACA,YAED,CAAA,EAED+xD,WAAY,SAAS59C,EAAAA,CACpB,IAAI5hB,EAAQriC,EAAUwE,SAAAA,EAElBo6F,EAAO31F,KAAK28D,SAAS38D,KAAMg7C,CAAAA,GAC5B26C,EAAKr9F,WAAWa,UAAYigC,EAAMr0B,SAAS5L,QAAaw8F,GAAAA,EAAKr9F,WAAWa,QAAaigC,GAAAA,EAAMp0B,SAAS7L,QAAAA,IACtGpC,EAAU0V,eAAe,IAAIvT,KAAKy8F,EAAKr9F,aAGxC0H,KAAK20F,OAAOgB,CACZ,CAAA,EAEDp7D,KAAM,CACLriC,KAAQ,UACP8H,CAAAA,KAAK44F,WAAW,MAChB,CAAA,EACDxgF,MAAS,UAAA,CACRpY,KAAK44F,WAAW,OAAA,CAChB,EACDlJ,KAAQ,WAEK1vF,KAAKyxF,SAAAA,GACNzxF,KAAKwxF,OAAOt7E,KACtBnf,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAU0lF,mBAEtDl0F,KAAK44F,WAAW,MAGjB,CAAA,EAEDnJ,GAAM,UACOzvF,CAAAA,KAAKyxF,SACNzxF,GAAAA,KAAKwxF,OAAOt7E,KACtBnf,EAAU2iE,oBAAoBkzB,cAAcp+E,UAAU+lF,iBAEtDv0F,EAAAA,KAAK44F,WAAW,IAAA,CAGjB,EAED,aAAa,UAAA,CACZ54F,KAAK20F,OAAO30F,KAAK83F,WAAW93F,KAAM,MAAA,CAAA,CAClC,EACD,WAAW,UAAA,CACVA,KAAK20F,OAAO30F,KAAK83F,WAAW93F,KAAM,IAClC,CAAA,CAAA,EACD,cAAc,UACbA,CAAAA,KAAK20F,OAAO30F,KAAK83F,WAAW93F,KAAM,OAAA,CAAA,CAClC,EACD,aAAa,WACZA,KAAK20F,OAAO30F,KAAK83F,WAAW93F,KAAM,MAClC,CAAA,CAAA,EAGDsvF,MAAS,UAAA,CACR,IAAIl2F,EAAM,CAACd,WAAY,IAAIY,KAAK8G,KAAK1H,UAAAA,EAAaC,SAAU,IAAIW,KAAK8G,KAAKzH,QAAAA,CAAAA,EAEtE2C,EAAOnE,EAAUwE,WAAWL,KAC7BnE,EAAUkG,QAAUlG,EAAUkG,OAAO/B,CAGvC9B,EAAAA,EADerC,EAAUkG,OAAOlG,EAAUwE,SAAWL,EAAAA,IAAAA,EACxCjB,UAAc+F,EAAAA,KAAKrE,QACxB5E,EAAUiG,QAAUjG,EAAUiG,OAAO9B,KAE7C9B,EADWrC,EAAUiG,OAAO9B,CAAAA,EACnBhB,QAAU8F,KAAKrE,SAGzB5E,EAAU0T,YAAYrR,CACtB,CAAA,CAAA,CAAA,CAAA,EAKJrC,EAAU2iE,oBAAoBgD,SAASluD,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoBgD,SAASluD,UAAU+rB,IAAAA,CAE1G,ET9qBYxjC,GU1GG,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoByC,cAAgB,SAASp6D,EAAK6B,EAC3D5D,CAAAA,KAAK9C,UAAY6E,EACjB/B,KAAK4D,MAAQA,GAAS,CACvB,EAEA7M,EAAU2iE,oBAAoByC,cAAc3tD,UAAYzX,EAAU82F,SACjE92F,EAAU2iE,oBAAoBg7B,WAC9B,CAECx4B,QAAS,UAER,CAAA,MAAA,CAAA,CADgBl8D,KAAK9C,UACFoX,WACnB,EAED6gD,SAAU,WACT,IAAIohC,EAAc,IAAIx/F,EAAU2iE,oBAAoBgD,SACpD,OAAG65B,EAAYr6B,QAAAA,EACPq6B,EAEA,IAAIx/F,EAAU2iE,oBAAoBmzB,QAE1C,EACD71D,MAAO,UAAA,CACNjgC,EAAU2iE,oBAAoBc,WAAWq+B,WAAW5Q,QAAAA,EACpDjoF,KAAK9C,UAAU2/D,gBAAgB,UAC/B9lE,EAAAA,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUwoB,MAAMp0B,MAAM5C,IAAAA,CAE/D,EACD8zF,KAAM,UAAA,CACL9zF,KAAK9C,UAAU6S,aAAa,WAAY,GAAA,EACxChZ,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUslF,KAAKlxF,MAAM5C,IAAAA,CAC9D,EACDm9D,QAAS,UAAA,CACR,OAAIn9D,KAAK4D,MAGD5D,KAAK9C,UAAU+U,cAAc,sBAAA,EAF7BjS,KAAK9C,UAAU+U,cAAc,sBAIrC,CAAA,EAEDsoB,KAAM,CACLniB,MAAS,SAASjd,EAAAA,CACjB6E,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoByC,cAAcn8D,KAAK9C,UAAW8C,KAAK4D,MAAQ,EAAI,CAC7F,CAAA,CAAA,EACD1L,KAAQ,SAASiD,GAChB6E,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoByC,cAAcn8D,KAAK9C,UAAW8C,KAAK4D,MAAQ,EAAI,CAAA,CAAA,CAC7F,EACD8rF,KAAQ,WACP,IAAI59E,EAAO,IAAI/a,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW,EAAG,CACzE4U,EAAAA,GAAAA,CAASA,EAAKoqD,QAAAA,IAChBpqD,EAAOA,EAAKqjD,SAAAA,GAGbn1D,KAAK20F,OAAO7iF,EACZ,EACDw9E,MAAS,SAASn0F,EAAAA,CACjB6E,KAAKm9D,QAAU1sD,EAAAA,MAAAA,CACf,CAKJ1Z,CAAAA,CAAAA,EAAAA,EAAU2iE,oBAAoByC,cAAc3tD,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoByC,cAAc3tD,UAAU+rB,IAEpH,CAAA,EVyCiBxjC,CW3GF,EAAA,SAASA,EAExBA,CAAAA,EAAU2iE,oBAAoB0C,YAAc,SAASr6D,EAAK+N,EAAK+hB,GAC9D7xB,KAAK9C,UAAY6E,EACjB/B,KAAK8P,IAAMA,GAAO,EAClB9P,KAAK6xB,IAAMA,GAAO,CACnB,EAEA96B,EAAU2iE,oBAAoB0C,YAAY5tD,UAAYzX,EAAU82F,SAC/D92F,EAAU2iE,oBAAoBg7B,WAC9B,CAECx4B,QAAS,UAAA,CACR,IAAI/xB,EAAOnqC,KAAK84F,SAChB,EAAA,MAAA,EAAA,CAAU3uD,EAAKnqC,KAAK8P,GAAAA,GAAAA,CAAQq6B,EAAKnqC,KAAK8P,KAAK9P,KAAK6xB,GAAAA,EAChD,EACDsjC,SAAU,UACT,CAAA,IAAIrlD,EAAM9P,KAAK8P,IACX+hB,EAAM7xB,KAAK6xB,IACXsY,EAAOnqC,KAAK84F,SACZ3uD,EAAAA,EAAKr6B,CACRA,IAAAA,EAAM,GAEP,IAAIkrC,EAAAA,GAKJ,GAJGlrC,EAAMq6B,EAAKtwC,OAAS,IACtBmhD,EAAAA,KAGG7Q,EAAKr6B,CAAAA,EAAK,CACb,IAAIymF,EAAc,IAAIx/F,EAAU2iE,oBAAoBgD,SACpD,OAAG65B,EAAYr6B,QAAAA,EACPq6B,EAEA,IAAIx/F,EAAU2iE,oBAAoBmzB,QAE1C,CAED,GAAG7xC,GACF,QAAQp8C,EAAIizB,EAAKsY,EAAKr6B,CAAQlR,GAAAA,EAAIurC,EAAKr6B,CAAAA,EAAKjW,OAAQ+E,IAKnD,GAJIurC,EAAKr6B,CAAAA,EAAKlR,IAAMA,GAAKurC,EAAKr6B,CAAKjW,EAAAA,OAAS,IAC3CiW,IACA+hB,EAAM,GAEJsY,EAAKr6B,GAAKlR,CACZ,EAAA,OAAO,IAAI7H,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW4S,EAAKlR,CAI5E,MAAA,KAAQA,EAAIizB,EAAKsY,EAAKr6B,CAAQlR,GAAAA,EAAIurC,EAAKr6B,CAAAA,EAAKjW,OAAQ+E,IAKnD,GAJIurC,EAAKr6B,CAAAA,EAAKlR,IAAOA,IAEpBizB,EAAMsY,EADNr6B,EAAAA,CAAAA,EACgBjW,OAAS,GAEvBswC,EAAKr6B,CAAKlR,EAAAA,CAAAA,EACZ,OAAO,IAAI7H,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW4S,EAAKlR,CAK7E,EAAA,OAAO,IAAI7H,EAAU2iE,oBAAoByC,cAAcn8D,KAAK9C,UAAW,CACvE,CAAA,EACD85B,MAAO,UAAA,CACNjgC,EAAU2iE,oBAAoBc,WAAWq+B,WAAW5Q,QAAAA,EAEpDjoF,KAAK9C,UAAU2/D,gBAAgB,UAC/B9lE,EAAAA,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUwoB,MAAMp0B,MAAM5C,KAC/D,EACD8zF,KAAM,UACL9zF,CAAAA,KAAK9C,UAAU6S,aAAa,WAAY,GACxChZ,EAAAA,EAAU2iE,oBAAoBg7B,WAAWlmF,UAAUslF,KAAKlxF,MAAM5C,KAC9D,EACD+4F,SAAU,SAASjpF,EAAK+hB,EACvB,CAAA,OAAO7xB,KAAK9C,UAAU+U,cAAc,gCAAgCnC,EAAM,GAAK,mBAAmB+hB,EAAM,GAAG,GAAA,CAC3G,EACDsrC,QAAS,WACR,OAAOn9D,KAAK+4F,SAAS/4F,KAAK8P,IAAK9P,KAAK6xB,GAAAA,CACpC,EAEDinE,SAAU,WAGT,QAFI1nF,EAAOpR,KAAK9C,UAAUzD,iBAAiB,mBAAA,EACvC0wC,EAAO,CAAA,EACHvwC,EAAI,EAAGA,EAAIwX,EAAKvX,OAAQD,IAAI,CACnCuwC,EAAKvwC,CAAK,EAAA,CAAA,EAGV,QADIL,EADM6X,EAAKxX,CAAAA,EACCH,iBAAiB,IACzBmF,EAAAA,EAAI,EAAGA,EAAIrF,EAAMM,OAAQ+E,IAAI,CACpC,IAAIq6C,EAAO1/C,EAAMqF,CAAAA,EACbo6F,EAAU,GACVxgG,EAAMzB,EAAU+P,cAAcmyC,CAC/BzgD,GAAAA,EAAIuO,QAAQ,WAAgB,EAAA,IAAKvO,EAAIuO,QAAQ,kBAAsBvO,EAAIuO,QAAQ,kBAAA,EAAA,MACjFiyF,EAAAA,IAED7uD,EAAKvwC,GAAGgF,CAAKo6F,EAAAA,CACb,CACD,CACD,OAAO7uD,CACP,EAGD5P,KAAM,CACLniB,MAAS,SAASjd,EAAAA,CACjB,IAAIgvC,EAAOnqC,KAAK84F,SACZG,EAAAA,EAASj5F,KAAK8P,IACdopF,EAASl5F,KAAK6xB,IAAM,EACpBsY,EAAK8uD,IAAY9uD,EAAK8uD,CAAAA,EAAQC,CAC9B/uD,IAAAA,EAAK8uD,EAAS,CAChBA,GAAAA,GAAkB,EAClBC,EAAS,GAETA,EAASl5F,KAAK6xB,KAIhB,IAAI/f,EAAO,IAAI/a,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW+7F,EAAQC,CAC7EpnF,EAAAA,EAAKoqD,YACRpqD,EAAOA,EAAKqjD,SAGbn1D,GAAAA,KAAK20F,OAAO7iF,CACZ,CAAA,EACD5Z,KAAQ,SAASiD,GAChB,IAAIgvC,EAAOnqC,KAAK84F,SAAAA,EACZG,EAASj5F,KAAK8P,IACdopF,EAASl5F,KAAK6xB,IAAM,EACpBsY,EAAK8uD,CAAY9uD,GAAAA,EAAK8uD,CAAQC,EAAAA,CAAAA,IAGhCA,EAFE/uD,EAAK8uD,EAAS,CAEP9uD,EAAAA,EADT8uD,GAAkB,CAAA,EACIp/F,OAAS,EAEtBmG,KAAK6xB,KAIhB,IAAI/f,EAAO,IAAI/a,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW+7F,EAAQC,CAC7EpnF,EAAAA,EAAKoqD,YACRpqD,EAAOA,EAAKqjD,SAGbn1D,GAAAA,KAAK20F,OAAO7iF,CACZ,CAAA,EACD49E,KAAQ,UAAA,CACP,IAAIvlD,EAAOnqC,KAAK84F,SACZG,EAAAA,EAASj5F,KAAK8P,IAAM,EACpBopF,EAASl5F,KAAK6xB,IAEdsY,EAAK8uD,CAAAA,GAAY9uD,EAAK8uD,CAAAA,EAAQC,KACjCD,EAASj5F,KAAK8P,KAGf,IAAIgC,EAAO,IAAI/a,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW+7F,EAAQC,CAC7EpnF,EAAAA,EAAKoqD,YACRpqD,EAAOA,EAAKqjD,SAGbn1D,GAAAA,KAAK20F,OAAO7iF,CACZ,CAAA,EACD29E,GAAM,UAAA,CACL,IAAItlD,EAAOnqC,KAAK84F,SACZG,EAAAA,EAASj5F,KAAK8P,IAAM,EACpBopF,EAASl5F,KAAK6xB,IAElB,GAAIsY,EAAK8uD,CAAAA,GAAY9uD,EAAK8uD,CAAQC,EAAAA,CAAAA,EAM7B,CACJ,IAAIpnF,EAAO,IAAI/a,EAAU2iE,oBAAoB0C,YAAYp8D,KAAK9C,UAAW+7F,EAAQC,CAC7EpnF,EAAAA,EAAKoqD,YACRpqD,EAAOA,EAAKqjD,SAGbn1D,GAAAA,KAAK20F,OAAO7iF,CACZ,CAAA,KAbyC,CACzC,IAAIlO,EAAQ,EACT5D,KAAK6xB,IAAMsY,EAAKnqC,KAAK8P,GAAKjW,EAAAA,OAAS,IACrC+J,EAAQ,GAET5D,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoByC,cAAcn8D,KAAK9C,UAAW0G,CAAAA,CAAAA,CACjF,CASI,EACD0rF,MAAS,SAASn0F,EAAAA,CACjB6E,KAAKm9D,QAAUlrD,EAAAA,cAAc,iBAAmBxB,EAAAA,MAAAA,CAChD,KAKJ1Z,EAAU2iE,oBAAoB0C,YAAY5tD,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoB0C,YAAY5tD,UAAU+rB,KAEhH,EX9EexjC,CY5GA,EAAA,SAASA,EAExBA,CAAAA,EAAU2iE,oBAAoBmzB,SAAW,SAASjpF,EACjD5D,CAAAA,KAAK4D,MAAQA,GAAS,CACvB,EAEA7M,EAAU2iE,oBAAoBmzB,SAASr+E,UAAYzX,EAAU82F,SAC5D92F,EAAU2iE,oBAAoBg7B,WAC9B,CACCv3B,QAAS,SAASv5D,EAAAA,CACjB,OAAO7M,EAAUyC,WAAWyY,cAAc,eAAA,CAC1C,EAED4+E,UAAU,KAEV30B,QAAS,UAAA,CACR,QACA,EACD/G,SAAS,UAAA,CACR,OAAOn1D,IACP,EAEDu6B,KAAM,CACL,qBAAqB,UACpBv6B,CAAAA,KAAK20F,OAAO,IAAI59F,EAAU2iE,oBAAoBgD,QAAAA,CAC9C,CAKJ3lE,CAAAA,CAAAA,EAAAA,EAAU2iE,oBAAoBmzB,SAASr+E,UAAUwiF,QAAQj6F,EAAU2iE,oBAAoBmzB,SAASr+E,UAAU+rB,IAE1G,CAAA,EZ6EYxjC,CACVqiE,EAAAA,GAAOriE,Ca9GM,EAAA,SAASA,GAExBA,EAAU2iE,oBAAoBc,WAAa,CAC1C5vD,YACAqxD,WAAY,KACZ48B,WAAY,IAAI9hG,EAAU2iE,oBAAoBkzB,cAE9C/wB,mBAAoB,SAAUvwD,EAAAA,CAC7B,IAAIrT,EAAKC,EAELq2B,EAAax3B,EAAUyC,WAAWyY,cAAc,iCAChDsc,IACHA,EAAax3B,EAAUyC,WAAWyY,cAAc,eAG9Csc,GAAAA,IACFt2B,EAAMs2B,EAAWzT,UACjB5iB,EAAOq2B,EAAWvT,YAGnB1P,EAAAA,EAEGijB,IACFA,EAAWzT,UAAY7iB,EACvBs2B,EAAWvT,WAAa9iB,EAEzB,EACD6jE,OAAQ,UAAA,CACP,GAAIhlE,EAAUyC,WAAd,CAKAwG,KAAK4K,YACL,IAAIgwB,EAAO56B,KACXA,KAAK67D,mBAAmB,UAAA,CACvBjhC,EAAKi+D,WAAW98B,SAChBnhC,EAAKgiC,cAAchiC,EAAK0gC,cAAAA,CAAAA,CAC3B,EAPG,CAQD,EAED2sB,QAAS,UAAA,CACRjoF,KAAK4K,SAAW,GAChB5K,KAAK64F,WAAW5Q,SAChB,EAED7wF,UAAW,UACV,CAAA,MAAA,CAAA,CAAS4I,KAAK4K,QACd,EAEDgpF,eAAgB,UAAA,CACf,OAAO5zF,KAAK64F,WAAWjF,eAAAA,CACvB,EAEDhG,eAAgB,UAAA,CACf5tF,KAAK48D,cAAc58D,KAAK4zF,eACxB,CAAA,CAAA,EAEDt4B,cAAe,UAAA,CACd,IAAI3jD,EAAO3X,KAAKi8D,WAIhB,OAHGtkD,IAASA,EAAKukD,QAAAA,IAChBvkD,EAAOA,EAAKw9C,YAENx9C,CACP,EAEDmkD,gBAAiB,UAAA,CAChB97D,KAAKm5F,SAASn5F,KAAK64F,UACnB74F,EAAAA,KAAKwc,UAAUxc,KAAK64F,UAAAA,CACpB,EAEDj8B,cAAe,SAAStmD,EACnBA,CAAAA,GAAOA,EAAG4lD,QAAAA,IAGXl8D,KAAKi8D,YACJj8D,KAAKi8D,WAAW24B,UAAUt+E,IAI3BtW,KAAK5I,UAAAA,IACP4I,KAAKm5F,SAASn5F,KAAKi8D,UACnBj8D,EAAAA,KAAKi8D,WAAa3lD,EAClBtW,KAAKwc,UAAUxc,KAAKi8D,UAErB,GAAA,EAEDz/C,UAAW,SAASlG,EAAAA,CAChBA,GAAMA,EAAG0gB,QACX1gB,EAAG0gB,MAAAA,EACA1gB,EAAG6mD,SAAW34D,SAAS6X,eAAiB/F,EAAG6mD,QAC7Cn9D,GAAAA,KAAK48D,cAAc,IAAI7lE,EAAU2iE,oBAAoBmzB,UAGvD,EACDsM,SAAU,SAAS7iF,EAAAA,CACfA,GAAMA,EAAGw9E,MACXx9E,EAAGw9E,KAAAA,CAEJ,EAED0B,gBAAiB,SAAS77F,EACzB,CAAA,IAAIy/F,EAASriG,EAAUyC,WAAWyY,cAAc,mBAAmBlb,EAAUM,OAAOqC,gBAAgB,KAAKC,EAAG,eAC5G,OAAGy/F,GAAUA,EAAO9kF,YAEZ8kF,EAED,IACP,EAEDz9B,eAAgB,SAAUxgE,GAEzB,GAAGA,CAAAA,EAAEk+F,iBAAL,CAIA,IAAIh9E,EAAgBrc,KAAKs7D,cAEzB,EAAA,IAAA,CAAGvkE,EAAU2iE,oBAAoBJ,QAAAA,GAC9Bj9C,GAAiBA,EAAcnf,WAAanG,EAAU+W,MAAM2xC,IAAI5nC,UAAU,CAACxc,OAAOghB,EAAcnf,SAAY,EAAA,oBAAA,QAG5GnG,EAAUwE,SAAAA,EAAWuyC,WAAa9tC,CAAAA,KAAKw1F,gBAAgBz+F,EAAUwE,SAAAA,EAAWuyC,SAG1E9tC,IAAAA,KAAK5I,YAAV,CAGA+D,EAAIA,GAAKvE,OAAOO,MAEhB,IAAImiG,EAAgBt5F,KAAK64F,WAErBtK,EAAUx3F,EAAU2iE,oBAAoB6zB,UAAUoB,oBAAoBxzF,CAEtEkhB,EAAAA,EAEKA,EAAcmxE,YAAYe,GAClClyE,EAAcy0E,SAASvC,EAASpzF,CAAAA,EACxBm+F,EAAc9L,YAAYe,CAAAA,GAClC+K,EAAcxI,SAASvC,EAASpzF,CAJhC6E,EAAAA,KAAK4tF,eATE,CAAA,CAZP,CA4BD,EAED2L,SAAU,KACVvqF,MAAO,SAAS1D,EAAU0D,EAAAA,CAEzBO,aAAavP,KAAKu5F,UAClBv5F,KAAKu5F,SAAWjqF,WAAWhE,EAAU0D,GAAS,CAE9C,CAAA,CAAA,CAGF,Eb1COjY,GACL+iE,GAAe/iE,CAAAA,EAEf,UACCykE,CAAAA,GAAmBzkE,GcnHP,SAASA,EAAAA,CAExBA,EAAU2iE,oBAAoB8/B,eAAiB,CAE/CziG,EAAAA,EAAU2iE,oBAAoB+/B,UAAY,SAAS9hF,EAElD,CAAA,QADI+hF,EAAgB3iG,EAAU2iE,oBAAoB8/B,eAC1C5/F,EAAI,EAAGA,EAAI8/F,EAAc7/F,OAAQD,IACxC,GAAGoG,KAAK2b,UAAUhE,EAAM+hF,EAAc9/F,IACrC,MAAO,GAET,MAAO,EACR,EAEA7C,EAAU2iE,oBAAoB/9C,UAAY,SAASC,EAAO5Z,EACzD,CAAA,KAAM4Z,GAASA,IAAU5Z,GACxB4Z,EAAQA,EAAM3Z,WAGf,OAAU2Z,IAAU5Z,CACrB,EAEAjL,EAAU2iE,oBAAoBigC,kBAAoB,UACjD,CAAA,IAAIn/B,EAAazjE,EAAU2iE,oBAAoBc,WAE/C,SAASo/B,EAAaz+F,EAAAA,CACrB,IAAIE,EAASF,EAAEE,OAEfm/D,EAAWuB,SACXvB,EAAWoC,cAAc,IAAI7lE,EAAU2iE,oBAAoByC,cAAc9gE,EAAQ,CACjF,CAAA,CAAA,CAED,SAASw+F,EAAa1+F,EAAAA,CACrB,IAAIE,EAASF,EAAEE,QAAUF,EAAE8c,WAEvBspB,EAAOxqC,EAAU+W,MAAM2xC,IAAI5nC,UAAU1c,EAAG,wBACxC2W,EAAAA,EAAO/a,EAAU+W,MAAM2xC,IAAI5nC,UAAU1c,EAAG,sBAAuB,EAAA,EAC/D89C,EAAOliD,EAAU+W,MAAM2xC,IAAI5nC,UAAU1c,EAAG,gBAAA,EAExC2+F,EAAAA,EAAW,EACXC,EAAY,EAChB,GAAG9gD,EAAK,CAIP,QAHIjT,EACAg0D,EACApC,EAAUv8F,EACRu8F,GAAWA,EAAQ56E,QAAQtH,YAChCkiF,GADiD,MACjDA,EAAUA,EAAQ31F,WAOnB,GALG21F,IAEF5xD,GADAg0D,EAAKpC,GACG31F,YAGN+jC,GAAMg0D,EAAG,CAEX,QADI5oF,EAAO40B,EAAG/jC,WAAWxI,iBAAiB,MAClCG,EAAI,EAAGA,EAAIwX,EAAKvX,OAAQD,IAC/B,GAAGwX,EAAKxX,CAAAA,GAAMosC,EAAG,CAChB8zD,EAAWlgG,EACX,KACA,CAEF,IAAIL,EAAQysC,EAAGvsC,iBAAiB,MAChC,IAAQG,EAAI,EAAGA,EAAIL,EAAMM,OAAQD,IAChC,GAAGL,EAAMK,IAAMogG,EAAG,CACjBD,EAAYngG,EACZ,KACA,CAEF,CACD,CACD,IAAIgZ,EAAOzX,EAAEs+D,cACbe,EAAWxrD,MAAM,UAGf,CAAA,IAAIvU,GAFF8mC,GAAQzvB,GAAQmnC,KAGf1X,GACF9mC,EAAU,IAAI1D,EAAU2iE,oBAAoByC,cAAcvpD,EAAM,CAAA,EAChE4nD,EAAWoC,cAAc,IAAI7lE,EAAU2iE,oBAAoByC,cAAcvpD,EAAM,CAAA,CAAA,GACvEd,EACRrX,EAAU,IAAI1D,EAAU2iE,oBAAoByC,cAAcvpD,EAAM,GACxDqmC,IACRx+C,EAAU,IAAI1D,EAAU2iE,oBAAoB0C,YAAYxpD,EAAMknF,EAAUC,CAAAA,GAItEt/F,IAEF+/D,EAAWuB,OAAAA,EACRthE,EAAQyhE,QAAAA,IACV1B,EAAWyB,WAAa,KACxBzB,EAAWoC,cAAcniE,KAM/B,CACE,CAAA,CAED,GAAG1D,EAAU8Z,eAAe,CAC3B,IAAIopF,EAAgBljG,EAAU8Z,eAC9B9Z,EAAU8Z,eAAiB,UAC1B,CAAA,IAAIqpF,EAAMD,EAAcr3F,MAAM5C,KAAMiJ,SAAAA,EAChCywF,EAAgB3iG,EAAU2iE,oBAAoB8/B,eAElDziG,EAAUyf,YAAY0jF,EAAK,QAASL,CAAAA,EACpC9iG,EAAUI,MAAM+iG,EAAK,QAASL,CAAAA,EAE9B9iG,EAAUyf,YAAY0jF,EAAK,QAASN,CAAAA,EACpC7iG,EAAUI,MAAM+iG,EAAK,QAASN,CAAAA,EAG9B,QADIO,EAAAA,GACIvgG,EAAI,EAAGA,EAAI8/F,EAAc7/F,OAAQD,IACxC,GAAG8/F,EAAc9/F,CAAAA,GAAMsgG,EAAI,CAC1BC,KACA,KACA,CAKF,GAHIA,GACHT,EAAcrgG,KAAK6gG,CAEjB1/B,EAAAA,EAAWpjE,YAAY,CACzB,IAAIugB,EAAO6iD,EAAWc,gBACnB3jD,GAAQA,EAAKza,WAAag9F,EAC5B1/B,EAAWh+C,UAAU7E,CAAAA,EAErBuiF,EAAInqF,aAAa,WAAY,GAElC,CAAA,MACImqF,EAAInqF,aAAa,WAAY,GAE9B,EAAA,OAAOmqF,CACV,CACE,CAED,GAAGnjG,EAAU6Z,gBAAgB,CAC5B,IAAIwpF,EAAiBrjG,EAAU6Z,gBAC/B7Z,EAAU6Z,gBAAkB,SAASspF,EAAKjsF,EAAAA,CACzCisF,EAAMA,IAAQnjG,EAAUsjG,WAAatjG,EAAUsjG,WAAWxzF,WAAa,MACvE,IAAI/I,EAAMs8F,EAAex3F,MAAM5C,KAAMiJ,SAErC,EAAA,GAAA,CAAIixF,IAAQA,EAAIj4F,WAEf,QADIy3F,EAAgB3iG,EAAU2iE,oBAAoB8/B,eAC1C5/F,EAAI,EAAGA,EAAI8/F,EAAc7/F,OAAQD,IACrC8/F,EAAc9/F,CAAMsgG,GAAAA,IACtBnjG,EAAUyf,YAAYkjF,EAAc9/F,CAAI,EAAA,QAASggG,CACjDF,EAAAA,EAActxF,OAAOxO,EAAG,CAAA,EACxBA,KAKH,OAAOkE,CACV,CACE,CACF,CAEA,EdxCoB/G,CAEjB,EAAA,IAAIyjE,EAAazjE,EAAU2iE,oBAAoBc,WAI/C,GAFAzjE,EAAU2iE,oBAAoB+B,0BAE3B1kE,EAAU8Z,eAEZ9Z,EAAU2iE,oBAAoBigC,wBAG9B,KAAIW,EAAavjG,EAAUkE,YAAY,mBAAoB,UAAA,CAC1DlE,EAAUkf,YAAYqkF,GACtBvjG,EAAU2iE,oBAAoBigC,kBACnC,CAAA,CAAA,EAKG,SAASY,GACR,CAAA,GAAIxjG,EAAUM,OAAO2iE,QAArB,CAEA,IACIJ,EAAep1D,SAAS6X,cAQ5B,MANIu9C,EAAAA,CAAAA,GAAgB7iE,EAAU+W,MAAM2xC,IAAI5nC,UAAU+hD,EAAc,qBAAsB,EAAA,KAG5E7iE,EAAU2iE,oBAAoB/9C,UAAUi+C,EAAc7iE,EAAUyC,aAAezC,EAAU2iE,oBAAoB+/B,UAAU7/B,CAAAA,EAR5F,CAYrC,CAID,SAAS4gC,EAAYz+B,EAAAA,CACjBA,IAAWvB,EAAWpjE,UAAAA,EACxBojE,EAAWuB,OAAAA,EAAAA,CACFA,GAAUvB,EAAWpjE,UAAAA,GAC9BojE,EAAWytB,QAAAA,CAEZ,CAED,MAAM/oD,EAAavO,YAAY,UAAA,CAC9B,GAAI55B,EAAUyC,YAAezC,EAAU2iE,oBAAoB/9C,UAAU5kB,EAAUyC,WAAYgL,SAASqO,IAAAA,EAApG,CAIA,IAAIkpD,EAASw+B,EAEVx+B,EAAAA,EACFy+B,EAAYz+B,CACHA,EAAAA,CAAAA,GAAUvB,EAAWpjE,UAAAA,GAC9BkY,WAAW,UAAA,CACPvY,EAAU0c,aAIV1c,EAAUM,OAAO2iE,QACnBwgC,EAAYD,EAAAA,CAAAA,EAEZxjG,EAAUyC,WAAWqjE,gBAAgB,UAGtC,EAAA,EAAE,IAlBH,CAoBD,EAAE,GACH9lE,EAAAA,EAAUkE,YAAY,YAAa,UAAA,CAClCw1B,cAAcyO,CAAAA,CAClB,EACG,EAzED,CA0EF,EfpICu7D,M8BxDc,SAAS1jG,EAExBA,CAAAA,EAAUkE,YAAY,mBAAmB,WAExC+E,KAAK06F,OAAOx+E,KAAK,SAASxI,EAAGC,EAC5B,CAAA,OAAOD,EAAEu4C,OAASt4C,EAAEs4C,MACtB,CAAA,EAECl1D,EAAU0mC,SAAS,SAAS1K,EAC3BA,CAAAA,EAAG4G,SAAS,CAAC,wBAAwB,GAAG,gBAAgB,aAExD35B,EAAAA,KAAK/E,YAAY,eAAe,SAAStB,EACnCqG,CAAAA,CAAAA,KAAKuoB,UAAYvoB,KAAK26F,QAAQhhG,CAAOqG,GAAAA,KAAK5E,SAASzB,CAAOqG,GAAAA,KAAK5E,SAASzB,CAAAA,EAAI8gG,OAAS1nE,EAAG0nE,OAC5F1nE,EAAGK,WAAWz5B,EAAG,GAAK,UAC1B,CAAA,CAAA,EACEqG,KAAK/E,YAAY,sBAAsB,SAAStB,EAAAA,CAC/C,GAAGqG,KAAK5E,SAASzB,CAAOqG,GAAAA,KAAK5E,SAASzB,CAAI8gG,EAAAA,OAAS1nE,EAAG0nE,MAAO,CAC5D,GAAKz6F,CAAAA,KAAK26F,QAAQhhG,CAAAA,EAAK,OACvB,IAAI05B,EAAEN,EAAGx3B,SAAS5B,GAElB,OAAI05B,GAAG,YAAcrzB,KAAKszB,YAAeP,EAAGK,WAAWz5B,EAAG,EAAA,EAAA,IACtD05B,GAAG,YACHA,GAAG,iBAEPN,EAAGK,WAAWz5B,EAAAA,GAAQ,SAAA,EAAA,IAEtB,CACI,MAAA,EACR,CAAA,EACEqG,KAAK/E,YAAY,iBAAiB,SAAStB,EAAAA,CAAAA,CACrCqG,KAAKuoB,UAAYvoB,KAAK26F,QAAQhhG,CAAAA,GAAOqG,KAAK5E,SAASzB,CAAAA,GAAOqG,KAAK5E,SAASzB,GAAI8gG,OAAS1nE,EAAG0nE,OAC5F1nE,EAAGK,WAAWz5B,EAAG,GAAK,SAC1B,CAAA,CAAA,EAEEo5B,EAAGmH,YAAY,SAASvgC,EAAG6gC,GAC1B,IAAI/9B,EAAGuD,KAAK5G,IAAIgC,SAASzB,CACrB6M,EAAAA,EAAO,CAAA,EAEX,QAASkN,KAAKjX,EACTiX,EAAE3M,QAAQ,GAAA,IAAO,IACjBtK,EAAGiX,CAAAA,GAAMjX,EAAGiX,CAAG4N,EAAAA,eAClB9a,EAAKkN,CAAAA,EAAK1T,KAAK5G,IAAIyvB,SAASmX,WAAWvjC,EAAGiX,IAE1ClN,EAAKkN,CAAAA,EAAKjX,EAAGiX,CAAAA,GAEf,OAAOlN,CACV,EACEusB,EAAG6nE,iBAAiB,aAEpB7nE,EAAG93B,YAAY,iBAAkBlE,EAAU48B,gBAC3CZ,EAAAA,EAAG93B,YAAY,iBAAkBlE,EAAU48B,gBAC3CZ,EAAAA,EAAG93B,YAAY,iBAAkB,SAAS24B,EAAKj6B,EAAAA,CAC9CqG,KAAK5G,IAAIy6B,YAAYl6B,EAAIqG,KAAK8zB,aAAc,cAAA,EAC5C9zB,KAAK5G,IAAI26B,YAAYp6B,CACxB,CAAA,CAAA,CACA,EAEC,UACO,CAAA,IAAIkhG,EAAY,SAASzhG,EACrB,CAAA,GAAGA,IAAQ,aAAe+B,GAAQ,SAC9B,OAAO/B,EACX,IAAI8lB,EAAO,IAAI9lB,EAAIsV,YACnB,QAAQzE,KAAO7Q,EACX8lB,EAAKjV,CAAAA,EAAO4wF,EAAUzhG,EAAI6Q,CAAAA,CAAAA,EAC9B,OAAOiV,CACnB,EAEEnoB,EAAU+jG,gBAAkB,CAC5B/jG,EAAAA,EAAUgkG,eAAiB,GAC3B,QAAQnhG,EAAE,EAAGA,EAAE7C,EAAU2jG,OAAO7gG,OAAQD,IAAK,CAI5C,GAHA7C,EAAUM,OAAO,YAAYN,EAAU2jG,OAAO9gG,CAAAA,EAAGkc,MAAQ,GAChD/e,EAAUM,OAAO,YAAYN,EAAU2jG,OAAO9gG,CAAGkc,EAAAA,IAAAA,EAAM1d,SAAWyiG,EAAU9jG,EAAUM,OAAOqiD,SAASthD,UAC/GrB,EAAUgkG,eAAehkG,EAAU2jG,OAAO9gG,GAAGkc,IAAQ/e,EAAAA,EAAUM,OAAO2jG,sBAAsB,EAAM,EAAFphG,EAC7F7C,EAAU2jG,OAAO9gG,CAAG2pB,EAAAA,IAAK,CAC3B,IAAIwP,EAAKh8B,EAAU2/D,oBAAoB,CACtCnzC,IAAKxsB,EAAU2jG,OAAO9gG,CAAAA,EAAG2pB,GAE1BwP,CAAAA,EAAAA,EAAG0nE,MAAQ1jG,EAAU2jG,OAAO9gG,CAAGkc,EAAAA,KAC/B/e,EAAU+jG,gBAAgBzhG,KAAK05B,CAC/Bh8B,EAAAA,EAAU+jG,gBAAgBlhG,CAAG8lB,EAAAA,KAAK3oB,CAClC,CAAA,CACEA,EAAU2jG,OAAO9gG,CAAAA,EAAGqhG,YACtBlkG,EAAUmkG,aAAenkG,EAAU2jG,OAAO9gG,CAAGkc,EAAAA,KAC9C,CACD,EA3BD,EA8BA/e,EAAUokG,UAAY,SAASC,EAC9Bp7F,CAAAA,KAAKq7F,YAAYD,EAAAA,GACnB,EAECrkG,EAAUukG,UAAY,SAASF,GAC9Bp7F,KAAKq7F,YAAYD,EAAQ,EAAA,CAC3B,EAECrkG,EAAUskG,YAAc,SAASD,EAAQG,GACxC,IAAId,EAAQz6F,KAAKw7F,SAASJ,GAGzBX,EAAMc,QADGA,IACHA,OADGA,CAAAA,CACSA,GAEDd,EAAMc,QAExBv7F,KAAKyM,eAAezM,KAAKgK,MAAOhK,KAAKoB,KAAAA,CACvC,EAECrK,EAAUykG,SAAW,SAASJ,EAAAA,CAC7B,IAAIX,EACHgB,EACSL,OAAAA,GAAU,WACnBK,EAAaL,GACM,OAAVA,GAAU,WACnBK,EAAaL,EAAOX,OACrB,QAAS7gG,EAAE,EAAGA,EAAE7C,EAAU2jG,OAAO7gG,OAAQD,IACrC7C,EAAU2jG,OAAO9gG,CAAGkc,EAAAA,MAAQ2lF,IAC9BhB,EAAQ1jG,EAAU2jG,OAAO9gG,CAAAA,GAE3B,OAAO6gG,CACT,EAEC1jG,EAAUkE,YAAY,mBAAoB,SAAUsoF,EAAAA,CACnD,IAAI9mF,EAAKuD,KAAK5E,SAASmoF,CAAAA,EAGvB,OAFMvjF,KAAK3I,OAAOqiD,SAASthD,SAAW4H,KAAK3I,OAAO,YAAYoF,EAAGg+F,KAAAA,EAAOriG,SAClErB,EAAU8iD,kBAElB,CAAA,EAEC9iD,EAAUkE,YAAY,UAAW,SAAUsoF,EAAUmY,EACpD,CAAA,IAAIj/F,EAAK1F,EAAUqE,SAASmoF,CACtB,EAAA,MAAA,CAAQxsF,EAAUykG,SAAS/+F,EAAGg+F,KAAOkB,EAAAA,MAC7C,GAEC5kG,EAAUkE,YAAY,mBAAoB,SAASwB,EAAIoC,EACtD,CAAA,IAAI47F,EAAQz6F,KAAKw7F,SAAS/+F,CAC1B,EAAA,GAAA,CAAIg+F,EAAMhX,eACT,SAED,QADI7tC,EAAQ,EACJh8C,EAAI,EAAGA,EAAEiF,EAAIhF,OAAQD,IACzBiF,EAAIjF,CAAG6gG,EAAAA,OAASA,EAAM3kF,MAAQjX,EAAIjF,CAAGD,EAAAA,IAAM8C,EAAG9C,IAChDi8C,IAEF,OAAQA,GAAS7+C,EAAUM,OAAOmsF,eACpC,CAECzsF,EAAAA,EAAUwW,SAAS,SAASjV,EAAWC,EAAS8U,EAAK1T,EAAG2rD,EACvD,CAAA,IAAI7oD,EAAGnE,EACH2Q,UAAUpP,QAAQ,KACrB4C,EAAG6oD,GAAY,IACZhtD,WAAWA,EACdmE,EAAGlE,SAASA,EACZkE,EAAG4Q,KAAKA,EACR5Q,EAAG9C,GAAGA,EACN8C,EAAGg+F,MAAQz6F,KAAKk7F,cAEjBz+F,EAAG9C,GAAK8C,EAAG9C,IAAI5C,EAAUiM,IACzBvG,EAAAA,EAAG4Q,KAAO5Q,EAAG4Q,MAAM,GAGS,OAAjB5Q,EAAGnE,YAAc,WAAWmE,EAAGnE,WAAW0H,KAAK8jB,UAAU8+B,SAASnmD,EAAGnE,UACtD,GAAA,OAAfmE,EAAGlE,UAAY,WAAWkE,EAAGlE,SAASyH,KAAK8jB,UAAU8+B,SAASnmD,EAAGlE,QAC5EkE,GAAAA,EAAG4C,OAAOW,KAAKV,cAAc7C,CAE7B,EAAA,IAAIy3C,GAAQl0C,KAAKojB,QAAQ3mB,EAAG9C,EAAAA,EAC5BqG,KAAKojB,QAAQ3mB,EAAG9C,EAAI8C,EAAAA,EACpBuD,KAAK89B,cAAcrhC,CAAAA,EACduD,KAAKuoB,UACTvoB,KAAKH,UAAUq0C,EAAO,eAAe,iBAAiB,CAACz3C,EAAG9C,GAAG8C,CAChE,CAAA,CAAA,EAECuD,KAAK47F,WAAa,GAClB,QAAShiG,EAAI,EAAGA,EAAIoG,KAAK06F,OAAO7gG,OAAQD,IACvCoG,KAAK47F,WAAW57F,KAAK06F,OAAO9gG,CAAGkc,EAAAA,IAAAA,EAAQ,GAGxC/e,EAAU0T,YAAY,SAAS5G,EAAMC,EAAI3I,EACxC,CAAA,IAAI6zC,EAAO,CAAA,EACAnrC,OAAAA,GAAS,WACnBmrC,EAAOnrC,EACPA,EAAQ,MAGT,IAAIuB,EAAwD,KAAnDpF,KAAK3I,OAAO63C,gBAAgBlvC,KAAK3I,OAAO83C,WAC5CtrC,IAAOA,EAAQmC,KAAKM,MAAOvP,EAAU0J,aAAgBtH,EAAAA,QAAAA,EAAUiM,CAAGA,EAAAA,GACvE,IAAI9M,EAAa,IAAIY,KAAK2K,CAAAA,EAC1B,IAAKC,EAAI,CACR,IAAIsrC,EAAapvC,KAAK3I,OAAOyJ,WACzBsuC,EAAa92C,EAAWuI,aAC3BvI,EAAWoH,SAAS0vC,CACpBvrC,EAAAA,EAAQvL,EAAWa,QAEpB2K,GAAAA,EAAMD,EAAMuB,CACZ,CAGD4pC,EAAK12C,WAAa02C,EAAK12C,YAAYA,EACnC02C,EAAKz2C,SAAYy2C,EAAKz2C,UAAU,IAAIW,KAAK4K,CAAAA,EACzCkrC,EAAK3hC,KAAO2hC,EAAK3hC,MAAMrN,KAAKmf,OAAO6P,OAAO7hB,UAC1C6hC,EAAKr1C,GAAKqG,KAAKR,SAAWQ,KAAKgD,IAAAA,EAC/BgsC,EAAKyrD,MAAQz6F,KAAKk7F,aAClBl7F,KAAKP,WAAW,WAEhBO,KAAKuoB,SAAS,GACdvoB,KAAKuN,SAASyhC,GACdhvC,KAAKH,UAAU,iBAAiB,CAACG,KAAKR,SAASrE,CAAAA,CAAAA,EAC/C6E,KAAKuoB,SAAAA,GAELvoB,KAAKqvC,YAAY,GACjBrvC,KAAK+rB,aAAa5wB,CAAAA,CACpB,EAECpE,EAAU8kG,oBAAsB,SAASv1E,EAAAA,CACxC,GAAItmB,KAAK3I,OAAOugD,WAAc53C,CAAAA,KAAKmB,YAAa,CAG/C,QAFIslD,EAAM,CACNC,EAAAA,EAAM,GACDpjD,EAAI,EAAGA,EAAIgjB,EAAOzsB,OAAQyJ,IAC9BgjB,EAAOhjB,CAAGjE,EAAAA,OACbonD,EAAIptD,KAAKitB,EAAOhjB,CAEhBojD,CAAAA,EAAAA,EAAIrtD,KAAKitB,EAAOhjB,CAAAA,CAAAA,EAElBtD,KAAKmB,YAAAA,GACLnB,KAAK2M,YAAY+5C,CAAAA,EACjB1mD,KAAKmB,YAAc,GACnBnB,KAAK2M,YAAY85C,EACjB,MAEAzmD,KAAK2M,YAAY2Z,CAAAA,CACpB,EAECvvB,EAAU6V,iBAAmB,UAC5B,CAAA,GAAI5M,KAAKwoB,YACRxoB,KAAKyoB,aAAe,OADrB,CAIAzoB,KAAKyoB,aAAAA,GAELzoB,KAAKqlD,aAELrlD,KAAK47F,WAAa,GAClB,QAAShiG,EAAI,EAAGA,EAAIoG,KAAK06F,OAAO7gG,OAAQD,IACvCoG,KAAK47F,WAAW57F,KAAK06F,OAAO9gG,CAAGkc,EAAAA,IAAAA,EAAQ,GAGxC,IAAIjX,EAAMmB,KAAKkmD,mBAAAA,EACf,IAAStsD,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC5BoG,KAAK47F,WAAW/8F,EAAIjF,GAAG6gG,KACzBz6F,GAAAA,KAAK47F,WAAW/8F,EAAIjF,GAAG6gG,KAAOphG,EAAAA,KAAKwF,EAAIjF,CAAAA,CAAAA,EAGzC,GAAGoG,KAAKoB,OAAS,QAAS,CACzB,IAAI2iF,EAAO,CACX,EAAA,IAASnqF,EAAI,EAAGA,EAAIoG,KAAK06F,OAAO7gG,OAAQD,IACnCoG,KAAK06F,OAAO9gG,CAAAA,EAAG2hG,UAClBxX,EAAOA,EAAK5jF,OAAOH,KAAK47F,WAAW57F,KAAK06F,OAAO9gG,CAAGkc,EAAAA,IAAAA,CAAAA,GAEpD9V,KAAK67F,oBAAoB9X,CAAAA,CACzB,KAEA,KAASnqF,EAAI,EAAGA,EAAIoG,KAAK06F,OAAO7gG,OAAQD,IACvC,GAAIoG,KAAK06F,OAAO9gG,GAAG2hG,QAAS,CAC3B,IAAIO,EAAY97F,KAAK47F,WAAW57F,KAAK06F,OAAO9gG,CAAAA,EAAGkc,MAC/C9V,KAAK67F,oBAAoBC,CACzB,CAAA,CA7BF,CAgCH,EAEC/kG,EAAUg1D,cAAc,SAAStvD,EAAGmgB,EAAED,EAAE5J,EAAEI,EAAEnb,EAAM60D,EAASC,EAASpwC,EACnE,CAAA,IAAI/iB,EAAK8C,EAAG9C,GAETkzD,EAAS9lD,QAAQ,aACnB8lD,GAHWlzD,KAGXkzD,EAAY91D,EAAU+sB,UAAU,gBAAgBrnB,EAAGg+F,KAAQ1jG,EAAAA,EAAU+sB,UAAU,gBAAgBrnB,EAAGg+F,KAAOh+F,EAAAA,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAIowD,EAAAA,GACrIC,EAAS/lD,QAAQ,aACpB+lD,GAFwID,KAExIC,EAAY/1D,EAAU+sB,UAAU,cAAcrnB,EAAGg+F,KAAAA,EAAQ1jG,EAAU+sB,UAAU,cAAcrnB,EAAGg+F,KAAAA,EAAOh+F,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAAA,EAAIqwD,GAEnI,IAAI1nD,EAAEZ,SAASC,cAAc,OACzBggC,EAAK,gBACLsoB,EAAOh2D,EAAU+sB,UAAU,eAAernB,EAAGg+F,KAAQ1jG,EAAAA,EAAU+sB,UAAU,eAAernB,EAAGg+F,KAAOh+F,EAAAA,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAI1F,EAAAA,EAAU+sB,UAAU2gC,YAAYhoD,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAC1LswD,EAAAA,IAAKtoB,EAAGA,EAAG,IAAIsoB,GAEnB,IAAIgvC,EAAYhlG,EAAU24B,qBAEtBssE,EAAiBjpF,EAAI,EACrBi6C,EAAW+uC,EAAYC,EAAkBjpF,EAAE,EAC/CkpF,EAAcF,EAAYC,EAAkBjpF,EAAE,EAC9CmpF,EAAYH,EAAYC,EAAkBjpF,EAAE,GAC5CopF,EAAcJ,EAAaC,EAAiB,EAAMjpF,EAAE,EAEhDqpF,EAAaL,EAAa5oF,EAAInT,KAAKsS,GAAGi6B,oBAAwBp5B,EAAE,GAAK,EAErE1a,EAAK,kBAAkBkB,EAAG,KAAK5C,EAAUM,OAAOqC,gBAAgB,KAAKC,EAAG,YAAY8qC,EAAG,mCAAmC9nB,EAAE,YAAYC,EAAE,aAAaowC,EAAS,cAAc75C,EAAE,OAAOnb,GAAO,IAAI,KAQtM,OAPAS,GAAM,yCAAyCwjG,EAAY,qBAC3DxjG,GAAM,0BAA0Bo0D,EAAS,SACzCp0D,GAAM,uCAAuCyjG,EAAU,cAAcE,EAAW,QAAQtvC,EAAS,SACjGr0D,GAAM,yCAAyC0jG,EAAY,OAAOz/E,EAAO,oBAAoB,IAAI,kBAEjGtX,EAAEV,UAAUjM,EACZ2M,EAAEpN,MAAMi0D,OAAS,IACV7mD,EAAEyB,UACX,EAEC9P,EAAU0wD,iBAAiB,SAAShrD,EAAAA,CACnC,IAAIuF,EAAOhC,KAAKO,KAAmB,aAAE,CAEjCqc,EAAAA,EAAE5c,KAAKgwC,OAAOvzC,EAAGwqD,KACjBM,EAAAA,EAAGvnD,KAAKgwC,OAAOvzC,EAAGyqD,KAClBK,EAAAA,GAAI3qC,IAAG2qC,EAAGvnD,KAAKgwC,OAAOvzC,EAAGyqD,MAAM,CACnC,GAAA,IAAIa,EAAK/nD,KAAKsS,GAAGge,WAEb3T,EAAE3c,KAAKgwC,OAAOG,QAAQ1zC,EAAG2qD,MAAAA,GAASpnD,KAAKgwC,OAAOrqC,OAAQ3F,KAAKsS,GAAG25B,mBAAmB,EAAG,GAAGxvC,EAAGgwB,QAAQs7B,EAElG3iD,EAAEZ,SAASC,cAAc,KAAA,EACzBggC,EAAKhoC,EAAG4C,OAAO,sBAAsB,qBACrC0tD,EAAOh2D,EAAU+sB,UAAU,eAAernB,EAAGg+F,KAAQ1jG,EAAAA,EAAU+sB,UAAU,eAAernB,EAAGg+F,KAAOh+F,EAAAA,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAAA,EAAI1F,EAAU+sB,UAAU2gC,YAAYhoD,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAAA,EAC1LswD,IAAKtoB,EAAGA,EAAG,IAAIsoB,GAEnB,IAAIt0D,EAAK,kBAAkBgE,EAAG9C,GAAG,KAAKqG,KAAK3I,OAAOqC,gBAAgB,KAAK+C,EAAG9C,GAAG,YAAY8qC,EAAG,mCAAmC9nB,EAAE,YAAYC,EAAE,cAAc2qC,EAAG3qC,EAAE,IAAI,OAAOngB,EAAGuvD,aAAa,IAAI,KAE7LvvD,EAAG4C,SACN5G,GAAO1B,EAAU+sB,UAAU,kBAAkBrnB,EAAGg+F,KAAAA,EAAQ1jG,EAAU+sB,UAAU,kBAAkBrnB,EAAGg+F,KAAAA,EAAOh+F,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAAA,EAAI1F,EAAU+sB,UAAU4gC,eAAejoD,EAAGnE,WAAWmE,EAAGlE,SAASkE,IACpMhE,GAAS1B,EAAU+sB,UAAU,kBAAkBrnB,EAAGg+F,KAAQ1jG,EAAAA,EAAU+sB,UAAU,kBAAkBrnB,EAAGg+F,KAAAA,EAAOh+F,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAAA,EAAI1F,EAAU+sB,UAAU6gC,eAAeloD,EAAGnE,WAAWmE,EAAGlE,SAASkE,GAAM,UAC3MhE,GAAM,SAEN2M,EAAEV,UAAUjM,EAEZuH,KAAK+tB,UAAU10B,KAAK+L,EAAEyB,UACtB7E,EAAAA,EAAO2C,YAAYS,EAAEyB,WACvB,EAEC9P,EAAU8wD,aAAa,SAASprD,GAC/B,IAAIgvD,EAAO10D,EAAUub,GAAG45B,WAIxB,GAHGn1C,EAAUykG,SAAS/+F,EAAGg+F,OAAOkB,SAC/BlwC,EAAO,GAEJhvD,EAAAA,EAAGwqD,MAAM,GAAb,CACA,IAAIjlD,EAAOjL,EAAUgP,cAActJ,EAAGwqD,KACtC,EAAA,GAAKjlD,EAAL,CACA,IAAIopD,EAA8B,GAAzB3uD,EAAGnE,WAAWuI,SAAAA,EAAcpE,EAAGnE,WAAW6J,aAC/CopD,EAA6B,GAAvB9uD,EAAGlE,SAASsI,WAAcpE,EAAGlE,SAAS4J,WAA2C,GAAA,GAA3BpL,EAAUM,OAAO0J,UAE7E9I,EAAO+N,KAAKM,OAAU,GAAH8kD,EAAM,IAA4B,GAAvBprD,KAAK3I,OAAOyJ,WAAc,GAAG,KAAMd,KAAK3I,OAAO+O,oBAAsD,GAAzBpG,KAAK3I,OAAO+O,cAAiB,EACvIT,EAASK,KAAKC,IAAIlP,EAAUub,GAAGw5B,kBAAkByf,EAAGH,GAAIprD,KAAK3I,OAAO+O,aAAa,EAAI,EAAA,EAErFR,EAAMI,KAAK+D,OAAO/H,EAAOkR,YAAYu4C,GAAMhvD,EAAGiwB,QAC9Cx0B,EAAKuE,EAAGgwB,QAAQ7mB,EAAM,EACrBnJ,EAAGgtD,SAAQ7jD,GAAanJ,EAAGiwB,OAAOjwB,EAAGgwB,SAI1C,IAAIrnB,EAAEpF,KAAK+rD,cAActvD,EAAG9C,GAAG8xD,EAAKvzD,EAAKD,EAAI2N,EAAMD,EAAOlJ,EAAGuvD,YAAYj1D,EAAU+sB,UAAUgL,aAAaryB,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAI1F,EAAAA,EAAU+sB,UAAUq4B,WAAW1/C,EAAGnE,WAAWmE,EAAGlE,SAASkE,CAAAA,CAAAA,EAUjM,GARAuD,KAAK+tB,UAAU10B,KAAK+L,CAAAA,EACpBpD,EAAO2C,YAAYS,GAEnBlN,EAAKA,EAAK+hB,SAASjY,EAAOhK,MAAME,KAAK,EAAA,EAAIuzD,EAEzCxzD,GAAK+H,KAAKo1C,UACVhwC,EAAEpN,MAAMi0D,OAASjsD,KAAK+6F,eAAet+F,EAAGg+F,KAEpCz6F,EAAAA,KAAK+tC,UAAUtxC,EAAG9C,GAAG,CACxByL,EAAEpN,MAAMi0D,OAAShyC,SAAS7U,EAAEpN,MAAMi0D,QAAQ,EAC1C,IAAIowC,EAAaj3F,EAAEpN,MAAMi0D,OACzBrmD,EAAMI,KAAKC,IAAIL,EAAM,EAAE7O,EAAUub,GAAG+5B,YAAAA,GAChCjnC,EAAEZ,SAASC,cAAc,KAC3BsL,GAAAA,aAAa,WAAWtT,EAAG9C,EAAAA,EAC7ByL,EAAE2K,aAAa/P,KAAK3I,OAAOqC,gBAAgB+C,EAAG9C,EAAAA,EAC9CqG,KAAK6sC,OAAOznC,EAAEQ,EAAMD,EAAO,GAAGzN,EAAKD,EAAI,EAAA,EACvCmN,EAAEM,UAAU,iBACZN,EAAEpN,MAAMi0D,OAASowC,EACjB,IAAIl4C,EAAG3/C,SAASC,cAAc,KAC9BzE,EAAAA,KAAK6sC,OAAOsX,EAAGv+C,EAAM,EAAED,EAAO,EAC9Bw+C,EAAAA,EAAGnsD,MAAM6lC,SAAS,2CAGlBsmB,EAAGnsD,MAAMi0D,OAASowC,EAClBj3F,EAAET,YAAYw/C,CAAAA,EACdnkD,KAAKO,KAAmB,aAAE,CAAGoE,EAAAA,YAAYS,GACzCpF,KAAK+tB,UAAU10B,KAAK+L,CAAAA,EAEpB++C,EAAGz/C,UAAU,oCAAoCjI,EAAG4Q,KAAK,cAEzDrN,KAAKqsD,QAAQlI,EAAGt9C,WAChB7G,KAAKqsD,QAAQ91C,iBAAiB,WAAY,SAASpb,GAClD,GAAIA,EAAEmxD,SAAU,MAAA,GAChB,IAAIvtC,EAAM5jB,EAAEo6B,QACRxW,GAAMhoB,EAAUwjC,KAAKiS,WAAWz1C,EAAUgjC,WAC1Chb,EAAAA,GAAMhoB,EAAUwjC,KAAKkS,aAAa11C,EAAUgjC,SAAS,EAAA,CAC7D,GACG/5B,KAAKqsD,QAAQ91C,iBAAiB,cAAe,SAASpb,EAAyB,CAAA,OAArBA,EAAE0xB,aAAAA,KAAiC,CAAA,EAC7Fs3B,EAAGt9C,WAAWmwB,QAEdh3B,KAAKO,KAAmB,aAAE,CAAA,EAAGya,WAAW,EACxCmpC,EAAGt9C,WAAWmS,OAAAA,CACd,CACD,GAAIhZ,KAAK2tC,YAAYlxC,EAAG9C,GAAG,CAC1ByL,EAAEpN,MAAMi0D,OAAShyC,SAAS7U,EAAEpN,MAAMi0D,MAAQ,EAAA,EAG1C,QAFIO,EAAMxsD,KAAK3I,OAAO,UAAW2I,KAAK+tC,UAAUtxC,EAAG9C,GAAI,OAAO,SAC1D8yD,EAAAA,EAAU,GACL7yD,EAAE,EAAGA,EAAE4yD,EAAM3yD,OAAQD,IAC7B6yD,GAAW,6BAA6BD,EAAM5yD,CAAG,EAAA,YAAYoG,KAAKmf,OAAO6P,OAAOw9B,EAAM5yD,CAAAA,CAAAA,EAAI,WAC3F,IAAIR,EAAM4G,KAAK+rD,cAActvD,EAAG9C,GAAGzB,EAAKuzD,EAAK,EAAExzD,EAAIwzD,EAAkB,GAAbe,EAAM3yD,OAAU,GAAG,GAAG,oCAAoC4yD,EAAAA,IAClHrzD,EAAIpB,MAAME,KAAKA,EAAKuzD,EAAK,EACzBryD,EAAIpB,MAAMi0D,OAAS7mD,EAAEpN,MAAMi0D,OAC3BjsD,KAAKO,KAAmB,aAAE,CAAGoE,EAAAA,YAAYvL,CACzC4G,EAAAA,KAAK+tB,UAAU10B,KAAKD,CAAAA,CACpB,CArEmB,CAFG,CAyEzB,EAEIrC,EAAUulG,cAAgB,SAAS3iG,EAAIxC,EACnC,CAAA,IAAIsjG,EAAQ1jG,EAAUykG,SAASrkG,EAAMsjG,KAAAA,EACrC,OAAQA,GAASA,EAAMc,OAC/B,CACA,CAGA,CAAA,E9BvWC/tF,M+BzDc,SAASzW,EAAAA,CAExBA,EAAUM,OAAO4H,YAAc,KAC/BlI,EAAUM,OAAO6H,UAAc,KAC/BnI,EAAUM,OAAOklG,WAAc,GAC/BxlG,EAAUM,OAAOsH,aAAAA,GAEjB5H,EAAUylG,kBAAoB,UAC7B,CAAA,IAAIr1B,EAAS,KAGbpwE,EAAUkE,YAAY,qBAAqB,SAASwhG,EAAGC,EAAGC,EAAGC,EAAAA,CAE5D,SAASC,EAAUnkG,EAAMwC,EACxB,CAAA,IAAI+D,EAAclI,EAAUM,OAAO4H,YAClCC,EAAYnI,EAAUM,OAAO6H,UAC7B49F,EAAY/lG,EAAU2B,KAAKC,IAAID,EAAK,EAAEwC,CAAAA,EAEvC,OAAQxC,EAAKS,UAAY+F,EAAU/F,QAAAA,GAAa2jG,GAAY79F,EAAY9F,SACxE,CAED,MAAA,CAAIpC,EAAUM,OAAOklG,aAEhBM,EADJD,EAAKA,GAAIF,EAAIC,EAAKA,GAAIF,CAAAA,GACKC,EAAGvjG,QAAAA,GAAayjG,EAAGzjG,QAC7CmW,IAAAA,WAAW,UACV,CAAA,GAAGvY,EAAU0c,WACZ,MAAA,GAED,IAAIspF,EAAaF,EAAUH,EAAIC,CAAW5lG,EAAAA,EAAUM,OAAO4H,YAAtBy9F,EAErC3lG,EAAU0V,eAAgBowF,EAAUE,EAAWJ,CAAAA,EAAkB,KAAZI,EAAkBJ,CACvE,CAAA,EAAC,CACK,EAAA,GAIX,GACC5lG,EAAUkE,YAAY,cAAe,SAAS6c,GAC7C,OAASA,GA7BW,gBA8BtB,CAAA,EACC/gB,EAAUkE,YAAY,eAAe,SAAStB,EAAAA,CAC7C,OAAKA,GACE5C,EAAU2H,oBAAoB3H,EAAUqE,SAASzB,CAC1D,CAAA,CAAA,CAAA,EACC5C,EAAUkE,YAAY,UAAW,SAAUsoF,EAAUmY,EACpD,CAAA,OAAO3kG,EAAU2H,oBAAoB3H,EAAUqE,SAASmoF,CAAAA,CAAAA,CAC1D,GACCxsF,EAAUkE,YAAY,mBAAmB,SAAStB,GAEjD,IAAI8C,EAAK1F,EAAUqE,SAASzB,GAE5B,OADAwtE,EAAS,CAAC1qE,EAAGnE,WAAYmE,EAAGlE,QAAAA,EACrBxB,EAAU2H,oBAAoBjC,EACvC,CACC1F,EAAAA,EAAUkE,YAAY,cAAe,SAAStB,EAAI6M,EAAMw2F,EAGvD,CAAA,GAAA,CAAKx2F,EAAKlO,YAAckO,CAAAA,EAAKjO,SAAU,CACtC,IAAIkE,EAAK1F,EAAUqE,SAASzB,CAAAA,EAC5B6M,EAAKlO,WAAa,IAAIY,KAAKuD,EAAGnE,UAC9BkO,EAAAA,EAAKjO,SAAW,IAAIW,KAAKuD,EAAGlE,QAAAA,CAC5B,CAED,GAAGiO,EAAK1H,SAAS,CAGhB,IAAIm+F,EAAYlmG,EAAU4L,YAAY6D,CAAAA,EAEtC,OADAzP,EAAU4sF,iBAAiBsZ,CACpBlmG,EAAAA,EAAU2H,oBAAoBu+F,CAAAA,CACrC,CACD,OAAOlmG,EAAU2H,oBAAoB8H,CAAAA,CACvC,GACCzP,EAAUkE,YAAY,eAAe,SAAStB,GAC7C,GAAKA,CAAAA,EAAI,MAAO,GAChB,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAAAA,EAoB5B,OAnBK5C,EAAU2H,oBAAoBjC,CAAO1F,GAAAA,EAAUM,OAAO4H,aAAelI,EAAUM,OAAO6H,YAEtFzC,EAAGnE,WAAavB,EAAUM,OAAO4H,cACpCxC,EAAGnE,WAAa,IAAIY,KAAKnC,EAAUM,OAAO4H,WAEvCxC,GAAAA,EAAGnE,WAAWa,QAAAA,GAAapC,EAAUM,OAAO6H,UAAU/F,QACzDsD,IAAAA,EAAGnE,WAAa0H,KAAKtH,KAAKC,IAAI5B,EAAUM,OAAO6H,UAAAA,GAAe,KAAA,GAE3DzC,EAAGlE,SAAWxB,EAAUM,OAAO4H,cAClCxC,EAAGlE,SAAW,IAAIW,KAAKnC,EAAUM,OAAO4H,WAErCxC,GAAAA,EAAGlE,SAASY,QAAAA,GAAapC,EAAUM,OAAO6H,UAAU/F,QACvDsD,IAAAA,EAAGlE,SAAWyH,KAAKtH,KAAKC,IAAI5B,EAAUM,OAAO6H,UAAY,GAAG,KAEzDzC,GAAAA,EAAGnE,WAAWa,QAAasD,GAAAA,EAAGlE,SAASY,QAAAA,IAC1CsD,EAAGlE,SAAWyH,KAAKtH,KAAKC,IAAI8D,EAAGnE,WAAa0H,KAAK3I,OAAO63C,gBAAgBlvC,KAAK3I,OAAO83C,UAAY,QAEjG1yC,GAAAA,EAAG4C,OAAOW,KAAKV,cAAc7C,CAEvB,GAAA,EACT,GACC1F,EAAUkE,YAAY,iBAAiB,SAAStB,GAC/C,GAAKA,CAAAA,EAAI,MAAO,GAChB,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAAAA,EAC5B,GAAK5C,CAAAA,EAAU2H,oBAAoBjC,CAAAA,EAAI,CACtC,GAAK0qE,CAAAA,EAAQ,MAAO,GACpB1qE,EAAGnE,WAAa6uE,EAAO,CACvB1qE,EAAAA,EAAGlE,SAAW4uE,EAAO,CAAA,EACrB1qE,EAAG4C,OAAOW,KAAKV,cAAc7C,CAAAA,CAC7B,CACD,MAAA,EACF,CACC1F,EAAAA,EAAUkE,YAAY,uBAAuB,SAASwB,EAAIygG,EAAehpD,EACxE,CAAA,OAAOn9C,EAAU2H,oBAAoBjC,CAAAA,CACvC,CACC1F,EAAAA,EAAUkE,YAAY,uBAAwB,SAASwB,EACtD,CAAA,IAAInE,EAAavB,EAAU2E,cAAce,CAAI/D,EAAAA,KACzCvB,EAAQ,CACXkI,OAAAA,GACA/G,WAAYA,EACZC,SAAUxB,EAAU2B,KAAKC,IAAIL,EAAYvB,EAAUM,OAAO83C,UAAW,QAAA,CAAA,EAEtE,OAAOp4C,EAAU2H,oBAAoBvH,CACvC,CAAA,CAAA,EAECJ,EAAUkE,YAAY,eAAgB,UACrClE,CAAAA,EAAUqJ,WACZ,CAECrJ,EAAAA,EAAUkE,YAAY,yBAA0B,UAO/C,CAAA,OANArE,OAAO0Y,WAAW,WACjB,GAAGvY,EAAU0c,WACZ,MAAA,GAED1c,EAAUqJ,UAAAA,CACV,EAAE,CAAA,EAAA,EAEL,CAECrJ,EAAAA,EAAUkE,YAAY,mBAAoB,WACzClE,EAAUomG,gBAAkBvmG,OAAO+5B,YAAY,WAC1C55B,EAAUukD,gBAAAA,GAEdvkD,EAAUqJ,UAAAA,CACV,EAAE,GACL,CAAA,CAAA,EAECrJ,EAAUkE,YAAY,YAAa,UAClCw1B,CAAAA,cAAc15B,EAAUomG,eAAAA,CAC1B,EAEA,EACApmG,EAAUylG,kBAGV,CAAA,E/B3FCY,SgCnDD,SAAwBrmG,EAAAA,CAExB,IAAIsmG,EAAiC,KACjCC,EAA4B,CAAA,EAChC,MAAMC,EAA2C,CAChDC,UAAW,IAAIpgC,GAAiBrmE,CAAAA,EAChC0mG,eAAgB,IAAIx8B,GAAqBlqE,CACzC2mG,EAAAA,OAAQ,IAAI76B,GAAc9rE,CAAAA,CAAAA,EAiF3B,SAAS4mG,EAAa5mG,GAERA,EAAAA,EAAUwgE,IAAIqI,QAAQg+B,gBAqClBN,EAAAjkG,KACjBtC,EAAUkE,YAAY,cAAc,SAAStB,EAAG8C,EAAGy3C,GAC9C,IAAA2pD,EAAkB9mG,EAAUqE,SAASzB,GAIlC,OAHHkkG,GAAmBA,EAAgBt+B,gBAAkB9iE,EAAG8iE,iBAC3DxoE,EAAU+mG,sBAAwB,IAAA,EAE5B,CAEL/mG,EAAAA,EAAUkE,YAAY,iBAAkB,CAACtB,EAAIxC,IAAAA,CACzC,KAAAmB,CAAAA,WAACA,EAAYC,SAAAA,CAAAA,EAAYpB,EACzB4N,CAAAA,SAACA,EAAAC,SAAUA,CAAAA,EAAYjO,EAAUwE,SAAAA,EAWhC,OAVJjD,EAAWa,QAAAA,EAAY6L,EAAS7L,QAAAA,GAAaZ,EAASY,QAAY4L,EAAAA,EAAS5L,QACzEkkG,GAAAA,IACCtmG,EAAUM,OAAO0mG,aAAaC,wBAA0B7mG,EAAMooE,iBAAmBxoE,EAAUknG,cAC7FC,EAAqB/mG,EAAOkmG,GAE7BA,EAAWc,kBAAkBhnG,CAIhCJ,GAAAA,EAAUknG,iBACH,EAAA,CAERlnG,EAAAA,EAAUkE,YAAY,kBAAmB,SAASo6D,EAAOp3B,EAAAA,CACpD,IAAAmgE,EAAarnG,EAAUqE,SAAS6iC,CAAAA,EACpCo/D,GAAAA,MAAAA,EAAYgB,kBAAkBhpC,GAC9BgoC,GAAAA,MAAAA,EAAYiB,eAAeF,EAAU,CAAA,EAEnCrnG,EAAUkE,YAAY,eAAgB,CAACtB,EAAIxC,IACvC,CAAA,KAAA,CAAAmB,WAACA,EAAYC,SAAAA,CAAYpB,EAAAA,EAAAA,CACzB4N,SAACA,EAAAC,SAAUA,CAAYjO,EAAAA,EAAUwE,WACpCjD,EAAWa,QAAAA,EAAY6L,EAAS7L,QAAAA,GAAaZ,EAASY,QAAY4L,EAAAA,EAAS5L,QACpEkkG,GAAAA,IACJtmG,EAAUM,OAAO0mG,aAAaC,wBAA0B7mG,EAAMooE,gBAAkBxoE,EAAU+mG,uBAC7FI,EAAqB/mG,EAAOkmG,GAC5BtmG,EAAU+mG,sBAAAA,KAEVT,EAAWiB,eAAennG,CAC1BkmG,EAAAA,EAAWkB,aAAapnG,CAAAA,GAG3B,GAEEJ,EAAUkE,YAAY,UAAW,SAAUtB,EAAIwB,EAC3C,CAAA,MAAAhE,EAAQJ,EAAUqE,SAASzB,CAE1B,EAAA,OADH0jG,GAAclmG,GAAOkmG,EAAWkB,aAAapnG,CAAAA,EAAAA,EAC1C,CAAA,EAELJ,EAAUkE,YAAY,sBAAuB,CAACtB,EAAIxC,KAChDkmG,GACHA,EAAWgB,kBAAkB1kG,MArFhC,CAAA,CAAA,CACe0mD,eAAA69C,EAAqB/mG,EAAuBkmG,EAC1D,CAAA,IAAImB,EAAoBnB,MAAAA,EAAWoB,eAAetnG,EAAMooE,cAAAA,EAKjD,OAJPpoE,EAAMsmE,IAAM+gC,EAAY/gC,IACxBtmE,EAAMumE,IAAM8gC,EAAY9gC,IACxB2/B,EAAWgB,kBAAkBhkG,OAAOlD,EAAMwC,EAC1C0jG,CAAAA,EAAAA,EAAWiB,eAAennG,CAAAA,EACnBA,CACR,CA1FIJ,EAAUwgE,MACbxgE,EAAUwgE,IAAM,IAEjBxgE,EAAUwgE,IAAIqI,QAAU,CACvBg+B,cAAe,UACP,CAAA,OAAAL,EAASxmG,EAAUM,OAAOqnG,iBAClC,CAAA,EACA7+B,aAAc,SAASxoE,EAAAA,CACtB,OAAO,IAAIymE,OAAOC,KAAK2F,OAAOrsE,CAC/B,CAAA,EACAsnG,eAAgB,KAChBpB,SAAAA,CAAAA,EAEDxmG,EAAUknG,cAAAA,GACVlnG,EAAU+mG,sBAAAA,GACV/mG,EAAUM,OAAOqnG,kBAAoB,YACrC3nG,EAAUM,OAAO0mG,aAAe,CAC/B5/B,iBAAkB,CACfV,IAAK,OACLC,IAAK,KAERG,EAAAA,eAAgB,CACbJ,IAAK,GACLC,IAAK,EAAA,EAERF,aAAc,EACdD,mBAAoB,GACpB4C,sBAAuB,IACvBy+B,sBAAuB,GACvBZ,uBAAwB,GACxBa,cAAe,WAEZ9nG,EAAAA,EAAUM,OAAOynG,uBACV/nG,EAAAM,OAAO0mG,aAAa5/B,iBAAmB,CAChDV,IAAK1mE,EAAUM,OAAOynG,qBAAqBrhC,IAAAA,EAC3CC,IAAK3mE,EAAUM,OAAOynG,qBAAqBphC,IAAAA,CAAAA,GAIzC3mE,EAAUM,OAAO0nG,qBACVhoG,EAAAM,OAAO0mG,aAAalgC,eAAiB,CAC9CJ,IAAK1mE,EAAUM,OAAO0nG,mBAAmBthC,IAAAA,EACzCC,IAAK3mE,EAAUM,OAAO0nG,mBAAmBrhC,IAAAA,CAAAA,GAI3C3mE,EAAUub,GAAG0sF,eAAiB,IAC9BjoG,EAAUub,GAAG2sF,eAAiB,GAC9BloG,EAAUub,GAAG4sF,sBAAwB,IACrCnoG,EAAU2B,KAAKymG,QAAU,SAASzmG,EAAMkoB,EAAK1lB,EAAAA,CAC5C,OAAQ,IAAIhC,KAAKR,EAAKS,QAAAA,CAAAA,CAAS,EAEhCpC,EAAU+sB,UAAUs7E,SAAW,SAASp3E,EAAIguB,EAAI96C,GACxC,MAAA,EAAA,EAERnE,EAAU+sB,UAAUu7E,SAAW,SAASx7F,EAAOC,EAAKrH,GACnD,OAAI1F,EAAUM,OAAOo0C,KAAAA,CAAQhvC,EAAG4C,OACxBtI,EAAU+sB,UAAUiL,SAASjrB,GAAO,YAAc/M,EAAU+sB,UAAUiL,SAASlrB,GAC5EpH,EAAG4C,OACNW,KAAK+uB,SAAStyB,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,EAAM,IAAMuD,KAAKwkD,WAAW3gD,CAEtE9M,EAAAA,EAAU+sB,UAAUiL,SAASlrB,CAAAA,EAAS,YAAc9M,EAAU+sB,UAAUiL,SAASjrB,CAAAA,CACzF,EAED/M,EAAU+sB,UAAUw7E,SAAW,SAASz7F,EAAOC,EAAKrH,GACnD,OAAOA,EAAG4Q,IAAA,EAEDtW,EAAA+sB,UAAUu8C,iBAAmB,SAASlpE,EAAAA,CACrC,MAAA,6BAA6BA,EAAMkW,IAAAA;AAAAA,4BAClBlW,EAAMooE,cACRxoE;AAAAA,0BAAAA,EAAU+sB,UAAUihC,oBAAoB5tD,EAAMmB,UAChDvB,CAAAA;AAAAA,wBAAAA,EAAU+sB,UAAUihC,oBAAoB5tD,EAAMoB,QAAS,CAAA;AAAA,UAAA,EAGrExB,EAAA2B,KAAK6mG,UAAY,SAASn6F,EAAAA,CAC5B,OAAAA,CAAA,EA2BErO,EAAAyoG,sBAAwB,SAASrkG,EAAAA,CACtC,IAAAjE,EAAYiE,EAAEE,OAAOC,QAAQ,IAAIvE,EAAUM,OAAOqC,eACtD,GAAA,EAAA,GAAIxC,EAAU,CACb,IAAIif,EAAUjf,EAAU4D,aAAa,GAAG/D,EAAUM,OAAOqC,eAAAA,EAAAA,EACzD3C,EAAU+3C,aAAa34B,CAAAA,CACxB,CACKnW,KAAK3I,OAAO+2C,UAAYpuC,CAAAA,KAAK3I,OAAOmT,iBAAoBtT,GAC5D8I,KAAKyK,YAAY,CAChBnS,WAAavB,EAAUM,OAAOkoG,UAC9BhnG,SAAUxB,EAAU2B,KAAKC,IAAK5B,EAAUM,OAAOkoG,UAAWxoG,EAAUM,OAAO83C,UAAW,QAExF,CAAA,CAAA,CAAA,EAiESp4C,EAAAkE,YAAY,mBAAoB,UAAA,CAEtClE,EAAUM,OAAOooG,mBAFqB,SAGxC1oG,EAAUM,OAAO0mG,aAAavgC,aAAezmE,EAAUM,OAAOooG,kBAE5D1oG,EAAUM,OAAOqoG,kCACnB3oG,EAAUM,OAAO0mG,aAAaxgC,mBAAqBxmE,EAAUM,OAAOqoG,wBAElE3oG,EAAUM,OAAOsoG,2BAA6B,SAChD5oG,EAAUM,OAAO0mG,aAAa59B,sBAAwBppE,EAAUM,OAAOsoG,0BAErE5oG,EAAUM,OAAOuoG,4BAFoDD,SAGvE5oG,EAAUM,OAAO0mG,aAAaa,sBAAwB7nG,EAAUM,OAAOuoG,2BAErE7oG,EAAUM,OAAOqnG,oBAAsB,SACzC3nG,EAAUM,OAAO0mG,aAAac,cAAgB9nG,EAAUM,OAAOqnG,mBAE7D3nG,EAAUM,OAAOwoG,WAF4CnB,SAG/D3nG,EAAUM,OAAO0mG,aAAaxhG,KAAOxF,EAAUM,OAAOwoG,UAEpD9oG,EAAUM,OAAOyoG,sCACnB/oG,EAAUM,OAAO0mG,aAAaC,uBAAyBjnG,EAAUM,OAAOyoG,4BAEzE/oG,EAAUwgE,IAAIqI,QAAQ++B,eAAiB5nG,EAAUM,OAAOqnG,kBAEpD,IAAAlkG,EAAMgK,SAASC,cAAc,KAAA,EACjCjK,EAAIkL,UAAY,eAChBlL,EAAIb,GAAK,eACTa,EAAIxC,MAAM0a,QAAU,OACpBlY,EAAIxC,MAAMi0D,OAAS,IACTl1D,EAAAgzB,KAAKplB,YAAYnK,CAAAA,EAE3B,MAAMqlB,EAAM9oB,EAAU4V,YA0EtB,SAASozF,GAEJ,CAAA,IAAAz5E,EAASvvB,EAAUmvD,mBAAAA,EAChB5/B,EAAApK,KAAK,SAASxI,EAAGC,EAAAA,CACvB,OAAGD,EAAEpb,WAAWa,QAAWwa,GAAAA,EAAErb,WAAWa,QAAAA,EAChCua,EAAE/Z,GAAGga,EAAEha,GAAG,EAAA,GACX+Z,EAAEpb,WAAWqb,EAAErb,WAAW,IAAE,CAAA,EAIhC,IAEAG,EAAO,QAFI1B,EAAUg/B,SAASonB,cAEN,EAAA,yBAC5B,QAASvjD,EAAI,EAAGA,EAAI0sB,EAAOzsB,OAAQD,IAAK,CACnC,IAAA6C,EAAK6pB,EAAO1sB,CACZ6qD,EAAAA,EAAehoD,EAAG9C,IAAM5C,EAAUipG,mBAAsB,yBAA2B,eACnF5xC,EAAY3xD,EAAGyvD,MAAS,oCAAsCzvD,EAAGyvD,MAAQ,IAAO,GAChFA,EAASzvD,EAAGkwD,UAAa,+BAAiClwD,EAAGkwD,UAAY,IAAO,GAEhFJ,EAAWx1D,EAAUg/B,SAASqnB,iBAAiB3gD,CAC/CwjG,EAAAA,EAAiBlpG,EAAUg/B,SAASsnB,sBAExC5kD,GAAQ,QAAQ8zD,EAAS,WAAa9H,EAAc,eAAiBhoD,EAAG9C,GAAK,KAAK5C,EAAUM,OAAOqC,gBAAgB,KAAK+C,EAAG9C,GAAG,YAAcy0D,EAAgBlC,GAAczvD,EAAGuvD,aAAe,IAAM,YAAcj1D,EAAUub,GAAG0sF,eAAiBjoG,EAAUub,GAAG4sF,sBAAwB,GAAK,sDAAwDnoG,EAAUub,GAAG0sF,eAAiB,SAAWjoG,EAAU+sB,UAAUu7E,SAAS5iG,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAM,EAAA,SACxbhE,GAAQ,QAAQwnG,CAAAA;AAAAA;AAAAA,iBAGhBxnG,GAAQ,+CAAiD1B,EAAUub,GAAG4sF,sBAAwBnoG,EAAUub,GAAG2sF,gBAAkB,QAAUloG,EAAU+sB,UAAUw7E,SAAS7iG,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,EAAM,cACvM,CACQhE,GAAA,oCAAoC1B,EAAUM,OAAOo0C,IAAM,WAAa,YAAc10C,EAAUub,GAAG0sF,eAAiB,GAAK,gEAGjIjoG,EAAUwJ,KAAmB,aAAE,CAAA,EAAGua,UAAY,EAC9C/jB,EAAUwJ,KAAmB,aAAE,CAAGmE,EAAAA,UAAYjM,EAG9C,IAAI0Q,EAAIpS,EAAUwJ,KAAmB,aAAE,CAAGsG,EAAAA,WAAWD,WAEjDg6E,EAAc7pF,EAAUqgD,mBACzBwpC,EAAAA,IACFA,EAAYl8E,UAAU3N,EAAU+sB,UAAU/sB,EAAUqK,MAAQ,OAAA,EAASrK,EAAU6J,UAAW7J,EAAU4J,UAAW5J,EAAUqK,QAG1HrK,EAAUg3B,UAAY,CACtB,EAAA,QAASn0B,EAAI,EAAGA,EAAIuP,EAAEtP,OAAS,EAAGD,IACjC7C,EAAUg3B,UAAUn0B,GAAKuP,EAAEvP,CAAAA,CAE7B,CAvHU7C,EAAA4V,YAAc,SAAS9N,EAAKynD,EACjC,CAAA,GAAAtmD,KAAKoB,OAAS,MAQV,OAAAye,EAAIjd,MAAM5C,KAAMiJ,SAAAA,EARC,CACX82F,EAAAA,EACT,IAAAz5E,EAASvvB,EAAUmvD,mBACnBm3C,EAAAA,IACHA,EAAWz8B,kBACXt6C,EAAAA,EAAOvrB,QAAS5D,GAAUkmG,GAAAA,YAAAA,EAAYiB,eAAennG,EAAAA,EAEvD,CACiC,EAGxBJ,EAAAqmG,SAAW,SAASliG,EAC7BnE,CAAAA,EAAUwJ,KAAK4sB,aAAa,CAAA,EAAGn1B,MAAM4N,MAAS7O,EAAUub,GAAG0sF,eAAiBjoG,EAAUub,GAAG4sF,sBAAwB,EAAK,KACtHnoG,EAAU6J,UAAY7J,EAAUM,OAAOkoG,WAAcxoG,EAAU0J,aAAAA,EACrD1J,EAAA4J,UAAY5J,EAAUM,OAAO6oG,SAAWnpG,EAAU2B,KAAKC,IAAI5B,EAAU0J,aAAAA,EAAgB,EAAG,MAAA,EAClG1J,EAAUoK,YAAAA,GAwGX,SAAuBjG,EAAAA,CACtB,GAAIA,EAAM,CACH,MAAAgtE,EAAInxE,EAAUooB,OAAO6P,OACjBj4B,EAAAwJ,KAAqB,eAAE,CAAA,EAAGmE,UAAY,4CAClC3N,EAAUub,GAAG0sF,eAAiBjoG,EAAUub,GAAG4sF,sBAAwB,GACpE,kDACAnoG,EAAUub,GAAG0sF,eAAiB,QAAU92B,EAAExvE,KAC1C,yDACA3B,EAAUub,GAAG4sF,sBAAwB,QAAUh3B,EAAE9jC,YAAc,eAC5ErtC,EAAUoK,eACVpK,EAAU60C,UACX,CAAA,CACD,EAnHe1wC,CAAAA,EACV,IAAAilG,EAAe37F,SAASsyB,eAAe,cAAA,EA1IpC,IAAgBx6B,EAAuB8jG,GA2K/C,SAAqBC,EAAAA,CAChB7lG,IAAAA,EAAMgK,SAASsyB,eAAeupE,CAAAA,EAClC,GAAI7lG,EAAK,CACR,MAAM+X,EAAaxb,EAAUyC,WAAWyY,cAAc,kBAAoBmC,EAAAA,aACtE,IAAAzO,EAAS5O,EAAUyC,WAAWyY,cAAc,eAAA,EAAiBmC,aAAerd,EAAUyC,WAAWyY,cAAc,iBAAA,EAAmBmC,aAClIzO,EAAS,IACHA,EAAA,GACN,IAAAC,EAAQ7O,EAAU8yB,GAAK9yB,EAAUub,GAAG0sF,eAAiBjoG,EAAUub,GAAG4sF,sBAAwB,EAC1Ft5F,EAAQ,IACHA,EAAA,GACTpL,EAAIxC,MAAM2N,OAASA,EAAS,KAC5BnL,EAAIxC,MAAM4N,MAAQA,EAAQ,KAC1BpL,EAAIxC,MAAMyJ,SAAW,WACrBjH,EAAIxC,MAAMC,IAAMsa,EAAa,KACzBxb,EAAUM,OAAOo0C,IACpBjxC,EAAIxC,MAAMsoG,YAAevpG,EAAUub,GAAG0sF,eAAiBjoG,EAAUub,GAAG4sF,sBAAwB,EAAK,KAEjG1kG,EAAIxC,MAAMG,WAAcpB,EAAUub,GAAG0sF,eAAiBjoG,EAAUub,GAAG4sF,sBAAwB,EAAK,KAEjG1kG,EAAIxC,MAAMuoG,UAAaxpG,EAAUub,GAAGC,WAAa,EAAK,IACvD,CACD,GArDa,cAGRrX,EAAAA,GAAQilG,GACX3lG,EAAIxC,MAAM0a,QAAU,QACPqtF,EAEThpG,EAAAA,EAAUM,OAAOqnG,mBAAqB3nG,EAAUwgE,IAAIqI,QAAQ++B,gBAC/DtB,GAAAA,MAAAA,EAAYmD,QAAQL,GACpBxC,EAAa5mG,GACbsmG,GAAAA,MAAAA,EAAYoD,WAAWN,EAAcppG,EAAUM,OAAO0mG,gBAEtDV,GAAAA,MAAAA,EAAYmD,QAAQL,GACpBxC,EAAa5mG,CACbsmG,EAAAA,GAAAA,MAAAA,EAAYoD,WAAWN,EAAcppG,EAAUM,OAAO0mG,cACrDhnG,EAAUwgE,IAAIqI,QAAQ++B,eAAiB5nG,EAAUM,OAAOqnG,mBAEvDrB,IA5JmB/gG,EA6JLvF,EAAUM,OAAO0mG,aA7JWqC,EA6JG/C,EA5J9C/gG,EAAQsiG,sBACPnkF,UAAUimF,aACHjmF,UAAAimF,YAAYC,mBAAmB,SAASl/F,GACzC2+F,EAAAh/B,QAAQ3/D,EAASm/F,OAAO//B,SAAUp/D,EAASm/F,OAAO9/B,UAAWxkE,EAAQihE,oBAAuBjhE,EAAQkhE,YAAAA,CAAY,CAIlH4iC,EAAAA,EAAAh/B,QAAQ9kE,EAAQ6hE,iBAAiBV,IAAKnhE,EAAQ6hE,iBAAiBT,IAAKphE,EAAQkhE,YAAAA,KAwJnFhjE,EAAIxC,MAAM0a,QAAU,OACpB3b,EAAUwJ,KAAK4sB,aAAa,CAAA,EAAGn1B,MAAM4N,MAAQ,OACxCy3F,GAAc8C,IAClB9C,EAAWmD,QAAQL,GACN9C,EAAA,KACbtmG,EAAUwgE,IAAIqI,QAAQ++B,eAAiB5nG,EAAUM,OAAOqnG,mBAlF3DpB,EAAgBviG,QAAQpB,GAAM5C,EAAUkf,YAAYtc,IACpD2jG,EAAkB,CAAA,EAoFjB,EAsFSvmG,EAAAkE,YAAY,kBAAmB,SAAUtB,EAElD,CAAA,OADAk+B,MAAM,yBACCimC,EAAAA,OAAOC,KAAK4C,OAAO,iBAAoB,CAAA,CAAA,EAG3C,IAAAkgC,EAAuBxgD,eAAelpD,EACzC,CAAA,GAAIkmG,EAAW,CACd,MAAMmB,EAAoBnB,MAAAA,EAAWoB,eAAetnG,EAAMooE,gBACtDi/B,EAAY/gC,KAAO+gC,EAAY9gC,KAC5BvmE,EAAAsmE,IAAO+gC,CAAAA,EAAY/gC,IACnBtmE,EAAAumE,IAAO8gC,CAAAA,EAAY9gC,MAEzB3mE,EAAU8I,UAAU,kBAAmB,CAAC1I,EAAMwC,EAAAA,CAAAA,EAC9CxC,EAAMumE,IAAM3mE,EAAUM,OAAO0mG,aAAalgC,eAAeH,IACzDvmE,EAAMsmE,IAAM1mE,EAAUM,OAAO0mG,aAAalgC,eAAeJ,KAE1D1mE,EAAUknG,iBACVlnG,EAAU8I,UAAU,iBAAkB,CAAC1I,EAAMwC,GAAIxC,CAClD,CAAA,CAAA,CAAA,EAYDJ,EAAU+pG,qBAAuB,KACvB/pG,EAAAkE,YAAY,iBAAkB,SAAS9D,EASzC,CAAA,OARHA,EAAMsmE,KAAOtmE,EAAMumE,MAChBvmE,EAAAsmE,KAAOtmE,EAAMsmE,IACbtmE,EAAAumE,IAAAA,CAAOvmE,EAAMumE,KAEhB3mE,EAAUM,OAAO0mG,aAAaC,wBAA0B7mG,EAAMooE,gBAAAA,CAAmBpoE,EAAMsmE,KAAAA,CAAQtmE,EAAMumE,MACxG3mE,EAAU+pG,sBAAwB,KAjBvB,SAAS5lE,EAAQ/sB,EAAQkpB,EAAQroB,EAAAA,CAC7CM,WAAW,UACV,CAAA,GAAGvY,EAAU0c,WACL,MAAA,GAER,IAAIstF,EAAM7lE,EAAOt4B,MAAMuL,EAAQkpB,CAExB,EAAA,OADP6D,EAAS/sB,EAASkpB,EAAS,KACpB0pE,CAAA,EACL/xF,GAAS,CAAA,CAAC,EAUL6xF,EAAsB7gG,KAAM,CAAC7I,CAAQJ,EAAAA,EAAU+pG,yBAEhD,CAAA,CACP,CAGF,CAAA,EhC3VCE,QiC3Dc,SAASjqG,EAAAA,CAExB,MAAMkqG,EAAmBlqG,EAAUogB,qBAGnCpgB,EAAAA,EAAUM,OAAO6pG,aAAe,CAC/BC,YAAa,EAAA,EAEdpqG,EAAUqqG,sBAAwB,GAClCrqG,EAAU8Z,eAAiB,SAASzX,EAAKioG,EAAOC,EAC/C,CAAA,IAAIpH,EAAM,KACNxhG,EAAOU,EAAIV,MAAS3B,EAAU0J,aAAAA,EAIlC,GAHW/H,OAAAA,GAAQ,WAClBA,EAAOsH,KAAK8jB,UAAU8+B,SAASlqD,CAAAA,GAE3B2oG,EA4CJnH,EAAMl6F,KAAKuhG,iBAAiBF,EAAMp/F,WAAYvJ,EAAMU,EAAKioG,CACzDtqG,EAAAA,EAAUyqG,eAAetH,CAAAA,MA7Cd,CACX,IAAIuH,EAAOroG,EAAI8D,UACX0yC,EAAMx2C,EAAIqI,SAOd,UALWggG,GAAQ,WAClBA,EAAOj9F,SAASsyB,eAAe2qE,IAErB7xD,OAAAA,GAAO,WACjBA,EAAMprC,SAASsyB,eAAe8Y,CAC3BA,GAAAA,GAAeA,EAAI13C,OAAnB03C,QAAiDA,EAAIx3B,eAAuB,CAC/E,IAAIspF,EAAO3qG,EAAUk5C,YAAYp2B,UAAU+1B,GAC3CA,EAAM,CACL33C,IAAKypG,EAAKzpG,IAAM23C,EAAIx7B,aACpBlc,KAAMwpG,EAAKxpG,KAEZ,CACIupG,IACJA,EAAO1qG,EAAU4qG,cAAc/xD,CAEhCsqD,IAAAA,EAAMl6F,KAAKuhG,iBAAiBE,EAAM/oG,EAAMU,CAAAA,GAE/BsX,kBACRwpF,EAAIxpF,mBACJuwF,EAAiBrqF,OAAOsjF,EAAK,SAAS,SAAU/+F,EAAAA,CAC/C,IAAIoP,EAAMpP,EAAEE,QAAUF,EAAE8c,WAEpB2pF,EAAO7qG,EAAUk5C,YACrB,GAAI2xD,EAAKtmG,QAAQiP,EAAK,iBAAA,GAAA,CAChBq3F,EAAKtmG,QAAQiP,EAAK,YAAkBq3F,GAAAA,CAAAA,EAAKtmG,QAAQiP,EAAK,eAAgB,CAE1E,IACIs3F,EADWD,EAAKtmG,QAAQiP,EAAK,kBAAA,EACJzP,aAAa,gBAAA,EACtCgsC,EAAU/vC,EAAU+sB,UAAU4D,WAAWm6E,CAAAA,EAE7C9qG,EAAUyqG,eAAexhG,IAAAA,EACzBjJ,EAAU+qG,aAAa9hG,KAAM8mC,EAAS,oBAAA,EACtC9mC,KAAK+hG,WAAaj7D,EACd9mC,KAAKgiG,KAAKjxF,SAAS/Q,KAAKgiG,KAAKjxF,QAAQ5F,KAAKpU,EAAW+vC,EAAS9mC,KAClE,CAEF,GAAE4V,KAAKskF,CAAAA,CAAAA,EAGX,CAKC,GAAInjG,EAAUM,OAAO6pG,aAAaC,YAMjC,QALIt9F,EAAQ9M,EAAU2B,KAAK4nB,YAAY5nB,CAAAA,EACnCoL,EAAM/M,EAAU2B,KAAKC,IAAIkL,EAAO,EAAG,OAAA,EACnChF,EAAMmB,KAAKwsB,UAAU3oB,EAAOC,CAAAA,EAC5B6uB,EAAS3yB,KAAK,UAAYA,KAAKoB,KAAAA,EAC/B6gG,EAAc,CAAA,EACTroG,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CACpC,IAAI6C,EAAKoC,EAAIjF,CAAAA,EACb,IAAI+4B,GAAWA,EAAOl2B,EAAG9C,GAAI8C,GAA7B,CAEA,IAAI2I,EAAI3I,EAAGnE,WAIX,IAHI8M,EAAEjM,QAAY0K,EAAAA,EAAM1K,YACvBiM,EAAIvB,GACLuB,EAAIrO,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKkM,EAAEjM,YACjCiM,EAAI3I,EAAGlE,WACT0pG,EAAAA,CAAa78F,KAChB68F,EAAa78F,CAAAA,CAAAA,EAAAA,GACbpF,KAAK8hG,aAAa5H,EAAK90F,EAAG,gBAE3BA,GAAAA,GAAAA,EAAIpF,KAAKtH,KAAKC,IAAIyM,EAAG,EAAG,QAClBjM,QAAa2K,GAAAA,EAAI3K,QAXd,KAAA,CAAA,CAcV,CAmBF,OAhBA6G,KAAKkiG,yBAAyBhI,CAAAA,EAE9BA,EAAI8H,KAAO5oG,EACPA,EAAI+oG,MAAAA,CAASb,GAChBthG,KAAKohG,sBAAsB/nG,KAAK6gG,CAAAA,EAE7BA,EAAI8H,KAAKI,kBACZlI,EAAI8H,KAAKI,gBAAkBrrG,EAAUkE,YAAY,QAAS,WACzDlE,EAAUsrG,eAAenI,EAAKA,EAAI8H,KAAKtpG,IAC1C,CAAA,CAAA,GAGIsH,KAAK3I,OAAO8c,qBAAuBnU,KAAK3I,OAAOg0C,2BACjD6uD,EAAInqF,aAAa,OAAQ,aAAA,EAGnBmqF,CACR,EACAnjG,EAAU4qG,cAAgB,SAAS/xD,EAuBlC,CAAA,OAtBK5vC,KAAKq6F,aACTr6F,KAAKq6F,WAAa71F,SAASC,cAAc,KACzCzE,EAAAA,KAAKq6F,WAAW30F,UAAY,oBAC5B3O,EAAUI,MAAM6I,KAAKq6F,WAAY,QAAS,SAASl/F,EAAAA,CAAKA,EAAE0xB,aAAAA,EAAsB,CAChFroB,EAAAA,SAASqO,KAAKlO,YAAY3E,KAAKq6F,UAG7BzqD,GAAAA,EAAI13C,OACN8H,KAAKq6F,WAAWriG,MAAME,KAAO03C,EAAI13C,KAAO,MAEtC03C,EAAIx3B,QACNpY,KAAKq6F,WAAWriG,MAAMogB,MAAQw3B,EAAIx3B,MAAQ,MAExCw3B,EAAI33C,MACN+H,KAAKq6F,WAAWriG,MAAMC,IAAM23C,EAAI33C,IAAM,MAEpC23C,EAAIlzB,SACN1c,KAAKq6F,WAAWriG,MAAM0kB,OAASkzB,EAAIlzB,OAAS,MAG7C1c,KAAKq6F,WAAWiI,SAAW,IAAIppG,KAExB8G,KAAKq6F,UACb,EACAtjG,EAAUwrG,gBAAkB,SAASrI,EAAKxhG,EAIzC,CAAA,GAHWA,OAAAA,GAAQ,WAClBA,EAAO3B,EAAU+sB,UAAU8+B,SAASlqD,CAAAA,GAAAA,CAEjCA,GAAQwhG,EAAIv5F,WAAAA,CAAcjI,EAAQwhG,CAAAA,EAAIt5F,UACzC,OAAO,KAMR,QAJIo4C,EAAQkhD,EAAIjoF,cAAc,gBAAkBrL,EAAAA,WAAW,GAEvD47F,EAAU,EACVC,EAAM,IAAIvpG,KAAKghG,EAAIt5F,SAAAA,EAAAA,CAChBZ,KAAKtH,KAAKC,IAAI8pG,EAAK,EAAG,MAAY/pG,GAAAA,CAAAA,GACxC+pG,EAAMziG,KAAKtH,KAAKC,IAAI8pG,EAAK,EAAG,MAC5BD,EAAAA,IAGD,IAAIp3C,EAAKr0D,EAAUM,OAAOgpB,gBACtBxb,GAAOnM,EAAKyF,OAAaitD,IAAAA,EAAK,EAAI,KAAOA,EAAK,EAAI,GAEtD,MAAMs3C,EAAU1pD,EAAM/mC,cAAc,gCAAgCuwF,EAAU,CAAA,mCAAoC39F,EAAM,CACxH,GAAA,EAAA,OAAG69F,EACKA,EAAQ77F,WAER,IAET,EACA9P,EAAU+qG,aAAe,SAAS5H,EAAKxhG,EAAMF,EAC5C,CAAA,IAAIuJ,EAAM/B,KAAKuiG,gBAAgBrI,EAAKxhG,CAAAA,EAChCqJ,IAGJA,EAAI2D,WAAa,IAAMlN,EACxB,EACAzB,EAAUyqG,eAAiB,SAAStH,EAAKxhG,EAAMF,EAG9C,CAAA,GADAA,EAAMA,GAAO,qBADbE,EAAOA,GAAQwhG,EAAI6H,WAEnB,CACA,IAAIzrF,EAAKtW,KAAKuiG,gBAAgBrI,EAAKxhG,CAC/B4d,EAAAA,IAEJA,EAAG5Q,WAAa4Q,EAAG5Q,WAAa,IAAI6R,QAAQuP,OAAOtuB,EAAK,GAJtC,CAAA,EAAA,CAKnB,EACAzB,EAAU4rG,eAAiB,SAAS/8F,EAMnC,CAAA,QALIswC,EAAQtwC,GAAS,IACjB1N,EAAO,EAEP0qG,EAAgBp+F,SAASC,cAAc,KAAA,EACvCo+F,EAAa7iG,KAAKtH,KAAKY,WAAWvC,EAAU0J,gBACvC7G,EAAI,EAAGA,EAAI,EAAGA,IACtBoG,KAAKuF,MAAM3L,CAAKoM,EAAAA,KAAK+D,MAAMmsC,GAAQ,EAAIt8C,EACvCoG,EAAAA,KAAKs1C,iBAAiB17C,EAAG1B,EAAM2qG,EAAYD,CAAAA,EAC3CC,EAAa7iG,KAAKtH,KAAKC,IAAIkqG,EAAY,EAAG,KAC1C3sD,EAAAA,GAAQl2C,KAAKuF,MAAM3L,GACnB1B,GAAQ8H,KAAKuF,MAAM3L,CAAAA,EAGpB,OADAgpG,EAAcvzC,UAAU3pD,WAAa,sBAC9Bk9F,CACR,EACA7rG,EAAUsrG,eAAiB,SAASjpG,EAAKo9C,EACxCp9C,CAAAA,EAAI4oG,KAAKtpG,KAAO89C,EAChBx2C,KAAK6Q,eAAezX,EAAI4oG,KAAM5oG,IAC/B,CAAA,EACArC,EAAU+rG,iBAAmB,CAAC,SAAU,QACxC/rG,EAAAA,EAAUwqG,iBAAmB,SAASnoG,EAAKo9C,EAAIwrD,EAAMe,GAEpD,IAAIC,EAAKjsG,EAAU+sB,UACf5E,EAAOlf,KAAKuF,MAChBvF,KAAKuF,MAAQ,GACb,IAAI09F,EAAQjjG,KAAKoB,MACjBpB,KAAKoB,MAAQ,WACb,IAAI8hG,EAAQljG,KAAKgwC,OACjBhwC,KAAKgwC,OAAS,CAACrqC,OAAQ,CACvB,EAAA,IAAIw9F,EAAQ,IAAIjqG,KAAK8G,KAAKY,SAAAA,EACtBwiG,EAAQ,IAAIlqG,KAAK8G,KAAKW,SAAAA,EACtB0iG,EAAQ,IAAInqG,KAAKnC,EAAUiT,KAAAA,EAC3Bs5F,EAAQN,EAAG9wE,UACXqxE,EAAQvjG,KAAKowC,kBAAmBpwC,KAAKowC,kBAAoB,EAC7D4yD,EAAG9wE,UAAY8wE,EAAG79C,cAElB3O,EAAKx2C,KAAKtH,KAAK4nB,YAAYk2B,GAC3B,IAEIpxC,EAFAw9F,EAAgB5iG,KAAK2iG,eAAevpG,EAAIkb,YAAc,EAAItU,KAAK3I,OAAO6pG,aAAasC,OAGnFT,EAAAA,EACH39F,EAAI29F,GAEJ39F,EAAIZ,SAASC,cAAc,QACzBiB,UAAY,sCAEfN,EAAE2K,aAAa,OAAQ/P,KAAK6oB,SAASmX,WAAWwW,CAAAA,CAAAA,EAChDpxC,EAAEV,UAAY,+DAEX3N,EAAUM,OAAOo0C,IAAM,kBAAoB,MAC5C,+BAA+Bm3D,EAAgBA,EAAcl+F,UAAY,IAH7D,gDAMd,IAAI4tB,EAASltB,EAAE6M,cAAc,iBACzBwxF,EAAAA,EAAar+F,EAAE6M,cAAc,gBAAA,EAC7BY,EAAOzN,EAAE6M,cAAc,gBAG3B,EAAA,GADAqgB,EAAO5tB,UAAY1E,KAAK8jB,UAAUmhC,eAAezO,CAC7CwrD,EAAAA,EAAKlxF,WA4BR,QA3BI4yF,EAAyB,SAAS1yF,EAAUmgC,EAC/C,CAAA,IAAIz4C,EAAO3B,EAAU2B,KAAKC,IAAIqY,EAAShH,MAAOmnC,EAAM,SACpDp6C,EAAUsrG,eAAerxF,EAAUtY,CAAAA,EAC/B3B,EAAUiT,MAAM6D,SAAAA,GAAcmD,EAAShH,MAAM6D,SAAc9W,GAAAA,EAAUiT,MAAM4D,YAAAA,GAAiBoD,EAAShH,MAAM4D,YAAAA,GAC9G7W,EAAUmrG,yBAAyBlxF,EAEvC,EAEM2yF,EAAiB,CAAC,sBAAuB,uBACzCC,EAAY,CAAC,sCAAuC,iDAAA,EACpDC,EAAQ,CAAE,GAAG,CACb9yF,EAAAA,EAAU,SAASogC,EACtB,CAAA,OAAO,UACN,CAAA,GAAI6wD,EAAKG,KAER,QADI2B,EAAY/sG,EAAUqqG,sBACjB99F,EAAI,EAAGA,EAAIwgG,EAAUjqG,OAAQyJ,IACrCogG,EAAuBI,EAAUxgG,GAAI6tC,CAGlCp6C,OAAAA,EAAUM,OAAOo0C,MACpB0F,GAAQA,GAETuyD,EAAuBt+F,EAAG+rC,CAAAA,CAE/B,CACA,EACMniB,EAAS,CAACj4B,EAAUooB,OAAO6P,OAAOuS,KAAMxqC,EAAUooB,OAAO6P,OAAOld,IAC3D4T,EAAAA,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAC3B,IAAIq+E,EAAQv/F,SAASC,cAAc,KAAA,EAEnCs/F,EAAMr+F,UAAYi+F,EAAej+E,CAAAA,EAEjC3uB,EAAUg/B,SAAS6e,wBAAwBmvD,EAAO/0E,EAAOtJ,CAEzDq+E,CAAAA,EAAAA,EAAM/rG,MAAM6lC,QAAU+lE,EAAUl+E,CAChCq+E,EAAAA,EAAMr/F,UAAY1E,KAAK8iG,iBAAiBp9E,CACxC4M,EAAAA,EAAO3tB,YAAYo/F,CACnB9C,EAAAA,EAAiBrqF,OAAOmtF,EAAO,QAAShzF,EAAQ8yF,EAAMn+E,CACtD,CAAA,CAAA,CAAA,CAEFtgB,EAAE4E,MAAQ,IAAI9Q,KAAKs9C,CAAAA,EAEnBpxC,EAAE9L,YAAck9C,EAAGr4C,OAAY6B,GAAAA,KAAK3I,OAAOgpB,gBAAkB,EAAI,GAAK,GAAK,EAE3E,IAAI2H,EAAK5iB,EAAExE,UAAYZ,KAAKtH,KAAKY,WAAWk9C,CAC5CpxC,EAAAA,EAAEzE,UAAYX,KAAKtH,KAAKC,IAAIyM,EAAExE,UAAW,EAAG,MAAA,EAE5CZ,KAAK03C,mBAAmB7kC,EAAM2jC,EAAIxuB,EAAI,CAEjC+6E,EAAAA,GACJ3pG,EAAIuL,YAAYS,CAAAA,EAEjBq+F,EAAWzrG,MAAM2N,OAAU89F,EAAW78F,WAAW,CAAGwN,EAAAA,aAAe,EAAK,KAExE,IAAImpC,EAAWxmD,EAAUiM,IACzBjM,EAAAA,EAAUg/B,SAASunB,cAAchrB,EAAQirB,CACzCxmD,EAAAA,EAAUg/B,SAASynB,YAAYp4C,EAAE6M,cAAc,gBAAA,EAAmBsrC,CAClExmD,EAAAA,EAAUg/B,SAAS0nB,WAAWgmD,CAAAA,EAG9B,QADIO,EAAaP,EAAWhqG,iBAAiB,gBACrCG,EAAAA,EAAI,EAAGA,EAAIoqG,EAAWnqG,OAAQD,IACrC7C,EAAUg/B,SAAS6nB,gBAAgBomD,EAAWpqG,CAAAA,CAAAA,EAE/C,IAAIqqG,EAAWpxF,EAAKpZ,iBAAiB,qBAAA,EACjCmvC,EAAY,IAAI1vC,KAAK8uB,CACzB,EAAA,IAAQpuB,EAAI,EAAGA,EAAIqqG,EAASpqG,OAAQD,IAEnC7C,EAAUg/B,SAAS2nB,eAAeumD,EAASrqG,GAAI,IAAIV,KAAK0vC,CACxDA,CAAAA,EAAAA,EAAY7xC,EAAU2B,KAAKC,IAAIiwC,EAAW,EAAG,OAc9C,OAXA7xC,EAAUg/B,SAASunB,cAAchrB,EAAQirB,CAGzCv9C,EAAAA,KAAKuF,MAAQ2Z,EACblf,KAAKoB,MAAQ6hG,EACbjjG,KAAKgwC,OAASkzD,EACdljG,KAAKY,UAAYuiG,EACjBnjG,KAAKW,UAAYyiG,EACjBrsG,EAAUiT,MAAQq5F,EAClBL,EAAG9wE,UAAYoxE,EACftjG,KAAKowC,kBAAoBmzD,EAClBn+F,CACR,EACArO,EAAU6Z,gBAAkB,SAASspF,EAAKjsF,EACpCisF,CAAAA,CAAAA,GAAOl6F,KAAKq6F,YAAcr6F,KAAKq6F,WAAWxzF,aAC1CoH,GAAS,IAAK/U,OAAQC,QAAY6G,EAAAA,KAAKq6F,WAAWiI,SAASnpG,QAAAA,EAAY,OAC1E+gG,EAAMl6F,KAAKq6F,WAAWxzF,YAEnBqzF,IACL+G,EAAiBlqF,YAEjBmjF,EAAIx1F,UAAY,GACZw1F,EAAIj4F,YACPi4F,EAAIj4F,WAAWC,YAAYg4F,CAAAA,EACxBl6F,KAAKq6F,aACRr6F,KAAKq6F,WAAWriG,MAAMC,IAAM,WAE1BiiG,EAAI8H,MAAQ9H,EAAI8H,KAAKI,iBACvBrrG,EAAUkf,YAAYikF,EAAI8H,KAAKI,eACjC,EAAA,EACArrG,EAAU4Z,kBAAoB,UAC7B,CAAA,MAAA,CAAA,EAAI3Q,KAAKq6F,YAAcpgF,SAASja,KAAKq6F,WAAWriG,MAAMC,IAAK,IAAM,IACzD+H,KAAKq6F,UAEd,EAEAtjG,EAAUkE,YAAY,mBAAoB,UACzClE,CAAAA,EAAUI,MAAMqN,SAASqO,KAAM,QAAS,UAAA,CAAa9b,EAAU6Z,gBAAkB,CAAA,CAAA,CAClF,EAAG,CAACuE,OAIJpe,CAAAA,EAAAA,EAAU+4D,YAAY1K,cAAgB,CACrC54C,OAAQ,SAASikD,EAChB,CAAA,IAAIh4D,EAAO,4HAEPuC,EAAMjE,EAAUM,OAChB25D,EAAKhxD,KAAKtH,KAAKwF,UAAUnH,EAAU0J,gBAEnCwwD,EAAO,KAASlQ,EAAQ,EACxB/lD,EAAIk2D,oBACPnQ,EAAQ,GAAK/lD,EAAI8F,WACjBmwD,EAAO,GAAKj2D,EAAI+F,UAAY,GAE7BiwD,EAAGtxD,SAASqhD,EAAQ,EAAA,EAEpB0P,EAAIgB,aAAe,CAAA,EACnBh5D,GAAQ,6CACR,QAASmB,EAAImnD,EAAOnnD,EAAIq3D,EAAMr3D,GAA6B,EAAxBoG,KAAK3I,OAAO83C,UAE9C12C,GAAQ,kBAAoBmB,EAAI,KADrBoG,KAAK8jB,UAAUygC,YAAYyM,GACQ,YAC9CP,EAAIgB,aAAap4D,KAAKO,GACtBo3D,EAAKhxD,KAAKtH,KAAKC,IAAIq4D,EAAIhxD,KAAK3I,OAAO83C,UAAW,QAAA,EAM/C,MAAO,uDAJP12C,GAAQ,aAI8D,yEAA2EA,EAAO,QACxJ,EACDw3D,UAAW,SAASt4C,EAAMrG,EAAO7U,EAAIpF,EAAAA,CAEpC,IAEIiB,EACHC,EAHG2rG,EAASvsF,EAAK0Z,qBAAqB,OACnC8yE,EAAAA,EAAUxsF,EAAK0Z,qBAAqB,UAIpC6Z,EAAa,SAASk5D,EAAK1rG,EAAMowE,GACpC/xE,EAAUI,MAAMitG,EAAK,QAAS,WAC7BrtG,EAAU6Z,gBAAgB,KAAM,EAAA,EAChC7Z,EAAU8Z,eAAe,CACxBpP,SAAU2iG,EACV1rG,KAAM,IAAIQ,KAAK8G,KAAKgK,KAAAA,EACpB8G,WAAY,GACZC,QAAS,SAASszF,GACjBD,EAAI9yF,MAAQva,EAAU+sB,UAAUshC,cAAci/C,CAC9CD,EAAAA,EAAIp6F,MAAQ,IAAI9Q,KAAKmrG,CACrBttG,EAAAA,EAAU6Z,gBACN7Z,EAAAA,EAAUM,OAAO63C,gBAAkBn4C,EAAUM,OAAO06D,eAAiB+W,IAAW,GACnFw7B,EAAAA,CAED,CAEN,CAAA,CAAA,CAAA,CACA,EAEE,GAAIvtG,EAAUM,OAAO0pC,SAAU,CAC9B,GAAKppB,CAAAA,EAAKg6C,UAAW,CACpB,IAAIl5D,EAAO,mFAAqF1B,EAAUooB,OAAO6P,OAAO+R,SAAW,yBAC9HhqC,EAAUM,OAAO44B,YACrBx3B,EAAOkf,EAAKiW,gBAAgBlpB,UAAYjM,GACzCkf,EAAKiW,gBAAgBlpB,UAAYjM,EACjCkf,EAAKg6C,UAAY,EACjB,CACD,IAAI54C,EAAQpB,EAAKiW,gBAAgByD,qBAAqB,OAAA,EAAS,GAE3DkzE,EAAkBxtG,EAAU2B,KAAKwnB,UAAUzjB,EAAGnE,UAAAA,IAAgB,GAAKvB,EAAU2B,KAAKwnB,UAAUzjB,EAAGlE,QAAAA,IAAc,EACjHwgB,EAAM64C,QAAU2yC,EAEhBJ,EAAQ,CAAA,EAAGtyC,SAAW94C,EAAM64C,QAC5BuyC,EAAQ,CAAA,EAAGtyC,SAAW94C,EAAM64C,QAEvB74C,EAAMrI,kBACVqI,EAAMrI,gBAAkB,GACxB3Z,EAAUI,MAAM4hB,EAAO,QAAS,UAAA,CAC/B,GAAIA,EAAM64C,UAAY,GAAM,CAC3B,IAAIx4D,EAAM,CAAA,EACVrC,EAAU+4D,YAAY1K,cAAc2K,UAAUp4C,EAAMve,CAAAA,EAEpDd,EAAavB,EAAU2B,KAAKwF,UAAU9E,EAAId,UAC1CC,GAAAA,EAAAA,EAAWxB,EAAU2B,KAAKwF,UAAU9E,EAAIb,QAAAA,IAAAA,CAEtBD,IAAgBC,GAAaD,CAAAA,IAAemE,EAAGlE,SAASsI,SAAiD,IAAlC,GAAKpE,EAAGlE,SAAS4J,eAAiB,MAC1H5J,EAAWxB,EAAU2B,KAAKC,IAAIJ,EAAU,EAAG,KAAA,EAC5C,CAED,IAAIsL,EAAQvL,GAAcmE,EAAGnE,WACzBwL,EAAMvL,GAAYkE,EAAGlE,SACzBisG,EAAeN,EAAO,CAAIrgG,EAAAA,CAAAA,EAC1B2gG,EAAeN,EAAO,GAAIpgG,CAC1BqgG,EAAAA,EAAQ,CAAG7yF,EAAAA,MAA2B,GAAnBzN,EAAMhD,SAAAA,EAAkBgD,EAAM1B,WAAAA,EACjDgiG,EAAQ,CAAG7yF,EAAAA,MAAyB,GAAjBxN,EAAIjD,WAAkBiD,EAAI3B,WAAAA,EAE7CgiG,EAAQ,CAAA,EAAGtyC,SAAW94C,EAAM64C,QAC5BuyC,EAAQ,CAAA,EAAGtyC,SAAW94C,EAAM64C,OAEjC,CAEG,EAAA,CACD,GAAI76D,EAAUM,OAAO63C,gBAAkBn4C,EAAUM,OAAO06D,cAAe,CAEtE,IAAIuyC,EAAyB,WACtBvtG,EAAUM,OAAO06D,eAAiBh7D,EAAUM,OAAO63C,iBAIzD52C,EAAavB,EAAU2B,KAAKC,IAAIurG,EAAO,CAAA,EAAGl6F,MAAOm6F,EAAQ,GAAG7yF,MAAO,QAAA,EACnE/Y,EAAW,IAAIW,KAAKZ,EAAW2nB,QAAAA,EAA+C,GAAlClpB,EAAUM,OAAO63C,eAAsB,GAAA,EAEnFg1D,EAAO,CAAA,EAAG5yF,MAAQva,EAAU+sB,UAAUshC,cAAc7sD,GACpD2rG,EAAO,CAAA,EAAGl6F,MAAQjT,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKX,CAAAA,CAAAA,EAEpD4rG,EAAQ,CAAG7yF,EAAAA,MAA8B,GAAtB/Y,EAASsI,WAAkBtI,EAAS4J,WAAAA,EAC3D,EAEOgiG,EAAQ,GAAGzzF,iBACdyzF,EAAQ,CAAG5tF,EAAAA,iBAAiB,SAAU+tF,CAEvC,CAAA,CAED,SAASE,EAAeJ,EAAK1rG,EAAMowE,EAAAA,CAClC59B,EAAWk5D,EAAK1rG,EAAMowE,CACtBs7B,EAAAA,EAAI9yF,MAAQva,EAAU+sB,UAAUshC,cAAc1sD,CAAAA,EAC9C0rG,EAAIp6F,MAAQjT,EAAU2B,KAAKwF,UAAU,IAAIhF,KAAKR,GAC9C,CAMD,SAAS+rG,EAAe/rG,EAAAA,CAMvB,QALIu5D,EAAc56D,EAAOo6D,aACrBS,EAAiC,GAAlBx5D,EAAKmI,SAAkBnI,EAAAA,EAAKyJ,aAC3CgwD,EAAcD,EACdE,EAAc,GAET9uD,EAAI,EAAGA,EAAI2uD,EAAYp4D,OAAQyJ,IAAK,CAC5C,IAAI+uD,EAAMJ,EAAY3uD,CACtB,EAAA,GAAI+uD,IAAQH,EAAc,CACzBE,EAAc,GACd,KACA,CACGC,EAAMH,IACTC,EAAcE,EACf,CAED,OAAKD,GAAeD,EAGbv4D,EAAgBs4D,EAAeC,IACtC,CAxBDqyC,EAAeN,EAAO,GAAIznG,EAAGnE,WAAY,CACzCksG,EAAAA,EAAeN,EAAO,CAAIznG,EAAAA,EAAGlE,SAAU,CAAA,EACvC2yC,EAAa,UAAW,CAAA,EAwBxBi5D,EAAQ,CAAA,EAAG7yF,MAAQmzF,EAAehoG,EAAGnE,UACrC6rG,EAAAA,EAAQ,GAAG7yF,MAAQmzF,EAAehoG,EAAGlE,QAAAA,CAErC,EACDw3D,UAAW,SAASp4C,EAAMlb,EAAAA,CACzB,IAAIynG,EAASvsF,EAAK0Z,qBAAqB,OAAA,EACnC8yE,EAAUxsF,EAAK0Z,qBAAqB,QAOxC,EAAA,OALA50B,EAAGnE,WAAavB,EAAU2B,KAAKC,IAAIurG,EAAO,CAAGl6F,EAAAA,MAAOm6F,EAAQ,CAAA,EAAG7yF,MAAO,QAAA,EACtE7U,EAAGlE,SAAWxB,EAAU2B,KAAKC,IAAIurG,EAAO,CAAA,EAAGl6F,MAAOm6F,EAAQ,CAAA,EAAG7yF,MAAO,QAAA,EAEhE7U,EAAGlE,UAAYkE,EAAGnE,aACrBmE,EAAGlE,SAAWxB,EAAU2B,KAAKC,IAAI8D,EAAGnE,WAAYvB,EAAUM,OAAO83C,UAAW,QAAA,GACtE,CACN72C,WAAY,IAAIY,KAAKuD,EAAGnE,YACxBC,SAAU,IAAIW,KAAKuD,EAAGlE,UAEvB,EACDy+B,MAAO,SAASrf,EAAAA,CACf,GAEF5gB,EAAU2tG,aAAe,SAAS1zF,EAAU2zF,GAC3C,IAAItpE,EAAS,UACZ,CAAA,IAAI3iC,EAAO3B,EAAUiT,MACjB46F,EAAU,IAAI1rG,KAAKR,EAAKS,QAAAA,CAAAA,EAI5B,OAHIwrG,IAAUC,EAAUD,EAASC,CAAAA,GACjCA,EAAQrkF,QAAQ,GAChBxpB,EAAUsrG,eAAerxF,EAAU4zF,CAAAA,EAAAA,EAErC,EAEC7tG,EAAUkE,YAAY,eAAgBogC,CACtCtkC,EAAAA,EAAUkE,YAAY,QAASogC,GAC/BtkC,EAAUkE,YAAY,eAAgBogC,CAAAA,EACtCtkC,EAAUkE,YAAY,iBAAkBogC,CACxCtkC,EAAAA,EAAUkE,YAAY,iBAAkBogC,CAAAA,EACxCA,EACD,CAAA,EAEAtkC,EAAUmrG,yBAA2B,SAASlxF,EAC7C,CAAA,IAAIooB,EAAQriC,EAAUwE,SAAAA,EAClBioB,EAAO4V,EAAMr0B,SACb2e,EAAK0V,EAAMp0B,SACX9J,EAAOk+B,EAAMl+B,KAEbolB,EAAcvpB,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAK8X,EAAShH,KAAAA,CAAAA,EAC3D66F,EAAY9tG,EAAU2B,KAAKC,IAAI2nB,EAAa,EAAG,OASnD,EAAA,GAAA,EAPkB,CACjBmhB,MAAAA,GACAD,KAAO,GACP0I,OAAS,GACTC,OAGcjvC,EAAAA,CAAAA,GAAUsoB,EAAKrqB,QAAAA,GAAamnB,EAAYnnB,QAAauqB,GAAAA,EAAGvqB,QAAa0rG,GAAAA,EAAU1rG,WAK9F,QADIy+F,EAAUp0E,EACRo0E,EAAQz+F,QAAYuqB,EAAAA,EAAGvqB,QACxBmnB,GAAAA,EAAYnnB,QAAay+F,GAAAA,EAAQz+F,QAAa0rG,GAAAA,EAAYjN,GAC7D7gG,EAAU+qG,aAAa9wF,EAAU4mF,EAAS,sBAE3CA,EAAU7gG,EAAU2B,KAAKC,IAAIi/F,EAAS,EAAG,KAAA,CAE3C,EAEA7gG,EAAUkE,YAAY,gBAAiB,UAAA,CACtClE,EAAU6Z,gBAAgB,OAC3B,CAAA,CAAA,EAEA7Z,EAAUkE,YAAY,YAAa,UAClClE,CAAAA,EAAU6Z,gBACX,CAAA,CAAA,CAEA,EjCjgBCk0F,YkC5Dc,SAAS/tG,EAExBA,CAAAA,EAAUkE,YAAY,mBAAmB,UAAA,CACxClE,EAAUub,GAAG+X,aAAe,EAE5B,IAAIxK,EAAM9oB,EAAU6V,iBACpB7V,EAAU6V,iBAAiB,UAC1B,CAAA,IAAIpG,EAAOxG,KAAKO,KAAmB,aAAE,CAAA,EACrCiG,EAAKK,WAAW+9E,OAAAA,GAEhB/kE,EAAIjd,MAAM7L,EAAUkS,SAAAA,EAIpB,IAAItD,EAASsU,SAASzT,EAAKxO,MAAM2N,MACjCa,EAAAA,EAAKxO,MAAM2N,OAAO,MAClBa,EAAKxO,MAAM2N,OAAOa,EAAK+hD,aAAa,KAEpCvoD,KAAK+pB,KAAK/xB,MAAM2N,OAAS3F,KAAK+pB,KAAK1W,aAAe7M,EAAK+hD,aAAe5iD,EAAS,IACjF,EAEC,IAAIo/F,EAAMhuG,EAAU2gD,mBACpB3gD,EAAU2gD,mBAAmB,SAAShkC,EAAEC,EAAE/U,EAAEwG,EAAAA,CAC3C,IAAIuV,EAAQ,CAACtH,aAAa,GAAA,EAC1B0xF,EAAMniG,MAAM7L,EAAU,CAAC4jB,EAAMhH,EAAE/U,EAAEwG,IACjCsO,EAAEhP,UAAYiW,EAAMjW,SACtB,CAEA,CAEA,CAAA,ElC+BCvK,amC3Dc,SAASpD,GACvBoiE,GAAqB,eAAgBpiE,EAAU2oD,MAAAA,CAChD,EnC0DCslD,YoC9Dc,SAASjuG,EA2BxBA,CAAAA,EAAU+4D,YAAyB,YAAE,CACpCtjD,OAAO,SAASikD,GACf,IAAIj4D,EAAM,6CAA6Ci4D,EAAI36C,KACtD26C,EAAIg4B,WACRjwF,GAAO,sCAIR,QADI0uE,EAAU,eAAe1uE,EAAI,wCAAwCi4D,EAAI9qD,OAAO,6BAC3E/L,EAAE,EAAGA,EAAE62D,EAAIn0D,QAAQzC,OAAQD,IACnCstE,GAAW,wCAAwCzW,EAAIn0D,QAAQ1C,CAAGqQ,EAAAA,IAAI,MAAMwmD,EAAIn0D,QAAQ1C,CAAGisB,EAAAA,MAAM,WAGlG,OADAqhD,GAAW,QAEX,EACDjX,UAAU,SAASt4C,EAAKrG,EAAM7U,EAAGpF,EAGhC,CAAA,QADI4tG,EAAYttF,EAAK0Z,qBAAqB,OAAA,EAClCz3B,EAAE,EAAEA,EAAEqrG,EAAUprG,OAAOD,IAC9BqrG,EAAUrrG,CAAAA,EAAGg4D,QAAU,GAGxB,SAASszC,EAAa/hG,EAAAA,CAErB,QADI8hG,EAAYttF,EAAK0Z,qBAAqB,OAClCz3B,EAAAA,EAAE,EAAEA,EAAEqrG,EAAUprG,OAAQD,IAC/BqrG,EAAUrrG,CAAGg4D,EAAAA,QAAAA,CAAAA,CAAazuD,EAAI8hG,EAAUrrG,GAAG0X,KAE5C,CAAA,CAED,IAAI6zF,EAAO,CAAA,EACX,GAAI1oG,EAAGpF,EAAO6C,QAAS,CACtB,IAAIglE,GAAWziE,EAAGpF,EAAO6C,MAAU,EAAA,IAAII,MAAMjD,EAAOi2E,WAAav2E,EAAUM,OAAOkD,mBAAqB,GAAA,EACvG,IAASX,EAAI,EAAGA,EAAIslE,EAAQrlE,OAAQD,IACnCurG,EAAKjmC,EAAQtlE,CAAAA,CAAAA,EAAAA,GAEdsrG,EAAaC,CAAAA,CAChB,KAAS,CACN,GAAIpuG,EAAUu8B,YAAAA,CAAej8B,EAAO+tG,WACnC,OACD,IAAIC,EAAa7gG,SAASC,cAAc,OACxC4gG,EAAW3/F,UAAY,cACvB2/F,EAAWrtG,MAAM6lC,QAAU,2CAC3BlmB,EAAKhT,YAAY0gG,GAEjB,IAAI9hF,EAAM,CACTlsB,EAAO+tG,WACN/tG,EAAO+tG,WAAWr+F,QAAQ,SAAa,IAAM,IAC9C,iBAAmB1P,EAAO6C,OAAS,IAAMuC,EAAG9C,GAAK,QAAU5C,EAAUiM,IACpEqB,CAAAA,EAAAA,KAAK,EAEPtN,EAAAA,EAAUmtB,KAAKC,IAAIZ,EAAK,SAAS0B,EAAAA,CAChC,IAAI3oB,EAjER,SAA0B2oB,EAAQ5tB,GACjC,GAGC,CAAA,QAFIsa,EAAQ4M,KAAKsG,MAAMI,EAAOL,OAAOE,YAAAA,EACjC3hB,EAAM,CAAA,EACDvJ,EAAI,EAAGA,EAAI+X,EAAM9X,OAAQD,IAAK,CACtC,IAAI+sB,EAAShV,EAAM/X,CAEnBuJ,EAAAA,EAAIwjB,EAAOrV,OAASqV,EAAO1c,KAAO0c,EAAOhtB,MACzC,CACD,OAAOwJ,CACP,MAAMhI,CACN,OAAO,IACP,CACF,EAoDmC8pB,CAC3B3oB,EAAAA,IACHA,EA5EL,SAAyB2oB,EAAQ5tB,EAGhC,CAAA,QAFIsa,EAAQ5a,EAAUmtB,KAAKoB,MAAM,cAAeL,EAAOL,MAAAA,EACnDzhB,EAAM,CAAA,EACDvJ,EAAI,EAAGA,EAAI+X,EAAM9X,OAAQD,IACjCuJ,EAAIwO,EAAM/X,CAAAA,EAAGkB,aAAazD,EAAO6C,MAAAA,CAAAA,EAAAA,GAElC,OAAOiJ,CACR,EAqE+B8hB,EAAQ5tB,IAEnC6tG,EAAa5oG,CAAAA,EACbqb,EAAKzV,YAAYmjG,EACrB,CACG,CAAA,CACD,EACDt1C,UAAU,SAASp4C,EAAKlb,EAAGpF,EAG1B,CAAA,QAFI6vE,EAAU,CAAA,EACV+9B,EAAYttF,EAAK0Z,qBAAqB,OAClCz3B,EAAAA,EAAE,EAAEA,EAAEqrG,EAAUprG,OAAOD,IAC3BqrG,EAAUrrG,CAAAA,EAAGg4D,SACfsV,EAAQ7tE,KAAK4rG,EAAUrrG,CAAAA,EAAG0X,OAE5B,OAAO41D,EAAQ7iE,KAAKhN,EAAOi2E,WAAav2E,EAAUM,OAAOkD,mBAAqB,GAAA,CAC9E,EAEDy8B,MAAM,SAASrf,EACd,CAAA,CAAA,CAGF,EpCrCC2tF,YqC/Dc,SAASvuG,EASvB,CAAA,IAAI8oB,EAAM9oB,EAAUusB,MACpBvsB,EAAUusB,MAAM,SAASC,EAAIC,EAAAA,CAE5B,GAAkB,OADlBD,EAAIA,GAAKvjB,KAAKyjB,YACI,SAEjB,QADIta,EAVN,SAAgB/P,EACf,CAAA,IAAI+P,EAAI,UAAA,GAER,OADAA,EAAEqF,UAAYpV,EACP+P,CACP,EAMgBnJ,KAAKqjB,OAAAA,EACXzpB,EAAE,EAAGA,EAAI2pB,EAAI1pB,OAAQD,IAC7BoG,KAAKqjB,QAAQ,IAAIla,EACjB0W,EAAI1U,KAAKnL,KAAKujB,EAAI3pB,CAAAA,EAAG4pB,CAGtB3D,OAAAA,EAAIjd,MAAM5C,KAAKiJ,SAAAA,CAClB,CAEA,ErC0CCs8F,IsChEc,SAASxuG,EAAAA,CAEvB,IAiBIyuG,EAjBAxqG,EAAM,CACTyqG,OAAAA,EAID,EAAA,SAASC,EAASjpG,EACjB,CAAA,IAAIrD,EAAM,CAAA,EACV,QAAS6Q,KAAOxN,EACXwN,EAAIlD,QAAQ,GACf3N,IADwB,IACxBA,EAAI6Q,GAAOxN,EAAGwN,CAAAA,GAKhB,OAHKjP,EAAIyqG,eACDrsG,EAAIO,GAELP,CACP,CAmBD,SAASusG,EAAiBzL,EAAAA,CACzBA,EAAI1xE,YAAAA,GACA0xE,EAAIzxE,cACPyxE,EAAIttF,iBAAAA,EACLstF,EAAI3xE,SAAAA,GAEJ2xE,EAAIr6F,UAAU,QAAS,CAAA,CAAA,CACvB,CAGD,SAAS+lG,EAAQC,EAChB,CAAA,OAAO7qG,EAAIyqG,OAASI,EAAMlsG,GAAKksG,EAAMC,GACrC,CAEF/uG,EAAUgvG,SAAW,SAASz/E,EAAQjvB,EAAAA,CACjCA,IAAQ2D,EAAM3D,GAElBivB,EAAO1Q,KAAK,SAAU,SAASiwF,EAAO/a,EACrC,CAAA,IAAIgb,EAAMF,EAAQC,CAAAA,EACdppG,EAAK1F,EAAUqsB,QAAQ0iF,CAAOD,EAAAA,EAAMG,OACxCvpG,EAAAA,EAAG9C,GAAKmsG,EAER/uG,EAAUqvB,YAAY3pB,CAAAA,EArCtB8S,aAAai2F,CACbA,EAAAA,EAAel2F,WAAW,UAAA,CACzB,GAAGvY,EAAU0c,WACZ,MAAO,GAER1c,EAAU2V,WACV,CAAA,EAAC,CAiCJ,CAAA,CAAA,EACC4Z,EAAO1Q,KAAK,SAAU,SAASiwF,EAAOI,GACrC,IAAIH,EAAMF,EAAQC,CAAAA,EACd9uG,EAAUqsB,QAAQ0iF,CAAAA,GACrB/uG,EAAUg9B,YAAY+xE,CACzB,CAAA,CAAA,EAEC,IAAII,EAAQ,GACZ,SAASC,GAAAA,CACR,GAAGpvG,EAAU0c,WACZ,MAAO,GAEJyyF,EAAMrsG,SACT9C,EAAU8tB,MAAMqhF,EAAO,MACvBA,EAAAA,EAAQ,GAET,CAED5/E,EAAO1Q,KAAK,MAAO,SAASiwF,EAAOI,EAAAA,CAClC,IAAIH,EAAMF,EAAQC,CAClB,EAAA,GAAA,CAAK9uG,EAAUqsB,QAAQ0iF,GAAK,CAC3B,IAAIrpG,EAAMopG,EAAMG,SAChBvpG,EAAG9C,GAAKmsG,EACR/uG,EAAUqvB,YAAY3pB,CAEtBypG,EAAAA,EAAM7sG,KAAKoD,CAAAA,EACPypG,EAAMrsG,QAAU,GACnByV,WAAW62F,EAAe,EAC3B,CACH,CAAA,EAEC7/E,EAAO1Q,KAAK,UAAW,SAASxc,EAAAA,CA7DhC,IAAyB8gG,EA8DpB9gG,aAAegtG,SAASC,cA9DJnM,EA+DPnjG,GA9DbwxB,YACJ2xE,EAAI1xE,YAAc,GAElB0xE,EAAIr6F,UAAU,QAAS,CA4DzB,CAAA,EAAA,CAAA,EACCymB,EAAO1Q,KAAK,OAAQ,SAASxc,GACxBA,aAAegtG,SAASC,YAC3BV,EAAiB5uG,EACpB,CACCuvB,EAAAA,EAAO1Q,KAAK,QAAS,SAASxc,EACzBA,CAAAA,aAAegtG,SAASC,YAC3BV,EAAiB5uG,CACpB,CAAA,CAAA,EAGCA,EAAUkE,YAAY,iBAAkB,SAAStB,EAAAA,CAChD,IAAI8C,EAAK,IAAI6pB,EAAOu/E,MAAM9uG,EAAUqE,SAASzB,IAI7C,OAHA5C,EAAUqsB,QAAQzpB,CAAAA,EAAM8C,EAAGupG,OAC3BjvG,EAAAA,EAAUqsB,QAAQzpB,CAAAA,EAAIA,GAAKA,EAEpB,EACT,CAEC5C,EAAAA,EAAUkE,YAAY,eAAgB,SAAStB,EAC9C,CAAA,GAAA,CAAK2sB,EAAOnC,IAAIxqB,CAAAA,EAAI,CACnB,IAAI6M,EAAOk/F,EAAS3uG,EAAUqE,SAASzB,CAAAA,CAAAA,EACnCksG,EAAQ,IAAIv/E,EAAOu/E,MAAMr/F,CAAAA,EAEzBs/F,EAAMF,EAAQC,CAAAA,EACdC,GAAOnsG,GACVqG,KAAKk+B,cAAcvkC,EAAImsG,CACxBx/E,EAAAA,EAAO3tB,IAAIktG,CAAAA,EACXv/E,EAAO03C,QAAQ,gBAAiB6nC,CAChC,CAAA,CACD,MAAO,EACT,GACC9uG,EAAUkE,YAAY,iBAAkB,SAAStB,GAChD,IAAI8C,EAAK6pB,EAAOnC,IAAIxqB,GAChBi6B,EAAM8xE,EAAS3uG,EAAUqE,SAASzB,IAKtC,OAHA8C,EAAGwiB,IAAI2U,CAAAA,EACPtN,EAAO03C,QAAQ,mBAAoBvhE,CAE5B,EAAA,EACT,GACC1F,EAAUkE,YAAY,iBAAkB,SAAStB,GAChD,IAAIksG,EAAQv/E,EAAOnC,IAAIxqB,GAKvB,OAJIksG,IACHv/E,EAAO03C,QAAQ,mBAAoB6nC,CACnCv/E,EAAAA,EAAO5K,OAAO/hB,CAAAA,GAAAA,EAGjB,CACA,CAAA,CAEA,EtChFCw+D,UuCjEc,SAASphE,EAIvBA,CAAAA,EAAUkE,YAAY,mBAAoB,WACzC,IAEIqrG,EAFAC,EAAO,IAAQC,uBACf3mF,EAAM0mF,EAAQE,SAOlB,SAASC,EAAQC,EAAkBC,EAAaC,EAAkBC,EAAAA,CAEjE,GAAI/vG,CAAAA,EAAU6I,WAAW,wBAAA,GAA8B7I,EAAU8I,UAAU,yBAA0B,CAAC8mG,EAAkBC,EAAaC,EAAkBC,EAAYR,CAAnK,CAAA,EAAA,CAGA,IAAIpnF,EAAOnoB,EAAUkE,YAAY,iBAAkB,SAAUtB,EACvD5C,CAAAA,EAAU8I,UAAU,mBAAoB,CAAClG,EAAIgtG,EAAkBL,CACnEtmG,CAAAA,IAAAA,KAAKP,WAAaO,KAAKR,SAAW,KAClCQ,KAAK+zB,YAAYp6B,CAEtB,EAAA,CAAA,EAEOotG,EAAchwG,EAAU2E,cAAc4qG,CACtCU,EAAAA,EAAa,CAChB1uG,WAAY,IAAIY,KAAK6tG,EAAYruG,IAIlC,CAAA,EAAA,GAAI3B,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,OAAQ,CAC1D,IAAI6lG,EAAelwG,EAAUkG,OAAOlG,EAAUqK,KAAAA,EAC9C4lG,EAAWC,EAAahtG,YAAc8sG,EAAYprG,QAElD,IAAIi0C,EAAM74C,EAAUmwG,sBAAsBZ,CAAAA,EAC1CU,EAAW1uG,WAAa2uG,EAAapU,SAASjjD,EAAIhzB,CAClDoqF,EAAAA,EAAWzuG,SAAWxB,EAAU2B,KAAKC,IAAIquG,EAAW1uG,WAAY2uG,EAAaz2D,OAAQy2D,EAAax2D,OAClG,CACG15C,EAAUiG,QAAUjG,EAAUiG,OAAOjG,EAAUqK,KAAAA,IAClD4lG,EAAWjwG,EAAUiG,OAAOjG,EAAUqK,KAAAA,EAAOlH,MAAU6sG,EAAAA,EAAYprG,SAGpE5E,EAAU0T,YAAYu8F,CAEtBjwG,EAAAA,EAAUkf,YAAYiJ,CA7Bd,CAAA,CA8BR,CAtCDqnF,EAAQE,SAAW,SAAStrG,EAAAA,CAE3B,OADAmrG,EAAanrG,EACN0kB,EAAIjd,MAAM5C,KAAMiJ,SAAAA,CAC1B,EAqCEs9F,EAAQY,eAAepwG,EAAUwJ,KAAmB,aAAE,CAAI,EAAA,CACzD6mG,MAAO,SAAST,EAAkBC,EAAaC,EAAkBC,EAChEJ,CAAAA,EAAQC,EAAkBC,EAAaC,EAAkBC,CACzD,CAAA,EACDO,QAAS,SAASztF,EAAY0tF,EAC7B,CAAA,OAAO1tF,CACP,EACD2tF,SAAU,SAAS3tF,EAAAA,CAClB,OAAO5Z,IACP,CAAA,CAAA,EAGCmlB,OAAOqiF,aACTriF,OAAOqiF,YAAYC,QAAQ1wG,EAAUwJ,KAAmB,aAAE,CAAA,EAAI,CAC7DmnG,OAAQ,SAAU15F,EAAQ3S,EAAQ+J,EAAGjK,EAAAA,CACpC,IAAIwsG,EAAexiF,OAAOqiF,YAAYI,UAAU55F,GAChDs4F,EAAanrG,EACburG,EAAQ14F,EAAQ25F,EAActsG,EAAQF,EAAEE,QAAUF,EAAE8c,WACpD,EAED4vF,SAAU,SAAU75F,EAAQ3S,EAAQF,EACnC,CAAA,OAAOE,CACP,CAAA,EAAA,GAGL,CAEA,CAAA,EvCTCysG,IwClEc,SAAS/wG,GAEvB,IAAIy3B,EAAI1G,EACPigF,EAAc,IAAIjhF,OAAO,UAAW,GACpCkhF,EAAAA,EAAiB,IAAIlhF,OAAO,YAAa,GAE1C,EAAA,SAASmhF,EAAWrvE,EACnB,CAAA,OAAOA,EAAIrhB,QAAQywF,EAAgB;AAAA,CAAMzwF,EAAAA,QAAQwwF,EAAa,EAAA,CAC9D,CAED,SAASG,EAAOtrF,EAAGzU,EAAAA,CAClByU,EAAIkvE,WAAWlvE,CAAAA,EACfzU,EAAS2jF,WAAW3jF,CACfwQ,EAAAA,MAAMxQ,CAASyU,IAAAA,GAAKzU,GAEzB,IAAI4K,EAAIo1F,EAAUvrF,CAAAA,EAElB,OADAA,EAAIA,EAAI7J,EAAEnN,MAAQmN,EAAE1B,KAAKmd,EAClB7V,MAAMiE,CAAAA,EAAG,OAAQ,IAAIA,EAACzT,CAC7B,CAED,SAASi/F,EAAaxrF,EAAGzU,EAAQkgG,EAAAA,CAChCzrF,EAAIkvE,WAAWlvE,CAAAA,EACfzU,EAAS2jF,WAAW3jF,IACfwQ,MAAMxQ,CAAAA,GAAWkgG,IAASzrF,GAAKzU,GAEpC,IAAI4K,EAAIo1F,EAAUvrF,CAAAA,EAElB,OADAA,EAAIA,EAAI7J,EAAEnN,MAAQmN,EAAE1B,KAAKmd,EAClB7V,MAAMiE,CAAAA,EAAG,OAAQ,IAAIA,GAAG4R,GAAK7V,MAAMxQ,GAAe,EAAPA,GAClD,CACD,SAASggG,EAAUviG,EAIlB,CAAA,QAHIg4B,EAAI,EACJtL,EAASv7B,EAAUwJ,KAAK+nG,eAAe,GAAG1hG,WAC1C9E,EAAMwwB,EAAO,CAAA,EAAKA,EAAO,CAAA,EAAG1rB,WAAa0rB,EAAO,GAAG1rB,WAC9ChN,EAAI,EAAGA,EAAIkI,EAAIjI,OAAQD,IAAK,CACpC,IAAI0c,EAAKxU,EAAIlI,CAAAA,EAAG5B,MAAQ8J,EAAIlI,GAAKkI,EAAIlI,CAAAA,EAAGqI,WACpC8Q,EAAI+4E,WAAWx1E,EAAGte,MAAM4N,KAC5B,EAAA,GAAA,EAAIA,EAAQmN,GAKX,MAJAnN,GAAUmN,EAAE,EACZ6qB,GAAI7qB,EAAE,CAIP,CACD,MAAO,CAAEnN,MAAOg4B,EAAGvsB,KAAMzX,EACzB,CAED,SAAS2uG,EAAO5rF,EAAAA,CAEf,OADAA,EAAImvE,WAAWnvE,CACXhE,EAAAA,MAAMgE,GAAW,OACd,IAAMA,EAAImL,CACjB,CAED,SAAS0gF,EAAU7wF,EAAM3f,EAAAA,CACxB,OAAQpB,OAAOmd,iBAAkBnd,OAAOmd,iBAAiB4D,EAAM,IAAM3f,EAAAA,CAAAA,EAAS2f,EAAKY,aAAaZ,EAAKY,aAAavgB,CAAAA,EAAO,OAAQ,EACjI,CAED,SAASywG,EAAO9wF,EAAM2gC,GAGrB,QAFI17B,EAAI3C,SAAStC,EAAK3f,MAAME,KAAM,EAEzBs2B,EAAAA,EAAK,EAAGA,EAAKz3B,EAAUwO,MAAM1L,OAAQ20B,IAE7C,IADA5R,GAAK7lB,EAAUwO,MAAMipB,IACb,EAAG,OAAOA,EAEnB,OAAO8pB,CACP,CAED,SAASowD,EAAQ/wF,EAAM2gC,GAEtB,QADI37B,EAAI1C,SAAStC,EAAK3f,MAAMC,IAAK,EACxB6vB,EAAAA,EAAK,EAAGA,EAAK/wB,EAAUi5C,OAAOG,QAAQt2C,OAAQiuB,IACtD,GAAI/wB,EAAUi5C,OAAOG,QAAQroB,CAAMnL,EAAAA,EAAG,OAAOmL,EAC9C,OAAOwwB,CACP,CAKD,SAASqwD,EAAQntE,GAChB,OAAOA,EAAM,KAAKA,EAAI,IAAM,EAC5B,CAED,SAASotE,EAAQptE,EAAKqtE,EAASv2E,EAAQ+4D,EACtC,CAAA,IAAI7mE,EAAM,IAAIgX,EAAI,aAAeqtE,EAAU,IAM3C,OALIv2E,IACH9N,GAAO,YAAc8N,EAAS,KAC3B+4D,IACH7mE,GAAO,YAAc6mE,EAAS,KAC/B7mE,GAAO,GAEP,CAED,SAASskF,GAAAA,CACR,IAAItkF,EAAM,GAENtpB,EAAOnE,EAAUqK,MAKrB,GAJIrK,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,SAClDlG,EAAQnE,EAAUkG,OAAOlG,EAAUqK,KAAOoL,EAAAA,QAAU,OAAU,SAAW,YAC1EgY,GAAO,gBAAkBtpB,EAAO,YAAcnE,EAAUwJ,KAAKwoG,aAAa,CAAA,EAAGrkG,UAAY,KAErF3N,EAAUqK,OAAS,cAEtB,QADI4nG,EAAKjyG,EAAUwJ,KAAK4sB,aAAa,CAAA,EAAGkE,qBAAqB,KACpDz3B,EAAAA,EAAI,EAAGA,EAAIovG,EAAGnvG,OAAQD,IAC1BovG,EAAGpvG,GAAG8L,WAAa,qBACtB8e,GAAO,WAAayjF,EAAWe,EAAGpvG,CAAAA,EAAG8K,SAAa,EAAA,qBAC1C3N,EAAUqK,OAAS,UAAYrK,EAAUqK,OAAS,MAG5DojB,GAAO,WAAayjF,GAFhBe,EAAKjyG,EAAUwJ,KAAK+nG,eAAe,GAAG1hG,WAAW,CAAA,EAAGA,YAEtB,CAAA,EAAGlC,WAAa,oBAAsBujG,EAAWe,EAAG,CAAA,EAAGtkG,WAAa,oBAC5F3N,EAAUqK,OAAS,OAE7B,IADI4nG,EAAKjyG,EAAUwJ,KAAK4sB,aAAa,CAAA,EAAGvmB,WAC/BhN,EAAI,EAAGA,EAAIovG,EAAGnvG,OAAQD,IAC9B4qB,GAAO,iBAAmByjF,EAAWe,EAAGpvG,CAAAA,EAAGqY,cAAc,iBAAmBvN,EAAAA,SAAAA,EAAa,KACzF8f,GAAOykF,EAAgBD,EAAGpvG,CAAAA,EAAGqY,cAAc,gBAAA,EAAkBrL,YAC7D4d,GAAO0kF,EAAUF,EAAGpvG,CAAAA,EAAGqY,cAAc,gBACrCuS,CAAAA,EAAAA,GAAO,eAEF,CACNA,GAAO,MAEPA,GAAOykF,EADHD,EAAKjyG,EAAUwJ,KAAK+nG,eAAe,CAAG1hG,EAAAA,UAAAA,EAE1C4d,GAAO,OAEP,IAAI2kF,EAAKpyG,EAAUwJ,KAAK4sB,aAAa,CAAA,EACrC,GAAIp2B,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,KAAAA,EAAQ,CAE1D,IADAojB,GAAO,MACE5qB,EAAI,EAAGA,EAAIuvG,EAAGtiG,WAAWuK,KAAKvX,OAAQD,IAE9C4qB,GAAO,iBAAmByjF,EADjBkB,EAAGtiG,WAAWuK,KAAKxX,CAAAA,EACYL,MAAM,CAAGmL,EAAAA,SAAAA,EAAa,YAE/D8f,GAAO,OACPsD,EAAKqhF,EAAGtiG,WAAWuK,KAAK,CAAG7X,EAAAA,MAAM,CAAG6a,EAAAA,YACpC,SAAU+0F,EAAGtiG,WAAWmW,SAAW,QACnCwH,GAAO0kF,EAAUC,CACX,MAAA,CAEN,IADAA,EAAKA,EAAGviG,WAAWuiG,EAAGviG,WAAW/M,OAAS,CAAA,EACnCsvG,EAAGzjG,UAAUqB,QAAQ,kBAAA,GADc,IAEzCoiG,EAAKA,EAAGv7E,gBAIT,IAHAu7E,EAAKA,EAAGviG,WAER4d,GAAO,MACE5qB,EAAI,EAAGA,EAAIuvG,EAAGtvG,OAAQD,IAC9B4qB,GAAO;AAAA,gBAAqByjF,EAAWkB,EAAGvvG,CAAG8K,EAAAA,SAAAA,EAAa,YAC3D8f,GAAO,OACPsD,EAAKqhF,EAAG,GAAG/0F,YACX,CACD,CAED,OADAoQ,GAAO,UAEP,CAED,SAAS0kF,EAAUC,GAGlB,QAFI3kF,EAAM,GACNoZ,EAAIurE,EAAG1vG,iBAAiB,IACnBG,EAAAA,EAAI,EAAGA,EAAIgkC,EAAE/jC,OAAQD,IAAK,CAIlC,QAHIwC,EAAO,CAAA,EACP7C,EAAQqkC,EAAEhkC,CAAAA,EAAGH,iBAAiB,IAAA,EAEzBisB,EAAI,EAAGA,EAAInsB,EAAMM,OAAQ6rB,IACjCtpB,EAAK/C,KAAKE,EAAMmsB,CAAAA,EAAGzT,cAAc,iBAAmBvN,EAAAA,SAAAA,EAErD8f,GAAO;AAAA,eAAoBjrB,EAAM,CAAG6a,EAAAA,aAAe,cAAgB6zF,EAAW7rG,EAAKiI,KAAK,GAAQ,CAAA,EAAA,YAChGyjB,EAAKvuB,EAAM,CAAA,EAAG6a,YACd,CACD,OAAOoQ,CACP,CAED,SAASykF,EAAgBD,GACxB,IAAII,EACH5kF,EAAM,GACHztB,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,SAC9CrK,EAAUkG,OAAOlG,EAAUqK,KAAAA,EAAOioG,eACrCD,EAAMJ,EAAG,CAAGpiG,EAAAA,YAEboiG,EAAKA,EAAG,CAAA,EAAGpiG,YAGZ,QAAShN,EAAI,EAAGA,EAAIovG,EAAGnvG,OAAQD,IAC9B4qB,GAAO;AAAA,mBAAwByjF,EAAWe,EAAGpvG,CAAG8K,EAAAA,SAAAA,EAAa,eAG9D,GAFA8pB,EAAKw6E,EAAG,CAAA,EAAG10F,YAEP80F,EACH,KAAIxjG,EAAQ,EACR0jG,EAAYN,EAAG,GAAG10F,YAClBi1F,EAAU,EACd,IAAS3vG,EAAI,EAAGA,EAAIwvG,EAAIvvG,OAAQD,IAC/B4qB,GAAO;AAAA,wBAA6B+kF,EAAU,cAAgBtB,EAAWmB,EAAIxvG,CAAG8K,EAAAA,SAAAA,EAAa,gBAC7FkB,GAASwjG,EAAIxvG,CAAG0a,EAAAA,cACHg1F,IACZA,GAAcN,EAAGO,CAAWP,EAAAA,EAAGO,GAASj1F,YAAc,EACtDi1F,KAED/6E,EAAK46E,EAAI,CAAG90F,EAAAA,WAVA,CAad,OAAOkQ,CACP,CAED,SAASglF,EAASC,EAAAA,CACjB,IAAIjlF,EAAM,GACN3lB,EAAM9H,EAAUg3B,UAChB9wB,EAASlG,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,KAAAA,EAE5D,GAAIrK,EAAUqK,OAAS,UAAYrK,EAAUqK,OAAS,MAErD,QAASxH,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IACnB4qB,GAAO,yBAA2ByjF,EAAWppG,EAAIjF,CAAAA,EAAGgN,WAAW,CAAA,EAAGlC,WAAa,4BAA8BujG,EAAWppG,EAAIjF,CAAAA,EAAGgN,WAAW,CAAGlC,EAAAA,SAAAA,EAAa,6BAE7J3N,EAAUqK,OAAS,cAE7B,IAASxH,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC/B4qB,GAAO,eAAiB3lB,EAAIjF,CAAAA,EAAGqI,WAAWnH,aAAa,KAAA,EAAS,WAAamtG,EAAWppG,EAAIjF,CAAG8K,EAAAA,SAAAA,EAAa,0BAEnG3N,EAAUqK,OAAS,OAG7B,IADIvC,EAAM9H,EAAUmvD,mBACXtsD,EAAAA,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CACpC,IAAIwL,EAAIvG,EAAIjF,CAAAA,EAAGtB,WAIf,IAHI8M,EAAEjM,QAAYpC,EAAAA,EAAU6J,UAAUzH,QAAAA,IACrCiM,EAAIrO,EAAU6J,WAERwE,EAAIvG,EAAIjF,GAAGrB,UAAU,CAC3B,IAAI42D,EAAI/pD,EAAEyI,SAAa,EAAA,IAAMzI,EAAEwI,YAAAA,EAAgB7W,EAAU6J,UAAUgN,YAAAA,GAAiB7W,EAAU2yG,YAAYC,OACtG9kG,EAAM9N,EAAU2yG,YAAYv6C,CAAAA,EAAK/pD,EAAE7G,QAAY,EAAA,EAC/CqrG,EAAaH,EAASjB,EAAUzxG,EAAU07F,eAAertF,CAAI,EAAA,OAAA,EAAW,GACxEgpD,EAAWq7C,EAASjB,EAAUzxG,EAAU07F,eAAertF,CAAAA,EAAI,iBAAqB,EAAA,GAIpF,GAFAof,GAAO,eAAkB3f,EAAM,EAAK,WAAamB,KAAK+D,MAAMlF,EAAM,CAAA,EAAK,YAAcsqD,EAAI,sBAAwBf,EAAW,YAAcw7C,EAAa,cACvJxkG,EAAIrO,EAAU2B,KAAKC,IAAIyM,EAAG,EAAG,KACvBjM,GAAAA,QAAAA,GAAapC,EAAU4J,UAAUxH,QAAAA,EACtC,KACD,CACD,SACS8D,GAAUA,EAAOuP,QAAU,OAErC,IADI3N,EAAM9H,EAAUwJ,KAAK4sB,aAAa,CAAGkE,EAAAA,qBAAqB,IACrDz3B,EAAAA,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC3BgwG,EAAaH,EAASjB,EAAU3pG,EAAIjF,GAAI,OAAW,EAAA,GAEvD4qB,GAAO;AAAA,iCADH4pC,EAAWq7C,EAASjB,EAAU3pG,EAAIjF,CAAAA,EAAI,mBAAqB,IACR,YAAcgwG,EAAa,cAAgB3B,EAAWppG,EAAIjF,CAAG8K,EAAAA,SAAAA,EAAa,yBAGlI,KAAS9K,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CACpC,IAAIiwG,EAAIC,EACR,GAAI/yG,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,KAAAA,EAElDyoG,EAAK3B,EAAOrpG,EAAIjF,CAAG5B,EAAAA,MAAME,MACzB4xG,EAAM5B,EAAOrpG,EAAIjF,CAAAA,EAAG0a,aAAa,MAC3B,CAEN,IAAIy1F,EAAYhzG,EAAUM,OAAO24B,sBAAwB,EAAI,GAC7D65E,EAAKzB,EAAavpG,EAAIjF,CAAG5B,EAAAA,MAAME,KAAM6xG,EAAW,EAAA,EAChDD,EAAM1B,EAAavpG,EAAIjF,CAAG5B,EAAAA,MAAM4N,MAAOmkG,CAAAA,EAAW,CAClD,CACD,GAAA,CAAIpxF,MAAY,EAANmxF,GAAV,CACA,IAAIE,EAAKzB,EAAO1pG,EAAIjF,CAAG5B,EAAAA,MAAMC,GACzBgyG,EAAAA,EAAM1B,EAAO1pG,EAAIjF,CAAAA,EAAG5B,MAAM2N,MAAAA,EAE1BukG,EAASrrG,EAAIjF,CAAG8L,EAAAA,UAAUpL,MAAM,GAAK,EAAA,CAAA,EAAGid,QAAQ,WAAY,IAChE,GAAI2yF,IAAW,mBAAf,CAEA,IAAIC,EAAOpzG,EAAUqE,SAASyD,EAAIjF,GAAGkB,aAAa/D,EAAUM,OAAOqC,eAAAA,CAAAA,EACvD,GAAKywG,EAAL,CACRtlG,EAAMslG,EAAKljD,MAAf,IACImjD,EAAOD,EAAK/iD,OACZvtD,GAASswG,EAAKr/C,SAAW,EAE7B,GAAI/zD,EAAUqK,OAAS,QACtB6oG,EAAMhwF,SAASpb,EAAIjF,CAAGwa,EAAAA,aAAc,EACpC41F,EAAAA,EAAK/vF,SAASpb,EAAIjF,CAAAA,EAAG5B,MAAMC,IAAK,IAAMlB,EAAUub,GAAGg6B,kBAEnDznC,EAAM4jG,EAAO5pG,EAAIjF,CAAAA,EAAIiL,CACrBulG,EAAAA,EAAO1B,EAAQ7pG,EAAIjF,CAAAA,EAAIwwG,CACjB,UAAIrzG,EAAUkG,QAAUlG,EAAUkG,OAAOlG,EAAUqK,OAAQ,CACjEyD,EAAM,EAENulG,EADSvrG,EAAIjF,CAAAA,EAAGqI,WAAWA,WAAWA,WAC5B63F,SACV,IAAIuQ,GAAUviF,EACdA,EAAKjpB,EAAIjF,CAAAA,EAAGqI,WAAWmS,aACvB41F,EAAKzB,EAAO1pG,EAAIjF,CAAG5B,EAAAA,MAAMC,KACzB+xG,GAAW,GAALA,EACNliF,EAAKuiF,EACV,KAAW,CACN,GAAIxrG,EAAIjF,GAAGqI,YAAclL,EAAUwJ,KAAK4sB,aAAa,GAAI,SACzD,IAAInrB,GAASjL,EAAUwJ,KAAmB,aAAE,CAAA,EAAGqG,WAAW,CAAA,EACtDuB,GAAS2jF,WAAW9pF,GAAO0D,UAAUqB,QAAQ,kBAA4B/E,GAAJ,GAAIA,GAAOhK,MAAME,KAAO,GACjG2xG,GAAM3B,EAAOrpG,EAAIjF,CAAAA,EAAGqI,WAAWjK,MAAME,KAAMiQ,EAC3C,CAAA,CAEDqc,GAAO;AAAA,eAAoB4lF,EAAO,UAAYvlG,EAAM,WAAaqlG,EAAS,QAAUL,EAAK,QAAUG,EAAK,YAAcF,EAAM,aAAeG,EAAM,UAAYpwG,GAAS,KAElKqwG,GAAU,SACb1lF,GAAO,oBAAsByjF,EAAWppG,EAAIjF,CAAAA,EAAGgN,WAAW,CAAA,EAAGlC,WAAa,eACtEklG,EAAaH,EAASjB,EAAU3pG,EAAIjF,CAAGgN,EAAAA,WAAW,CAAI,EAAA,OAAA,EAAW,GAErE4d,GAAO,2BADH4pC,EAAWq7C,EAASjB,EAAU3pG,EAAIjF,CAAAA,EAAGgN,WAAW,CAAA,EAAI,mBAAqB,IAC/B,YAAcgjG,EAAa,cAAgB3B,EAAWppG,EAAIjF,CAAAA,EAAGgN,WAAW,CAAA,EAAGlC,WAAa,eAElIklG,EAAaH,EAASjB,EAAU3pG,EAAIjF,CAAI,EAAA,OAAA,EAAW,GAEvD4qB,GAAO,2BADH4pC,EAAWq7C,EAASjB,EAAU3pG,EAAIjF,CAAAA,EAAI,iBAAqB,EAAA,IACjB,YAAcgwG,EAAa,cAAgB3B,EAAWppG,EAAIjF,GAAG8K,SAAa,EAAA,cAEzH8f,GAAO,UAvCyB,CAHY,CALf,CAgD7B,CAGF,OAAOA,CACP,CAED,SAAS8lF,EAAMzmG,EAAOC,EAAK1G,EAAMlC,EAAMo3B,EAAQ+4D,EAC9C,CAAA,IAAIoe,EAAS,GACTvuG,GAAQ,cACXuuG,EAAAA,GACAvuG,EAAO,SAGRA,EAAOA,GAAQ,QAEf,IAjPkBsgC,EAiPdhX,EAAM,GACV,GAAI3gB,EAAO,CAEV,IAAI0mG,EAAgBxzG,EAAUiT,MAC1BwgG,EAAgBzzG,EAAUqK,MAC9B0C,EAAM/M,EAAU2B,KAAK0E,EAAK,QAAA,EAAU0G,CACpCA,EAAAA,EAAM/M,EAAU2B,KAAK,OAAO0E,EAAK,MAAA,EAAUrG,EAAU2B,KAAK,OAAO0E,EAAK,MAAA,EAAQ0G,GAAO/M,EAAU2B,KAAKC,IAAImL,EAAK,EAAG1G,CAEhHonB,EAAAA,EAAMokF,EAAQ,QAAS1tG,EAAMo3B,EAAQ+4D,CAAAA,EACrC,QAASof,EAAY,IAAIvxG,KAAK2K,CAAS4mG,EAAAA,CAAAA,EAAAA,CAAa3mG,EAAK2mG,EAAYzqG,KAAKtH,KAAKC,IAAI8xG,EAAW,EAAGrtG,CAChG4C,EAAAA,KAAKyM,eAAeg+F,EAAWrtG,CAAAA,EAC/BonB,KA5PgBgX,EA4PC,QA3PN,IAAIA,EAAI,IAAM,IA2PEstE,IAAkBvxF,QAAQ,IAAU,GAAOiyF,EAAAA,EAASC,GAAUd,EAAQ,MAAA,EAElGnkF,GAAOmkF,EAAQ,SAEf3oG,KAAKyM,eAAe89F,EAAeC,CAAAA,CACtC,MACGhmF,EAAMokF,EAAQ,OAAQ1tG,EAAMo3B,EAAQ+4D,CAAUyd,EAAAA,EAAAA,EAAkBvxF,QAAQ,IAAU,KAAOiyF,EAASC,CAAAA,EAAUd,EAAQ,MAAA,EAErH,OAAOnkF,CACP,CAcD,SAASkmF,EAAO7mG,EAAOC,EAAK1G,EAAMmmB,EAAKroB,EAAMo3B,EAAQ+4D,EAZrD,EAAA,SAAkB7mE,EAAKjB,EAAAA,CACtB,IAAIvgB,EAAMjM,EAAUiM,IAChBoC,EAAAA,EAAIZ,SAASC,cAAc,KAAA,EAC/BW,EAAEpN,MAAM0a,QAAU,OAClBlO,SAASqO,KAAKlO,YAAYS,GAE1BA,EAAEV,UAAY,aAAe1B,EAAM,2CAA6CugB,EAAM,2HACtF/e,SAASsyB,eAAe9zB,CAAK6D,EAAAA,WAAWyK,MAAQgN,mBAAmBkG,GACnEhgB,SAASsyB,eAAe9zB,CAAKkoF,EAAAA,OAAAA,EAC7B9lF,EAAEnD,WAAWC,YAAYkD,CACzB,CAAA,GAIUlK,OAAAA,GAAQ,SASnB,SAAyByvG,EAAAA,CAExB,QADInmF,EAAM,SACF5qB,EAAE,EAAGA,EAAI+wG,EAAQ9wG,OAAQD,IAChC4qB,GAAOmmF,EAAQ/wG,CAAAA,EAAGoU,OAAO48F,WAAWD,EAAQ/wG,CAAGiK,EAAAA,MAAO8mG,EAAQ/wG,CAAAA,EAAGkK,IAAK6mG,EAAQ/wG,CAAAA,EAAGwD,KAAMutG,EAAQ/wG,GAAGsB,KAAMyvG,EAAQ/wG,CAAG04B,EAAAA,OAAQq4E,EAAQ/wG,CAAGyxF,EAAAA,MAAAA,EAGvI,OADA7mE,GAAO,UACAA,CACP,EAfuBtpB,CAAAA,EAEhBovG,EAAM1nG,MAAM5C,KAAM,CAAC6D,EAAOC,EAAK1G,EAAMlC,EAAMo3B,EAAQ+4D,CAAAA,CAAAA,EAG5C9nE,EACd,CAtBDxsB,EAAU6zG,WAAaN,EA4CvBvzG,EAAU8zG,MAAQ,SAAStnF,EAAKroB,EAAMo3B,EAAQ+4D,EAAAA,CAC7C,OAAOqf,EAAO9nG,MAAM5C,KAAM,CAAC,KAAM,KAAM,KAAMujB,EAAKroB,EAAMo3B,EAAQ+4D,CAAAA,CAAAA,CAClE,EACCt0F,EAAU+zG,WAAa,SAASjnG,EAAOC,EAAK1G,EAAMmmB,EAAKroB,EAAMo3B,EAAQ+4D,GAMpE,OALoB,OAATxnF,GAAS,WACnBA,EAAQ9M,EAAU+sB,UAAU8+B,SAAS/+C,CACrCC,EAAAA,EAAM/M,EAAU+sB,UAAU8+B,SAAS9+C,CAG7B4mG,GAAAA,EAAO9nG,MAAM5C,KAAMiJ,SAAAA,CAC5B,CAEA,ExCpUC8hG,WyCnEc,SAASh0G,EAAAA,CAExBA,EAAUM,OAAOosD,aAAe,CAAC,YAAa,aAC9C1sD,EAAAA,EAAUM,OAAO+8C,kBAAoB,GACrCr9C,EAAUM,OAAO2zG,mBACjBj0G,EAAUub,GAAG45B,WAAa,EAI1B,IAAI++D,EAAyB,KAsN7B,SAASC,EAAkBC,EAC1B,CAAA,MAAMC,EAAYD,EAAe5wF,sBAI3B8wF,EAAAA,EAHgBt0G,EAAUyC,WAAW+gB,wBAGRmC,OAAS0uF,EAAU1uF,OAGlD2uF,EAAe,IAClBF,EAAenzG,MAAMC,IAAM,GAAG6zF,WAAWqf,EAAenzG,MAAMC,GAAOozG,EAAAA,CAAAA,KAEvE,CAiFA,SAASC,EAA2B7wG,EACnC,CAAA,IAAIvC,EAAO,EACPD,EAAM,EAEN0f,EAAOld,EACX,KAAOkd,GAAQA,GAAQ5gB,EAAUgzB,MAChC7xB,GAAQyf,EAAKwC,WACbliB,GAAO0f,EAAKuC,UAAUvC,EAAKmD,UAC3BnD,EAAOA,EAAKyC,aAEb,OAAGzC,EAIK,CAAEzf,KAAKA,EAAMD,IAAIA,EAAKu2B,GAHnBt2B,EAAOuC,EAAQ6Z,YAAY,EAAMvd,EAAU8yB,GAAG,EAAK,EAAI,EAG7B/B,GAF1B7vB,EAAMwC,EAAQ2Z,aAAa,EAAMrd,EAAU+yB,GAAG,EAAK,EAAI,EAGhElkB,MAAMnL,EAAQ6Z,YAAa3O,OAAOlL,EAAQ2Z,YAAAA,EAErC,CACR,CAnUArd,EAAUkE,YAAY,mBAAoB,WACzC,MAAMiC,EAAYnG,EAAUyC,WACzB0D,EAAUquG,qBAGZruG,EAAUquG,mBAAqB,GAG/Bx0G,EAAUI,MAAM+F,EAAW,YAAa,SAAS/B,GAChD,MAAMqwG,EAAerwG,EAAEE,OAAOC,QAAQ,IAAIvE,EAAUM,OAAOqC,eAAAA,GAAAA,EACvD8xG,IACHP,EAAyB,CACxBtxG,GAAI6xG,EAAa1wG,aAAa/D,EAAUM,OAAOqC,eAC/C+H,EAAAA,SAAU6pG,EAA2BE,CAG1C,CAAA,EAAA,CAAA,EACEz0G,EAAUkE,YAAY,YAAa,IAC3BiC,CAAAA,OAAAA,EAAUquG,kBAAkB,CAAA,EAGtC,GAEAx0G,EAAUkE,YAAY,UAAW,SAAStB,GACzC,GAAI5C,EAAUM,OAAO2zG,gBAIrB,OADAj0G,EAAU00G,cAAc9xG,CACjB,EAAA,EACR,GAEA,UAQC,CAAA,QALI2sB,EAAS,CAAC,eAAgB,eAAgB,aAAc,sBAAuB,gBAC/EolF,EAAkB,UAAA,CAErB,OADA30G,EAAU40G,gBACH,EAAA,EACT,EACU/xG,EAAE,EAAGA,EAAE0sB,EAAOzsB,OAAQD,IAC9B7C,EAAUkE,YAAYqrB,EAAO1sB,CAAI8xG,EAAAA,CAAAA,CAElC,EAED30G,EAAAA,EAAU+sB,UAAU8nF,iBAAmB,SAAS/nG,EAAOC,EAAKrH,EAAK,CAAA,OAAOA,EAAG4Q,KAAKoa,OAAO,EAAE,EAAA,CAAI,EAC7F1wB,EAAU+sB,UAAU+nF,mBAAqB,SAAShoG,EAAOC,EAAKrH,EAAAA,CAAK,OAAOA,EAAGm9B,SAAW,EAAG,EAC3F7iC,EAAU+sB,UAAUgoF,gBAAkB,SAASjoG,EAAOC,EAAKrH,EAAAA,CAC1D,OAAI1F,EAAUuI,cAAc7C,CAAO1F,GAAAA,EAAUM,OAAOo0C,IAC5C10C,EAAU+sB,UAAUiL,SAASlrB,EAAOC,EAAKrH,CAAAA,EAAM,IAAK1F,EAAU+sB,UAAUgL,aAAahrB,EAAKD,EAAOpH,CAAAA,EAC9F1F,EAAUuI,cAAc7C,CAAAA,EAC3B1F,EAAU+sB,UAAUiL,SAASlrB,EAAOC,EAAKrH,CAAAA,EAAM,IAAK1F,EAAU+sB,UAAUgL,aAAajrB,EAAOC,EAAKrH,CAC9F1F,EAAAA,EAAUM,OAAOo0C,IACpB10C,EAAU+sB,UAAU4+B,UAAU5+C,EAAKD,EAAOpH,GAE1C1F,EAAU+sB,UAAU4+B,UAAU7+C,EAAOC,EAAKrH,CAEnD,CAAA,EAEA1F,EAAU00G,cAAgB,SAAS9xG,EAClC,CAEA,GAFIA,GAAMqG,KAAK+rG,qBACf/rG,KAAK2rG,cAAAA,IACF3rG,KAAKH,UAAU,oBAAqB,CAAClG,CACvC,CAAA,QAAA,OAGD,IAAIi2C,EAEHA,EADEq7D,GAA0BA,EAAuBtxG,IAAMA,EACnDsxG,EAAuBxpG,SAEvBzB,KAAKgsG,wBAAwBryG,CAAAA,EAIhCi2C,IACH5vC,KAAKisG,gBAAkBjsG,KAAKksG,iBAAiBt8D,GAC7C5vC,KAAKmsG,iBAAiBxyG,CACtBqG,EAAAA,KAAKosG,iBAAiBx8D,CAEtB5vC,EAAAA,KAAKH,UAAU,cAAe,CAAClG,CAEjC,CAAA,EAAA,EAEA,UAEA,CAAA,SAAS0yG,EAAYx9E,EAAAA,CACpBA,EAAOA,GAAQ,GAEf,IAECy9E,EAFGprF,EAAM4qE,WAAWj9D,GACpBllB,EAAOklB,EAAK/P,MAAM,KAAA,EAOnB,OAJInV,IACHA,EAAOA,EAAK,CAAA,GAGLA,GACP,IAAK,IACJ2iG,EAAqB,IAANprF,EACf,MACD,IAAK,KACJorF,EAAeprF,EACf,MACD,QACCorF,EAAe,CAAA,CAIjB,OAAOA,CACR,CAEAv1G,EAAU40G,cAAgB,SAASY,EAClC,CAAA,IAAIC,EAAKxsG,KAAKisG,gBACV91F,EAAUnW,KAAK+rG,mBAGnB,GAFA/rG,KAAK+rG,mBAAqB,EAEtBS,GAAMA,EAAGvqG,WAAW,CACvB,IAAI2D,EAAQ4mG,EAAGl4F,YACf,GAAIvd,EAAUM,OAAOksD,oBAEpB,OADAvjD,KAAKH,UAAU,mBAAoB,CAACsW,IAC7Bq2F,EAAGvqG,WAAWC,YAAYsqG,CAAAA,EAQlC,GALIA,EAAGx0G,MAAMogB,OAAS,OACrBo0F,EAAGx0G,MAAME,KAAQ0N,CAAAA,EAAQ,KAEzB4mG,EAAGx0G,MAAMogB,MAASxS,CAAAA,EAAQ,KAEvB2mG,EACHC,EAAGvqG,WAAWC,YAAYsqG,OACtB,CAEJ,IAAIx0G,EACDpB,OAAOmd,iBACT/b,EAAQpB,OAAOmd,iBAAiBy4F,EAAI,MAC5BA,EAAGj0F,eACXvgB,EAAQw0G,EAAGj0F,cAEZ,IAAIvJ,EAAQq9F,EAAYr0G,EAAM,qBAAuBq0G,EAAYr0G,EAAM,qBACvEsX,CAAAA,EAAAA,WAAW,WACPk9F,EAAGvqG,YACLuqG,EAAGvqG,WAAWC,YAAYsqG,CAE3B,CAAA,EAAEx9F,CACH,CAAA,CAEDhP,KAAKH,UAAU,mBAAoB,CAACsW,CAAAA,CAAAA,CACpC,CACF,CAEC,EAEDpf,EAAAA,EAAUI,MAAMP,OAAQ,UAAW,SAASuE,EAAAA,CACvCA,EAAEo6B,SAAW,IAChBx+B,EAAU40G,cAAAA,CACZ,GAEA50G,EAAUq1G,iBAAmB,SAASx8D,EAAAA,CACrC,IAAI48D,EAAKz1G,EAAUk1G,gBACnBl1G,EAAUgzB,KAAKplB,YAAY6nG,CAC3B,EAAA,IAAI5mG,EAAQ4mG,EAAGl4F,YACX3O,EAAS6mG,EAAGp4F,aAEhB,GAAIrd,EAAUM,OAAOksD,oBAAoB,CACxC,IAAIrrD,EAAO03C,EAAI13C,KAAO03C,EAAIphB,IAAI5oB,EAAQgqC,EAAIhqC,OACvC7O,EAAUY,QAAaZ,GAAAA,EAAUY,QAAU80G,EAAAA,YAE1C11G,EAAUM,OAAOo0C,IACnBvzC,GAAQnB,EAAUY,UAAU80G,UAE5Bv0G,GAAQnB,EAAUY,QAAAA,EAAU80G,WAKlBv0G,EAAO0N,EACRhP,OAAOoc,aACjB9a,EAAOtB,OAAOoc,WAAapN,GAE5B1N,EAAO8N,KAAKC,IAAI,EAAG/N,CAEnBs0G,EAAAA,EAAGx0G,MAAME,KAAOA,EAAO,KACvBs0G,EAAGx0G,MAAMC,IAAM23C,EAAI33C,KAAO23C,EAAI9nB,GAAGniB,EAAQiqC,CAAAA,EAAIjqC,QAAU,IACzD,KAAQ,CAEN,MAAM+mG,EAAU31G,EAAUyC,WAAWyY,cAAc,eAAA,EAAiBiI,UACpEsyF,EAAGx0G,MAAMC,IAAMy0G,EAAU,GAAK,KAC1B98D,EAAIphB,IAAM,GACbg+E,EAAGx0G,MAAMogB,MAAQ,OACjBo0F,EAAGx0G,MAAME,MAAQ0N,EAAQ,KAEzB0J,WAAW,UAAA,CACVk9F,EAAGx0G,MAAME,KAAO,OAChB,EAAC,KAEFs0G,EAAGx0G,MAAME,KAAO,OAChBs0G,EAAGx0G,MAAMogB,MAAAA,CAASxS,EAAQ,KAE1B0J,WAAW,UACVk9F,CAAAA,EAAGx0G,MAAMogB,MAAQ,OACjB,EAAC,CAAA,GAEHo0F,EAAG9mG,UAAY8mG,EAAG9mG,UAAU6R,QAAQ,eAAe,EAAA,EAAIA,QAAQ,gBAAgB,EAAA,EAAI,YAAYq4B,EAAIphB,IAAI,EAAE,OAAO,QAChH,CAEDg+E,EAAGG,gBAAkB,IAAA,CACpBzB,EAAkBsB,CAAAA,EAClBA,EAAGG,gBAAkB,IAAI,EAE1Br9F,WAAW,KACV47F,EAAkBsB,CAAAA,CAAG,EACnB,CAAA,CACJ,EAeAz1G,EAAUkE,YAAY,mBAAoB,UAAA,CAEzC,GADAlE,EAAU40G,cACP3rG,EAAAA,KAAKisG,gBAAgB,CACvB,IAAI3xF,EAAMta,KAAKisG,gBACZ3xF,EAAIrY,YACNqY,EAAIrY,WAAWC,YAAYoY,CAE5Bta,EAAAA,KAAKisG,gBAAkB,IACvB,CACF,CACAl1G,EAAAA,EAAU61G,6BAA+B,SAASzxG,GACjDpE,EAAU40G,cAAAA,CACX,EACA50G,EAAUm1G,iBAAmB,UAC5B,CAAA,GAAA,CAAKlsG,KAAKisG,gBAAgB,CAGzB,IAAIO,EAAKxsG,KAAKisG,gBAAkBznG,SAASC,cAAc,KAAA,EAEvDzE,KAAK+1B,SAASmpB,cAAcstD,CAE5BA,EAAAA,EAAG9mG,UAAY,qBACX3O,EAAU81G,YACbL,EAAG9mG,WAAa,mBACb3O,EAAUM,OAAOo0C,MAAK+gE,EAAG9mG,WAAa,uBAE1C,IACIjN,EAAO;AAAA;AAAA;AAAA;AAAA,kCADIuH,KAAK+1B,SAASopB,0BAa7B1mD,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,2CAAAA,GAAQ,oCAEP,QADGm+B,EAAU7/B,EAAUM,OAAOosD,aACrB7pD,EAAI,EAAGA,EAAIg9B,EAAQ/8B,OAAQD,IAEnCnB,GAAQ,QADOuH,KAAK+1B,SAASspB,0BAA0Br/C,KAAKmf,OAAO6P,OAAO4H,EAAQh9B,CAAAA,CAAAA,CAAAA,CAAAA,2BAC/Bg9B,EAAQh9B,CAAAA,CAAAA,YAAc7C,EAAUooB,OAAO6P,OAAO4H,EAAQh9B,CAAAA,CAAAA,CAAAA;AAAAA,gCAC7Eg9B,EAAQh9B,CAAkB7C,CAAAA,gBAAAA,EAAUooB,OAAO6P,OAAO4H,EAAQh9B,CACtF,CAAA,CAAA,eAEFnB,GAAQ,SAER+zG,EAAG9nG,UAAYjM,EACf1B,EAAUI,MAAMq1G,EAAI,QAAS,SAAS/vG,EACrC1F,CAAAA,EAAU+1G,iBAAiBrwG,EAAGpB,QAAUoB,EAAGwb,UAAAA,CAC9C,GACMlhB,EAAUM,OAAOksD,sBACpBxsD,EAAUk0C,gBAAgBl0C,EAAUwJ,KAAmB,aAAE,CAAA,EAAI,SAAUxJ,EAAU61G,4BAAAA,EACjF71G,EAAUI,MAAMJ,EAAUwJ,KAAmB,aAAE,CAAI,EAAA,SAAUxJ,EAAU61G,4BAExE,EAAA,CAED,OAAO5sG,KAAKisG,eACb,EAEAl1G,EAAU+1G,iBAAmB,SAASn1F,GACrC,IAAI2C,EAAMvjB,EAAUk1G,gBACpB,GAAKt0F,GAAQA,GAAQ2C,EAErB,GAAG3C,EAAKrc,QAAQ,uBACfvE,EAAAA,EAAU40G,oBADX,CAKA,IAAI9sF,EAAO9nB,EAAU+P,cAAc6Q,CACnC,EAAA,GAAIkH,EAAK9X,QAAQ,OAAa,GAA9B,GAA8B,CAC7B,IAAIpN,EAAK5C,EAAUg1G,mBACnBh1G,EAAUm2B,OAAO0J,QAAQ/X,EAAKvkB,MAAM,GAAA,EAAK,CAAGid,EAAAA,QAAQ,QAAQ,EAAK5d,CAAAA,EAAAA,CAAAA,CACjE,MACA5C,EAAU+1G,iBAAiBn1F,EAAK1V,UAAAA,CAPhC,CAQF,EAsBAlL,EAAUi1G,wBAA0B,SAASryG,EAE5C,CAAA,OAAO2xG,EADKv0G,EAAUw3D,iBAAiB50D,CAExC,CAAA,CAAA,EAEA5C,EAAUo1G,iBAAoB,SAASxyG,EACtC,CAAA,IAAI8C,EAAK1F,EAAUqE,SAASzB,CACxB6yG,EAAAA,EAAKz1G,EAAUk1G,gBAEnBl1G,EAAUg1G,mBAAqBpyG,EAI/B,IAAI24B,EAAS,CACZmE,QAAS1/B,EAAU+sB,UAAU8nF,iBAAiBnvG,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAAAA,EAC1E/D,KAAM3B,EAAU+sB,UAAUgoF,gBAAgBrvG,EAAGnE,WAAYmE,EAAGlE,SAAUkE,CAEpD+vG,CAAAA,EAAAA,EAAGv6F,cAAc,sBAAA,EACvBvN,UAAY,SAAS4tB,EAAOmE,OACzB+1E,UAAAA,EAAGv6F,cAAc,mBACvBvN,EAAAA,UAAY4tB,EAAO55B,KAE7B3B,EAAUg/B,SAASqpB,gBAAgBotD,EAAI,CAACl6E,EAAOmE,QAASnE,EAAO55B,IAAM2L,EAAAA,KAAK,MAG1E,IAAI0oG,EAAOP,EAAGv6F,cAAc,uBAC5B,MAAM+6F,EAAcj2G,EAAU+sB,UAAU+nF,mBAAmBpvG,EAAGnE,WAAYmE,EAAGlE,SAAUkE,GACpFuwG,GACFD,EAAKp9F,UAAU+L,OAAO,cACtBqxF,EAAKroG,UAAYsoG,GAEjBD,EAAKp9F,UAAUhX,IAAI,YAAA,CAErB,CAGA,EzC/SCy1C,S0CpEc,SAASr3C,EAAAA,CAExBA,EAAUkE,YAAY,mBAAoB,UACzC,CAAA,IAAIgyG,EACAl2G,EAAU+4D,YAAY8E,YACzBq4C,EAA4Bl2G,EAAU+4D,YAAY8E,UAAU3E,WAE7D,IAAIi9C,EAAwBn2G,EAAUM,OAAOqsD,aAAajhD,MACtD0qG,EAAAA,EAAyBp2G,EAAUM,OAAOssD,cAAclhD,MA4D5D,EAAA,SAAS2qG,EAAY5xE,EAAKp2B,EAAGkzC,EAAGjrC,EAAAA,CAG/B,QAFIggG,EAAOjoG,EAAEisB,qBAAqBmK,GAC9B8xE,EAAOh1D,EAAEjnB,qBAAqBmK,CAAAA,EACzB5hC,EAAI0zG,EAAKzzG,OAAS,EAAGD,GAAK,EAAGA,IAErC,GADI0+C,EAAIg1D,EAAK1zG,GACRyT,EAKC,CACL,IAAIlE,EAAI3E,SAASC,cAAc,MAC/B0E,EAAAA,EAAEzD,UAAY,oBACdyD,EAAEzE,UAAY2I,EAAKggG,EAAKzzG,CACxB0+C,CAAAA,EAAAA,EAAEr2C,WAAWwZ,aAAatS,EAAGmvC,CAC7BA,EAAAA,EAAEr2C,WAAWC,YAAYo2C,EACzB,MAVAA,EAAEuZ,SAAW,GAEVzsD,EAAEwsD,UACJtZ,EAAEsZ,QAAU,GASf,CA5ED76D,EAAUkE,YAAY,mBAAoB,SAAStB,EAAAA,CAC9CqG,KAAK3I,OAAOk2G,eAAiBvtG,KAAK5E,SAASzB,CAAIy0C,EAAAA,SAClDpuC,KAAK3I,OAAO+8D,gBAAAA,IAGZp0D,KAAK3I,OAAO+8D,gBAAkB,GAC9Br9D,EAAUM,OAAOqsD,aAAewpD,EAAsBzqG,MAAAA,EACtD1L,EAAUM,OAAOssD,cAAgBwpD,EAAuB1qG,MAAAA,EAGrD1L,EAAU+4D,YAAY8E,YACxB79D,EAAU+4D,YAAY8E,UAAU3E,UAAYg9C,IAI9C,IAAIx8C,EAAMzwD,KAAK3I,OAAOqiD,SAASthD,SAC/B,GAAI4H,KAAK3I,OAAO+8D,gBAAiB,CAChC,QAASx6D,EAAI,EAAGA,EAAI62D,EAAI52D,OAAQD,IAC3B62D,EAAI72D,CAAAA,EAAG2C,MAAQ,aACdyD,KAAK3I,OAAO+8D,iBAAmBr9D,EAAU+4D,YAAY8E,YACxD79D,EAAU+4D,YAAY8E,UAAU3E,UAAY,SAASt4C,EAAMrG,EAAO7U,EAAAA,CACjE,IAAI2sC,EAAUryC,EAAUk5C,YAAY30C,QAAQqc,EAAM,mBAAA,EAC9C3f,EAAQ,OACZoxC,EAAQn3B,cAAc,qBAAqBS,QAAU1a,EACrDoxC,EAAQn3B,cAAc,oBAAoBS,QAAU1a,EACpDoxC,EAAQpxC,MAAM0a,QAAU1a,EAExBjB,EAAUs9D,gBACjB,CAAA,GAKG,IAAIm5C,EAAoB,CAAC,iBAAkB,cAAA,EACvCC,EAAgB,CAAC12G,EAAUM,OAAOqsD,aAAc3sD,EAAUM,OAAOssD,aAAAA,EACrE,IAAS/pD,EAAI,EAAGA,EAAI4zG,EAAkB3zG,OAAQD,IAE7C,QADI8zG,EAAmBF,EAAkB5zG,CAAAA,EAChC0J,EAAI,EAAGA,EAAImqG,EAAc5zG,OAAQyJ,IAAK,CAG9C,QAFIqqG,EAAeF,EAAcnqG,CAC7BM,EAAAA,EAAAA,GACKxE,EAAI,EAAGA,EAAIuuG,EAAa9zG,OAAQuF,IACxC,GAAIuuG,EAAavuG,CAAAA,GAAMsuG,EAAkB,CACxC9pG,EAAQxE,EACR,KACA,CAEEwE,GAAU,IACb+pG,EAAavlG,OAAOxE,EAAO,CAAA,CAE5B,CAEF,CAID,OAFA5D,KAAK65C,kBAGP,CAAA,EAsBC,IAAIh6B,EAAM9oB,EAAU47D,eACpB57D,EAAU47D,eAAiB,UAAA,CAE1B,IAAI8B,EAAKz0D,KAAK4vD,YACV5vD,EAAAA,KAAK3I,OAAO+8D,kBACfK,EAAGz8D,MAAMsgB,WAAa,SAGtBm8C,EAAGz8D,MAAM0a,QAAU,SAEpB,IAAI5U,EAAM+hB,EAAIjd,MAAM5C,KAAMiJ,WAO1B,GANIjJ,KAAK3I,OAAO+8D,kBAEfK,EAAGz8D,MAAMsgB,WAAa,GACtBm8C,EAAGz8D,MAAM0a,QAAU,QAGhB1S,KAAK3I,OAAO+8D,gBAAiB,CAEhC,IAAIw5C,EAAe5tG,KAAK4vD,cACpBi+C,EAAe7tG,KAAK8tG,YAAcF,EAAa9zG,YACnD+zG,EAAAA,EAAal0G,GAAK5C,EAAUiM,MAC5B6qG,EAAanoG,WAAa,0BAC1B0nG,EAAY,WAAYQ,EAAcC,EAAc,SAASn6F,EAAAA,CAC5D,OAAOA,EAAEpC,KACb,CACG87F,EAAAA,EAAY,QAASQ,EAAcC,EAAc,EAAA,EACjDT,EAAY,SAAUQ,EAAcC,EAAc,SAASn6F,GAC1D,OAAIA,EAAEpX,QAAQzC,OACP6Z,EAAEpX,QAAQ0J,KAAKC,IAAKyN,EAAE4+C,eAAiB,EAAI,CAAA,CAAA,EAAIjlD,KADzB,EAEjC,GAEGugG,EAAa3rG,WAAWwZ,aAAaoyF,EAAcD,GAEnD5tG,KAAKwyD,UAAUq7C,CACX92G,EAAAA,EAAU+1C,WACb/1C,EAAU+1C,UAAU7qC,WAAWC,YAAYnL,EAAU+1C,SACtD9sC,EAAAA,KAAK8sC,UAAY+gE,EAEb92G,EAAUM,OAAOisD,eACpBvsD,EAAUI,MAAM02G,EAAahnG,WAAY,YAAa9P,EAAU49D,aAAAA,EAEjE59D,EAAUi9D,sBACVh0D,EAAAA,KAAKq0D,gBACL,CAAA,CACD,OAAOv2D,CACT,EAEC,IAAIwoD,EAAOvvD,EAAUs8D,cACrBt8D,EAAUs8D,cAAgB,UAAA,CAMzB,OALIrzD,KAAK8tG,cACR9tG,KAAK8tG,YAAY7rG,WAAWC,YAAYlC,KAAK8tG,WAC7C9tG,EAAAA,KAAK8tG,YAAc9tG,KAAK8sC,UAAY,MAG9BwZ,EAAK1jD,MAAM5C,KAAMiJ,SAC1B,CAAA,CACA,EAGA,E1C/EC2rD,U2CnEc,SAAU79D,EAAAA,CAExB,SAASg3G,EAAkBr1G,EAAAA,CAC1B,OAAO,IAAIQ,KACVR,EAAKkV,YAAAA,EACLlV,EAAKmV,SAAAA,EACLnV,EAAK6F,QACL7F,EAAAA,EAAKmI,SACLnI,EAAAA,EAAKyJ,aACLzJ,EAAKmpB,WAAAA,EACL,CAED,CAAA,CAMD,SAASmsF,EAAS72G,EAAAA,CACjB,MAASA,CAAAA,CAAAA,EAAM0zE,QAAU1zE,EAAM82G,kBAC/B,CA8CD,IACKC,EAoQL,SAASC,GAAAA,CACR,MAAMC,EAAa,CAAA,EACnB,UAAWx0G,KAAK7C,EAAUqsB,QAAS,CAClC,MAAM3mB,EAAK1F,EAAUqsB,QAAQxpB,CAAAA,EACzB6C,EAAGwxG,qBACDG,EAAW3xG,EAAGwxG,kBAAAA,IAClBG,EAAW3xG,EAAGwxG,oBAAsB,IAErCG,EAAW3xG,EAAGwxG,oBAAoBxxG,EAAG4xG,eAAel1G,QAAasD,CAAAA,EAAAA,EAElE,CACD,OAAO2xG,CACP,CAnSDr3G,EAAUu3G,UAAY,CAAA,EACtBv3G,EAAUw3G,kBAAoB,GAC9Bx3G,EAAUy3G,aAAe,GACzBz3G,EAAUi9B,gBAAkB,SAAUv3B,EAAIoyB,GACzCpyB,EAAGgyG,UAAY5/E,EACf7uB,KAAKwuG,aAAa/xG,EAAG9C,EAAAA,EAAM8C,EACtBuD,KAAKuuG,kBAAkB9xG,EAAGk+D,SAAAA,IAAY36D,KAAKuuG,kBAAkB9xG,EAAGk+D,SAAa,EAAA,CAAA,GAClF36D,KAAKuuG,kBAAkB9xG,EAAGk+D,SAAAA,EAAW9rC,CAAQpyB,EAAAA,CAC/C,EACC1F,EAAU23G,gBAAkB,SAAU7/E,EAAMl1B,GAC3C,IAAIg1G,EAAK3uG,KAAKuuG,kBAAkB50G,GAChC,OAAIg1G,EAAWA,EAAG9/E,CAAAA,EACX,IACT,EACC93B,EAAU63G,iBAAmB,SAAUj1G,GACtC,OAAQqG,KAAKuuG,kBAAkB50G,CAAAA,GAAO,EACxC,EAGMu0G,EAAgBn3G,EAAUwW,SAC9BxW,EAAUwW,SAAW,SAAUjV,EAAYC,EAAU8U,EAAM1T,EAAI2rD,EAC9D,CAAA,IAAIupD,EAAQX,EAActrG,MAAM5C,KAAMiJ,SAAAA,EAEtC,GAAI4lG,GAAS93G,EAAUqE,SAASyzG,CAAAA,EAAQ,CACvC,IAAIpyG,EAAK1F,EAAUqE,SAASyzG,GAExBpyG,EAAGnE,aACNmE,EAAGnE,WAAay1G,EAAkBtxG,EAAGnE,UAAAA,GAElCmE,EAAGlE,WACNkE,EAAGlE,SAAWw1G,EAAkBtxG,EAAGlE,QAAAA,EAEpC,CACD,OAAOs2G,CACV,EAGC93G,EAAUkE,YAAY,iBAAkB,SAAU9D,EAKjD,CAAA,OAHIA,EAAMk3G,iBACTl3G,EAAMk3G,eAAiBt3G,EAAU+sB,UAAU4D,WAAWvwB,EAAMk3G,cAEtD,GAAA,EACT,GAECt3G,EAAUkE,YAAY,kBAAmB,SAAUtB,EAAIskC,EACtD,CAAA,GAAA,CAAIj+B,KAAK8uG,aAAT,CACA9uG,KAAK8uG,aAAAA,GAED/3G,EAAUy3G,aAAa70G,CAE1B5C,IAAAA,EAAUy3G,aAAavwE,CAAAA,EAAUlnC,EAAUy3G,aAAa70G,CAAAA,EAAAA,OACjD5C,EAAUy3G,aAAa70G,CAG3B5C,GAAAA,EAAUw3G,kBAAkB50G,CAAAA,IAC/B5C,EAAUw3G,kBAAkBtwE,CAAAA,EAAUlnC,EAAUw3G,kBAAkB50G,UAC3D5C,EAAUw3G,kBAAkB50G,CAGpC,GAAA,QAASC,EAAI,EAAGA,EAAIoG,KAAKsuG,UAAUz0G,OAAQD,KACtCm1G,EAAM/uG,KAAKsuG,UAAU10G,CAAAA,GACjBq0G,oBAAsBt0G,IAC7Bo1G,EAAId,mBAAqBhwE,EACzBj+B,KAAKk+B,cAAc6wE,EAAIp1G,GAAIskC,EAAS,IAAM8wE,EAAIp1G,GAAGW,MAAM,GAAA,EAAK,CAE7D,CAAA,GAED,QAASV,KAAKoG,KAAKwuG,aAAc,CAChC,IAAIO,GAAAA,EAAM/uG,KAAKwuG,aAAa50G,IACpBq0G,oBAAsBt0G,IAC7Bo1G,EAAId,mBAAqBhwE,EACzB8wE,EAAIC,aAAAA,GAEL,CAED,IAAI14F,EAAKvf,EAAUy3G,aAAavwE,CAAAA,EAC5B3nB,GAAMA,EAAG04F,eAAAA,OACL14F,EAAG04F,aACV1/F,WAAW,UACV,CAAA,GAAIvY,EAAU0c,WACb,MAAO,GAER1c,EAAU8I,UAAU,iBAAkB,CAACo+B,EAAQlnC,EAAUqE,SAAS6iC,IAClE,EAAE,CAAA,GAAA,OAGGj+B,KAAK8uG,YAzCkB,CA0ChC,CAeC/3G,EAAAA,EAAUkE,YAAY,+BAAgC,SAAUtB,EAC/D,CAAA,IAAI8C,EAAKuD,KAAK5E,SAASzB,CACvB,EAAA,GAAIqG,KAAK09B,kBAAkB/jC,IAAQqG,KAAKivG,uBAAuBxyG,CA3IhE,GAAA,CAAA,SAA6BtF,GAC5B,MAASA,CAAAA,CAAAA,EAAMy9B,OACf,EAyI2Fn4B,CAf5F,GAAA,SAA+ByyG,EAAazyG,EAAAA,CAE3CyyG,EADSA,EACQ50G,MAAM,GACvB,EAAA,IAAI60G,EAAMp4G,EAAUiM,IAAAA,EAChB44B,EAAOszE,EAAY,GAAMA,EAAY,CAAA,EAAMzyG,EAAY,UACvD2yG,EAAMr4G,EAAUizD,YAAYvtD,CAChC2yG,EAAAA,EAAIz1G,GAAKw1G,EACTC,EAAInB,mBAAqBxxG,EAAGwxG,oBAAsBiB,EAAY,CAAA,EAC9DE,EAAIf,eAAiB,IAAIn1G,KAAKyV,OAAOitB,CACrCwzE,CAAAA,EAAAA,EAAIx6E,QAAU,GACd79B,EAAUwW,SAAS6hG,EACnB,GAKuBz1G,EAAI8C,CAAAA,MACpB,CACFuxG,EAASvxG,CAAAA,GAAOuD,KAAKiuC,cACxBjuC,KAAK2jF,iBAAiBlnF,CAAAA,EAGvB,IAAI4yG,EAAMrvG,KAAK4uG,iBAAiBj1G,CAAAA,EAChC,QAASC,KAAKy1G,EACTA,EAAInsG,eAAetJ,CAAAA,IACtBD,EAAK01G,EAAIz1G,CAAAA,EAAGD,GACRqG,KAAK5E,SAASzB,CACjBqG,GAAAA,KAAK+zB,YAAYp6B,EAAAA,IAGpB,CACD,MAAA,EACF,CAAA,EACC5C,EAAUkE,YAAY,iBAAkB,SAAUtB,EAAI8C,IAChDuD,KAAK09B,kBAAkB/jC,CAAOqG,GAAAA,KAAKivG,uBAAuBxyG,CACzD1F,IAAAA,EAAUqsB,QAAQzpB,CAAAA,IACtB8C,EAAGm4B,QAAU,GACb50B,KAAKwlD,SAAS7rD,EAAI8C,CAGtB,GAAA,CAAA,EACC1F,EAAUkE,YAAY,iBAAkB,SAAUtB,EAAIxC,EACrD,CAAA,GAAI6I,KAAKuoB,SAAU,MAAA,GAEnB,IAAI9rB,EAAKuD,KAAK5E,SAASzB,CAAAA,EAEvB,GAAIqG,KAAK09B,kBAAkB/jC,CA1J5B,GAAA,SAAyB8C,GACxB,IAAI9C,EAAK8C,EAAG9C,GAAGW,MAAM,GAEjB60G,EAAAA,EAAMp4G,EAAUiM,IAAAA,EACpBjM,EAAUyxB,YAAc,GACxB,IAAI4mF,EAAMr4G,EAAUizD,YAAYvtD,CAAAA,EAChC2yG,EAAIz1G,GAAKw1G,EACTC,EAAInB,mBAAqBt0G,EAAG,CAAA,EAE5B,IAAI+2C,EAAY/2C,EAAG,CAEnBy1G,EAAAA,EAAIf,eAAiB,IAAIn1G,KAAKyV,OAAO+hC,CAAAA,CAAAA,EAErC35C,EAAUi9B,gBAAgBo7E,EAAK1+D,CAC/B35C,EAAAA,EAAUwW,SAAS6hG,CACnBr4G,EAAAA,EAAUyxB,YAAc,EACxB,GA2IiB/rB,CAAAA,MAEV,CACFA,EAAGnE,aACNmE,EAAGnE,WAAay1G,EAAkBtxG,EAAGnE,aAElCmE,EAAGlE,WACNkE,EAAGlE,SAAWw1G,EAAkBtxG,EAAGlE,QAAAA,GAGhCy1G,EAASvxG,CAAAA,GAAOuD,KAAKiuC,cACxBjuC,KAAK2jF,iBAAiBlnF,CAAAA,EAIvB,IAAI4yG,EAAMrvG,KAAK4uG,iBAAiBj1G,GAChC,QAASC,KAAKy1G,EACTA,EAAInsG,eAAetJ,CAAAA,IAAAA,OACfoG,KAAKwuG,aAAaa,EAAIz1G,CAAGD,EAAAA,EAAAA,EAChCqG,KAAK+zB,YAAYs7E,EAAIz1G,CAAGD,EAAAA,GAAAA,EAGnBqG,GAAAA,OAAAA,KAAKuuG,kBAAkB50G,CAI9B,EAAA,QADI21G,EAAAA,GACKhsG,EAAI,EAAGA,EAAItD,KAAK+tB,UAAUl0B,OAAQyJ,IACtCtD,KAAK+tB,UAAUzqB,GAAGxI,aAAakF,KAAK3I,OAAOqC,eAAAA,GAAoBC,IAClE21G,EAAe,IAEZA,IACJtvG,KAAK2tC,WAAa,KACnB,CACD,MAAO,EACT,GACC52C,EAAUkE,YAAY,eAAgB,SAAUtB,GAC/C,GAAKqG,CAAAA,KAAKuoB,SAAU,CACnB,IAAI9rB,EAAKuD,KAAK5E,SAASzB,CAAAA,EACnBq0G,EAASvxG,CACZuD,GAAAA,KAAK2jF,iBAAiBlnF,CAAAA,CAEvB,CACD,MAAO,EACT,CACC1F,EAAAA,EAAUkE,YAAY,cAAe,SAAUtB,EAAI6M,EAAMw2F,EAIxD,CAAA,OAFIgR,EADKhuG,KAAK5E,SAASzB,CAEtBqG,CAAAA,IAAAA,KAAK2tC,WAAa,MAAA,EAErB,CACC52C,EAAAA,EAAUkE,YAAY,iBAAkB,SAAUtB,EACjD,CAAA,IAAI8C,EAAKuD,KAAK5E,SAASzB,CAIvB,EAAA,OAHKq0G,EAASvxG,CAAAA,GAvNf,SAAkCtF,EACjCA,CAAAA,EAAM0zE,MAAQ,GACd1zE,EAAMk3G,eAAiB,KACvBl3G,EAAM82G,mBAAqB,KAC3B92G,EAAM83C,SAAW,KACjB93C,EAAMy9B,QAAU,IAChB,EAkN0Bn4B,CAAAA,EAAAA,EAG5B,CACC1F,EAAAA,EAAUkE,YAAY,gBAAiB,SAAUtB,EAChD,CAAA,IAAI8C,EAAKuD,KAAK5E,SAASzB,CACnBq0G,EAAAA,EAASvxG,CACZuD,IAAAA,KAAK2jF,iBAAiBlnF,CAEtBuD,EAAAA,KAAK4M,iBAER,EAAA,CAAA,EACC7V,EAAU4sF,iBAAmB,SAAUlnF,EAElCA,CAAAA,EAAGnE,aACNmE,EAAGnE,WAAay1G,EAAkBtxG,EAAGnE,UAElCmE,GAAAA,EAAGlE,WACNkE,EAAGlE,SAAWw1G,EAAkBtxG,EAAGlE,QAGpCkE,GAAAA,EAAGwyC,SAAWjpC,KAAKM,OAAO7J,EAAGlE,SAASY,UAAYsD,EAAGnE,WAAWa,QAAa,GAAA,GAAA,EAC7EsD,EAAGlE,SAAWkE,EAAGsC,UACbtC,EAAG8yG,cACN9yG,EAAGnE,WAAWmoB,SAAS,CAAA,EACvBhkB,EAAGnE,WAAWioB,QAAQ9jB,EAAG8yG,YAAYhxG,WACrC9B,EAAGnE,WAAWmoB,SAAShkB,EAAG8yG,YAAY1hG,SACtCpR,CAAAA,EAAAA,EAAGnE,WAAWyuC,YAAYtqC,EAAG8yG,YAAY3hG,YAAAA,CAAAA,EAG5C,EAEC7W,EAAU2mC,kBAAoB,SAAU/jC,EAAAA,CACvC,OAAOA,EAAG8U,SAAW1H,EAAAA,QAAQ,GAC/B,GADwC,EACxC,EACChQ,EAAUk4G,uBAAyB,SAAUxyG,EAC5C,CAAA,OAAQA,EAAGwxG,oBAAsBxxG,EAAGwxG,oBAAsB,GAC5D,EAECl3G,EAAUy4G,iBAAmBz4G,EAAU+3C,aACvC/3C,EAAU+3C,aAAe,SAAUn1C,EAClC,CAAA,IAAIwlB,EAASnf,KAAKmf,OACdvgB,EAAI7H,EAAUM,OAAOo4G,mBACrBhzG,EAAKuD,KAAK5E,SAASzB,CACnB+1G,EAAAA,EAAMjzG,EAAGwxG,mBACT0B,EAAY3vG,KAAK09B,kBAAkB/jC,CACnCg2G,EAAAA,IACHD,EAAM/1G,EAAGW,MAAM,GAAK,EAAA,CAAA,GAGrB,IAAIs1G,EAAa,SAAUj2G,EAC1B,CAAA,IAAIxC,EAAQJ,EAAUqE,SAASzB,CAG/B,EAAA,OAFAxC,EAAM4H,UAAY5H,EAAMoB,SACxBpB,EAAMoB,SAAW,IAAIW,KAAK/B,EAAMmB,WAAWa,UAA6B,IAAjBhC,EAAM83C,QACtDl4C,EAAAA,EAAUy4G,iBAAiB71G,CACrC,CAAA,EAEE,IAAK+1G,GAAa,EAANA,GAAY,IAAM1B,EAASvxG,CAAAA,EAEtC,OAAOmzG,EAAWj2G,CAAAA,EAEnB,GAAK+1G,CAAAA,GAAOA,IAAQ,KAAUvwF,CAAAA,EAAO6P,OAAOgS,mBAAqBpiC,GAAK,YAAgBA,GAAK,UAAa+wG,CAAAA,EAEvG,OAAO3vG,KAAKwvG,iBAAiB71G,CAE9B,EAAA,GAAIiF,GAAK,MAAO,CACf,IAAIy+B,EAAOr9B,KACXjJ,EAAUghC,SAAS,CAClB1qB,KAAM8R,EAAO6P,OAAOgS,kBACpBxK,MAAOrX,EAAO6P,OAAO6gF,wBACrBjqG,MAAO,QACPnE,SAAU,SACVm1B,QAAS,CAACzX,EAAO6P,OAAOoS,mBAAoBjiB,EAAO6P,OAAOqS,uBAAwBliB,EAAO6P,OAAOuR,WAAAA,EAChGj1B,SAAU,SAAU1H,GACnB,OAASA,CAAAA,EAAAA,CACR,IAAK,GACJ,OAAOgsG,EAAWF,CAAAA,EACnB,IAAK,GACJ,OAAOryE,EAAKmyE,iBAAiB71G,CAC9B,EAAA,IAAK,GACJ,MAEF,CAAA,CAAA,CAAA,CAEL,MACGi2G,EAAWF,EAEd,EAgBC34G,EAAU+4G,uBAAyB/4G,EAAUmvD,mBAC7CnvD,EAAUmvD,mBAAqB,SAAUC,EAAAA,CACxC,QAASvsD,EAAI,EAAGA,EAAIoG,KAAKsuG,UAAUz0G,OAAQD,IACnCoG,OAAAA,KAAKojB,QAAQpjB,KAAKsuG,UAAU10G,CAAGD,EAAAA,EAAAA,EACvCqG,KAAKsuG,UAAY,CAEjB,EAAA,MAAMF,EAAaD,EACnB,EAAA,IAAI7zE,EAAQt6B,KAAK8vG,uBAAuB3pD,CACpC3pB,EAAAA,EAAM,CACV,EAAA,IAAS5iC,EAAI,EAAGA,EAAI0gC,EAAMzgC,OAAQD,IAC7B0gC,EAAM1gC,CAAAA,EAAGg7B,SAAW0F,EAAM1gC,GAAGq0G,qBAI7BD,EAAS1zE,EAAM1gC,CAAAA,CAAAA,EAClBoG,KAAK+vG,YAAYz1E,EAAM1gC,CAAI4iC,EAAAA,EAAAA,cAA2B35B,OAAAA,OAAsBurG,CAAAA,EAE5E5xE,EAAInjC,KAAKihC,EAAM1gC,CAGjB,CAAA,GAAA,OAAO4iC,CACT,EAEC,UAAA,CACC,IAAI3c,EAAM9oB,EAAUuI,cACpBvI,EAAUuI,cAAgB,SAAU7C,GACnC,MAAIuxG,CAAAA,CAAAA,EAASvxG,CACNojB,GAAAA,EAAI1U,KAAKnL,KAAMvD,CAAAA,CACzB,EACE,IAAIuzG,EAAmBj5G,EAAU8V,YACjC9V,EAAU8V,YAAc,SAAUlT,EACjC,CAAA,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAExB8C,EAAAA,GAAMuxG,EAASvxG,CAAAA,GAAAA,CAAQuD,KAAK09B,kBAAkB/jC,CACjD5C,EAAAA,EAAUy8C,cAEVw8D,EAAiB7kG,KAAKnL,KAAMrG,CAAAA,CAEhC,CACE,EAhBD,EAkBA,MAAMs2G,EAAel5G,EAAU2B,KAAKyoB,YAAY,eAmMhD,EAAA,SAAS+uF,EAAkBx3G,EAC1B,CAAA,MAAMy3G,EAAYz3G,EAAKyF,SACjBiyG,EAAa13G,EAAK6F,QAExB,EAAA,MAAO,CAAE4xG,UAAWE,EAAAA,UADFrqG,KAAK6pC,KAAKugE,EAAa,CAEzC,CAAA,CAAA,CAtMDr5G,EAAUg5G,YAAc,SAAUtzG,EAAI69B,EAAOg2E,EAAY9sF,EAAME,EAAI6sF,EAAUnC,EAAAA,CAC5E,GAAK3xG,CAAAA,EAAGouE,MACP,OAGD,IAAI2lC,EAAmBpC,EAAaA,EAAW3xG,EAAG9C,EAAAA,EAAMw0G,EAAkB1xG,EAAAA,EAAG9C,IACxE62G,IACJA,EAAmB,CAAA,GAGfhtF,IACJA,EAAOzsB,EAAU6J,WAEb8iB,IACJA,EAAK3sB,EAAU4J,WAGhB,MAAM8vG,EAAW,IAAIv3G,KAAKA,KAAKomB,IAAI7iB,EAAGnE,WAAWsV,YAAAA,EAAenR,EAAGnE,WAAWuV,WAAYpR,EAAGnE,WAAWiG,QAAW9B,EAAAA,EAAGnE,WAAWuI,SAAYpE,EAAAA,EAAGnE,WAAW6J,WAAAA,EAAc1F,EAAGnE,WAAWupB,WAAAA,CAAAA,CAAAA,EAGjL6uF,EAFc51B,GAAS,SAASr+E,EAAGouE,KAAAA,UAAeolC,EAAaxzG,EAAGlE,YAAa,CAAEq5E,QAAS6+B,CAE9Dt8B,CAAAA,EAAAA,QAAQ3wD,EAAME,CAAIlpB,EAAAA,IAAI9B,GACvD,CAAA,MAAMi4G,EAAe,IAAIz3G,KAAKR,CAI9B,EAAA,OAHAi4G,EAAajxG,SAASjD,EAAGnE,WAAWuI,SAAAA,CAAAA,EACpC8vG,EAAahxG,WAAWlD,EAAGnE,WAAW6J,WAAAA,CAAAA,EACtCwuG,EAAa7wF,WAAWrjB,EAAGnE,WAAWupB,WAAAA,CAAAA,EAC/B8uF,CAAY,CAEpB,EAAA,IAAIC,EAAe,EAEnB,MAAMC,EAAgBp0G,EAAGwyC,SAEzB,QAASr1C,EAAI,EAAGA,EAAI82G,EAAc72G,UAC7B02G,GAAYK,GAAgBL,GADS32G,IAAK,CAI9C,MAAMlB,EAAOg4G,EAAc92G,CAAAA,EAE3B,IAAIk3G,EAAYN,EAAiB93G,EAAKS,WACtC,GAAI23G,EAAW,CACd,GAAIA,EAAUl8E,QACb,SAEAg8E,IACAt2E,EAAMjhC,KAAKy3G,CAEhB,CAAA,KAAU,CACN,MAAM7jG,EAAOlW,EAAUizD,YAAYvtD,CAWnC,EAAA,GATAwQ,EAAKI,KAAO5Q,EAAG4Q,KACfJ,EAAK3U,WAAaI,EAClBuU,EAAKtT,GAAK8C,EAAG9C,GAAK,IAAMqM,KAAK6pC,KAAKn3C,EAAKS,WACvC8T,EAAK1U,SAAW,IAAIW,KAAKR,EAAKS,QAA4B,EAAA,IAAhB03G,CAC1C5jG,EAAAA,EAAK1U,SAAWxB,EAAUg6G,0BAA0B9jG,EAAK3U,WAAY2U,EAAK1U,SAAUkE,EAAI/D,EAAMuU,EAAK1U,UACnG0U,EAAK5N,OAAStI,EAAUuI,cAAc2N,IAIjCA,EAAK5N,QAAAA,CAAWtI,EAAUoK,aAAAA,CAAgBpK,EAAUM,OAAOugD,UAAW,SAC3Etd,EAAMjhC,KAAK4T,CAENqjG,EAAAA,IACJv5G,EAAUqsB,QAAQnW,EAAKtT,EAAAA,EAAMsT,EAC7BlW,EAAUu3G,UAAUj1G,KAAK4T,CAAAA,GAE1B2jG,GACA,CACD,CACH,EAEC75G,EAAUg6G,0BAA4B,SAAUz4G,EAAYC,EAAUkE,EAAIwjD,EAASsC,EAAAA,CAClF,IAAIniC,EAAQ9nB,EAAW6nB,kBAAsB5nB,EAAAA,EAAS4nB,oBACtD,OAAIC,EACCA,EAAQ,EAEJ,IAAIlnB,KAAK+mD,EAAQ9mD,QAA0B,EAAA,IAAdsD,EAAGwyC,SAA0B,GAAR7uB,EAAa,GAAA,EAI/D,IAAIlnB,KAAKX,EAASY,QAAoB,EAAA,GAARinB,EAAa,GAG7C,EAAA,IAAIlnB,KAAKqpD,EAAappD,UAC/B,EACCpC,EAAU+sF,YAAc,SAAUnqF,EAAIsM,EACrC,CAAA,IAAIxJ,EAAkB,OAAN9C,GAAM,SAAWA,EAAK5C,EAAUqE,SAASzB,CAAAA,EACrDq3G,EAAa,CAGjB,EAAA,GAFA/qG,EAAMA,GAAO,KAER+nG,EAASvxG,CAAAA,EACb,MAAO,CACN,CAAEnE,WAAYmE,EAAGnE,WAAYC,SAAUkE,EAAGlE,QAG5C,CAAA,EAAA,GAAIkE,EAAGm4B,QACN,MAAO,CAGR79B,EAAAA,EAAUg5G,YAAYtzG,EAAIu0G,KAAkBv0G,EAAGnE,WAAYmE,EAAGlE,SAAU0N,CAGxE,EAAA,QADImI,EAAS,GACJxU,EAAI,EAAGA,EAAIo3G,EAAWn3G,OAAQD,IACjCo3G,EAAWp3G,CAAGg7B,EAAAA,SAClBxmB,EAAO/U,KAAK,CAAEf,WAAY04G,EAAWp3G,GAAGtB,WAAYC,SAAUy4G,EAAWp3G,CAAAA,EAAGrB,WAI9E,OAAO6V,CACT,EACCrX,EAAUy1B,UAAY,SAAUhJ,EAAME,EACrC,CAAA,IAAItV,EAAS,CACb,EAAA,MAAMggG,EAAaD,EAAAA,EACnB,QAASz6F,KAAK1T,KAAKojB,QAAS,CAC3B,IAAI3mB,EAAKuD,KAAKojB,QAAQ1P,GACtB,GAAIjX,CAAAA,EAAGwxG,mBAIP,GAAID,EAASvxG,CACZ,EAAA,GAAI+mB,GAAQE,GAAMjnB,EAAGnE,WAAaorB,GAAMjnB,EAAGlE,SAAWirB,EAAM,CAC3D,IAAIytF,EAAM,GACVjxG,KAAK+vG,YAAYtzG,EAAIw0G,EAAAA,GAAWztF,EAAME,EAAAA,OAAe0qF,CAAAA,EACrD6C,EAAIl2G,QAAQ,SAASm2G,EAChBA,CAAAA,EAAU54G,WAAaorB,GAAMwtF,EAAU34G,SAAWirB,GACrDpV,EAAO/U,KAAK63G,CAAAA,CAEnB,CACA,CAAA,MAAc1tF,GAASE,GAClBtV,EAAO/U,KAAKoD,CAAAA,OAEFuD,KAAK09B,kBAAkBjhC,EAAG9C,EACrCyU,GAAAA,EAAO/U,KAAKoD,CAGb,CAAA,CACD,OAAO2R,CACT,EAGCrX,EAAUm0D,YAAc,SAAUzuD,EAAAA,CACjC,IAAInE,EAAa,IAAIY,KAAK8G,KAAK1H,YAC3BC,EAAW,IAAIW,KAAK8G,KAAKzH,UAC7ByH,KAAK1H,WAAaA,EAClB0H,KAAKzH,SAAWA,EAChByH,KAAKivC,SAAWjvC,KAAK6qE,MAAQ,IAC/B,EAEC9zE,EAAUM,OAAO85G,kBACjBp6G,EAAUM,OAAOo4G,mBAAqB,MACtC14G,EAAUM,OAAO+5G,mBAAqB,CAACvlC,EAAM2C,GAAGzK,QAAQ8H,EAAM4C,GAAG1K,QAAQ8H,EAAM6C,GAAG3K,QAAQ8H,EAAM8C,GAAG5K,QAAQ8H,EAAM+C,GAAG7K,SACpHhtE,EAAUM,OAAO04G,YAAc,WAC/Bh5G,EAAUM,OAAOqiD,SAASthD,SAAW,CACpC,CAAE0d,KAAM,cAAe5b,OAAQ,OAAQqC,KAAM,WAAYy6B,MAAAA,EACzD,EAAA,CAAElhB,KAAM,YAAavZ,KAAM,YAAarC,OAAQ,YAChD,CAAE4b,KAAM,OAAQnQ,OAAQ,GAAIpJ,KAAM,OAAQrC,OAAQ,MAAA,CAAA,EAGnDnD,EAAUkE,YAAY,aAAc,UACnClE,CAAAA,EAAUy3G,aAAe,GACzBz3G,EAAUw3G,kBAAoB,GAC9Bx3G,EAAUu3G,UAAY,CAAA,CACxB,GAyCC,MAAM+C,EAAoB,CACzB,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,KACH,EAAG,IAEEC,EAAAA,EAAmB,CACxB,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,CAAA,EAwCJ,SAASC,EAAgB74G,EAAAA,CACxB,OAAQA,EAAAA,CACP,IAAK,GACL,IAAK,IACJ,MAAO,GAAGA,CACX,KAAA,IAAK,GACJ,MAAO,GAAGA,CACX,KAAA,IAAK,GACJ,MAAO,GAAGA,CACX,KAAA,QACC,MAAO,GAAGA,MAEZ,CAED3B,EAAU+sB,UAAU0tF,oBAAsB,SAAShkE,EAAWr2C,EAAAA,CAE7D,MAAO,SAASo6G,EADH/jE,EAAUjvC,QAAAA,CAAAA,CAAAA,EAEzB,EACCxH,EAAU+sB,UAAU2tF,uBAAyB,SAASjkE,EAAWr2C,EAAAA,CAChE,MAAMu6G,EAAgBxB,EAAkB1iE,CACxC,EAAA,MAAO,SAAS+jE,EAAgBG,EAAcrB,SAAct5G,CAAAA,IAAAA,EAAUooB,OAAOzmB,KAAK+oB,SAASiwF,EAAcvB,YAC3G,EAECp5G,EAAU+sB,UAAU6tF,yBAA2B,SAASnkE,EAAWr2C,EAAAA,CAClE,MAAMuB,EAAO80C,EAAUjvC,QACjB6oC,EAAAA,EAAarwC,EAAUooB,OAAOzmB,KAAKknB,WAAW4tB,EAAU3/B,SAC9D,CAAA,EAAA,MAAO,SAAS0jG,EAAgB74G,CAAAA,CAAAA,WAAgB0uC,CAClD,EAAA,EACCrwC,EAAU+sB,UAAU8tF,4BAA8B,SAASpkE,EAAWr2C,GACrE,MAAMu6G,EAAgBxB,EAAkB1iE,CAAAA,EAClCpG,EAAarwC,EAAUooB,OAAOzmB,KAAKknB,WAAW4tB,EAAU3/B,SAC9D,CAAA,EAAA,MAAO,SAAS0jG,EAAgBG,EAAcrB,SAAct5G,CAAAA,IAAAA,EAAUooB,OAAOzmB,KAAK+oB,SAASiwF,EAAcvB,SAAAA,CAAAA,OAAiB/oE,CAC5H,EAAA,EAuCC,MAAMyqE,EAAc,CACnBnlC,QAAS,SAAU3oE,GAOlB,MAAO,CAAC8mE,MANM,CACbc,KAAME,EAAMa,QACZ/tC,SAAU,EACVusC,WAAYnnE,EAAMF,MAAMtF,QAGVsoE,CAAAA,EAAAA,MADD,IAAI3tE,KAAK,KAAM,EAAG,GAEhC,EACDuzE,OAAQ,SAAU1oE,EAAAA,CACjB,IAAIc,EAAMd,EAAMF,MAAM1F,OAAAA,EAAW,SAC7B0G,QAAWA,EAAM,GAOd,CAACgmE,MANM,CACbc,KAAME,EAAMY,OACZ9tC,SAAU,EACVysC,UAAW,CAACvmE,CAGEgiE,CAAAA,EAAAA,MADD,IAAI3tE,KAAK,KAAM,EAAG,CAAA,CAAA,CAEhC,EACDgzE,MAAO,SAAUnoE,EAMhB,CAAA,MAAO,CAAC8mE,MALM,CACbc,KAAME,EAAMK,MACZvtC,SAAU,GAGIkoC,MADD,IAAI3tE,KAAK,KAAM,EAAG,CAEhC,CAAA,CAAA,EACDyzE,OAAQ,SAAU5oE,GAQjB,MAAO,CAAC8mE,MAPM,CACbc,KAAME,EAAMc,OACZR,QAASpoE,EAAMF,MAAMgK,SAAa,EAAA,EAClC8wB,SAAU,EACVusC,WAAYnnE,EAAMF,MAAMtF,QAGVsoE,CAAAA,EAAAA,MADD,IAAI3tE,KAAK,KAAM,EAAG,GAEhC,EACD44G,SAAU,SAAU/tG,EAAAA,CAOnB,MAAO,CAAC8mE,MANM,CACbc,KAAME,EAAMY,OACZ9tC,SAAU,EACVysC,UAAWr0E,EAAUM,OAAO+5G,kBAAAA,EAGdvqC,MADD,IAAI3tE,KAAK,KAAM,EAAG,CAEhC,CAAA,CAAA,EACD64G,OAAQ,SAAUhuG,EAAO4T,EACxB,CAAA,MAAMkzD,EAAQ,CAAA,EACRc,EAAOh0D,EAAK1F,cAAc,+BAAiCX,EAAAA,MAC3DqtB,EAAW34B,KAAKC,IAAI,EAAG0R,EAAK1F,cAAc,gCAAA,EAAkCX,OAC5E0gG,EAAcr6F,EAAK1F,cAAc,kCAAA,EAAoCX,MACrE2gG,EAAat6F,EAAK1F,cAAc,iCAAA,EAAmCX,MAGzE,IAAIlV,EACAyI,EAEJ,OAJAgmE,EAAMlsC,SAAWA,EAITgtC,EACP,CAAA,IAAK,QACJd,EAAMc,KAAOE,EAAMK,MACnB,MACD,IAAK,SACJrB,EAAMc,KAAOE,EAAMY,OACnBrwE,EAAO,CAAA,EACPub,EAAKle,iBAAiB,gDAAA,EAAkDsB,QAAS4zG,GAAAA,CAC7EA,EAAG/8C,SACLx1D,EAAK/C,KAAKs1G,EAAGr9F,MACb,CAGFu5D,EAAAA,EAAMO,UAAYhvE,EAAK5B,IAAKqK,GAC3B,CAAA,OAAQA,EACP,CAAA,IAAK,KACJ,OAAOgnE,EAAM2C,GAAGzK,QACjB,IAAK,KACJ,OAAO8H,EAAM4C,GAAG1K,QACjB,IAAK,KACJ,OAAO8H,EAAM6C,GAAG3K,QACjB,IAAK,KACJ,OAAO8H,EAAM8C,GAAG5K,QACjB,IAAK,KACJ,OAAO8H,EAAM+C,GAAG7K,QACjB,IAAK,KACJ,OAAO8H,EAAM2N,GAAGzV,QACjB,IAAK,KACJ,OAAO8H,EAAM4N,GAAG1V,QAGjB,CAEF,EAAA,MACD,IAAK,UACJ8G,EAAMc,KAAOE,EAAMa,QAEfslC,IAAgB,aACnBnnC,EAAMK,WAAannE,EAAMF,MAAMtF,QAE/BsG,GAAAA,EAAMd,EAAMF,MAAM1F,SAAW,EACzB0G,GAAQ,KAAGA,EAAM,GACrBgmE,EAAMO,UAAY,CAACvmE,CAAAA,EACnBgmE,EAAMgH,SAAWq+B,EAAkBnsG,EAAMF,KAAAA,EAAOwsG,WAEjD,MACD,IAAK,SACJxlC,EAAMc,KAAOE,EAAMc,OACnB9B,EAAMsB,QAAUpoE,EAAMF,MAAMgK,SAAAA,EAAa,EAErCokG,GAAc,aACjBpnC,EAAMK,WAAannE,EAAMF,MAAMtF,WAE/BsG,EAAMd,EAAMF,MAAM1F,OAAAA,EAAW,EACzB0G,QAAWA,EAAM,GACrBgmE,EAAMO,UAAY,CAACvmE,CACnBgmE,EAAAA,EAAMgH,SAAWq+B,EAAkBnsG,EAAMF,KAAOwsG,EAAAA,UAAAA,CAKnD,IAAIxpC,EAAQ,IAAI3tE,KAAK,KAAM,EAAG,CAC9B,EAAA,MAAMg5G,EAAUv6F,EAAK1F,cAAc,iCAOnC,EAAA,OANGigG,IAAY,KACdrrC,EAAQlvD,EAAK1F,cAAc,sCAAwCX,EAAAA,MAC1D4gG,IAAY,UACrBrnC,EAAMj1B,MAAQ5vC,KAAKC,IAAI,EAAG0R,EAAK1F,cAAc,uCAAuCX,KAG9E,GAAA,CAACu5D,MAAOhE,EAAAA,MAAAA,CAAAA,CACf,EACDsrC,MAAO,UAAA,CACN,CAGF,EAAA,SAASC,EAAez6F,EAAMilE,EAAMzlF,EAlPpC,EAAA,SAAyBwgB,EAAMilE,EAC9BjlE,CAAAA,EAAK1F,cAAc,gCAAA,EAAkCX,OAASsrE,EAAOA,EAAKj+C,SAAW,IAAM,CAC3F,GAiPgBhnB,EAAMilE,CAAAA,EA/OvB,SAA0BjlE,EAAMilE,EAAMzlF,EAKrC,CAAA,GAJAwgB,EAAK1F,cAAc,gCAAA,EAAkCX,OAASsrE,EAAOA,EAAKj+C,SAAW,IAAM,EAErEhnB,EAAKle,iBAAiB,oCAC9BsB,EAAAA,QAAS4zG,GAAOA,EAAG/8C,UAC7BgrB,EAAAA,GAAQA,EAAKxR,UAChBwR,EAAKxR,UAAUrwE,QAAS8J,GACvB,CAAA,MAAMwtG,EAASf,EAAiBzsG,EAAIk/D,OAC9BuuC,EAAAA,EAAWjB,EAAkBgB,CACnC16F,EAAAA,EAAK1F,cAAc,6CAA6CqgG,CAAc1gD,IAAAA,EAAAA,QAAAA,EAAc,CAAA,MAEvF,CACN,MAAM0gD,EAAWjB,EAAkBl6G,EAAMmB,WAAW6F,OACpDwZ,CAAAA,EAAAA,EAAK1F,cAAc,6CAA6CqgG,OAAc1gD,QAAU,EACxF,CAED,EAgOiBj6C,EAAMilE,EAAMzlF,CA9N9B,EAAA,SAA2BwgB,EAAMilE,EAAMzlF,EAAAA,CACtCwgB,EAAK1F,cAAc,kCAAkCX,OAASsrE,EAAOA,EAAKj+C,SAAW,IAAM,EAE3F,MAAM4zE,EAAc56F,EAAK1F,cAAc,oDACjCugG,EAAAA,EAAoB76F,EAAK1F,cAAc,6DAC7CsgG,EAAYlrE,UAAYtwC,EAAU+sB,UAAU0tF,oBAAoBr6G,EAAMmB,WAAYnB,CAClFq7G,EAAAA,EAAkBnrE,UAAYtwC,EAAU+sB,UAAU2tF,uBAAuBt6G,EAAMmB,WAAYnB,CAEtFylF,EAAAA,IAAAA,CAASA,EAAK/K,UAAc+K,EAAKxR,WAAawR,EAAKxR,UAAUvxE,QAGjE8d,EAAK1F,cAAc,kCAAA,EAAoCX,MAAQ,oBAF/DqG,EAAK1F,cAAc,kCAAA,EAAoCX,MAAQ,YAIhE,EAkNkBqG,EAAMilE,EAAMzlF,GA9K/B,SAA0BwgB,EAAMilE,EAAMzlF,EAAAA,CACrC,MAAMs7G,EAAa96F,EAAK1F,cAAc,mDAAA,EAChCygG,EAAmB/6F,EAAK1F,cAAc,0DAC5CwgG,EAAAA,EAAWprE,UAAYtwC,EAAU+sB,UAAU6tF,yBAAyBx6G,EAAMmB,WAAYnB,CACtFu7G,EAAAA,EAAiBrrE,UAAYtwC,EAAU+sB,UAAU8tF,4BAA4Bz6G,EAAMmB,WAAYnB,CAAAA,EAE1FylF,KAASA,EAAK/K,UAAc+K,EAAKxR,WAAawR,EAAKxR,UAAUvxE,QAGjE8d,EAAK1F,cAAc,mCAAmCX,MAAQ,oBAF9DqG,EAAK1F,cAAc,mCAAmCX,MAAQ,YAI/D,EAoKiBqG,EAAMilE,EAAMzlF,CAAAA,EAlK9B,SAAqBwgB,EAAMilE,EAAMzlF,EAChC,CAAA,MAAMw7G,EAAah7F,EAAK1F,cAAc,iEAChC2gG,EAAAA,EAAcj7F,EAAK1F,cAAc,oEACjC4gG,EAAkBl7F,EAAK1F,cAAc,iCAAA,EAC3C0gG,EAAWrhG,MAAQ,EAEnB,IAAIwhG,EAAY/7G,EAAU2B,KAAKyoB,YAAY,UAAA,EACtCpqB,EAAUM,OAAO07G,qBACrBh8G,EAAUM,OAAO07G,mBAAqBD,EAAU/7G,EAAU2B,KAAKC,IAAI5B,EAAU0J,aAAgB,EAAA,GAAI,KAElGmyG,CAAAA,GAAAA,EAAYthG,MAAQva,EAAUM,OAAO07G,mBAEjCn2B,GAAQA,EAAKhnC,OAChBi9D,EAAgBvhG,MAAQ,QACxBqhG,EAAWrhG,MAAQsrE,EAAKhnC,OACdz+C,EAAM4H,WAAa5H,EAAM4H,UAAU6O,YAAAA,IAAkB,MAC/DilG,EAAgBvhG,MAAQ,KACxBshG,EAAYthG,MAAQwhG,EAAU37G,EAAM4H,SAAAA,GAEpC8zG,EAAgBvhG,MAAQ,QAEzBuhG,EAAgBG,cAAc,IAAIv2C,MAAM,UACxC,EA6IY9kD,EAAMilE,EAAMzlF,EACxB,CAuRD,SAAS87G,EAAsB12G,EAAAA,CAC9B,QAAS3C,EAAI,EAAGA,EAAI7C,EAAUM,OAAOqiD,SAASthD,SAASyB,OAAQD,IAAK,CACnE,IAAI+B,EAAU5E,EAAUM,OAAOqiD,SAASthD,SAASwB,CAAAA,EACjD,GAAI+B,EAAQY,OAASA,EACpB,OAAOxF,EAAU44D,YAAYh0D,EAAQma,IAEtC,CAAA,CACD,OAAO,IACP,CA9RD/e,EAAU+4D,YAAuB,UAAI,CACpCtjD,OAAQ,SAAUikD,EAAAA,CACjB,GAAIA,EAAI1hB,KAAM,CACb,IAAImkE,EAAMn8G,EAAU+4D,YAAuB,UACvC/gB,EAAOmkE,EAAIC,UAAU1iD,EAAI1hB,IACzBt2C,EAAAA,EAAOy6G,EAAIE,YAAYrkE,CAAAA,EAE3B,OADAA,EAAK/2C,MAAM0a,QAAU,OACdja,CACP,CACD,IAAI46G,EAAMt8G,EAAUooB,OAAO6P,OAE3B,MAAO;AAAA;AAAA;AAAA,4BAGkBqkF,EAAIlwE,YACJkwE;AAAAA,4BAAAA,EAAIjwE;6BACHiwE,EAAI/vE,aAAAA;AAAAA,8BACH+vE,EAAI9vE,cAAAA;AAAAA,6BACL8vE,EAAI7vE,aACF6vE;AAAAA,+BAAAA,EAAIhwE,eACNgwE;AAAAA,6BAAAA,EAAI5vE;;;;;;;6BAOJ4vE,EAAI3vE,eAAAA;AAAAA,8BACH2vE,EAAI1vE,gBAAAA;AAAAA,+BACH0vE,EAAIzvE,iBACLyvE;AAAAA,8BAAAA,EAAIxvE,gBAM4DwvE;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,8FAAAA,EAAIpvE,kBAAkB,CAAA,CAAA;AAAA,8FACtBovE,EAAIpvE,kBAAkB;8FACtBovE,EAAIpvE,kBAAkB,CACtBovE,CAAAA;AAAAA,8FAAAA,EAAIpvE,kBAAkB,CACtBovE,CAAAA;AAAAA,8FAAAA,EAAIpvE,kBAAkB,CAAA,CAAA;AAAA,8FACtBovE,EAAIpvE,kBAAkB,CAAA,CAAA;AAAA,8FACtBovE,EAAIpvE,kBAAkB;;;;;;;;;;;;;;;;;;;WAmBzGovE,EAAItvE,WAAAA;AAAAA;AAAAA;AAAAA,8BAGesvE,EAAIlwE,YAAAA;AAAAA,8BACJkwE,EAAIpwE,iBACPowE;AAAAA,2BAAAA,EAAIvvE,cAIgDuvE;AAAAA;AAAAA;AAAAA;AAAAA,+EAAAA,EAAIrwE;;;;;;;;;;QAWhF,EAGDswE,gBAAiB,SAAU37F,EAAMrG,EAAOna,EAEvC,CAAA,SAASkJ,EAAKsX,EAAAA,CACbA,EAAKhI,UAAUhX,IAAI,YACnB,CAAA,CACD,SAASqmF,EAAKrnE,EAAAA,CACbA,EAAKhI,UAAU+L,OAAO,YACtB,CAAA,CAND3kB,EAAU+4D,YAAuB,UAAEyjD,IAAM,CAAE1vG,MAAO1M,EAAMmB,WAAYwL,IAAK3M,EAAMoB,QAqE/Eof,EAAAA,EAAK1F,cAAc,iCAAmCsE,EAAAA,iBAAiB,SAAU,UAAA,EA9DjF,SAA8BjF,EAC7B,CAAA,MAAMozD,EAAS/sD,EAAK1F,cAAc,yBACpB,EAAVX,IAAU,SACb0tE,EAAKta,CAELrkE,EAAAA,EAAKqkE,CAEN,CAAA,GAwDqB1kE,KAAKsR,KAAAA,CAC9B,CAGGqG,EAAAA,EAAK1F,cAAc,gEAAkEsE,EAAAA,iBAAiB,SAAU,UAAA,EA1DhH,SAAsCjF,EACrC,CAAA,MAAMyK,EAAQ,CACby3F,OAAQ77F,EAAK1F,cAAc,8BAC3BwhG,EAAAA,QAAS97F,EAAK1F,cAAc,+BAAA,EAC5ByhG,OAAQ/7F,EAAK1F,cAAc,8BAE5B,CAAA,EAAA,OAAQX,EACP,CAAA,IAAK,QACJjR,EAAK0b,EAAMy3F,MACXnzG,EAAAA,EAAK0b,EAAM03F,OACXpzG,EAAAA,EAAK0b,EAAM23F,MAAAA,EACX,MACD,IAAK,SACJ10B,EAAKjjE,EAAMy3F,QACXnzG,EAAK0b,EAAM03F,OACXpzG,EAAAA,EAAK0b,EAAM23F,MACX,EAAA,MACD,IAAK,UACJrzG,EAAK0b,EAAMy3F,MAAAA,EACXx0B,EAAKjjE,EAAM03F,SACXpzG,EAAK0b,EAAM23F,MACX,EAAA,MACD,IAAK,SACJrzG,EAAK0b,EAAMy3F,MAAAA,EACXnzG,EAAK0b,EAAM03F,OAAAA,EACXz0B,EAAKjjE,EAAM23F,QAIb,GA8B6B1zG,KAAKsR,KAAAA,CACtC,GAGGqG,EAAK1F,cAAc,uDAAyDsE,EAAAA,iBAAiB,SAAU,UAhCvG,EAAA,SAA+BjF,EAC9B,CAAA,MAAMyK,EAAQ,CACbqrD,MAAOzvD,EAAK1F,cAAc,2DAC1BwvD,GAAI9pD,EAAK1F,cAAc,sDAAA,CAAA,EAExB,OAAQX,EACP,CAAA,IAAK,QACJjR,EAAK0b,EAAMqrD,KACX/mE,EAAAA,EAAK0b,EAAM0lD,EAAAA,EACX,MACD,IAAK,QACJud,EAAKjjE,EAAMqrD,OACX/mE,EAAK0b,EAAM0lD,EACX,EAAA,MACD,IAAK,KACJphE,EAAK0b,EAAMqrD,KAAAA,EACX4X,EAAKjjE,EAAM0lD,EAAAA,CAAAA,CAGb,GAcsBzhE,KAAKsR,KAC/B,CAAA,CAAA,EAEGva,EAAU+1C,UAAU6mE,iBACpB,EACDx/C,aAAc,UAAA,CAAY,EAC1BlE,UAAW,SAAUt4C,EAAMrG,EAAO7U,GACjC,IAAIm3G,EAAK78G,EAAU+4D,YAAuB,UACrC/4D,EAAU+1C,UAAU6mE,gBACxBC,EAAGN,gBAAgB37F,EAAMrG,EAAO7U,CAAAA,EACjCkb,EAAKwqC,KAAQ1lD,CAAAA,EAAGouE,MAEhBlzD,EAAKk8F,QAAU7zG,KAAKivG,uBAAuBxyG,CAE3C,EAAA,IAAIs4D,EAAK6+C,EAAGL,IAIZ,GAHAx+C,EAAGlxD,MAAQpH,EAAGnE,WACdy8D,EAAGjxD,IAAMrH,EAAGsC,UAERtC,EAAGouE,MAAO,CACb,MAAMipC,EAAWh5B,GAASr+E,EAAGouE,KAAAA,EAC7BunC,EAAez6F,EAAMm8F,EAAS7oC,YAAaxuE,CAAAA,EAC3C,MAAMs3G,EA5eT,SAA2BC,EAAUC,EAAAA,CACpC,MAAM33G,EAAU03G,EAAS13G,QACnBuqE,EAAQvqE,EAAQuqE,OAASotC,EAI/B,OAFwB33G,EAAQs5C,OAAUixB,GAASA,EAAMj5D,YAAAA,IAAkB,KAGnE,SAGJtR,EAAQqvE,OAASE,EAAMK,OAAS5vE,EAAQqiC,WAAa,GAAMriC,EAAQ8uE,UAE5D9uE,EAAQqvE,OAASE,EAAMY,QAAUnwE,EAAQqiC,WAAa,GAAMriC,EAAQ8uE,UAEpE9uE,EAAQqvE,OAASE,EAAMa,SAAWpwE,EAAQqiC,WAAa,GAAMriC,EAAQu1E,SAErEv1E,EAAQqvE,OAASE,EAAMc,QAAUrwE,EAAQqiC,WAAa,GAAMriC,EAAQu1E,SAEpEv1E,EAAQqvE,OAASE,EAAMK,OAAS5vE,EAAQ8uE,WAAa9uE,EAAQ8uE,UAAUvxE,SAAW9C,EAAUM,OAAO+5G,mBAAmBv3G,QAChIyC,EAAQ8uE,UAAU5G,SAASqH,EAAM2C,KACjClyE,EAAQ8uE,UAAU5G,SAASqH,EAAM4C,KACjCnyE,EAAQ8uE,UAAU5G,SAASqH,EAAM6C,KACjCpyE,EAAQ8uE,UAAU5G,SAASqH,EAAM8C,KACjCryE,EAAQ8uE,UAAU5G,SAASqH,EAAM+C,IAC1B,WAEA,SATA,SAFA,UAFA,SAFA,OAiBR,EAgdsCklC,EAAUr3G,EAAGsC,SAEjD,EAAA,GADA4Y,EAAK1F,cAAc,mCAAmCX,MAAQyiG,EAC3DA,IAAc,SAAS,CACzB,IAAIG,EACJ,OAAQJ,EAAS7oC,YAAYU,KAAAA,CAC5B,KAAKE,EAAMK,MACVgoC,EAAa,QACb,MACD,KAAKroC,EAAMY,OACVynC,EAAa,SACb,MACD,KAAKroC,EAAMa,QACVwnC,EAAa,UACb,MACD,KAAKroC,EAAMc,OACVunC,EAAa,SAGZA,IACFv8F,EAAK1F,cAAc,+BAAA,EAAiCX,MAAQ4iG,EAC5Dv8F,EAAK1F,cAAc,+BAAA,EAAiC+gG,cAAc,IAAIv2C,MAAM,QAG7E,CAAA,EAAA,CAEL,MACI21C,EAAez6F,EAAM,KAAMlb,CAAAA,EAC3Bkb,EAAK1F,cAAc,iCAAA,EAAmCX,MAAQ,QAE/DqG,EAAK1F,cAAc,iCAAA,EAAmC+gG,cAAc,IAAIv2C,MAAM,QAE9E,CAAA,CAAA,EACD1M,UAAW,SAAUp4C,EAAMlb,EAE1B,CAAA,GAAIkb,EAAKk8F,SAAWl8F,EAAK1F,cAAc,iCAAmCX,EAAAA,QAAU,QAwBnF7U,EAAGouE,MAAQpuE,EAAGouE,MAAQ,GACtBpuE,EAAGsC,UAAYtC,EAAGlE,aAzB0E,CAC5F,IAAIw8D,EAAKh+D,EAAU+4D,YAAuB,UAAEyjD,IACxCY,EAAe,CAAA,GAiCtB,WACC,IAAIC,EAAcr9G,EAAU44D,YAAY,QASxC,GARKykD,IACJA,EAAcnB,EAAsB,MAAA,GAEhCmB,IACJA,EAAcnB,EAAsB,eAIrC,GAAA,CAAKmB,EACJ,MAAM,IAAIntG,MAAM,CAAC,gLAChB,wLACA,6DACA,GACA,yCACA,kEACC5C,KAAK;AAAA,CAAA,CAAA,EAGR,OAAO+vG,CACP,GAlDcvkD,EAAAA,SAASskD,CACrBp/C,EAAAA,EAAGlxD,MAAQswG,EAAa77G,WACxB,MAAMokC,EAAU/kB,EAAK1F,cAAc,iCAAA,EAAmCX,MAChE+iG,EAAaxC,EAAYn1E,CAASq4B,EAAAA,EAAIp9C,CAC5Clb,EAAAA,EAAGouE,MAAQ,IAAIgB,EAAMwoC,EAAWxpC,KAAAA,EAAOp8D,WAAW8I,QAAQ,SAAU,EACpEw9C,EAAAA,EAAGjxD,IAAMuwG,EAAWxtC,MAEpBpqE,EAAGwyC,SAAWjpC,KAAK+D,OAAOoqG,EAAa57G,SAAW47G,EAAa77G,YAAc,GAAA,EAEzEy8D,EAAGu/C,QACN73G,EAAGnE,WAAa,IAAIY,KAAK67D,EAAGlxD,OAC5BpH,EAAG8yG,YAAc,IAAIr2G,KAAK67D,EAAGlxD,KAC7BkxD,EAAAA,EAAGu/C,OAAS,IAEZ73G,EAAG8yG,YAAc,KAElB9yG,EAAGsC,UAAYg2D,EAAGjxD,GACtB,CAKG,OAAOrH,EAAGouE,KACV,EAED7zC,MAAO,SAAUrf,EAAAA,CAChB,EAoCH,E3CjjCC48F,iB4CtEc,SAASx9G,EAAAA,CAwqBxB,SAASy9G,GACR,CAAA,IAAI/7F,EAAmB1hB,EAAU44D,YAAY,WAK7C,EAAA,GAJIl3C,IACHA,EAAmBw6F,EAAsB,WAGrCx6F,GAAAA,CAAAA,EACJ,MAAM,IAAIxR,MAAM,CAAC,2CACjB,yJACA,uDACF,GACA,yCACA,4BACA,IAAM5C,EAAAA,KAAK;AAAA,IAIV,OAAOoU,CACR,CAEA,SAASw6F,EAAsB12G,EAC9B,CAAA,QAAQ3C,EAAI,EAAGA,EAAI7C,EAAUM,OAAOqiD,SAASthD,SAASyB,OAAQD,IAAI,CACjE,IAAI+B,EAAU5E,EAAUM,OAAOqiD,SAASthD,SAASwB,CACjD,EAAA,GAAG+B,EAAQY,OAASA,EACnB,OAAOxF,EAAU44D,YAAYh0D,EAAQma,KAEtC,CACD,OAAO,IACR,CAoBA,SAASi4F,EAAkBr1G,EAAAA,CAE1B,OAAO,IAAIQ,KACVR,EAAKkV,YAAAA,EACLlV,EAAKmV,SAAAA,EACLnV,EAAK6F,QACL7F,EAAAA,EAAKmI,SACLnI,EAAAA,EAAKyJ,aACLzJ,EAAKmpB,WAAAA,EACL,CAEF,CAAA,CAGA,IACKqsF,EAruBLn3G,EAAUM,OAAOo9G,4BAAAA,GACjB19G,EAAUM,OAAO+5G,mBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,CAAA,EAC/Cr6G,EAAU+4D,YAAuB,UAAI,CACpCqjD,UAAY,SAASx7F,EACpB,CAAA,GAAWA,OAAAA,GAAQ,SAAS,CAC3B,IAAIld,EAAU1D,EAAU+1C,UAAU76B,cAAc,IAAI0F,CAAAA,EAAAA,EAChDld,IAGHA,EAAU+J,SAASsyB,eAAenf,CAEnCA,GAAAA,EAAOld,CACP,CAGD,OAFIkd,EAAK3f,MAAM0a,SAAW,SACzBiF,EAAK3f,MAAM0a,QAAU,IACfiF,CACP,EACDy7F,YAAa,SAASz7F,GACrB,OAAOA,EAAK+8F,YAGUp8D,EAHgB3gC,GAIjC5V,EAAMyC,SAASC,cAAc,KAAA,GAC7BE,YAAa2zC,EAAEx+C,UAAAA,EACnBqZ,CAAAA,EAAAA,EAAIpR,EAAI2C,UACR3C,EAAM,KACCoR,GALR,IAAsBmlC,EACoBnlC,EAArCpR,CAML,EACDyK,OAAO,SAASikD,EAAAA,CACf,GAAGA,EAAI1hB,KAAK,CACX,IAAImkE,EAAMn8G,EAAU+4D,YAAuB,UACvC/gB,EAAOmkE,EAAIC,UAAU1iD,EAAI1hB,IACzBt2C,EAAAA,EAAOy6G,EAAIE,YAAYrkE,GAE3B,OADAA,EAAK/2C,MAAM0a,QAAU,OACdja,CACP,CACD,IAAI46G,EAAMt8G,EAAUooB,OAAO6P,OAC3B,MAAO,2JAGsFqkF,EAAIzxE,iBAH1F,uGAIsFyxE,EAAIxxE,kBAJ1F,iHAKgGwxE,EAAIvxE,mBALpG,wGAMuFuxE,EAAItxE,kBAN3F,oOAYsFsxE,EAAIrxE,sBAZ1F,0FAaiFqxE,EAAIpxE,sBAbrF,8GAc8FoxE,EAAInxE,uBAdlG,qFAiBcmxE,EAAIlxE,YAjBlB,0FAkBQkxE,EAAIjxE,uBAlBZ,sJAqBmGixE,EAAIpvE,kBAAkB,GArBzH,6GAsB+FovE,EAAIpvE,kBAAkB,CAAA,EAtBrH,sHAuBmGovE,EAAIpvE,kBAAkB,CAvBzH,EAAA,6GAwB+FovE,EAAIpvE,kBAAkB,CAAA,EAxBrH,sHAyBmGovE,EAAIpvE,kBAAkB,CAzBzH,EAAA,6GA0B+FovE,EAAIpvE,kBAAkB,GA1BrH,sHA2BmGovE,EAAIpvE,kBAAkB,CAAA,EA3BzH,iMAgCyHovE,EAAIhxE,wBAhC7H,0FAiCkFgxE,EAAI9wE,sBAjCtF,4FAkCoF8wE,EAAI7wE,wBAlCxF,iJAmCkI6wE,EAAI/wE,yBAnCtI,mJAuCiCvrC,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CAAA,EAC9D,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CACpD,EAAA,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,GACpD,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CACpD,EAAA,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CAAA,EACpD,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CACpD,EAAA,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CAAA,EACrD,YACA4xF,EAAI5wE,gCA/CL,6FAiDqF4wE,EAAI3wE,+BAjDzF,+LAoDuH2wE,EAAIrxE,sBApD3H,yFAqDgFqxE,EAAIxwE,qBArDpF,wEAwDgCwwE,EAAIrvE,oBAAoB,GACvD,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAC7C,EAAA,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAC7C,EAAA,qBAAqBqvE,EAAIrvE,oBAAoB,GAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAC7C,EAAA,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,sBAAsBqvE,EAAIrvE,oBAAoB,EAC9C,EAAA,sBAAsBqvE,EAAIrvE,oBAAoB,IAC/C,YACAqvE,EAAIvwE,kBArEJ,+IAuE+HuwE,EAAI1wE,kBAvEnI,yIA0E+B5rC,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CAAA,EAC9D,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CACpD,EAAA,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CAAA,EACpD,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,GACpD,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CACpD,EAAA,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CAAA,EACpD,qBAAqB1qB,EAAUooB,OAAOzmB,KAAK+oB,SAAS,CACrD,EAAA,YACA4xF,EAAIzwE,iBAlFH,0DAoF+BywE,EAAIrvE,oBAAoB,GACvD,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAC7C,EAAA,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAC7C,EAAA,qBAAqBqvE,EAAIrvE,oBAAoB,GAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,qBAAqBqvE,EAAIrvE,oBAAoB,CAC7C,EAAA,qBAAqBqvE,EAAIrvE,oBAAoB,CAAA,EAC7C,sBAAsBqvE,EAAIrvE,oBAAoB,EAC9C,EAAA,sBAAsBqvE,EAAIrvE,oBAAoB,IA/F9C,oLAsG8EqvE,EAAItwE,iBAtGlF,wFAuGuEswE,EAAIpwE,kBAvG3E,0FAwGgFowE,EAAIrwE,6BAxGpF,gFAyGuEqwE,EAAInwE,kBAzG3E,gFA0GsEnsC,EAAUM,OAAO07G,mBA1GvF,yCA+GP,EACDQ,IAAK,CAAE,EACPoB,eAAgB,SAAS7yG,EAAKgU,EAAMxE,EACnC,CAAA,IAAIugB,EAAM/vB,EAAIgU,GACd,GAAI+b,CAAAA,EAAK,OAAO,KAChB,GAAGA,EAAIhZ,SAAU,OAAOgZ,EAExB,GAAGA,EAAIh4B,QACN,QAAQD,EAAE,EAAGA,EAAIi4B,EAAIh4B,OAAQD,IAC5B,GAAGi4B,EAAIj4B,CAAAA,EAAG0X,OAASA,EAClB,OAAOugB,EAAIj4B,CAAAA,EAGd,EACDg7G,gBAAiB,SAAS9yG,EAAKgU,EAAMkvF,GACpC,IAAInzE,EAAM/vB,EAAIgU,CAAAA,EACd,IAAI+b,EAAK,MAAO,GAChB,GAAGA,EAAIh4B,OAAO,CACb,GAAGmrG,EAAY,CAEd,QADIlnG,EAAM,CAAA,EACDlE,EAAI,EAAGA,EAAIi4B,EAAIh4B,OAAQD,IAC3Bi4B,EAAIj4B,CAAAA,EAAGg4D,SAAS9zD,EAAIzE,KAAKw4B,EAAIj4B,CAAAA,EAAG0X,KAErC,EAAA,OAAOxT,CACX,CACI,IAASlE,EAAI,EAAGA,EAAIi4B,EAAIh4B,OAAQD,IAC/B,GAAIi4B,EAAIj4B,CAAGg4D,EAAAA,QAAS,OAAO//B,EAAIj4B,GAAG0X,KAEpC,CAED,OAAGugB,EAAIvgB,MACE0zF,EAA0B,CAACnzE,EAAIvgB,KAAAA,EAAjBugB,EAAIvgB,MAD3B,MAEA,EAEDujG,wBAAyB,SAAS/yG,EAAKgU,EAEtC,CAAA,MAAiB,GADL/e,EAAU+4D,YAAuB,UAAE8kD,gBAAgB9yG,EAAKgU,CAC7C,GAAA,CACvB,EAEDg/F,gBAAiB,SAAShzG,EAAKgU,EAAMxE,EACpC,CAAA,IAAIugB,EAAM/vB,EAAIgU,CAAAA,EACd,GAAI+b,GAEJ,GAAGA,EAAI/b,MAAQA,EACd+b,EAAIvgB,MAAQA,UACJugB,EAAIh4B,OAEZ,QADIk7G,EAAoBzjG,OAAAA,GAAS,SACxB1X,EAAI,EAAGA,EAAIi4B,EAAIh4B,OAAQD,KAC3Bm7G,GAAcljF,EAAIj4B,CAAG0X,EAAAA,OAASA,KACjCugB,EAAIj4B,CAAAA,EAAGg4D,QAAUmjD,EAAAA,CAAAA,CAAezjG,EAAMugB,EAAIj4B,CAAAA,EAAG0X,KAAWA,EAAAA,CAAAA,CAAAA,GAG3D,EAEDgiG,gBAAgB,SAAS37F,EAAMrG,EAAO7U,GACrC,IAAI8H,EAAQxN,EAAU+4D,YAAuB,UACzCC,EAAYxrD,EAAMqwG,gBAClB3kD,EAAY1rD,EAAMuwG,gBACtB/9G,EAAU+4D,YAAuB,UAAEyjD,IAAM,CAAC1vG,MAAMpH,EAAGnE,WAAYwL,IAAIrH,EAAGsC,SAEtE,EAAA,IAAIi2G,EAAkBj+G,EAAU2B,KAAKspB,YAAYjrB,EAAUM,OAAO04G,YAAa,GAAA,EAQ3EkF,EAAAA,EAAWl+G,EAAU2B,KAAKyoB,YAAYpqB,EAAUM,OAAO04G,aAEvD93G,EAAM0f,EAAK0Z,qBAAqB,MAAA,EAAQ,GACxCvvB,EAAM,CAAA,EAEV,SAASozG,EAAaC,EACrB,CAAA,QAASv7G,EAAI,EAAGA,EAAIu7G,EAAKt7G,OAAQD,IAAK,CACrC,IAAIwqG,EAAM+Q,EAAKv7G,CAAAA,EAEf,GAAGwqG,EAAItuF,KACN,GAAIhU,EAAIsiG,EAAItuF,IAEN,EAAA,GAAGhU,EAAIsiG,EAAItuF,MAAM0H,SAAS,CAC/B,IAAI7F,EAAO7V,EAAIsiG,EAAItuF,IAAAA,EACnBhU,EAAIsiG,EAAItuF,MAAQ,CAAC6B,EAAMysF,CAE7B,CAAA,MACMtiG,EAAIsiG,EAAItuF,IAAAA,EAAMzc,KAAK+qG,CAAAA,OANnBtiG,EAAIsiG,EAAItuF,IAAQsuF,EAAAA,CAUlB,CACD,CAKD,GAHA8Q,EAAaj9G,EAAIo5B,qBAAqB,OACtC6jF,CAAAA,EAAAA,EAAaj9G,EAAIo5B,qBAAqB,YAEjCt6B,EAAUM,OAAO07G,mBAAoB,CACzC,IAAID,EAAY/7G,EAAU2B,KAAKyoB,YAAYpqB,EAAUM,OAAO04G,WAAAA,EAC5Dh5G,EAAUM,OAAO07G,mBAAqBD,EAAU/7G,EAAU2B,KAAKC,IAAI5B,EAAU0J,aAAgB,EAAA,GAAI,KACjG,CAAA,CAAA,CACDwvD,EAAUnuD,EAAK,cAAe/K,EAAUM,OAAO07G,oBAE/C,IAAI/yD,EAAI,SAAStsC,EAAAA,CAChB,OAAO3c,EAAU+1C,UAAU76B,cAAc,IAAIyB,MAAQ,CAAE1b,MAAM,CAAA,CAAA,CAChE,EAEE,SAASo9G,GAAAA,CACRp1D,EAAE,gBAAA,EAAkBhoD,MAAM0a,QAAU,OACpCstC,EAAE,iBAAA,EAAmBhoD,MAAM0a,QAAU,OACrCstC,EAAE,kBAAA,EAAoBhoD,MAAM0a,QAAU,OACtCstC,EAAE,iBAAA,EAAmBhoD,MAAM0a,QAAU,OACrCstC,EAAE,cAAgBhgD,KAAKsR,KAAOtZ,EAAAA,MAAM0a,QAAU,GAC9C3b,EAAUs9D,gBACV,CAAA,CAsED,SAASghD,EAAavzG,EAAKwP,EAC1B,CAAA,IAAIxN,EAAMhC,EAAS,IAEnB,GAAGgC,EAAIjK,OAEN,GADmBiK,EAAI,CAAGwN,EAAAA,OAASxN,EAAI,GAAGwN,OAAS,KAElD,QAAQ1X,EAAG,EAAGA,EAAIkK,EAAIjK,OAAQD,IAC1BkK,EAAIlK,CAAG0X,EAAAA,OAASA,IAClBxN,EAAIlK,GAAGg4D,QAAU,QAEf,CACJ,IAAI15C,EAAM,EACV,OAAO5G,EACN,CAAA,IAAK,KACJ4G,EAAM,EACN,MACD,IAAK,cACJA,EAAM,EACN,MACD,QACCA,EAAM,CAGRpU,CAAAA,EAAIoU,CAAK05C,EAAAA,QAAAA,EACT,MAED9tD,EAAIwN,MAAQA,CAEb,CAGDva,EAAU+4D,YAAuB,UAAEwlD,iBAnGnC,SAAyBvxG,EAAAA,CACxB,IAAIgb,EAAO,CAACgxC,EAAUjuD,EAAK,QAG3B,CAAA,EAAA,IAFAyzG,EAAUx2F,EAAK,CAAA,CAAA,EAAIA,EAAMhb,CAAAA,EAElBgb,EAAKllB,OAAS,GAAGklB,EAAK1lB,KAAK,IAClC,IAAIqrE,EAAS,GAET5gE,EAqCL,SAAsBhC,EACrB,CAAA,IAAIgC,EAAMhC,EAAS,IACnB,GAAGgC,EAAIjK,QACN,QAAQD,EAAG,EAAGA,EAAIkK,EAAIjK,OAAQD,IAC7B,GAAGkK,EAAIlK,CAAAA,EAAGg4D,QACT,OAAG9tD,EAAIlK,CAAG0X,EAAAA,OAASxN,EAAIlK,CAAAA,EAAG0X,OAAS,KAC3BxN,EAAIlK,GAAG0X,MAEV1X,EAEKA,GAAK,EACN,cAEA,mBAJA,aAURkK,EAAIwN,MACN,OAAOxN,EAAIwN,MAEb,MAAO,IACP,EA5DuBxP,CAEvB,EAAA,OAAIgC,GAAO,MACVC,EAAMD,IAAM,IAAI5K,KAAK,KAAM,EAAG,CAAA,EAC9BwrE,EAAS,MAED5gE,GAAO,cACfC,EAAMD,IAnEO,SAAS0xG,EACvB,CAAA,IAAI98G,EAAOs8G,EAAgBQ,CAAAA,EAG3B,OAFIz+G,EAAUM,OAAO85G,iBACpBz4G,EAAO3B,EAAU2B,KAAKC,IAAID,EAAM,EAAG,KAC7BA,GAAAA,CACV,EA8DyBq3D,EAAUjuD,EAAK,aAAA,CAAA,GAGpC/K,EAAU0+G,eAAe12F,EAAK1a,KAAK,MACnCqgE,EAAS1+D,KAAKC,IAAI,EAAG8pD,EAAUjuD,EAAK,kBAAA,CAAA,EAqBpCiC,EAAMD,IAAM/M,EAAU2B,KAAK,OAASqmB,EAAK1a,KAAK,MAAM,IAAInL,KAAK6K,EAAMF,KAAAA,EAAQ6gE,EAnB9D,EAmB+E,CAACpsE,WAAYyL,EAAMF,SAAWE,EAAMF,OAG1Hkb,EAAK1a,KAAK,GAAA,EAAO,IAAMqgE,CAC9B,EAyDD,IAAI6wC,EAAY,CACf9zE,MAAM,SAAS1iB,EAAMhb,EACpB,CAAA,IAAIgsD,EAAYh5D,EAAU+4D,YAAuB,UAAE8kD,gBAC/Cc,EAAoB3+G,EAAU+4D,YAAuB,UAAE+kD,wBAEvD9kD,EAAUjuD,EAAK,YAClBid,GADmC,KACnCA,EAAK1lB,KAAK2M,KAAKC,IAAI,EAAGyvG,EAAkB5zG,EAAK,aAC7CiC,CAAAA,CAAAA,EAAAA,EAAMF,MAAM0c,QAAQwvC,EAAUjuD,EAAK,WAAA,CAAA,IAEnCid,EAAK1lB,KAAK2M,KAAKC,IAAI,EAAGyvG,EAAkB5zG,EAAK,kBAC7Cid,EAAK1lB,KAAM02D,EAAUjuD,EAAK,eAC1Bid,EAAK1lB,KAAK2M,KAAKC,IAAI,EAAGyvG,EAAkB5zG,EAAK,aACxC/K,CAAAA,CAAAA,EAAAA,EAAUM,OAAOs+G,gBACrB5xG,EAAMF,MAAM0c,QAAQ,IAGtBxc,EAAMuwG,OAAAA,EACN,EACDlK,KAAK,SAASrrF,EAAMhb,EACnB,CAAA,IAAIgsD,EAAYh5D,EAAU+4D,YAAuB,UAAE8kD,gBAC/Cc,EAAoB3+G,EAAU+4D,YAAuB,UAAE+kD,wBAE3D91F,EAAK1lB,KAAK2M,KAAKC,IAAI,EAAGyvG,EAAkB5zG,EAAK,YAC7Cid,CAAAA,CAAAA,EAAAA,EAAK1lB,KAAK,EACV0lB,EAAAA,EAAK1lB,KAAK,EAAA,EAQV,QAPI8P,EAAI,CAEJ0oB,EAAAA,EAAMk+B,EAAUjuD,EAAK,WAAA,EAErB+C,EAAAA,EAAMd,EAAMF,MAAM1F,OAAAA,EAClBy3G,EAAe,GAEVh8G,EAAI,EAAGA,EAAIi4B,EAAIh4B,OAAQD,IAC/BuP,EAAE9P,KAAKw4B,EAAIj4B,CAAAA,CAAAA,EACXg8G,EAAeA,GAAgB/jF,EAAIj4B,CAAMiL,GAAAA,EAErCsE,EAAEtP,SACNsP,EAAE9P,KAAKwL,CAAAA,EACP+wG,MAEDzsG,EAAE+S,KAGGnlB,EAAAA,EAAUM,OAAOs+G,eAGVC,IACX7+G,EAAU8+G,mBAAmB9xG,EAAMF,MAAOsF,EAAG,EAAG,CAAA,EAChDpF,EAAMuwG,OAAS,KAJfvwG,EAAMF,MAAQ9M,EAAU2B,KAAKY,WAAWyK,EAAMF,KAAAA,EAC9CE,EAAMuwG,OAAS,IAMhBv1F,EAAK1lB,KAAK8P,EAAE9E,KAAK,GACjB,CAAA,CAAA,EACDQ,IAAI,SAASka,EAAAA,CACZ,IAAIgxC,EAAYh5D,EAAU+4D,YAAuB,UAAE8kD,gBAC/Cc,EAAoB3+G,EAAU+4D,YAAuB,UAAE+kD,wBAEvD9kD,EAAUjuD,EAAK,UAAA,GAAe,IACjCid,EAAK1lB,KAAK2M,KAAKC,IAAI,EAAGyvG,EAAkB5zG,EAAK,gBAG7Cid,EAAK1lB,KAAK,MACV0lB,EAAAA,EAAK1lB,KAAK,CACV0lB,EAAAA,EAAK1lB,KAAK,EAAA,EACV0lB,EAAK1lB,KAAK,EAAA,EACV0lB,EAAK1lB,KAAKtC,EAAUM,OAAO+5G,mBAAmB/sG,KAAK,GAAA,CAAA,EACnD0a,EAAK3W,OAAO,EAAG,CAEhB,EAAA,EACDo5B,KAAK,SAASziB,EAAMhb,EACnB,CAAA,IAAIgsD,EAAYh5D,EAAU+4D,YAAuB,UAAE8kD,gBAE/C7kD,EAAUjuD,EAAK,WAClBid,GADkC,KAClCA,EAAK1lB,KAAK,GACV0K,EAAAA,EAAMF,MAAM4c,SAAS,GACrB1c,EAAMF,MAAM0c,QAAQwvC,EAAUjuD,EAAK,UAAA,CAAA,EACnCiC,EAAMF,MAAM4c,SAASsvC,EAAUjuD,EAAK,YAGpCid,CAAAA,IAAAA,EAAK1lB,KAAK,GACV0lB,EAAAA,EAAK1lB,KAAK02D,EAAUjuD,EAAK,WACzBid,CAAAA,EAAAA,EAAK1lB,KAAK02D,EAAUjuD,EAAK,YACzBiC,CAAAA,EAAAA,EAAMF,MAAM0c,QAAQ,GACpBxc,EAAMF,MAAM4c,SAASsvC,EAAUjuD,EAAK,aAErCiC,CAAAA,GAAAA,EAAMuwG,OAAS,EACf,GAEEwB,EAAY,CACf1L,KAAK,SAASrrF,EAAMhb,EACnB,CAAA,IAAIksD,EAAYl5D,EAAU+4D,YAAuB,UAAEglD,gBACnD7kD,EAAUnuD,EAAK,aAAcid,EAAK,CAAA,CAAA,EAIlC,QAFI5V,EAAI4V,EAAK,CAAA,EAAGzkB,MAAM,GAAA,EAClB8K,EAAI,CAAA,EACCxL,EAAI,EAAGA,EAAIuP,EAAEtP,OAAQD,IAAKwL,EAAE+D,EAAEvP,CAAM,CAAA,EAAA,GAE7Cq2D,EAAUnuD,EAAK,WAAYsD,CAI3B,CAAA,EACDq8B,MAAM,SAAS1iB,EAAMhb,EAAAA,CACpB,IAAIksD,EAAYl5D,EAAU+4D,YAAuB,UAAEglD,gBAE/C/1F,EAAK,CACRkxC,IADe,IACfA,EAAUnuD,EAAK,aAAc,KAC7BmuD,EAAUnuD,EAAK,cAAeid,EAAK,IACnCkxC,EAAUnuD,EAAK,YAAaiC,EAAMF,MAAMtF,QAExC0xD,CAAAA,IAAAA,EAAUnuD,EAAK,aAAc,KAC7BmuD,EAAUnuD,EAAK,eAAgBid,EAAK,IACpCkxC,EAAUnuD,EAAK,cAAgBid,EAAK,IACpCkxC,EAAUnuD,EAAK,aAAcid,EAAK,IAEnC,EACDla,IAAI,SAASka,EAAMhb,GAClB,IAAIksD,EAAYl5D,EAAU+4D,YAAuB,UAAEglD,gBACnD7kD,EAAUnuD,EAAK,WAAY,KAC3BmuD,EAAUnuD,EAAK,YAAaid,EAAK,GACjC,EACDyiB,KAAK,SAASziB,EAAMhb,GACnB,IAAIksD,EAAYl5D,EAAU+4D,YAAuB,UAAEglD,gBAE/C/1F,EAAK,CAAA,IAAO,IACfkxC,EAAUnuD,EAAK,YAAa,GAAA,EAC5BmuD,EAAUnuD,EAAK,WAAYiC,EAAMF,MAAMtF,WACvC0xD,EAAUnuD,EAAK,aAAciC,EAAMF,MAAMgK,SAGzCoiD,CAAAA,IAAAA,EAAUnuD,EAAK,YAAa,KAC5BmuD,EAAUnuD,EAAK,aAAcid,EAAK,IAClCkxC,EAAUnuD,EAAK,YAAaid,EAAK,IACjCkxC,EAAUnuD,EAAK,cAAeiC,EAAMF,MAAMgK,SAE3C,CAAA,EAAA,CAAA,EA2CF9W,EAAU+4D,YAAuB,UAAEimD,iBAxCnC,SAAyBh3F,EAAMhb,EAAAA,CAC9B,IAAIksD,EAAYl5D,EAAU+4D,YAAuB,UAAEglD,gBAC/CtuG,EAAOuY,EAAKzkB,MAAM,GAAA,EAItB,OAHAykB,EAAOvY,EAAK,CAAGlM,EAAAA,MAAM,KACrBw7G,EAAU/2F,EAAK,CAAIA,CAAAA,EAAAA,EAAMhb,GAEjByC,EAAK,CAAA,EAAA,CACZ,IAAK,KACJ6uG,EAAavzG,EAAK,IAAA,EAClB,MACD,IAAK,GACJuzG,EAAavzG,EAAK,aAElB,EAAA,IAAIvJ,EAAWwL,EAAMD,IACjB/M,EAAUM,OAAO85G,iBACpB54G,EAAWxB,EAAU2B,KAAKC,IAAIJ,EAAW,GAAG,KAE7C03D,GAAAA,EAAUnuD,EAAK,cAAemzG,EAAS18G,CAEvC,CAAA,EAAA,MACD,QACC88G,EAAavzG,EAAK,kBAClBmuD,EAAAA,EAAUnuD,EAAK,mBAAoB0E,EAAK,CAK1CypD,CAAAA,CAAAA,CAAAA,EAAUnuD,EAAK,SAAUid,EAAK,CAG9B,CAAA,EAAA,IAAIpH,EAAO5gB,EAAU+4D,YAAuB,UAAE6kD,eAAe7yG,EAAK,SAAUid,EAAK,CAC7D,CAAA,EAAjBpH,EAAKkB,UAAY,UAEnBlB,EAAKq7F,cAAc,IAAIv2C,MAAM,QAC7B9kD,CAAAA,EAAAA,EAAKq7F,cAAc,IAAIgD,WAAW,OAElCr+F,CAAAA,GAAAA,EAAKq7F,cAAc,IAAIgD,WAAW,OAEnC,CAAA,CAAA,EAID,QAASp8G,EAAI,EAAGA,EAAI3B,EAAIg+G,SAASp8G,OAAQD,IAAK,CAC7C,IAAI0c,EAAKre,EAAIg+G,SAASr8G,CAAAA,EACd0c,EAAGR,OACL,WACAQ,EAAGuC,UAAY,UAAavC,EAAG5F,gBAGxB4F,EAAG5F,kBACb4F,EAAG5F,gBAAkB,GACrB4F,EAAGC,iBAAiB,QAAS6+F,CAJ7B9+F,IAAAA,EAAG5F,gBAAkB,GACrB4F,EAAGC,iBAAiB,SAAU6+F,CAOjC,GAAA,CACDr+G,EAAU+1C,UAAU6mE,eAAAA,EACpB,EACD1jD,UAAU,SAASt4C,EAAMrG,EAAO7U,EAAAA,CAC/B,IAAIm3G,EAAK78G,EAAU+4D,YAAuB,UACrC/4D,EAAU+1C,UAAU6mE,gBACxBC,EAAGN,gBAAgB37F,EAAMrG,EAAO7U,CAAAA,EACjCkb,EAAKwqC,KAAAA,CAAQ1lD,EAAGqC,SAEhB6Y,EAAKk8F,QAAU7zG,KAAKivG,uBAAuBxyG,CAE3C,EAAA,IAAIs4D,EAAK6+C,EAAGL,IACZx+C,EAAGlxD,MAAQpH,EAAGnE,WACdy8D,EAAGjxD,IAAMrH,EAAGsC,UAEZ60G,EAAGsC,gBAEC5kG,GACHsiG,EAAGmC,iBAAiBzkG,EAAOyjD,EAC5B,EACDhF,UAAU,SAASp4C,EAAMlb,EACxB,CAAA,GAAIkb,EAAKwqC,KAAM,CACd,IAAI4S,EAAKh+D,EAAU+4D,YAAuB,UAAEyjD,IACxCY,EAAe,CAAA,GA4EtB,WACC,IAAIC,EAAcr9G,EAAU44D,YAAY,QASxC,GARIykD,IACHA,EAAcnB,EAAsB,MAAA,GAEjCmB,IACHA,EAAcnB,EAAsB,eAIrC,GAAA,CAAKmB,EACJ,MAAM,IAAIntG,MAAM,CAAC,gLACnB,wLACA,6DACA,GACA,yCACA,kEACC5C,KAAK;AAAA,CAAA,CAAA,EAGL,OAAO+vG,CACR,GA7FevkD,EAAAA,SAASskD,CACrBp/C,EAAAA,EAAGlxD,MAAQswG,EAAa77G,WACxBmE,EAAGqC,SAAW/H,EAAU+4D,YAAuB,UAAEwlD,iBAAiBvgD,CAAAA,EAC9DA,EAAGu/C,QACN73G,EAAGnE,WAAa,IAAIY,KAAK67D,EAAGlxD,KAAAA,EAC5BpH,EAAG8yG,YAAc,IAAIr2G,KAAK67D,EAAGlxD,KAC7BkxD,EAAAA,EAAGu/C,WAEH73G,EAAG8yG,YAAc,KAElB9yG,EAAGsC,UAAYg2D,EAAGjxD,IAClBrH,EAAGshC,YAActhC,EAAGqC,SAASxE,MAAM,KAAK,CAC3C,CAAA,MACGmC,EAAGqC,SAAWrC,EAAGshC,YAAc,GAC/BthC,EAAGsC,UAAYtC,EAAGlE,SAEnB,OAAOkE,EAAGqC,QACV,EACDq3G,YAAa,UAAA,CAEZ,OADW3B,EAAAA,EAAsBliF,OACrBzrB,WAAWA,UACvB,EACDuvG,UAAW,WACV,OAAO5B,EAAAA,EAAsB78F,IAC7B,EACDwqC,KAAK,UACJ,CAAA,IAAI59C,EAAQxN,EAAU+4D,YAAY8E,UAEvBrwD,EAAM6xG,UACRj0D,EAAAA,MACR59C,EAAM2xG,cACP,CAAA,EACDl2C,MAAO,UAAA,CACN,IAAIz7D,EAAQxN,EAAU+4D,YAAY8E,UAEvBrwD,EAAM6xG,UAETj0D,EAAAA,MACP59C,EAAM2xG,cAAAA,CACP,EACDA,cAAe,UAAA,CACd,IAAI3xG,EAAQxN,EAAU+4D,YAAY8E,UAE9B6sC,EAAOl9F,EAAM6xG,YAChB9/F,EAAK/R,EAAM4xG,YACP1U,EAAAA,EAAKt/C,MAASs/C,EAAKoS,SAOvBpS,EAAKzpG,MAAM2N,OAAS,MACjB2Q,IACFA,EAAGte,MAAMq+G,mBAAqB,YAC9B//F,EAAGkF,YAAY9W,UAAY3N,EAAUooB,OAAO6P,OAAOkS,oBATpDugE,EAAKzpG,MAAM2N,OAAS,OACjB2Q,IACFA,EAAGte,MAAMq+G,mBAAqB,WAC9B//F,EAAGkF,YAAY9W,UAAY3N,EAAUooB,OAAO6P,OAAOmS,wBASrDsgE,EAAKt/C,KAAAA,CAAQs/C,EAAKt/C,KAElBprD,EAAUs9D,gBACV,CAAA,EACDr9B,MAAM,SAASrf,GACd,EACDw8C,aAAa,SAASx8C,EAAMvH,EAAQjZ,EACvBJ,CAAAA,EAAU+4D,YAAY8E,UACjBwhD,YACPvC,SACT98G,EAAU+4D,YAAY8E,UAAUshD,eACjC,CAyDFn/G,EAAAA,EAAUy3G,aAAe,CAAA,EACzBz3G,EAAUw3G,kBAAoB,CAAA,EAC9Bx3G,EAAUi9B,gBAAkB,SAASv3B,EAAIoyB,EAAAA,CACxCpyB,EAAGgyG,UAAY5/E,EACf7uB,KAAKwuG,aAAa/xG,EAAG9C,EAAAA,EAAM8C,EACtBuD,KAAKuuG,kBAAkB9xG,EAAGk+D,SAAAA,IAAY36D,KAAKuuG,kBAAkB9xG,EAAGk+D,SAAa,EAAA,CAAA,GAClF36D,KAAKuuG,kBAAkB9xG,EAAGk+D,SAAAA,EAAW9rC,CAAQpyB,EAAAA,CAC9C,EACA1F,EAAU23G,gBAAkB,SAAS7/E,EAAMl1B,GAC1C,IAAIg1G,EAAK3uG,KAAKuuG,kBAAkB50G,GAChC,OAAIg1G,EAAWA,EAAG9/E,CAAAA,EACX,IACR,EACA93B,EAAU63G,iBAAmB,SAASj1G,GACrC,OAAQqG,KAAKuuG,kBAAkB50G,CAAAA,GAAO,EACvC,EAeA5C,EAAUu3G,UAAY,CAAA,EAEjBJ,EAAgBn3G,EAAUwW,SAC9BxW,EAAUwW,SAAW,SAASjV,EAAYC,EAAU8U,EAAM1T,EAAI2rD,GAC7D,IAAIupD,EAAQX,EAActrG,MAAM5C,KAAMiJ,SAEtC,EAAA,GAAI4lG,GAAS93G,EAAUqE,SAASyzG,CAAQ,EAAA,CACvC,IAAIpyG,EAAK1F,EAAUqE,SAASyzG,CAAAA,EAEzBpyG,EAAGnE,aACLmE,EAAGnE,WAAay1G,EAAkBtxG,EAAGnE,aAEnCmE,EAAGlE,WACLkE,EAAGlE,SAAWw1G,EAAkBtxG,EAAGlE,QAAAA,GAEhCyH,KAAKivG,uBAAuBxyG,IAC/B1F,EAAUi9B,gBAAgBv3B,EAAsB,IAAlBA,EAAGm+D,YAC9Bn+D,EAAAA,EAAGqC,WACNrC,EAAGshC,YAActhC,EAAGqC,SAASxE,MAAM,GAAA,EAAK,GACzC,CACD,OAAOu0G,CACT,EAGA93G,EAAUkE,YAAY,kBAAmB,SAAStB,EAAIskC,GACrD,GAAIj+B,CAAAA,KAAK8uG,aAAT,CACA9uG,KAAK8uG,aAAe,GAEjB/3G,EAAUy3G,aAAa70G,KAEzB5C,EAAUy3G,aAAavwE,CAAUlnC,EAAAA,EAAUy3G,aAAa70G,CACjD5C,EAAAA,OAAAA,EAAUy3G,aAAa70G,CAAAA,GAG5B5C,EAAUw3G,kBAAkB50G,CAAAA,IAC9B5C,EAAUw3G,kBAAkBtwE,GAAUlnC,EAAUw3G,kBAAkB50G,CAC3D5C,EAAAA,OAAAA,EAAUw3G,kBAAkB50G,CAGpC,GAAA,QAASC,EAAI,EAAGA,EAAIoG,KAAKsuG,UAAUz0G,OAAQD,KACtCm1G,EAAM/uG,KAAKsuG,UAAU10G,CACjB+gE,GAAAA,WAAahhE,IACpBo1G,EAAIp0C,UAAY18B,EAChBj+B,KAAKk+B,cAAc6wE,EAAIp1G,GAAIskC,EAAS,IAAM8wE,EAAIp1G,GAAGW,MAAM,GAAK,EAAA,CAAA,CAAA,GAI9D,QAAQV,KAAKoG,KAAKwuG,aAAa,CAC9B,IAAIO,GAAM/uG,EAAAA,KAAKwuG,aAAa50G,CAAAA,GACrB+gE,WAAahhE,IACnBo1G,EAAIp0C,UAAY18B,EAChB8wE,EAAIC,aAAe,GAEpB,CAED,IAAI14F,EAAKvf,EAAUy3G,aAAavwE,CAC7B3nB,EAAAA,GAAMA,EAAG04F,eACJ14F,OAAAA,EAAG04F,aACV1/F,WAAW,WACV,GAAGvY,EAAU0c,WACZ,MAAA,GAED1c,EAAU8I,UAAU,iBAAkB,CAACo+B,EAAQlnC,EAAUqE,SAAS6iC,CAClE,CAAA,CAAA,CAAA,EAAE,WAGGj+B,KAAK8uG,YAzCkB,CA0C/B,CAAA,EACA/3G,EAAUkE,YAAY,+BAAgC,SAAStB,EAAAA,CAC9D,IAAI8C,EAAKuD,KAAK5E,SAASzB,GACvB,GAAIqG,KAAK09B,kBAAkB/jC,CAAAA,GAAQqG,KAAKivG,uBAAuBxyG,CAAAA,GAAOA,EAAGqC,UAAYrC,EAAGqC,UAAY,OAAS,CAC5GnF,EAAKA,EAAGW,MAAM,GAAA,EACd,IAAI60G,EAAMnvG,KAAKgD,IACX44B,EAAAA,EAAOjiC,EAAG,CAAA,EAAMA,EAAG,CAAKqM,EAAAA,KAAKM,MAAM7J,EAAGgyG,UAAY,GAElDW,EAAAA,EAAMpvG,KAAKgqD,YAAYvtD,GAC3B2yG,EAAIz1G,GAAKw1G,EACTC,EAAIz0C,UAAYl+D,EAAGk+D,WAAahhE,EAAG,CAAA,EACnC,IAAI+2C,EAAY9U,EAChBwzE,EAAIx0C,aAAelqB,EACnB0+D,EAAItwG,SAAWswG,EAAIrxE,YAAc,OACjC/9B,KAAKuN,SAAS6hG,CAEdpvG,EAAAA,KAAKg0B,gBAAgBo7E,EAAiB,IAAZ1+D,CAC5B,CAAA,KAAQ,CACFj0C,EAAGqC,UAAYkB,KAAKiuC,cACvBjuC,KAAK2jF,iBAAiBlnF,CAAAA,EACvB,IAAI4yG,EAAMrvG,KAAK4uG,iBAAiBj1G,CAChC,EAAA,QAASC,KAAKy1G,EACTA,EAAInsG,eAAetJ,KACtBD,EAAK01G,EAAIz1G,CAAGD,EAAAA,GACRqG,KAAK5E,SAASzB,CAAAA,GACjBqG,KAAK+zB,YAAYp6B,IAGpB,EAAA,CACD,MAAO,EACR,GACA5C,EAAUkE,YAAY,iBAAkB,SAAStB,EAAI8C,EAChDuD,CAAAA,CAAAA,KAAK09B,kBAAkB/jC,CAAAA,GAAOqG,KAAKivG,uBAAuBxyG,CAAAA,IACzD1F,EAAUqsB,QAAQzpB,KACrB8C,EAAGqC,SAAWrC,EAAGshC,YAAc,OAC/B/9B,KAAKwlD,SAAS7rD,EAAI8C,CAAAA,GAGrB,GACA1F,EAAUkE,YAAY,iBAAkB,SAAStB,EAAIxC,EACpD,CAAA,GAAI6I,KAAKuoB,SAAU,SAEnB,IAAI9rB,EAAKuD,KAAK5E,SAASzB,CAEvB,EAAA,GAAIqG,KAAK09B,kBAAkB/jC,GAAK,CAC3BA,EAAKA,EAAGW,MAAM,KAAlB,IACI60G,EAAMnvG,KAAKgD,IAAAA,EACfhD,KAAKwoB,YAAAA,GAEL,IAAI4mF,EAAMpvG,KAAKgqD,YAAY7yD,CAC3Bi4G,EAAAA,EAAIz1G,GAAKw1G,EACTC,EAAIz0C,UAAYhhE,EAAG,GACnB,IAAI+2C,EAAY/2C,EAAG,CAAA,EACnBy1G,EAAIx0C,aAAelqB,EACnB0+D,EAAItwG,SAAWswG,EAAIrxE,YAAc,GAEjC/9B,KAAKg0B,gBAAgBo7E,EAAiB,IAAZ1+D,CAAAA,EAC1B1wC,KAAKuN,SAAS6hG,GAEdpvG,KAAKwoB,YAAAA,EAEP,KAAQ,CACH/rB,EAAGnE,aACLmE,EAAGnE,WAAay1G,EAAkBtxG,EAAGnE,UAAAA,GAEnCmE,EAAGlE,WACLkE,EAAGlE,SAAWw1G,EAAkBtxG,EAAGlE,QAAAA,GAGhCkE,EAAGqC,UAAYkB,KAAKiuC,cACvBjuC,KAAK2jF,iBAAiBlnF,CAEvB,EAAA,IAAI4yG,EAAMrvG,KAAK4uG,iBAAiBj1G,CAChC,EAAA,QAASC,KAAKy1G,EACTA,EAAInsG,eAAetJ,CACfoG,IAAAA,OAAAA,KAAKwuG,aAAaa,EAAIz1G,CAAAA,EAAGD,EAChCqG,EAAAA,KAAK+zB,YAAYs7E,EAAIz1G,CAAGD,EAAAA,GAAAA,YAGnBqG,KAAKuuG,kBAAkB50G,CAI9B,EAAA,QADI21G,EAAe,GACVhsG,EAAI,EAAGA,EAAItD,KAAK+tB,UAAUl0B,OAAQyJ,IACtCtD,KAAK+tB,UAAUzqB,CAAAA,EAAGxI,aAAakF,KAAK3I,OAAOqC,eAAoBC,GAAAA,IAClE21G,EAAe,IAEZA,IACJtvG,KAAK2tC,WAAa,KACnB,CACD,QACD,CAAA,EACA52C,EAAUkE,YAAY,eAAgB,SAAStB,EAAAA,CAC9C,GAAKqG,CAAAA,KAAKuoB,SAAU,CACnB,IAAI9rB,EAAKuD,KAAK5E,SAASzB,CACnB8C,EAAAA,EAAGqC,UAAarC,CAAAA,EAAGm+D,cACtB56D,KAAK2jF,iBAAiBlnF,CAEvB,CAAA,CACD,QACD,CAAA,EACA1F,EAAUkE,YAAY,cAAe,SAAStB,EAAI6M,EAAMw2F,EAAAA,CAIvD,OAHSh9F,KAAK5E,SAASzB,CACfmF,EAAAA,UAAAA,CAAY0H,EAAK1H,UAAakB,KAAK09B,kBAAkB/jC,CAAAA,IAC5DqG,KAAK2tC,WAAa,MACZ,EACR,GACA52C,EAAUkE,YAAY,iBAAkB,SAAStB,GAChD,IAAI8C,EAAKuD,KAAK5E,SAASzB,GAGvB,OAFK8C,EAAGqC,WACPrC,EAAGqC,SAAWrC,EAAGshC,YAActhC,EAAGm+D,aAAen+D,EAAGk+D,UAAY,IAAA,EAElE,CAAA,EACA5jE,EAAUkE,YAAY,gBAAiB,SAAStB,EAAAA,CAC/C,IAAI8C,EAAKuD,KAAK5E,SAASzB,CAAAA,EACnB8C,EAAGqC,WACNkB,KAAK2jF,iBAAiBlnF,CAAAA,EAEtBuD,KAAK4M,iBAEP,EAAA,CAAA,EACA7V,EAAU4sF,iBAAmB,SAASlnF,EAClCA,CAAAA,EAAGnE,aACLmE,EAAGnE,WAAay1G,EAAkBtxG,EAAGnE,UAEnCmE,GAAAA,EAAGlE,WACLkE,EAAGlE,SAAWw1G,EAAkBtxG,EAAGlE,WAEpCkE,EAAGm+D,aAAe50D,KAAKM,OAAO7J,EAAGlE,SAASY,QAAAA,EAAYsD,EAAGnE,WAAWa,WAAa,GACjFsD,EAAAA,EAAGlE,SAAWkE,EAAGsC,UACbtC,EAAG8yG,cACN9yG,EAAGnE,WAAWmoB,SAAS,CAAA,EACvBhkB,EAAGnE,WAAWioB,QAAQ9jB,EAAG8yG,YAAYhxG,QACrC9B,CAAAA,EAAAA,EAAGnE,WAAWmoB,SAAShkB,EAAG8yG,YAAY1hG,SAAAA,CAAAA,EACtCpR,EAAGnE,WAAWyuC,YAAYtqC,EAAG8yG,YAAY3hG,eAG3C,EAEA7W,EAAU2mC,kBAAoB,SAAS/jC,GACtC,OAAOA,EAAG8U,SAAAA,EAAW1H,QAAQ,GAC9B,GADuC,EACvC,EACAhQ,EAAUk4G,uBAAyB,SAASxyG,EAC3C,CAAA,OAAQA,EAAGk+D,WAAal+D,EAAGk+D,WAAa,GACzC,EAEA5jE,EAAUy4G,iBAAmBz4G,EAAU+3C,aACvC/3C,EAAU+3C,aAAe,SAASn1C,EACjC,CAAA,IAAIwlB,EAASnf,KAAKmf,OACdvgB,EAAI7H,EAAUM,OAAOo4G,mBACrBhzG,EAAKuD,KAAK5E,SAASzB,CACnB+1G,EAAAA,EAAMjzG,EAAGk+D,UACTg1C,EAAY3vG,KAAK09B,kBAAkB/jC,GACnCg2G,IACHD,EAAM/1G,EAAGW,MAAM,GAAK,EAAA,CAAA,GAGrB,IAAIs1G,EAAa,SAASj2G,EACzB,CAAA,IAAIxC,EAAQJ,EAAUqE,SAASzB,CAG/B,EAAA,OAFAxC,EAAM4H,UAAY5H,EAAMoB,SACxBpB,EAAMoB,SAAW,IAAIW,KAAK/B,EAAMmB,WAAWa,QAAiC,EAAA,IAArBhC,EAAMyjE,YACtD7jE,EAAAA,EAAUy4G,iBAAiB71G,CAAAA,CACpC,EAEC,IAAM+1G,GAAW,EAAJA,GAAU,IAAMjzG,EAAGqC,SAE/B,OAAO8wG,EAAWj2G,GAEnB,GAAM+1G,CAAAA,GAAOA,IAAQ,KAARA,CAAmBvwF,EAAO6P,OAAOgS,mBAAqBpiC,GAAK,YAAgBA,GAAK,UAAa+wG,CAAAA,EAEzG,OAAO3vG,KAAKwvG,iBAAiB71G,CAE9B,EAAA,GAAIiF,GAAK,MAAO,CACf,IAAIy+B,EAAOr9B,KACXjJ,EAAUghC,SAAS,CAClB1qB,KAAM8R,EAAO6P,OAAOgS,kBACpBxK,MAAOrX,EAAO6P,OAAO6gF,wBACrBjqG,MAAO,QACPnE,SAAU,SACVm1B,QAAQ,CAACzX,EAAO6P,OAAOoS,mBAAoBjiB,EAAO6P,OAAOqS,uBAAwBliB,EAAO6P,OAAOuR,aAC/Fj1B,SAAU,SAAS1H,EAClB,CAAA,OAAA,CAAQA,GACP,IAAK,GACJ,OAAOgsG,EAAWF,GACnB,IAAK,GACJ,OAAOryE,EAAKmyE,iBAAiB71G,CAC9B,EAAA,IAAK,GACJ,MAAA,CAEF,GAEJ,MACEi2G,EAAWF,CAEb,CAAA,EAGA34G,EAAU+4G,uBAAyB/4G,EAAUmvD,mBAC7CnvD,EAAUmvD,mBAAqB,SAASC,EAAAA,CACvC,QAASvsD,EAAI,EAAGA,EAAIoG,KAAKsuG,UAAUz0G,OAAQD,IACnCoG,OAAAA,KAAKojB,QAAQpjB,KAAKsuG,UAAU10G,CAAGD,EAAAA,EAAAA,EACvCqG,KAAKsuG,UAAY,GAEjB,IAAIh0E,EAAQt6B,KAAK8vG,uBAAuB3pD,GACpC3pB,EAAM,CAAA,EACV,IAAS5iC,EAAI,EAAGA,EAAI0gC,EAAMzgC,OAAQD,IAC7B0gC,EAAM1gC,CAAGkF,EAAAA,SAERw7B,EAAM1gC,CAAGmkC,EAAAA,aAAe,QAC3B/9B,KAAK+vG,YAAYz1E,EAAM1gC,CAAI4iC,EAAAA,CAAAA,EAExBA,EAAInjC,KAAKihC,EAAM1gC,CAErB,CAAA,EAAA,OAAO4iC,CACR,EAGA,WACC,IAAI3c,EAAM9oB,EAAUuI,cACpBvI,EAAUuI,cAAgB,SAAS7C,EAClC,CAAA,MAAA,CAAA,CAAIA,EAAGqC,UACA+gB,EAAI1U,KAAKnL,KAAMvD,EACxB,EACC,IAAIuzG,EAAmBj5G,EAAU8V,YACjC9V,EAAU8V,YAAc,SAASlT,EAAAA,CAChC,IAAI8C,EAAK1F,EAAUqE,SAASzB,CAAAA,EACzB8C,GAAMA,EAAGqC,WAGXrC,EAAGshC,aAAethC,EAAGqC,UAAY,IAAIxE,MAAM,GAAA,EAAK,IAE7CmC,GAAMA,EAAGqC,UAAakB,CAAAA,KAAK09B,kBAAkB/jC,CAChD5C,EAAAA,EAAUy8C,YAEVw8D,EAAAA,EAAiB7kG,KAAKnL,KAAMrG,CAAAA,CAE/B,CACC,IAED5C,EAAUu/G,gBAAkB,CAC3BzxG,IAAI,EAAGulG,KAAK,EAAG3oE,MAAM,EAAGD,KAAK,EAAA,EAE9BzqC,EAAU2B,KAAK69G,SAAW,SAAS//D,EAAI3xC,EAAKulG,EAAAA,CAC3C5zD,EAAGj2B,QAAQ,CAAA,EACX,IAAIi2F,EAAgBz/G,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKs9C,IAGpD1zB,EAAa,EAANje,GAFXulG,EAAoB,GAAZA,EAAO,IACJ5zD,EAAGr4C,OAAAA,EACqB,EACnCq4C,EAAGj2B,QAAQuC,GAAQsnF,EAAQtnF,EAAO,EAAKA,CAAAA,EACvC,IAAI2zF,EAAW1/G,EAAU2B,KAAK4nB,YAAY,IAAIpnB,KAAKs9C,IACnD,OAAGggE,EAAcr9G,QAAcs9G,IAAAA,EAASt9G,SAIzC,EACApC,EAAU8+G,mBAAqB,SAASr/D,EAAItgC,EAAMwgG,EAAKl1G,EAAMm1G,EAAAA,CAE5D,QADIC,GAAQpgE,EAAGr4C,OAAAA,IAAapH,EAAUM,OAAOgpB,gBAAkB,EAAI,IAAMq2F,EAChE98G,EAAI,EAAGA,EAAIsc,EAAKrc,OAAQD,IAChC,GAAIsc,EAAKtc,CAAAA,EAAKg9G,EACb,OAAOpgE,EAAGj2B,QAAQi2B,EAAGj4C,QAAsB,EAAA,EAAV2X,EAAKtc,CAAAA,EAASg9G,GAAQp1G,EAAOk1G,EAAMC,EAEtE32G,EAAAA,KAAK61G,mBAAmBr/D,EAAItgC,EAAMwgG,EAAMl1G,EAAM,KAAMk1G,CACrD,CAAA,EACA3/G,EAAU0+G,eAAiB,SAASl5G,EACnC,CAAA,IAAIs6G,EAAqB,aAAet6G,EACxC,GAAKyD,CAAAA,KAAKtH,KAAKm+G,CAAAA,EAAqB,CACnC,IAAIC,EAAiBv6G,EAAKjC,MAAM,KAE5By8G,EAAe,OAASx6G,EACxBy6G,EAAoBh3G,KAAKs2G,gBAAgBQ,EAAe,CAAMA,CAAAA,EAAAA,EAAe,GAEjF,GAAIA,EAAe,CAAA,GAAM,OAASA,EAAe,CAAA,GAAM,OAAQ,CAC9D,IAAIG,EAAW,KACf,GAAIH,EAAe,CAAA,IAClBG,EAAWH,EAAe,CAAA,EAAGx8G,MAAM,GAAA,EAC/BvD,EAAUM,OAAOgpB,iBAAiB,CACrC,QAASzmB,EAAI,EAAGA,EAAIq9G,EAASp9G,OAAQD,IACpCq9G,EAASr9G,CAAAA,EAAoB,EAAdq9G,EAASr9G,CAAAA,GAAW,EACpCq9G,EAAS/6F,MACT,CAGFlc,KAAKtH,KAAKm+G,CAAAA,EAAsB,SAASja,EAAI5C,EAAAA,CAC5C,IAAI/1F,EAAQ+B,KAAK+D,OAAOiwF,EAAG7gG,QAAYyjG,EAAAA,EAAGzjG,YAhBxB,MAgBsD69G,EAAAA,EAMxE,OALI/yG,EAAQ,GACX24F,EAAGr8E,QAAQq8E,EAAGr+F,QAAAA,EAAY0F,EAAQ+yG,CAC/BC,EAAAA,GACHlgH,EAAU8+G,mBAAmBjZ,EAAIqa,EAAU,EAAGD,CAExCpa,EAAAA,CACX,EACG58F,KAAKtH,KAAKq+G,CAAgB,EAAA,SAASvgE,EAAI51B,EACtC,CAAA,IAAIg8E,EAAK,IAAI1jG,KAAKs9C,EAAGr9C,QAAAA,CAAAA,EACrB,GAAI89G,EACH,QAASrhE,EAAQ,EAAGA,EAAQh1B,EAAKg1B,IAChC7+C,EAAU8+G,mBAAmBjZ,EAAIqa,EAAU,EAAGD,CAAAA,OAE/Cpa,EAAGr8E,QAAQq8E,EAAGr+F,QAAYqiB,EAAAA,EAAMo2F,CAEjC,EAAA,OAAOpa,CACX,CACG,MACQka,EAAe,CAAsC,GAAhC,SAAWA,EAAe,CAAA,GAAM,SAC7D92G,KAAKtH,KAAKm+G,CAAAA,EAAsB,SAASja,EAAI5C,EAAIkd,EAChD,CAAA,IAAIjzG,EAAQ+B,KAAK6pC,MAA0B,GAAnBmqD,EAAGpsF,YAAqC,EAAA,EAAhBosF,EAAGnsF,SAAiB,EAAA,GAAyB,GAAnB+uF,EAAGhvF,cAAqC,EAAhBgvF,EAAG/uF,SAAiB,EAAA,IAAEjU,EAA0B,CAOlJ,EAAA,OALIqK,GAAS,IACZ24F,EAAGr8E,QAAQ,CAAA,EACXq8E,EAAGn8E,SAASm8E,EAAG/uF,SAAa5J,EAAAA,EAAQ+yG,CAG9BjgH,GAAAA,EAAU2B,KAAKq+G,CAAcna,EAAAA,EAAI,EAAGsa,CAAAA,CAI/C,EACGl3G,KAAKtH,KAAKq+G,CAAgB,EAAA,SAASvgE,EAAI51B,EAAKs2F,EAAgBC,EACvDA,CAMJ,GANIA,EAGHA,IAFAA,EAAe,EAKbA,EADY,GAEd,OAAO,KAGR,IAAIva,EAAK,IAAI1jG,KAAKs9C,EAAGr9C,QACrByjG,CAAAA,EAAAA,EAAGr8E,QAAQ,CAAA,EAGXq8E,EAAGn8E,SAASm8E,EAAG/uF,SAAa+S,EAAAA,EAAMo2F,CAClC,EAAA,IAAII,EAAYxa,EAAG/uF,SAAAA,EACfwpG,EAAWza,EAAGhvF,cAClBgvF,EAAGr8E,QAAQ22F,EAAe5+G,WAAWiG,WACjCu4G,EAAe,CAAA,GAClB//G,EAAU2B,KAAK69G,SAAS3Z,EAAIka,EAAe,CAAIA,EAAAA,EAAe,IAG/D,IAAIQ,EAA2BvgH,EAAUM,OAAOkgH,6BAYhD,OAXG3a,EAAG/uF,SAAcupG,GAAAA,GAAaE,GAA4B,SAI3D1a,EAFE0a,IAA6B,UAE1B,IAAIp+G,KAAKm+G,EAAUD,EAAY,EAAG,EAAGxa,EAAG/7F,SAAAA,EAAY+7F,EAAGz6F,WAAAA,EAAcy6F,EAAG/6E,WAAc+6E,EAAAA,EAAGr2B,gBAGzFxvE,CAAAA,EAAAA,EAAU2B,KAAKq+G,CAAc,EAAA,IAAI79G,KAAKm+G,EAAUD,EAAY,EAAG,CAAA,EAAIx2F,GAAK,EAAGs2F,EAAgBC,CAI3Fva,GAAAA,CACX,EAEE,CACF,EACA7lG,EAAUg5G,YAAc,SAAStzG,EAAI69B,EAAOg2E,EAAY9sF,EAAME,EAAI6sF,GAEjE/sF,EAAOA,GAAQxjB,KAAKY,UACpB8iB,EAAKA,GAAM1jB,KAAKW,UAChB,IAAIsF,EAAMsqG,GAAa,GACnBvW,EAAK,IAAI9gG,KAAKuD,EAAGnE,WAAWa,QAE5Bq+G,CAAAA,EAAAA,EAAYxd,EAAGn5F,SAEf+vG,EAAAA,EAAe,EAOnB,IAAA,CALKn0G,EAAGshC,aAAethC,EAAGqC,WACzBrC,EAAGshC,YAActhC,EAAGqC,SAASxE,MAAM,GAAA,EAAK,IAEzC0F,KAAKy1G,eAAeh5G,EAAGshC,WAAAA,EACvBi8D,EAAKjjG,EAAU2B,KAAK,aAAe+D,EAAGshC,aAAai8D,EAAIx2E,EAAM/mB,CACrDu9F,EAAAA,IACPA,EAAKv9F,EAAGnE,YACRvB,EAAUg6G,0BAA0B/W,EAAGx2E,EAAK/mB,EAAGu9F,EAAG,IAAI9gG,KAAK8gG,EAAG7gG,QAAAA,EAA8B,IAAlBsD,EAAGm+D,eAAsBzhE,QAAaqqB,GAAAA,EAAKrqB,QACrH6gG,GAAAA,EAAG7gG,UAA8B,IAAlBsD,EAAGm+D,cAAuBp3C,EAAKrqB,YAC7C6gG,EAAKh6F,KAAKtH,KAAK,OAAS+D,EAAGshC,WAAai8D,EAAAA,EAAI,EAAGv9F,CAAAA,EAGjD,KAAOu9F,GAAOA,EAAKt2E,GAAMs2E,EAAKv9F,EAAGlE,WAAa0N,EAAM,GAAK2qG,EAAe3qG,IAAO,CAC9E+zF,EAAGt6F,SAAS83G,CAAAA,EAEZ,IAAI9mE,EAAa35C,EAAUM,OAAkC,4BAAI6B,KAAKomB,IAAI06E,EAAGpsF,YAAeosF,EAAAA,EAAGnsF,WAAYmsF,EAAGz7F,QAAAA,EAAWy7F,EAAGn5F,SAAAA,EAAYm5F,EAAG73F,WAAc63F,EAAAA,EAAGn4E,WAAgBm4E,CAAAA,EAAAA,EAAG7gG,UAC3Kw1G,EAAK3uG,KAAK0uG,gBAAgBh+D,EAAWj0C,EAAG9C,EAC5C,EAAA,GAAKg1G,EAyBD2B,IACA3B,EAAG7vG,UAAY,QACjB8xG,IAEDt2E,EAAMjhC,KAAKs1G,CA7BH,OAAA,CACR,IAAI8I,EAAM,IAAIv+G,KAAK8gG,EAAG7gG,QAA8B,EAAA,IAAlBsD,EAAGm+D,YACjC3tD,EAAAA,EAAOjN,KAAKgqD,YAAYvtD,GAY5B,GAVAwQ,EAAKI,KAAO5Q,EAAG4Q,KACfJ,EAAK3U,WAAa0hG,EAClB/sF,EAAK0tD,UAAYl+D,EAAG9C,GACpBsT,EAAKtT,GAAK8C,EAAG9C,GAAK,IAAMqM,KAAKM,MAAMoqC,EAAY,GAAA,EAC/CzjC,EAAK1U,SAAWk/G,EAEhBxqG,EAAK1U,SAAWxB,EAAUg6G,0BAA0B9jG,EAAK3U,WAAY2U,EAAK1U,SAAUkE,EAAIu9F,EAAI/sF,EAAK1U,QAAAA,EAEjG0U,EAAK5N,OAASW,KAAKV,cAAc2N,CAAAA,EAAAA,CAE5BA,EAAK5N,QAAAA,CAAWW,KAAKmB,aAAgBnB,CAAAA,KAAK3I,OAAOugD,UAAW,OACjEtd,EAAMjhC,KAAK4T,CAENqjG,EAAAA,IACJtwG,KAAKojB,QAAQnW,EAAKtT,EAAMsT,EAAAA,EACxBjN,KAAKsuG,UAAUj1G,KAAK4T,CAGrB2jG,GAAAA,GAEA,CAQD5W,EAAKh6F,KAAKtH,KAAK,OAAS+D,EAAGshC,WAAai8D,EAAAA,EAAI,EAAGv9F,CAAAA,CAI/C,CACF,EACA1F,EAAUg6G,0BAA4B,SAASz4G,EAAYC,EAAUkE,EAAIwjD,EAASsC,EAAAA,CACjF,IAAIniC,EAAQ9nB,EAAW6nB,kBAAAA,EAAsB5nB,EAAS4nB,kBACtD,EAAA,OAAIC,EACCA,EAAQ,EAEJ,IAAIlnB,KAAK+mD,EAAQ9mD,QAAAA,EAA8B,IAAlBsD,EAAGm+D,aAA8B,GAARx6C,EAAa,KAInE,IAAIlnB,KAAKX,EAASY,QAAAA,EAAoB,GAARinB,EAAa,GAAA,EAG7C,IAAIlnB,KAAKqpD,EAAappD,QAC9B,CAAA,CAAA,EACApC,EAAU+sF,YAAc,SAASnqF,EAAIsM,EAAAA,CACpC,IAAIxJ,SAAY9C,GAAM,SAAWA,EAAK5C,EAAUqE,SAASzB,GACrDq3G,EAAa,CAAA,EAGjB,GAFA/qG,EAAMA,GAAO,IAERxJ,CAAAA,EAAGqC,SACP,MAAO,CACN,CAAExG,WAAYmE,EAAGnE,WAAYC,SAAUkE,EAAGlE,QAAAA,CAAAA,EAG5C,GAAIkE,EAAGqC,UAAY,OAClB,MAAO,CAGR/H,EAAAA,EAAUg5G,YAAYtzG,EAAIu0G,EAAAA,GAAkBv0G,EAAGnE,WAAYmE,EAAGlE,SAAU0N,CAGxE,EAAA,QADImI,EAAS,CACLxU,EAAAA,EAAI,EAAGA,EAAIo3G,EAAWn3G,OAAQD,IAClCo3G,EAAWp3G,CAAAA,EAAGkF,UAAY,QAC5BsP,EAAO/U,KAAK,CAACf,WAAY04G,EAAWp3G,CAAAA,EAAGtB,WAAYC,SAAUy4G,EAAWp3G,CAAGrB,EAAAA,QAAAA,CAAAA,EAI7E,OAAO6V,CACR,EACArX,EAAUy1B,UAAY,SAAShJ,EAAME,EAAAA,CACpC,IAAItV,EAAS,GACb,QAASsF,KAAK1T,KAAKojB,QAAS,CAC3B,IAAI3mB,EAAKuD,KAAKojB,QAAQ1P,CACtB,EAAA,GAAIjX,GAAMA,EAAGnE,WAAaorB,GAAMjnB,EAAGlE,SAAWirB,EAC7C,GAAI/mB,EAAGshC,YAAa,CACnB,GAAIthC,EAAGshC,aAAe,OAAQ,SAC9B,IAAIkzE,EAAM,CACVjxG,EAAAA,KAAK+vG,YAAYtzG,EAAIw0G,KAAWztF,EAAME,CACtC,EAAA,QAAS9pB,EAAI,EAAGA,EAAIq3G,EAAIp3G,OAAQD,IAAAA,CAE1Bq3G,EAAIr3G,CAAAA,EAAGmkC,aAAekzE,EAAIr3G,CAAAA,EAAGtB,WAAaorB,GAAMutF,EAAIr3G,CAAGrB,EAAAA,SAAWirB,GAASxjB,CAAAA,KAAKwuG,aAAayC,EAAIr3G,CAAAA,EAAGD,EACxGyU,GAAAA,EAAO/U,KAAK43G,EAAIr3G,CAAAA,CAAAA,CAGlB,MAAWoG,KAAK09B,kBAAkBjhC,EAAG9C,EAAAA,GACrCyU,EAAO/U,KAAKoD,EAGd,CACD,OAAO2R,CACR,EAEArX,EAAUM,OAAO04G,YAAc,WAC/Bh5G,EAAUM,OAAOqiD,SAASthD,SAAW,CACpC,CAAC0d,KAAK,cAAe5b,OAAO,OAAQqC,KAAK,WAAay6B,MAAM,EAAA,EAC5D,CAAClhB,KAAK,YAAavZ,KAAK,YAAarC,OAAO,WAAYkW,OAAO,WAC/D,EAAA,CAAC0F,KAAK,OAAQnQ,OAAO,GAAIpJ,KAAK,OAAQrC,OAAO,SAK9CnD,EAAUm0D,YAAc,SAASzuD,EAAAA,CAChC,IAAInE,EAAa,IAAIY,KAAK8G,KAAK1H,UAC3BC,EAAAA,EAAW,IAAIW,KAAK8G,KAAKzH,QAC7ByH,EAAAA,KAAK1H,WAAaA,EAClB0H,KAAKzH,SAAWA,EAChByH,KAAK46D,aAAe56D,KAAK26D,UAAY36D,KAAK+9B,YAAc/9B,KAAKlB,SAAW,IACzE,EAEA/H,EAAUM,OAAO85G,kBACjBp6G,EAAUM,OAAOo4G,mBAAqB,MAEtC14G,EAAUkE,YAAY,aAAc,UAAA,CACnClE,EAAUy3G,aAAe,GACzBz3G,EAAUw3G,kBAAoB,GAC9Bx3G,EAAUu3G,UAAY,EACvB,CAEA,CAAA,E5C/tCCrlF,U6CtEc,SAASlyB,GAGxB,MAAMgyB,EAAsB5F,GAAgBpsB,CAAAA,EAG5CA,EAAU2gH,gBAAgB,UAAA,CACzB,IAAI/xF,EAAQ,GACRjH,EAAS3nB,EAAU8xB,SAASmX,WAC5B23E,EAAa5uF,EACjB,EAAA,QAASrV,KAAKikG,EAAW,CACxB,IAAIl7G,EAAKk7G,EAAWjkG,GACpB,QAASoC,KAAQrZ,EACZqZ,EAAK2R,OAAO,EAAE,IAAK,KACtB9B,EAAMtsB,KAAK,CAACyc,EAAOA,GAAQ,cAAgBA,GAAQ,WAAY4I,EAAO,OACxE,KACA,CACD,OAAOiH,CACR,EAEA5uB,EAAUuzG,MAAQ,SAASh4E,EAAAA,CAC1B,IAAI9N,EAAM,CAAA,EACNmB,EAAQ3lB,KAAK03G,kBACbC,EAAa5uF,EAAAA,EACjB,QAASrV,KAAKikG,EAAW,CACxB,IAAIl7G,EAAKk7G,EAAWjkG,CAEpB8Q,EAAAA,EAAInrB,KAAK,SAAA,EACT,QAASO,EAAE,EAAGA,EAAI+rB,EAAM9rB,OAAQD,IAC/B4qB,EAAInrB,KAAK,IAAIssB,EAAM/rB,CAAAA,EAAG,CAAG,EAAA,cAAc+rB,EAAM/rB,CAAG,EAAA,CAAA,EAAG+rB,EAAM/rB,CAAAA,EAAG,GAAG6C,EAAGkpB,EAAM/rB,CAAG,EAAA,CAAA,CAAA,CAAA,EAAK6C,EAAGkpB,EAAM/rB,CAAAA,EAAG,CAAK,CAAA,GAAA,QAAQ+rB,EAAM/rB,CAAG,EAAA,CAAA,EAAG,GAEtH4qB,EAAAA,EAAInrB,KAAK,UAAA,CACT,CACD,OAAQi5B,GAAQ,IAAI,SAAS9N,EAAIngB,KAAK;AAAA,GAAM,SAC7C,EAEAtN,EAAU6gH,sBAAwB,SAAStmG,EAY1C,CAAA,OAXGA,IAAU,aAAeA,GAAU,UACrCA,EAAQ,GAAKA,GAETA,GAASA,IAAU,IACtBA,EAAQ,IAETA,EAAQ,IAAMA,EAAM7C,SACnB8I,EAAAA,QAAQ,MAAM,EACdA,EAAAA,QAAQ,MAAM,MAAA,EACdA,QAAQ,KAAM,KAAA,EAAS,KAElBjG,CACR,EAIAva,EAAUivG,OAAS,UAClB,CAAA,OAAOznF,KAAKC,UAAUxe,KAAKipB,UAC5B,CAAA,CAAA,EAGAlyB,EAAU8gH,OAAS,SAASvlF,EAC3B,CAAA,IAEI5T,EAAS3nB,EAAU2B,KAAKyoB,YAAY,eAAA,EACpC22F,EAAkB/gH,EAAU2B,KAAKyoB,YAAY,QAAA,EAE7C0F,EAAO,CACP8wF,EAAAA,EAAa5uF,EACjB,EAAA,QAASrV,KAAKikG,EAAW,CACxB,IAAIl7G,EAAKk7G,EAAWjkG,CAGpBmT,EAAAA,EAAKxtB,KAAK,cACLoD,EAAAA,EAAG4C,SAAY5C,EAAGnE,WAAWuI,SAAepE,GAAAA,EAAGnE,WAAW6J,WAAAA,GAG9D0kB,EAAKxtB,KAAK,WAAWqlB,EAAOjiB,EAAGnE,aAF/BuuB,EAAKxtB,KAAK,WAAWy+G,EAAgBr7G,EAAGnE,UAGpCmE,CAAAA,EAAAA,EAAG4C,SAAY5C,EAAGlE,SAASsI,SAAepE,GAAAA,EAAGlE,SAAS4J,WAAAA,GAG1D0kB,EAAKxtB,KAAK,SAASqlB,EAAOjiB,EAAGlE,WAF7BsuB,EAAKxtB,KAAK,SAASy+G,EAAgBr7G,EAAGlE,QAGvCsuB,CAAAA,EAAAA,EAAKxtB,KAAK,WAAWoD,EAAG4Q,IACxBwZ,EAAAA,EAAKxtB,KAAK,YAAA,CACV,CACD,MAvBY;AAAA;AAAA;AAAA,eAuBEi5B,GAAQ,IAAI;AAAA,EAAKzL,EAAKxiB,KAAK;AAAA,CAAlCR,EAAAA;AAAAA,cACR,CAEA,E7CdCwoB,S8CtEc,SAASt1B,EAAAA,CACvBoiE,GAAqB,WAAYpiE,EAAU2oD,MAC5C,CAAA,E9CqEC4iB,Q+CvED,SAAyBvrE,EAAAA,CAExBA,EAAUM,OAAO4nF,gBAAkB,GACnCloF,EAAUM,OAAOqmF,iBAAmB,GACpC3mF,EAAUM,OAAOmmF,iBAAmB,GACpCzmF,EAAUM,OAAO6nF,qBAAuB,GAElC,MAAA64B,EAAiB,IAAI95B,GAAelnF,CAAAA,EAE1CA,EAAUwgE,IAAIygD,SAAWD,EAEfhhH,EAAAkE,YAAY,mBAAoB,UAAA,CAEzC88G,EAAeE,WAAW,CACzB78F,SAAU,IAAMrkB,EAAUM,OAAOqC,gBAAkB,IACnDjB,KAAOtB,GACN,CAAA,GAAIJ,EAAUuzB,SAAYvzB,CAAAA,EAAUM,OAAO6gH,cAC1C,OAGD,MAAMC,EAAgBphH,EAAUy2B,cAAcr2B,EAAMkE,MAChD,EAAA,GAAAtE,EAAUqE,SAAS+8G,GAAgB,CAChChhH,MAAAA,EAAQJ,EAAUqE,SAAS+8G,CACjC,EAAA,OAAOphH,EAAU+sB,UAAUkhC,aAAa7tD,EAAMmB,WAAYnB,EAAMoB,SAAUpB,EAC3E,CACO,OAAA,IAAA,EAERN,SACA,CAAA,CAAA,CAAA,EAGQE,EAAAkE,YAAY,YAAa,UAAA,CAClC88G,EAAet4E,WAAAA,CAAW,GAGjB1oC,EAAAkE,YAAY,aAAc,UAAA,CACnC88G,EAAeK,YAAY,CAAA,CAAA,EAGlBrhH,EAAAkE,YAAY,eAAgB,UAE9B,CAAA,OADP88G,EAAeK,YAAAA,EAAAA,EACR,CAEErhH,EAAAA,EAAAkE,YAAY,iBAAkB,WAEhC,OADP88G,EAAeK,YACR,EAAA,EAAA,EAGT,E/CwBCngD,agDxEc,SAASlhE,EAAAA,CACvBoiE,GAAqB,gBAAiBpiE,EAAU2oD,MACjD,CAAA,EhDuECh2C,MiDzEc,SAAS3S,EAAAA,CACvBoiE,GAAqB,QAASpiE,EAAU2oD,MACzC,CAAA,EjDwECn8B,IkD5Ec,SAASxsB,GAExBA,EAAUwvF,aAAe,UAGxB,CAAA,QAFInnF,EAAI,CAAA,EACJoH,GAAQhC,SAAS86D,SAAS7Z,MAAQ,IAAIluC,QAAQ,IAAK,EAAIjd,EAAAA,MAAM,GACxDV,EAAAA,EAAI,EAAGA,EAAI4M,EAAK3M,OAAQD,IAAK,CACrC,IAAIkD,EAAI0J,EAAK5M,CAAAA,EAAGU,MAAM,GAAA,EAClBwC,EAAEjD,QAAU,IACfuF,EAAEtC,EAAE,CAAMA,CAAAA,EAAAA,EAAE,GACb,CACD,OAAOsC,CACR,EAEArI,EAAUkE,YAAY,mBAAoB,UACzC,CAAA,IAAI8lD,KACAs3D,EAAMthH,EAAU2B,KAAKspB,YAAY,UACjCs2F,EAAAA,EAAMvhH,EAAU2B,KAAKyoB,YAAY,UACjCo3F,EAAAA,EAAgBxhH,EAAUwvF,aAAAA,EAAepvF,OAAS,KAuDtD,SAASu3D,EAAUvzD,EAAAA,CAClB,GAAGpE,EAAU0c,WACZ,MAAO,GAER8kG,EAAep9G,EACZpE,EAAUqE,SAASD,CAAAA,GACrBpE,EAAU23D,UAAUvzD,CAAAA,CAErB,CA7DDpE,EAAUkE,YAAY,sBAAuB,SAASwB,EAErD,CAAA,OADA87G,EAAe,KACR,EACT,CAECxhH,EAAAA,EAAUkE,YAAY,qBAAsB,SAAUwhG,EAAIC,EAAIvtC,EAAG/pD,EAChE,CAAA,GAAI27C,EAAO,CACVA,KACA,IAAI3hD,EAAIrI,EAAUwvF,aAElB,EAAA,GAAInnF,EAAEjI,MACL,IACC,GAAGJ,EAAUqE,SAASgE,EAAEjI,OAIvB,OAHAmY,WAAW,UACVo/C,CAAAA,EAAUtvD,EAAEjI,KACnB,CAAA,CAAA,EAAA,GAGM,IAAI4Z,EAAUha,EAAUkE,YAAY,QAAS,UAAA,CAC5CqU,WAAW,UACVo/C,CAAAA,EAAUtvD,EAAEjI,KAAAA,CACpB,GACOJ,EAAUkf,YAAYlF,CAC7B,CAAA,CAAA,CAEA,MAAa5V,CAAI,CAGd,GAAIiE,EAAE1G,MAAQ0G,EAAElE,KAAM,CACrB,IACC8E,KAAKyM,eAAgBrN,EAAE1G,KAAO2/G,EAAIj5G,EAAE1G,IAAAA,EAAQ,KAAQ0G,EAAElE,MAAQ,IAC9D,CAAA,MAAQC,CAER6E,KAAKyM,eAAgBrN,EAAE1G,KAAO2/G,EAAIj5G,EAAE1G,IAAQ,EAAA,KAAOy2D,CACnD,CAAA,CACD,QACA,CACD,CAED,IAAIz9B,EAAS,CACZ,QAAU4mF,EAAIlzG,GAAKs3F,CACnB,EAAA,SAAWvtC,GAAKstC,EAAAA,EAGd8b,GACF7mF,EAAOr4B,KAAK,SAAWk/G,CAAAA,EAGxB,IAAIlrG,EAAO,IAAMqkB,EAAOrtB,KAAK,KAE7B,OADAG,SAAS86D,SAAS7Z,KAAOp4C,IAE3B,CAAA,CAWA,CACA,CAAA,ElDLC+8B,YmD3Ec,SAASrzC,EAAAA,CACvBoiE,GAAqB,cAAepiE,EAAU2oD,MAC/C,CAAA,EnD0EC84D,GoD9Ec,SAASzhH,GACxBA,EAAUkE,YAAY,aAAa,UAAA,CAClC,GAAI+E,KAAK0yD,OACR,GACC1yD,CAAAA,KAAK0yD,OAAO16D,MAAM2N,OAAS3F,KAAKmuC,SAAW,QAAW3pC,SAASqO,KAAK5Q,YAAYuC,SAASqO,MAAM01C,aAAa,IAC5G,OAEA,CAEH,CAAA,EAEAxxD,EAAU+4D,YAAY92C,OAAOi3C,UAAU,SAASt4C,EAAKrG,EAAM7U,GAC/C6U,YAAwBA,IAAU,KAC5CA,GAASqG,EAAK9Q,WAAWvK,QAAQ,CAAA,GAAI,CAAE,GAAEgV,OAC1CqG,EAAK9Q,WAAWyK,MAAMA,GAAO,EAC9B,CAEA,EpD8DCmnG,UqD/Ec,SAAS1hH,EAMvBA,CAAAA,EAAU+sB,UAAU40F,UAAY,SAAShgH,EACxC,CAAA,OAAO3B,EAAU2B,KAAKyoB,YAAYpqB,EAAUooB,OAAO6P,OAAOqV,SAAW,KAAA,EAAO3rC,CAAAA,CAC9E,EACC3B,EAAU+sB,UAAU60F,WAAa5hH,EAAU2B,KAAKyoB,YAAY,IAAA,EAC5DpqB,EAAU+sB,UAAU80F,gBAAkB7hH,EAAU2B,KAAKyoB,YAAY,IAAA,EACjEpqB,EAAU+sB,UAAU+0F,aAAe,SAAS/7G,EAAG3B,EAAGsB,EACjD,CAAA,OAAOA,EAAG4Q,IACZ,EAEC,MAAMyrG,EAAa,UAClB,CAAA,OAAO/hH,EAAUqK,OAAS,MAC5B,EAEO23G,EAAc,SAASphG,EAC5B,CAAA,IAAI9S,EAAM9N,EAAUk5C,YAAY30C,QAAQqc,EAAM,kBAC9C,EAAA,OAAI9S,GAAQA,EAAIqU,aAAa,gBACtBniB,EAAAA,EAAU+sB,UAAU4D,WAAW7iB,EAAI/J,aAAa,mBADA,IAEzD,EAGC/D,EAAUiiH,uBAAwB,SAAS79G,EAC1C,CAAA,GAAI29G,EAAc,EAAA,CACjB,MAAMz9G,EAASF,EAAEE,OACjB,GAAGtE,EAAUk5C,YAAY30C,QAAQD,EAAQ,aAAA,GAAkBtE,EAAUk5C,YAAY30C,QAAQD,EAAQ,YAAA,EAChG,SAGD,MAAM3C,EAAOqgH,EAAY19G,GAEzB,GAAG3C,EAAK,CACP,MAAMmL,EAAQnL,EACRoL,EAAM9D,KAAKtH,KAAKC,IAAIkL,EAAO,EAAG,KAC/B7D,EAAAA,CAAAA,KAAK3I,OAAO+2C,UAAYpuC,KAAK3I,OAAOmT,iBACxCxK,KAAKyK,YAAY5G,EAAM1K,QAAW2K,EAAAA,EAAI3K,UAAWgC,CAElD,CAAA,CACD,CACH,EAECpE,EAAUkE,YAAY,kBAAmB,UACpC69G,CAAAA,EAAAA,GACH94G,KAAKy4G,UAAU,EAAA,CAClB,CAGC,EAAA,IAAI54F,EAAM9oB,EAAU4V,YACpB5V,EAAU4V,YAAc,SAAS9N,EAChC,CAAA,GAAA,CAAKi6G,EAAc,EAAA,OAAOj5F,EAAIjd,MAAM5C,KAAMiJ,SAC1C,EAAA,QAASrP,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAC/BoG,KAAKi5G,mBAAmBp6G,EAAIjF,GAC/B,EAEC,IAAI0b,EAAQve,EAAUsuD,WACtBtuD,EAAUsuD,WAAa,UACtB,CAAA,GAAA,CAAKyzD,IAAc,OAAOxjG,EAAM1S,MAAM5C,KAAMiJ,WAC5C,IAAIlF,EAAQhN,EAAUmiH,mBAEtB,QAASxgH,KAAQqL,EACZA,EAAMb,eAAexK,CAClBqL,GAAAA,EAAMrL,CACRiX,EAAAA,UAAU+L,OAAO,iBAAkB,0BAAA,EAMzC3kB,EAAUmiH,mBAAqB,EACjC,EAECniH,EAAUoiH,aAAe,WACpBn5G,KAAKo5G,WACRp5G,KAAKo5G,SAASphH,MAAM0a,QAAU,OAC9B1S,KAAKo5G,SAAS1gH,KAAO,IAAIQ,KAAK,KAAM,EAAG,GAE1C,EAECnC,EAAUsiH,aAAe,SAAS3gH,EAAMk3C,EAAKz0C,EAAGoP,EAAAA,CAC/C,GAAIvK,KAAKo5G,SAAU,CAClB,GAAIp5G,KAAKo5G,SAAS1gH,KAAKS,QAAaT,GAAAA,EAAKS,UAAW,OACpD6G,KAAKo5G,SAAS10G,UAAY,EAC7B,KAAS,CACN,IAAIyE,EAAInJ,KAAKo5G,SAAW50G,SAASC,cAAc,KAAA,EAC/C0E,EAAEzD,UAAY,mBACV1F,KAAK3I,OAAOo0C,MAAKtiC,EAAEzD,WAAa,oBACpClB,SAASqO,KAAKlO,YAAYwE,CAAAA,EAC1BA,EAAEoN,iBAAiB,QAASxf,EAAUm2B,OAAOC,YAC7ChkB,EAAAA,EAAEoN,iBAAiB,QAAS,SAASpb,EACpC,CAAA,GAAGA,EAAEE,OAAOC,QAAQ,IAAIvE,EAAUM,OAAOqC,eAAoB,GAAA,EAAA,CAC5D,MAAMC,EAAKwB,EAAEE,OAAOC,QAAQ,IAAIvE,EAAUM,OAAOqC,eAAoBoB,GAAAA,EAAAA,aAAa/D,EAAUM,OAAOqC,iBACnG3C,EAAU+3C,aAAan1C,CACvB,CAAA,CACL,CACG,CAAA,CAID,QAHIkF,EAAMmB,KAAKwsB,UAAU9zB,EAAMsH,KAAKtH,KAAKC,IAAID,EAAM,EAAG,KAAA,CAAA,EAClDD,EAAO,GAEFmB,EAAI,EAAGA,EAAIiF,EAAIhF,OAAQD,IAAK,CACpC,IAAI6C,EAAKoC,EAAIjF,CAAAA,EACb,GAAIoG,KAAKomD,aAAa3pD,EAAG9C,GAAI8C,CAA7B,EAAA,CAGA,IAAI2xD,EAAY3xD,EAAGyvD,MAAS,oCAAsCzvD,EAAGyvD,MAAQ,IAAO,GAChFA,EAASzvD,EAAGkwD,UAAa,+BAAiClwD,EAAGkwD,UAAY,IAAO,GAEpFl0D,GAAQ,wCAA0C21D,EAAgBlC,EAAQ,eAAiBrtD,EAAIjF,CAAGD,EAAAA,GAAK,KAAKqG,KAAK3I,OAAOqC,gBAAgB,KAAKmF,EAAIjF,CAAGD,EAAAA,GAAG,KACvJlB,GAAQ,wCAA0C21D,EAAgBlC,EAAQ,MAAQrtD,EAAIjF,GAAGyF,OAASW,KAAK8jB,UAAU0gC,WAAW3lD,EAAIjF,CAAAA,EAAGtB,UAAc,EAAA,IAAM,SACvJG,GAAQ,wDACRA,GAAQuH,KAAK8jB,UAAU+0F,aAAah6G,EAAIjF,CAAGtB,EAAAA,WAAYuG,EAAIjF,CAAGrB,EAAAA,SAAUsG,EAAIjF,CAAAA,CAAAA,EAAM,QARxE,CASV,CAEDoG,KAAKo5G,SAASphH,MAAM0a,QAAU,GAC9B1S,KAAKo5G,SAASphH,MAAMC,IAAM,MAGtBuM,SAASqO,KAAKyB,YAAcs7B,EAAI13C,KAAO8H,KAAKo5G,SAAS9kG,YAAc,EACtEtU,KAAKo5G,SAASphH,MAAME,KAAO03C,EAAI13C,KAAO8H,KAAKo5G,SAAS9kG,YAAc,KAElEtU,KAAKo5G,SAASphH,MAAME,KAAO03C,EAAI13C,KAAOqS,EAAI+J,YAAc,KAEzDtU,KAAKo5G,SAAS1gH,KAAOA,EACrBsH,KAAKo5G,SAAS10G,UAAYjM,EAEtB+L,SAASqO,KAAKuB,aAAew7B,EAAI33C,IAAM+H,KAAKo5G,SAAShlG,aAAe,EACvEpU,KAAKo5G,SAASphH,MAAMC,IAAM23C,EAAI33C,IAAM+H,KAAKo5G,SAAShlG,aAAe7J,EAAI6J,aAAe,KAEpFpU,KAAKo5G,SAASphH,MAAMC,IAAM23C,EAAI33C,IAAM,IACvC,EAEClB,EAAUuiH,2BAA6B,SAASn+G,EAAAA,CAC/C,GAAK29G,EAAAA,EAAL,CAEA,IAAIvuG,EAAMpP,EAAEE,QAAUF,EAAE8c,WACpB1N,EAAIyS,QAAQtH,eAAiB,MAChCnL,EAAMA,EAAItI,YACPlL,EAAU+P,cAAcyD,CAAAA,EAAKxD,QAAQ,gBAAA,GAAsB,GAC9DhQ,EAAUsiH,aAAatiH,EAAU+sB,UAAU4D,WAAWnd,EAAIzP,aAAa,gBAAA,CAAA,EAAoB/D,EAAUk5C,YAAYp2B,UAAUtP,CAAMpP,EAAAA,EAAGoP,CAEpIxT,EAAAA,EAAUoiH,cARe,CAS5B,EACCpiH,EAAUwiH,mBAAqB,WAC9BxiH,EAAUk0C,gBAAgBl0C,EAAUwJ,KAAmB,aAAE,CAAI,EAAA,YAAaxJ,EAAUuiH,0BAAAA,EACpFviH,EAAUI,MAAMJ,EAAUwJ,KAAmB,aAAE,CAAI,EAAA,YAAaxJ,EAAUuiH,0BAAAA,CAC5E,EAECviH,EAAU07F,eAAiB,SAASrtF,EAAAA,CAGnC,QAFIud,EAAa5rB,EAAU+sB,UAAU0F,YAAYpkB,CAC7C7L,EAAAA,EAAQyG,KAAK8T,MAAMra,iBAAiB,0DAA0DkpB,CAAAA,IAAAA,EAC1F/oB,EAAI,EAAGA,EAAIL,EAAMM,OAAQD,IAChC,GAAA,CAAI7C,EAAUk5C,YAAY30C,QAAQ/B,EAAMK,CAAAA,EAAI,2BAC3C,OAAOL,EAAMK,CAGf,EAAA,OAAO,IACT,EAEC7C,EAAUmiH,mBAAqB,GAC/BniH,EAAUyiH,gBAAkB,SAAS9gH,EAAMvB,GAC1C,IAAIwrB,EAAa5rB,EAAU+sB,UAAU0F,YAAY9wB,CAC7CugD,EAAAA,EAAOj5C,KAAKyyF,eAAe/5F,GAC/B,GAAKugD,EAAL,CAGA,IAAIqnC,EAAWtgF,KAAK8jB,UAAU2gC,YAAYttD,EAAMmB,WAAYnB,EAAMoB,SAAUpB,CACvEJ,EAAAA,EAAUmiH,mBAAmBv2F,CACjCs2B,IAAAA,EAAKtpC,UAAUhX,IAAI,iBAAkB,0BAAA,EACrCsgD,EAAKlpC,aAAa,iBAAkB4S,CACpCs2B,EAAAA,EAAKlpC,aAAa,OAAQ4S,GAC1B5rB,EAAUmiH,mBAAmBv2F,CAAcs2B,EAAAA,GAEzCqnC,GACFrnC,EAAKtpC,UAAUhX,IAAI2nF,CAAAA,CATnB,CAWH,EACCvpF,EAAU0iH,kBAAoB,SAAS/gH,GACtC,IAAIugD,EAAOj5C,KAAKyyF,eAAe/5F,GAC1BugD,GAGLA,EAAKtpC,UAAU+L,OAAO,iBAAkB,0BAE1C,CAAA,EACC3kB,EAAUkiH,mBAAqB,SAAS9hH,EACvC,CAAA,IAAIuB,EAAOvB,EAAMmB,WAOjB,IALCI,EADGA,EAAKS,QAAAA,EAAY6G,KAAKY,UAAUzH,QAAAA,EAC5B6G,KAAKY,UAELZ,KAAKtH,KAAKwF,UAAU,IAAIhF,KAAKR,IAG9BA,EAAOvB,EAAMoB,UAGnB,GAFAyH,KAAKw5G,gBAAgB9gH,EAAMvB,CAC3BuB,GAAAA,EAAOsH,KAAKtH,KAAKC,IAAID,EAAM,EAAG,QACrBS,QAAa6G,GAAAA,KAAKW,UAAUxH,QAAAA,EACpC,MAEJ,EAECpC,EAAU0hH,UAAY,SAASv9G,EAM9B,CAAA,GAJAnE,EAAU60C,UAAAA,EAEV70C,EAAUoK,YAAcjG,EAAAA,CAEpB8E,KAAK4jB,YAAAA,CAAc5jB,KAAKsjB,MAE5B,EAAA,GAAIpoB,EAAM,CAGT,GAFAnE,EAAUwiH,mBAAAA,EACVxiH,EAAU2iH,kBAAAA,EACN3iH,EAAU6sB,YAAc7sB,EAAUusB,MAErC,EAAA,OAAA,KADAvsB,EAAU0xB,aAAe,IAG1B1xB,EAAU6V,iBAAAA,CACb,MACG7V,EAAUoiH,aAAAA,CAEb,EACCpiH,EAAU2iH,kBAAoB,UAC7B15G,CAAAA,KAAKuF,MAAQ,CAAA,EACbvF,KAAKgwC,OAAS,GACd,IAAI05D,EAAc,CACdx5D,EAAAA,EAAWlwC,KAAKO,KAAmB,aAAE,CAErC3B,EAAAA,EAAIoB,KAAK3I,OACb64C,EAASp1B,UAAY,EACrBo1B,EAASxrC,UAAY,GAEZsB,KAAK+D,OAAOkQ,SAASi2B,EAASl4C,MAAM2N,MAAU5O,EAAAA,EAAUub,GAAGqnG,UAAY/6G,EAAEwmF,MAKlF,EAAA,IAAIwd,EAAgBp+F,SAASC,cAAc,KAAA,EACvCo+F,EAAa7iG,KAAKtH,KAAKY,WAAWvC,EAAU0J,aAEhDT,CAAAA,EAAAA,KAAKm2C,iBAAiB0sD,EAAY,EAAG,MAAO,CAAA,EAE5C,QAASjpG,EAAI,EAAGA,EAAI,EAAGA,IACjBoG,KAAKwF,UAAYxF,KAAKwF,SAAS5L,CACnCoG,IAAAA,KAAKuF,MAAM3L,CAAAA,EAAK,4CAChBoG,KAAKs1C,iBAAiB17C,EAAG,EAAGipG,EAAYD,CAGzCC,GAAAA,EAAa7iG,KAAKtH,KAAKC,IAAIkqG,EAAY,EAAG,KAE3CD,EAEA,IAFAA,EAAcvzC,UAAU3pD,WAAa,sBAE7B9L,EAAI,EAAGA,EAAIgpG,EAAch8F,WAAW/M,OAAQD,IACnDoG,KAAK+1B,SAASsoB,aAAaukD,EAAch8F,WAAWhN,CAGrD,CAAA,EAAA,IAAI48C,EAAKx2C,KAAKtH,KAAKsH,KAAKoB,MAAQ,QAAUpB,EAAAA,KAAKtH,KAAKuU,KAAKjN,KAAKgK,KAC1D4vG,CAAAA,EAAAA,EAAMpjE,EACNqjE,EAAU,KACd,MAAMzwE,EAAU5kC,SAASC,cAAc,KACvC2kC,EACA,IADAA,EAAQz5B,UAAUhX,IAAI,kBAAA,EACbiB,EAAI,EAAGA,EAAIgF,EAAEwmF,OAAQxrF,IAC7B,QAAS8rB,EAAI,EAAGA,EAAI9mB,EAAEk7G,OAAQp0F,IAAK,EAClCm0F,EAAUr1G,SAASC,cAAc,KAAA,GACzBiB,UAAY,eAEpBm0G,EAAQ9pG,aAAa,OAAQ/P,KAAK6oB,SAASmX,WAAWwW,CACtDqjE,CAAAA,EAAAA,EAAQ9pG,aAAa,kBAAmB/P,KAAK6oB,SAASmX,WAAWwW,CACjEqjE,CAAAA,EAAAA,EAAQn1G,UAAY,2FAA6Fk+F,EAAcl+F,UAAY,gDAE3I,IAAI4tB,EAASunF,EAAQ5nG,cAAc,iBAAA,EAC/Bk4B,EAAO0vE,EAAQ5nG,cAAc,gBAC7BY,EAAAA,EAAOgnG,EAAQ5nG,cAAc,gBAAA,EAE7BsrC,EAAWxmD,EAAUiM,MACzBhD,KAAK+1B,SAASooB,WAAW7rB,EAAQirB,GACjCv9C,KAAK+1B,SAASqoB,SAASjU,EAAMoT,GAG7BjrB,EAAO5tB,UAAY1E,KAAK8jB,UAAU60F,WAAWniE,CAAAA,EAI7C,IAAIxuB,EAAKhoB,KAAKtH,KAAKY,WAAWk9C,CAC9Bx2C,EAAAA,KAAK03C,mBAAmB7kC,EAAM2jC,EAAIxuB,EAAI,CAAA,EAGtC,QADI5rB,EAAOyW,EAAKpZ,iBAAiB,MACzBoL,EAAM,EAAGA,EAAMzI,EAAKvC,OAAQgL,IACnC7E,KAAK+1B,SAASwoB,YAAYniD,EAAKyI,CAGhCukC,CAAAA,EAAAA,EAAQzkC,YAAYk1G,CAAAA,EAEpBnQ,EAAY9vG,EAAIgF,EAAEk7G,OAASp0F,CAAAA,GAAM8wB,EAAGr4C,OAAY6B,GAAAA,KAAK3I,OAAOgpB,gBAAkB,EAAI,GAAK,GAAK,EAC5Fm2B,EAAKx2C,KAAKtH,KAAKC,IAAI69C,EAAI,EAAG,QAE1B,CAGFtG,EAASvrC,YAAYykC,CAAAA,EAErB,IAAIw3C,EAAc5gF,KAAKo3C,mBACpBwpC,EAAAA,IACFA,EAAYl8E,UAAY1E,KAAK8jB,UAAU9jB,KAAKoB,MAAQ,OAASw4G,EAAAA,EAAKpjE,EAAIx2C,KAAKoB,QAG5EpB,KAAK0pG,YAAcA,EACnBA,EAAYC,OAASiQ,EAAI/rG,SACzB7N,EAAAA,KAAKY,UAAYg5G,EACjB55G,KAAKW,UAAY61C,CACnB,EAECz/C,EAAU2iH,kBAAoB,UAE7B,CAAA,IAAIxpE,EAAWlwC,KAAKO,KAAmB,aAAE,CAAA,EAEzC2vC,EAASp1B,UAAY,EACrBo1B,EAASxrC,UAAY,GAErB,IAAImzE,EAAY73E,KAAKtH,KAAK8nB,WAAW,IAAItnB,KAAK8G,KAAKgK,KAAAA,CAAAA,EAEnDhK,KAAKY,UAAYZ,KAAKtH,KAAKY,WAAW,IAAIJ,KAAK2+E,CAAAA,CAAAA,EAE/C,MAAMzuC,EAAU5kC,SAASC,cAAc,KAAA,EACvC2kC,EAAQz5B,UAAUhX,IAAI,kBAEtB,EAAA,IAAIqvC,EAAc6vC,EAClB,QAAQj+E,EAAI,EAAGA,EAAI,GAAIA,IAAI,CAC1B,IAAIigH,EAAUr1G,SAASC,cAAc,KAAA,EACrCo1G,EAAQn0G,UAAY,eAEpBm0G,EAAQ9pG,aAAa,OAAQ/P,KAAK6oB,SAASmX,WAAWgI,CAAAA,CAAAA,EACtD6xE,EAAQ9pG,aAAa,kBAAmB/P,KAAK6oB,SAASmX,WAAWgI,IACjE6xE,EAAQn1G,UAAY,+BAA+B1E,KAAK8jB,UAAU60F,WAAW3wE,CAAAA,CAAAA;AAAAA,sCAG7E,MAAMoW,EAAWy7D,EAAQ5nG,cAAc,gBAAA,EACjC8nG,EAAahjH,EAAU6oD,kBAAkB,KAAM,CACpDlnD,KAAMsvC,EACNM,SAAU,CAEXyxE,CAAAA,EAAAA,EAAWnyE,eAAewW,CAAAA,EAC1B27D,EAAWt6E,WAEX2J,EAAAA,EAAQzkC,YAAYk1G,CAAAA,EAEpB7xE,EAAchoC,KAAKtH,KAAKC,IAAIqvC,EAAa,EAAG,OAE5C,CAAA,CACDkI,EAASvrC,YAAYykC,GAErB,IAAIL,EAAW/oC,KAAKtH,KAAKC,IAAIk/E,EAAW,EAAG,MACxC9uC,EAAAA,EAAS5vC,WAAa6G,KAAKtH,KAAKY,WAAW,IAAIJ,KAAK6vC,CAAW5vC,CAAAA,EAAAA,QAAAA,IACjE4vC,EAAW/oC,KAAKtH,KAAKY,WAAW,IAAIJ,KAAK6vC,CAAAA,CAAAA,EACzCA,EAAW/oC,KAAKtH,KAAKC,IAAIowC,EAAU,EAAG,MAEvC/oC,GAAAA,KAAKW,UAAYooC,EACjB,IAAI63C,EAAc5gF,KAAKo3C,mBAAAA,EACpBwpC,IACFA,EAAYl8E,UAAY1E,KAAK8jB,UAAU9jB,KAAKoB,MAAQ,OAAA,EAASy2E,EAAW9uC,EAAU/oC,KAAKoB,KAE1F,EAAA,EAEC,IAAI1F,EAAgB3E,EAAU2E,cAC9B3E,EAAU2E,cAAgB,SAASs+C,GAClC,OAAI8+D,EAAAA,EAKG,CACNpgH,KAFUqgH,EAAY/+D,EAAK3+C,MAAAA,EAG3BM,QAAQ,IAAA,EANDD,EAAckH,MAAM7L,EAAWkS,SAQzC,CAAA,EAEC,IAAI+wG,EAAcjjH,EAAUy2B,cAC5Bz2B,EAAUy2B,cAAgB,SAAS7V,EAAAA,CAClC,IAAIhe,EAAKqgH,EAAYp3G,MAAM7L,EAAWkS,SACtC,EAAA,GAAA,CAAItP,EAAG,CAEN,IAAIjB,EAAOqgH,EAAYphG,GACvB,GAAIjf,CAAAA,EAAM,OAAO,KACjB,IAAImG,EAAM9H,EAAUy1B,UAAU9zB,EAAM3B,EAAU2B,KAAKC,IAAID,EAAM,EAAG,QAChE,GAAImG,CAAAA,EAAIhF,OAAQ,OAAO,KAGvBF,EAAKkF,EAAI,CAAA,EAAGlF,EACZ,CACD,OAAOA,CACT,EAEC5C,EAAUkE,YAAY,YAAa,UAClClE,CAAAA,EAAUoiH,cACZ,CACA,CAAA,CAAA,ECzYMc,GAAU,ICQhB,MAEC,YAAaC,EACZl6G,CAAAA,KAAKm6G,MAAQ,EACbn6G,KAAKo6G,kBAAoB,CAAA,EACzBp6G,KAAKq6G,mBAAqBH,EAC1Bl6G,KAAKs6G,mBAAqB,IAAI/hD,GAAkB2hD,CAAAA,CAChD,CAED,OAAOn7F,EACN/e,CAAAA,KAAKo6G,kBAAkB/gH,KAAK0lB,GAEzBloB,EAAOE,WACTgoB,EAAKloB,EAAOE,UAEb,CAED,qBAAqBwjH,EAAAA,CAGpB,QAFIxjH,EAAY4yC,GAAc3pC,KAAKs6G,oBAE1B1gH,EAAI,EAAGA,EAAIoG,KAAKo6G,kBAAkBvgH,OAAQD,IAClDoG,KAAKo6G,kBAAkBxgH,GAAG7C,CAY3B,EAAA,OAVAA,EAAUyjH,aAAex6G,KAAKm6G,QAE1Bn6G,KAAKy6G,cACRz6G,KAAKy6G,aAAa1jH,CAAAA,EAGhBwjH,GACFv6G,KAAK06G,gBAAgB3jH,EAAWwjH,CAAAA,EAG1BxjH,CACP,CAED,gBAAgBA,EAAWwjH,EAe1B,CAAA,GAdGA,EAAW9iD,SACb1gE,EAAU0gE,QAAQ8iD,EAAW9iD,SAG3B8iD,EAAWljH,QACbN,EAAUgX,MAAMhX,EAAUM,OAAQkjH,EAAWljH,OAAQ,EAAA,EAGnDkjH,EAAWz2F,WACb/sB,EAAUkE,YAAY,mBAAoB,WACzClE,EAAUgX,MAAMhX,EAAU+sB,UAAWy2F,EAAWz2F,UAAW,EAAA,CAC/D,EAAM,CAAC3O,OAGFolG,CAAAA,EAAAA,EAAWj0F,OACb,UAAUnvB,KAASojH,EAAWj0F,OAC7BvvB,EAAUkE,YAAY9D,EAAOojH,EAAWj0F,OAAOnvB,CAAAA,CAAAA,EAI9CojH,EAAWp7F,QACbpoB,EAAU+/D,KAAKE,UAAUujD,EAAWp7F,MAGlC5c,EAAAA,MAAM8L,QAAQksG,EAAWzW,YAC3ByW,EAAWzW,UAAU/oG,QAAQ,SAASiW,GACrCja,EAAU4jH,YAAY3pG,CAC1B,CAAA,CAAA,EAGKupG,EAAWr9G,UACbnG,EAAU2oB,KAAK66F,EAAWr9G,WAE1BnG,EAAU2oB,KAAAA,EAGR66F,EAAW/zG,cACH+zG,EAAW/zG,MAAS,SAC7BzP,EAAU0yB,KAAK8wF,EAAW/zG,IAE1BzP,EAAAA,EAAU8tB,MAAM01F,EAAW/zG,MAG7B,CDxFmC24E,EAAAA,EAAAA,EAE/BpoF,GAAYkjH,GAAQjkD,uBACpBD,GAAY,CACjBsC,OAAQthE,GAAU6e,KAAKqkG,GAAQ5hD,OAAQ4hD,EAGxCrjH,CAAAA,EAAAA,OAAOG,UAAYA,GACnBH,OAAOm/D,UAAYA,GAEfn/D,OAAOgkH,OACVhkH,OAAOgkH,KAAO,IAGfhkH,OAAOgkH,KAAK7jH,UAAYA,GACxBH,OAAOgkH,KAAK7kD,UAAYA","x_google_ignoreList":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111]} \ No newline at end of file +{"version":3,"file":"dhtmlxscheduler.js","sources":["../sources/global.js","../sources/plugins/drag_highlight_pos.js","../sources/plugins/limit.js","../sources/plugins/batch_update.js","../sources/plugins/index.js","../sources/plugins/undo_delete.js","../sources/core/utils/utils.js","../sources/core/nav_bar.js","../sources/core/scheduler_resize_listener.js","../sources/utils/eventable.js","../sources/core/utils/event.js","../sources/core/common.js","../sources/core/utils/scoped_event.js","../sources/core/utils/dom_helpers.js","../sources/utils/env.js","../sources/core/common/url_serialize.js","../sources/core/base.js","../sources/core/common/get_serializable_events.js","../sources/core/load.js","../sources/core/loaders/xml.js","../sources/core/loaders/json.js","../sources/core/loaders/ical.js","../sources/core/touch.js","../sources/core/skins.js","../sources/core/dataprocessor/dataprocessor_hooks.js","../sources/core/dataprocessor/dataprocessor.js","../sources/core/message.js","../sources/locale/locale_ar.js","../sources/locale/locale_be.js","../sources/locale/locale_ca.js","../sources/locale/locale_cn.js","../sources/locale/locale_cs.js","../sources/locale/locale_da.js","../sources/locale/locale_de.js","../sources/locale/locale_el.js","../sources/locale/locale_en.js","../sources/locale/locale_es.js","../sources/locale/locale_fi.js","../sources/locale/locale_fr.js","../sources/locale/locale_he.js","../sources/locale/locale_hu.js","../sources/locale/locale_id.js","../sources/locale/locale_it.js","../sources/locale/locale_jp.js","../sources/locale/locale_manager.js","../sources/locale/locale_nb.js","../sources/locale/locale_nl.js","../sources/locale/locale_no.js","../sources/locale/locale_pl.js","../sources/locale/locale_pt.js","../sources/locale/locale_ro.js","../sources/locale/locale_ru.js","../sources/locale/locale_si.js","../sources/locale/locale_sk.js","../sources/locale/locale_sv.js","../sources/locale/locale_tr.js","../sources/locale/locale_ua.js","../sources/core/datepicker.js","../sources/scheduler_factory_method.js","../sources/core/state.js","../sources/core/common_errors.js","../sources/core/scheduler.js","../sources/core/wai_aria.js","../sources/core/common/assert.js","../sources/core/jquery.js","../sources/core/destructor.js","../sources/core/utils/ajax.js","../sources/core/config.js","../sources/core/event.js","../sources/core/event_highlight.js","../sources/core/lightbox.js","../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../sources/core/delay_render.js","../sources/core/connector.js","../sources/locale/index.js","../sources/ext/extension_manager.js","../sources/dhtmlx_hook.js","../sources/ext/restricted_extensions/not_implemented_extension.js","../sources/ext/keyboard_navigation/modals.js","../sources/ext/keyboard_navigation/key_nav_legacy.js","../sources/ext/keyboard_navigation/scheduler_handlers.js","../sources/ext/map_view/gMapAdapter.ts","../sources/ext/map_view/osmMapAdapter.ts","../sources/ext/map_view/mapboxAdapter.ts","../node_modules/rrule/dist/esm/weekday.js","../node_modules/rrule/dist/esm/helpers.js","../node_modules/rrule/dist/esm/dateutil.js","../node_modules/rrule/dist/esm/iterresult.js","../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../node_modules/rrule/dist/esm/callbackiterresult.js","../node_modules/rrule/dist/esm/types.js","../node_modules/rrule/dist/esm/nlp/i18n.js","../node_modules/rrule/dist/esm/nlp/totext.js","../node_modules/rrule/dist/esm/nlp/parsetext.js","../node_modules/rrule/dist/esm/nlp/index.js","../node_modules/rrule/dist/esm/datetime.js","../node_modules/rrule/dist/esm/parseoptions.js","../node_modules/rrule/dist/esm/parsestring.js","../node_modules/rrule/dist/esm/datewithzone.js","../node_modules/rrule/dist/esm/optionstostring.js","../node_modules/rrule/dist/esm/cache.js","../node_modules/rrule/dist/esm/masks.js","../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../node_modules/rrule/dist/esm/iterinfo/index.js","../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../node_modules/rrule/dist/esm/iterinfo/easter.js","../node_modules/rrule/dist/esm/iter/poslist.js","../node_modules/rrule/dist/esm/iter/index.js","../node_modules/rrule/dist/esm/rrule.js","../node_modules/rrule/dist/esm/rrulestr.js","../node_modules/rrule/dist/esm/rruleset.js","../node_modules/rrule/dist/esm/iterset.js","../sources/ext/tooltip/tooltip.ts","../sources/ext/tooltip/tooltipManager.ts","../sources/ext/extensions_gpl.js","../sources/ext/active_links.js","../sources/ext/agenda_legacy_view.js","../sources/ext/agenda.js","../sources/ext/all_timed.js","../sources/ext/collision.js","../sources/ext/container_autoresize.js","../sources/ext/cookie.js","../sources/ext/restricted_extensions/daytimeline.js","../sources/ext/restricted_extensions/drag_between.js","../sources/ext/editors.js","../sources/ext/expand.js","../sources/ext/export_api/index.js","../sources/ext/restricted_extensions/grid_view.js","../sources/ext/html_templates.js","../sources/ext/key_nav.js","../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../sources/ext/keyboard_navigation/common/eventhandler.js","../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../sources/ext/keyboard_navigation/marker.js","../sources/ext/keyboard_navigation/elements/scheduler_node.js","../sources/ext/keyboard_navigation/elements/nav_node.js","../sources/ext/keyboard_navigation/elements/header_cell.js","../sources/ext/keyboard_navigation/elements/event.js","../sources/ext/keyboard_navigation/elements/time_slot.js","../sources/ext/keyboard_navigation/elements/minical_button.js","../sources/ext/keyboard_navigation/elements/minical_cell.js","../sources/ext/keyboard_navigation/elements/data_area.js","../sources/ext/keyboard_navigation/core.js","../sources/ext/keyboard_navigation/minical_handlers.js","../sources/ext/layer.js","../sources/ext/limit.js","../sources/ext/map_view/index.ts","../sources/ext/minical.js","../sources/ext/monthheight.js","../sources/ext/restricted_extensions/multisection.js","../sources/ext/multiselect.js","../sources/ext/multisource.js","../sources/ext/mvc.js","../sources/ext/outerdrag.js","../sources/ext/pdf.js","../sources/ext/quick_info.js","../sources/ext/readonly.js","../sources/ext/recurring.js","../sources/ext/recurring_legacy.js","../sources/ext/serialize.js","../sources/ext/restricted_extensions/timeline.js","../sources/ext/tooltip/index.ts","../sources/ext/restricted_extensions/treetimeline.js","../sources/ext/restricted_extensions/units.js","../sources/ext/url.js","../sources/ext/restricted_extensions/week_agenda.js","../sources/ext/wp.js","../sources/ext/year_view.js","../sources/dhtmlxscheduler.gpl.js","../sources/scheduler_factory.js"],"sourcesContent":["\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_prepareItemForJson(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (let i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop){\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t\t}\r\n\t\t\t} else if (prop !== undefined){\r\n\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareItemForForm(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop) {\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareDataItem: function(item) {\r\n\t\tif(this._serializeAsJson){\r\n\t\t\treturn this._prepareItemForJson(item);\r\n\t\t}else {\r\n\t\t\treturn this._prepareItemForForm(item);\r\n\t\t}\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\t\thtml+=\"
\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\r\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows && rows.length) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\r\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;"],"names":["global$1","window","global","dragHighlightPos","scheduler","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","createMarkerConfig","configSettings","sectionId","style","top","left","marginLeft","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","monthViewMarkersArray","weekDates","currDate","Date","valueOf","obj","push","week_start","cells","$container","querySelectorAll","event_attribute","id","i","length","cloneNode","unitMarkersArray","sectionPropertyName","y_property","map_to","multisection","formatedSections","String","split","section_delimiter","map","element","elems","columnViewMarkersArray","eventNodes","eventNodeClone","getAttribute","forEach","cfg","attachEvent","mode","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","get_resulting_options","days","zones","options","type","getZones","ev","timespans","day_index","day_value","timespan_type","s","containers","_props","matrix","container","property","view","linker","_add_timespan_zones","_get_blocked_zones","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","on_overlap","res","temp_start_date","temp_end_date","_marked_timespans","date_part","getDay","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","timeline_zones","blocked_timeline_zones","this","_get_relevant_blocked_zones","resultZones","concat","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","dates","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","document","createElement","innerHTML","appendChild","area","day","blocks","min_date","max_date","date_to_display","min_day","areas","d","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","max","min","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","firstChild","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","undefined","_delete_marked_timespans_list","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","unit","_get_unit_index","day_ind","unitsPerDay","floor","_date","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","callback","console","error","$stateProvider","registerProvider","batch_update","noRedraw","dp_mode","call_dp","_dp","updateMode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","render","setCurrentView","updateView","render_data","render_view_data","updateEvent","sendData","initPlugins","deletedEvent","copy","undo_deleted","new_event","message","text","expire","addEvent","limit","batchUpdate","uidSeed","isDate","getFullYear","getMonth","utils","mixin","source","force","f","object","result","isArray","pop","Function","prototype","toString","constructor","Number","Boolean","varType","Object","defined","delay","timeout","timer","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","extend","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","renderCalendar","navigation","handler","calendar","html_element","renderElement","renderer","rows","cols","value","align","justifyContent","prepareConfig","renderLayout","items","fragment","createDocumentFragment","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","body","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","listenWindowResize","resizeDelay","oldSize","$destroyed","a","b","newSize","triggerSchedulerResize","$root","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","contentWindow","EventHost","_silent_mode","listeners","_silentStart","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","attachAll","name","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","defaultDomEvents","el","addEventListener","eventRemove","removeEventListener","domEvents","eventScope","attach","capture","detach","detachAll","staticArray","_eventRemoveAll","_createDomEventScope","_trim","str","trim","replace","_isDate","_isObject","getClassName","node","baseVal","locateCss","classname","strict","trg","srcElement","ind","charAt","right","isVisible","visibility","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","isNaN","hasHref","nodeName","loLowerCase","input","select","textarea","hasAttribute","isShadowDomSupported","head","createShadowRoot","attachShadow","getRootNode","ShadowRoot","host","dom_helpers","getAbsoluteLeft","htmlObject","getOffset","getAbsoluteTop","getOffsetSum","elem","parseInt","offsetTop","offsetLeft","offsetParent","getOffsetRect","box","getBoundingClientRect","test","navigator","userAgent","dummy","dummyBox","docElem","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","selector","insertAfter","newNode","referenceNode","nextSibling","insertBefore","remove","isChildOf","child","contains","getFocusableNodes","nodes","nodesArray","$position","sort","hasShadowParent","getActiveElement","activeElement","shadowRoot","getSelection","focusNode","getRelativeEventPosition","bottom","y","x","clientX","clientY","getTargetNode","tagName","composedPath","getNodePosition","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isIE","isOpera","isChrome","isKHTML","isFF","isIPad","search","isEdge","isNode","serialize$1","serialized","encodeURIComponent","JSON","stringify","generateStringToDate","format","utc","splt","mask","match","code","csp_str_to_date","set","temp","locale","month_short_hash","month_full_hash","UTC","cspEnabled","useCsp","csp","init","month_short","month_full","old","setSeconds","setMilliseconds","setTime","getTime","time_part","getTimezoneOffset","shift","start_on_monday","month_start","setDate","year_start","setMonth","day_start","_add_days","inc","ndate","rest","hours","setYear","to_fixed","num","date_to_str","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","parseYMD","parseMDY","parseDMY","dateString","parse_exact_format","datestr","nday","first_thursday","year_number","ordinal_date","convert_to_utc","getSerializator","_events","_loaded","_load","url","from","_load_url","to","prevent_cache","_load_mode","lf","templates","load_format","cache_line","temp_to","ajax","get","ajaxCallback","response","on_load","_parsers","xml","canParse","xhr","responseXML","xmlDoc","parse","responseText","topElement","xmltop","loader","csrfToken","dhtmlx","security_key","opts","xpath","arr","serverList","itms","j","attrs","attributes","label","attr","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","events","dhx_security","collections","collections_loaded","collection","option","option_key","ical","RegExp","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","parse_date","dh","dm","utcMark","dy","dn","dd","server_utc","foundParser","parser","_process","status","_process_loading","_loading","_not_render","_render_wait","_after_call","_tagvalue","_init_date","_helpers","parseDate","getSerializableData","createSerializator","serialize","dataset","allEvents","exportedEvent","exportValue","rawValue","xml_format","format_date","load","setLoadMode","array","show_loading","_x","_y","_obj","_init_touch_events","touch","MSStream","platform","maxTouchPoints","scroll_width","_mobile","touchEventsSupported","createEvent","_touch_events","touches","pageX","pageY","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","names","accessor","ignore","tracker","drag_mode","scroll_mode","action_mode","dblclicktime","attachTouchEvent","_is_lightbox_open","passive","drag_cancel","_hide_global_tip","_on_mouse_up","_temp_touch_block","_drag_pos","_pointerDragId","acc","dnd","timeline","original_render","drag_id","getEvents","_sorder","_count","_on_mouse_move","preventDefault","cancelBubble","_update_global_tip","abs","fake_event","pointerId","_click","dhx_cal_data","_on_dbl_click","_block_next_stop","touch_drag","actTask","_locate_event","fakeTask","sourceTask","_ignore_next_click","previousSibling","_on_mouse_down","for_rendered","_rendered","touch_tip","_show_global_tip","touch_swipe_dates","s_ev","e_ev","step","max_dy","scrollable","dx","dhx_cal_next_button","dhx_cal_prev_button","toptip","_global_tip","time","event_header","day_date","labels","drag_to_create","drag_to_move","calculatedMaterial","cachedBorderBoxValue","checkIfBorderBoxStyling","_is_material_skin","probe","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","flatSkinHourScale","_addThemeClass","skin","_skin_settings","use_select_menu_space","wide_form","displayed_event_color","displayed_event_text_color","_skin_xy","lightbox_additional_height","bar_height","_build_skin_info","clearInterval","monitorIntervalId","setInterval","csstheme","setSkin","monitorThemeChange","styles","themeVar","themeName","isCssVarTheme","cssValues","oldMaterialTheme","links","getElementsByTagName","href","_theme_info","theme","cssVarTheme","values","themeVariables","_configure","col","_skin_init","hour_scale","hour_date","_old_month_day","month_day","old_month_day","dhx_cal_today_button","tab","header","tabs","specialTabs","tabName","find","filter","firstTab","reverse","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_new_event","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","deleteEvent","_add_rec_marker","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","keyCode","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","_waiAria","messageButtonAttrString","getFirstDefined","_createBox","ok","cancel","contentId","messageModalAttr","inner","title","content","message_ok","message_cancel","buttons","btn","getElementById","hidden","focus","alertPopup","confirmPopup","boxPopup","box_params","params","focusable","messageInfoAttr","timers","pull","seed","hideAll","popups","alert","confirm","modalbox","setTransactionMode","total","headers","payload","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","val","_columns","getSyncState","enableDataNames","enablePartialDataSend","_changed","master","rowId","state","findRow","existing","getUserData","set_invalid","is_invalid","markRow","_methods","details","getActionByState","checkBeforeUpdate","editStop","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","stack","keys","pref","_applyPayload","urlSeparator","dataToSend","self","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","method","preprocessedData","_cleanupItemBeforeSend","action","query","_onResolvedCreateUpdate","tag","resultState","setRequestHeader","sid","tid","afterUpdateCallback","routerMode","actionPromise","create","delete","update","then","catch","valid","_forEachUpdatedRow","_getAllData","out","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","_is_virtual_event","_set_event_text_style","r","cssText","event_updated","rec_pattern","_dp_change_event_id","new_id","changeEventId","_dp_hook_delete","setDp","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","func","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","destructor","processedData","updatedItem","output","item","processedItem","prop","formatDate","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","icon_details","icon_edit","icon_delete","confirm_closing","confirm_deleting","section_description","section_time","full_day","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","prev","year","month","hour","minute","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","cs","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","direction","newDate","setFullYear","setState","_toggleMode","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","maxDate","labelFormat","dayElement","weeks","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProviders","internal","provider","unregisterProvider","stateProvider","commonViews","agenda","grid","week_agenda","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","exportToPNG","exportToPDF","extend$l","_detachDomEvent","_init_once","scheduler_resize_listener","hasSchedulerMarkup","wai_aria_application_role","views","_grid","log","rtl","_scroll","init_templates","set_sizes","$initialized","min_event_height","scale_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","edit_save","edit_cancel","functor","scale_x","materialScalePlaceholder","set_xy","_lightbox","_setLbPosition","_data_width","prepareValue","prepared","class_name","attr_value","labelAttr","domEventsScope","getDaysDifference","startDate","endDate","differenceInDays","_select_id","_close_not_saved","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","select_id","expanded","readonly","icon","def_step","dhx_cal_tab","deprecated_name","substring","_dhtmlx_confirm","title_confirm_deleting","edit","save","showLightbox","form","base","duration","event_duration","time_step","start_hour","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","_colsS","$domHelpers","dataArea","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","title_confirm_closing","positive_closing","_correct_shift","back","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","maxY","precisePos","minDate","preciseDate","cursor","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","drag_event_body","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_reset_ignores","_reset_scale","isViewExists","_set_aria_buttons_attrs","buttonGroups","group","headerButtonsAttributes","icon_form","oldClass","newClass","multidayScroll","dhx_multi_day","prev_scroll","preserve_scroll","_dy_shift","headerToggleState","_render_x_header","offset_top","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","count","count_n","_get_timeunit_start","_get_view_end","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","scales","cls","firstHalf","slotDate","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","_getNavDateElement","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","totalWidth","col_length","hiddenWidth","c2","cc","hourScaleAttr","scroll_hour","now_date","n","preserve","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","cellBody","bf1","getLabel","lightbox","updateCollection","list_name","resetLightbox","hideCover","cache","n_ev","_focus","endColumnIndex","eventLength","startColumnIndex","_get_date_index","last_column","check","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","end_slot","fd","start_slot","_get_section_property","_is_initialized","htmlTags","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","setAttributes","role","getHeaderCellAttr","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","agendaDetailsBtnString","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","buttonLabel","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","dom","assert","show_errors","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","$","counter","Promise","clearAll","createConfig","async","serializeRequestParams","DOMParser","ActiveXObject","loadXML","parseFromString","tagname","xpathExp","docObj","selectNodes","first","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","_call","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","readyState","filePath","open","toUpperCase","send","$ajax","default_date","month_date","load_date","week_date","date_format","api_date","day_column_padding","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","ajax_error","delay_render","timeline_swap_resize","$initial","xml_date","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","clear_view","extra_data","silent","setEvent","hash","create_getter","create_setter","is_visible_events","clear_event","evFirstHour","evLastHour","lastHour","checkEndDate","get_visible_events","only_timed","filter_event","_is_main_area_event","hold","full","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_table","_pre_render_events_line","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","weekCellIndex","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","zIndex","color","setProperty","tplClass","_editor","shiftKey","ariaAttr","icons","icons_str","currentIcon","textColor","highlightEventPosition","contentA","contentB","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","getSectionTop","posFromDate","_smartRenderingEnabled","restoreOriginalColors","scrollTo","_append_drag_marker","m","scale","lastChild","_update_marker_position","getLightboxRoot","cspEnvironment","salesforceEnvironment","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","inputBlock","fallback","inputId","old_id","getRootView","hooks","didInsert","cmp","skins","jQuery","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","oldDate","oldMode","updateFlags","lazy_updateView","ars","createDataProcessor","tMode","dhtmlxError","catchError","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","ExtensionsManager","_extensions","attaches","attachScheduler","_genStr","attachObject","vs","av","sched","schedId","setSizes","_viewRestore","notImplemented","modals","modalsStack","isModal","afterPopup","trapFocus","currentTarget","$keyboardNavigation","_keyNavMessagePopup","focusElement","backupFocus","key_nav_legacy","_temp_key_scope","key_nav","_pasteDate","_pasteSection","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","dispatcher","copyEvent","_make_pasted_event","event_pid","event_length","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","ctrlKey","metaKey","_buffer_event","_key_nav_copy_paste","getActiveNode","new_ev","scheduler_handlers","attachSchedulerHandlers","waitCall","keyDownHandler","focusHandler","keepScrollPosition","focusGlobalNode","enable","reFocusActiveNode","activeNode","isValid","MinicalButton","MinicalCell","mousedownHandler","dataAreaClick","listOfScales","some","Event","TimeSlot","nextSlot","setActiveNode","removeAttribute","evNode","prevState","lastStart","lastEnd","lastSection","getNode","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","clearEventMarkers","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","equals","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","toOrdinal","date2","differencems","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","clone","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","IterResult","_result","before","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","l","SuppressedError","Frequency","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","number","numberAsText","every","at","the","second","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","o","realCallback","delimiter","finalDelimiter","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","name_1","v","acceptNumber","expect","parseText","ttr","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","decodeNTH","decodeM","freqIsDailyOrGreater","fromText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","minutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","Days","parseIndividualNumber","optionKey","parts","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","all","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","rebuild","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","eastermask","g","yearStart","ydayset","mdayset","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","timeset","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","millisecondModulo","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","toText","isFullyConvertibleToText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","_b","parms","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rdateval","parm","createGetterSetter","fieldName","field","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","rule","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","show","tooltip_timeout","tooltip_hide_timeout","gplExtensions","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","_agendaScrollTop","agenda_area","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","rowAttr","dateHeader","descriptionHeader","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderDay","calendarEvent","selectedId","all_timed_month","is_event_short","_safe_copy","proto","isPrototypeOf","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","_setTempSection","event_id","collision_limit","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","evs_dates","getRecDates","tevs","concurrent","checked_mode","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","year_y","cur_height","week_agenda_scale_height","eventsContainer","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","cookie_param","old_load","drag_between","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","selected_id","addOption","disable","selectOption","setComboValue","all_options","single_option","getIndexByValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","getTimeline","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","info","_plain_export_copy","$text","_create_hidden_form","submit","_hidden_export_form","_get_export_size","footer","A5","A4","A3","A2","A1","A0","dataX","cSize","parseFloat","smartRendering","initialSizes","smart_rendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","grid_view","html_templates","getScope","scopes","minicalButton","minicalDate","SchedulerNode","DataArea","timeSlot","searchMap","key_nav_step","addShortcut","shortcut","scope","scopeObject","getShortcutHandler","commands","shortcuts","findHandler","removeShortcut","unbind","disp","setDefaultNode","_compose","createCommand","modifiers","alt","ctrl","meta","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","printableKey","fromCharCode","getHashFromEvent","getHash","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","EventHandler","_handlers","doAction","returnValue","bindAll","initKeys","nextItem","currentFocus","currentIndex","renderMultiple","currentStart","currentEnd","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","tempStart","tempEnd","_timeline_getX","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","getDefaultNode","getMode","blur","_compareEvents","_pickEvent","startId","nextEventHandler","nextEvent","currEvent","visibleDates","nextEv","prevEventHandler","HeaderCell","getNodes","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","_moveToSlot","slot","movingDate","getDefaultDate","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","timeslot","_getMultisectionView","_getNextSection","nextIndex","defaultSlot","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","globalNode","_getGrid","_getNode","enabled","newRow","newCol","blurNode","editor","defaultPrevented","schedulerNode","_timeout","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","cellIndex","td","renderMinical","cal","added","destroyMinical","_def_count","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","setupMapView","createAdapter","unmodifiedEvent","_eventLocationChanged","map_settings","resolve_event_location","_latLngUpdate","addEventWithLocation","updateEventMarker","newIdEvent","removeEventMarker","addEventMarker","onEventClick","coordinates","resolveAddress","map_view_provider","currentAdapter","resolve_user_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","dblclick_dhx_map_area","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","_selected_event_id","ariaButtonAttr","map_end","mapContainer","adapter","elem_id","marginRight","marginTop","destroy","initialize","geolocation","getCurrentPosition","coords","_updateEventLocation","_event_resolve_delay","ret","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","_render_calendar","unmarkCalendar","cont","tpos","_get_def_cont","$dom","dateAttribute","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","calendars","arrow","dayHeaders","dayCells","inputs","selects","inp","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","monthheight","old_s","multiselect","_children","_mark_inputs","_ids","script_url","divLoading","multisource","mvc","update_timer","use_id","sanitize","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","last_event","dragger","dhtmlDragAndDropObject","stopDrag","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_end","xml_top","profile","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","to_pdf","objects","getPDFData","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","fitQIInsideWindow","quickInfoPopup","popupRect","offsetBottom","getPositionInsideScheduler","_$quickInfoHandler","eventElement","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","_quick_info_onscroll_handler","$testmode","_qi_button_click","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","txt_replace","txts","txtt","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","originalForm","readonlyForm","_lightbox_r","clearMilliseconds","isSeries","recurring_event_id","old_add_event","groupExceptions","exceptions","original_start","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","ev_id","_ignore_call","tev","_pid_changed","_is_modified_occurence","idTimestamp","nid","nev","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","get_visible_events_rec","repeat_date","old_update_event","toIcalString","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","non_render","maxCount","seriesExceptions","utcStart","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","jsDaysToRRULEDays","RruleDayNumsToJs","formatDayNumber","repeat_monthly_date","repeat_monthly_weekday","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","dayNum","dayLabel","dateOfMonth","nthWeekDayOfMonth","dateOfYear","nthWeekDayOfYear","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getFirstSectionOfType","rec","_get_node","_outer_html","loc","_init_set_value","_ds","weekly","monthly","yearly","_rec_init_done","rf","blocked","rruleset","topOption","rruleObj","untilDate","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","recurring_legacy","getRecurringSection","occurrence_timestamp_in_utc","outerHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","date_str","register_els","inps","change_current_view","set_end_rule","_get_repeat_code","get_rcode","str_date","transpose_type","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","_set_repeat_code","MouseEvent","elements","_toggle_block","_get_button","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","newMonth","cor","cor2","cday","transposeRecurring","recurringParts","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","tooltipManager","tooltips","tooltipFor","targetEventId","hideTooltip","s2d","d2s","select_event","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","factory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","addCalendar","$dhx"],"mappings":"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","x_google_ignoreList":[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111]} \ No newline at end of file diff --git a/codebase/sources/dhtmlxscheduler.es.js b/codebase/sources/dhtmlxscheduler.es.js index 40259d7..be0edc1 100644 --- a/codebase/sources/dhtmlxscheduler.es.js +++ b/codebase/sources/dhtmlxscheduler.es.js @@ -8053,27 +8053,56 @@ DataProcessor.prototype = { setTransactionMode: function(mode, total) { code.call(this, rowId); } } -}, _prepareDataItem: function(item) { - var processedItem = {}; - var scheduler2 = this.$scheduler; - var copy2 = scheduler2.utils.copy(item); +}, _prepareItemForJson(item) { + const processedItem = {}; + const scheduler2 = this.$scheduler; + const copy2 = scheduler2.utils.copy(item); + for (let i in copy2) { + let prop = copy2[i]; + if (i.indexOf("_") === 0) { + continue; + } else if (prop) { + if (prop.getUTCFullYear) { + processedItem[i] = scheduler2._helpers.formatDate(prop); + } else if (typeof prop == "object") { + processedItem[i] = this._prepareItemForJson(prop); + } else { + processedItem[i] = prop; + } + } else if (prop !== void 0) { + processedItem[i] = prop; + } + } + processedItem[this.action_param] = scheduler2.getUserData(item.id, this.action_param); + return processedItem; +}, _prepareItemForForm(item) { + const processedItem = {}; + const scheduler2 = this.$scheduler; + const copy2 = scheduler2.utils.copy(item); for (var i in copy2) { + let prop = copy2[i]; if (i.indexOf("_") === 0) { continue; - } else if (copy2[i]) { - if (copy2[i].getUTCFullYear) { - processedItem[i] = scheduler2._helpers.formatDate(copy2[i]); - } else if (typeof copy2[i] == "object") { - processedItem[i] = this._prepareDataItem(copy2[i]); - } else if (copy2[i] === null) { - processedItem[i] = ""; + } else if (prop) { + if (prop.getUTCFullYear) { + processedItem[i] = scheduler2._helpers.formatDate(prop); + } else if (typeof prop == "object") { + processedItem[i] = this._prepareItemForForm(prop); } else { - processedItem[i] = copy2[i]; + processedItem[i] = prop; } + } else { + processedItem[i] = ""; } } processedItem[this.action_param] = scheduler2.getUserData(item.id, this.action_param); return processedItem; +}, _prepareDataItem: function(item) { + if (this._serializeAsJson) { + return this._prepareItemForJson(item); + } else { + return this._prepareItemForForm(item); + } }, _getRowData: function(id2) { var dataItem = this.$scheduler.getEvent(id2); if (!dataItem) { @@ -8723,7 +8752,7 @@ class DatePicker { } } function factoryMethod(extensionManager) { - const scheduler2 = { version: "7.1.0" }; + const scheduler2 = { version: "7.1.1" }; scheduler2.$stateProvider = StateService(); scheduler2.getState = scheduler2.$stateProvider.getState; extend$n(scheduler2); @@ -9485,7 +9514,7 @@ function container_autoresize(scheduler2) { } else { var evl = data.firstChild; const rows = evl.querySelectorAll(".dhx_cal_month_row"); - if (rows) { + if (rows && rows.length) { for (var i = 0; i < rows.length; i++) { h[i]++; if (h[i] * hb > this._colsS.height - this.xy.month_head_height) { @@ -9522,14 +9551,11 @@ function container_autoresize(scheduler2) { var last = this._els["dhx_multi_day"][0]; last.style.height = dh; last.style.visibility = h[0] == -1 ? "hidden" : "visible"; + last.style.display = h[0] == -1 ? "none" : ""; last = this._els["dhx_multi_day"][1]; last.style.height = dh; last.style.visibility = h[0] == -1 ? "hidden" : "visible"; - if (last.style.visibility == "hidden") { - last.style.display = "none"; - } else { - last.style.display = ""; - } + last.style.display = h[0] == -1 ? "none" : ""; last.className = h[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small"; this._dy_shift = (h[0] + 1) * hb; h[0] = 0; @@ -19721,6 +19747,13 @@ class TooltipManager { watchableTarget = targetNode; config.onmouseenter(event2, targetNode); }; + if (scheduler2._mobile && scheduler2.config.touch_tooltip) { + if (targetNode) { + doOnMouseEnter(); + } else { + config.onmouseleave(event2, targetNode); + } + } if (watchableTarget) { if (targetNode && targetNode === watchableTarget) { config.onmousemove(event2, targetNode); @@ -19824,6 +19857,9 @@ function tooltip(scheduler2) { tooltipManager.hideTooltip(); }); scheduler2.attachEvent("onBeforeDrag", function() { + if (scheduler2._mobile && scheduler2.config.touch_tooltip) { + return true; + } tooltipManager.hideTooltip(); return true; }); diff --git a/codebase/sources/dhtmlxscheduler.es.js.map b/codebase/sources/dhtmlxscheduler.es.js.map index 91c2e96..401337d 100644 --- a/codebase/sources/dhtmlxscheduler.es.js.map +++ b/codebase/sources/dhtmlxscheduler.es.js.map @@ -1 +1 @@ -{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/plugins/drag_highlight_pos.js","../../sources/plugins/undo_delete.js","../../sources/plugins/limit.js","../../sources/plugins/batch_update.js","../../sources/plugins/index.js","../../sources/core/utils/utils.js","../../sources/core/state.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view/gMapAdapter.ts","../../sources/ext/map_view/osmMapAdapter.ts","../../sources/ext/map_view/mapboxAdapter.ts","../../sources/ext/map_view/index.ts","../../sources/ext/minical.js","../../sources/ext/monthheight.js","../../sources/ext/restricted_extensions/multisection.js","../../sources/ext/multiselect.js","../../sources/ext/multisource.js","../../sources/ext/mvc.js","../../sources/ext/outerdrag.js","../../sources/ext/pdf.js","../../sources/ext/quick_info.js","../../sources/ext/readonly.js","../../node_modules/rrule/dist/esm/weekday.js","../../node_modules/rrule/dist/esm/helpers.js","../../node_modules/rrule/dist/esm/dateutil.js","../../node_modules/rrule/dist/esm/iterresult.js","../../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../../node_modules/rrule/dist/esm/callbackiterresult.js","../../node_modules/rrule/dist/esm/nlp/i18n.js","../../node_modules/rrule/dist/esm/nlp/totext.js","../../node_modules/rrule/dist/esm/nlp/parsetext.js","../../node_modules/rrule/dist/esm/types.js","../../node_modules/rrule/dist/esm/nlp/index.js","../../node_modules/rrule/dist/esm/datetime.js","../../node_modules/rrule/dist/esm/parseoptions.js","../../node_modules/rrule/dist/esm/parsestring.js","../../node_modules/rrule/dist/esm/datewithzone.js","../../node_modules/rrule/dist/esm/optionstostring.js","../../node_modules/rrule/dist/esm/cache.js","../../node_modules/rrule/dist/esm/masks.js","../../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../../node_modules/rrule/dist/esm/iterinfo/easter.js","../../node_modules/rrule/dist/esm/iterinfo/index.js","../../node_modules/rrule/dist/esm/iter/poslist.js","../../node_modules/rrule/dist/esm/iter/index.js","../../node_modules/rrule/dist/esm/rrule.js","../../node_modules/rrule/dist/esm/iterset.js","../../node_modules/rrule/dist/esm/rrulestr.js","../../node_modules/rrule/dist/esm/rruleset.js","../../sources/ext/recurring.js","../../sources/ext/recurring_legacy.js","../../sources/ext/serialize.js","../../sources/ext/restricted_extensions/timeline.js","../../sources/ext/tooltip/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"\";\r\n\t\thtml+=\"\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_prepareDataItem: function(item) {\r\n\t\tvar processedItem = {};\r\n\t\tvar scheduler = this.$scheduler;\r\n\t\tvar copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (copy[i]) {\r\n\t\t\t\tif(copy[i].getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(copy[i]);\r\n\t\t\t\t} else if(typeof copy[i] == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareDataItem(copy[i]);\r\n\t\t\t\t} else if(copy[i] === null) {\r\n\t\t\t\t\tprocessedItem[i] = \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = copy[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tif(last.style.visibility == \"hidden\"){\r\n\t\t\t\t\t\t\tlast.style.display = \"none\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tlast.style.display = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i
\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'
';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","dragHighlightPos","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","checkSectionPropertyName","y_property","map_to","setRequiredStylesToMarker","style","top","left","marginLeft","createMarkerConfig","configSettings","sectionId","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","getMonthViewMarkers","getTimelineAndUnitsViewMarkers","getColumnViewMarkers","forEach","cfg","push","columnViewMarkersArray","eventNodes","$container","querySelectorAll","event_attribute","i","length","eventNodeClone","cloneNode","startDate","Date","getAttribute","endDate","dates","monthViewMarkersArray","weekDates","currDate","valueOf","week_start","cells","unitMarkersArray","sectionPropertyName","multisection","String","split","section_delimiter","formatedSections","map","element","elems","attachEvent","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","undoDelete","ev","deletedEvent","copy","undo_deleted","new_event","message","text","expire","type","callback","undoBtn","addEvent","render","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","fix_options","options","days","zones","get_resulting_options","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","timespan_type","on_overlap","res","temp_start_date","temp_end_date","timespans","_marked_timespans","date_part","day_value","day_index","getDay","getZones","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","s","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","recEventInLimits","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","_get_blocked_zones","property","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","concat","containers","_props","matrix","container","view","view_config","linker","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","undefined","min","max","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","area","blocks","min_date","max_date","date_to_display","min_day","areas","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","d","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","_get_unit_index","unit","_date","dx","day_ind","unitsPerDay","floor","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","console","error","$stateProvider","registerProvider","batch_update","batchUpdate","noRedraw","call_dp","_dp","updateMode","dp_mode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","setCurrentView","render_data","render_view_data","updateEvent","sendData","initPlugins","limit","uidSeed","isArray","pop","isStringObject","Function","prototype","toString","constructor","isNumberObject","isBooleanObject","isDate","getFullYear","getMonth","defined","delay","timeout","timer","result","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","utils","mixin","source","force","f","object","Number","Boolean","varType","Object","StateService","stateProviders","name","provider","method","internal","unregisterProvider","assert","check","show_errors","log","extend","commonViews","agenda","grid","timeline","week_agenda","year","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedDoc","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","renderCalendar","exportToPNG","exportToPDF","dhtmlxError","catchError","a","b","responseText","ajax_error","alert","classes","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","navigation","handler","calendar","html_element","findRenderer","renderer","rows","cols","renderElement","value","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","EventHost","_silent_mode","listeners","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","eventable","nav_bar","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","navbar","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","_grid","names","optionalViews","_obj","getElementById","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","_x","scale_x","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","right","node","x","y","prepareValue","val","prepared","isNaN","direction","getElementsByTagName","class_name","attr_value","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","_new_event","select_id","expanded","drag_id","drag_mode","dhx_cal_data","cancelBubble","readonly","icon","mask","buttons","replace","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","confirm","base","_isObject","_isDate","duration","event_duration","time_step","start_hour","setTime","_loading","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","d_pos","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","for_rendered","r","srcElement","classname","drag_event_body","fullClass","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","visibility","totalWidth","col_length","hiddenWidth","c2","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","parse_date","getLabel","lightbox","updateCollection","list_name","collection","serverList","resetLightbox","hideCover","cache","create","n_ev","_focus","focus","getDaysDifference","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","fd","start_slot","end_slot","_get_section_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","addEventListener","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","trg","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","nodeName","loLowerCase","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","serialize$1","serialized","encodeURIComponent","Promise","createConfig","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","cspEnabled","checkIfCSPEnabled","useCsp","csp","old","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","_sorder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","restoreOriginalColors","getSectionTop","posFromDate","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","xmlLoaded","jsonLoader","iCalLoader","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_y","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","monitorThemeChange","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","monitorIntervalId","clearInterval","setInterval","csstheme","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","_prepareDataItem","item","processedItem","dataItem","createDataProcessor","tMode","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProvider","common_errors","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderEmptyView","renderDay","calendarEvent","renderOneEvent","selectedId","bg","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","week_agenda_scale_height","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","renderMultiple","currentStart","currentEnd","TimeSlot","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","_timeline_getX","tempStart","tempEnd","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","listOfScales","arrOfScales","some","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","addEventMarker","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","clearEventMarkers","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","resolveAddress","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","createAdapter","map_view_provider","currentAdapter","_latLngUpdate","_eventLocationChanged","map_settings","resolve_user_location","resolve_event_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","setupMapView","attachSchedulerEvents","addEventWithLocation","coordinates","removeEventMarker","setUserLocation","adapter","geolocation","getCurrentPosition","coords","dblclick_dhx_map_area","unmodifiedEvent","updateEventMarker","newIdEvent","onEventClick","detachSchedulerEvents","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","map_end","mapContainer","_setMapSize","destroy","initialize","elem_id","marginRight","marginTop","_selected_event_id","ariaButtonAttr","_updateEventLocation","_delay","ret","_event_resolve_delay","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","_$quickInfoHandler","getPositionInsideScheduler","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","fitQIInsideWindow","quickInfoPopup","popupRect","containerRect","offsetBottom","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","toArray","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","daysBetween","date1","date2","date1ms","date2ms","differencems","toOrdinal","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","dolly","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","dateStr","dateInTimeZone","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","dateInTargetTZ","tzOffset","IterResult","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","SuppressedError","suppressed","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","numberAsText","every","at","the","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","canConvert","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","delimJoin","finalDelimiter","o","realCallback","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","rule","name_1","v","acceptNumber","expect","parseText","ttr","S","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","MDAYs","decodeM","decodeNTH","Frequency","freqIsDailyOrGreater","fromText","toText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","buildTimeset","millisecondModulo","timeset","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","strippedLine","Days","parseNumber","optionKey","parseWeekday","parseIndividualNumber","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","baseYearMasks","wnomask","firstwkst","wyearlen","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","mmask","mdaymask","nmdaymask","mrange","rebuildMonth","lastyear","lastmonth","nwdaymask","ranges","easter","yearStart","Iterinfo","rebuild","yearinfo","monthinfo","eastermask","ydayset","mdayset","_","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","makeTimeset","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","isFullyConvertibleToText","iterSet","_rrule","_exrule","_rdate","_exdate","_exdateHash","_accept","evalExdate","zonedDate","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","splitIntoLines","_b","breakDownLine","parms","_c","rdateTzid","parseRDate","buildRule","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rrulestr","extractName","validateDateParm","parm","rdateval","createGetterSetter","fieldName","field","field_1","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","clearMilliseconds","isDeletedOccurrence","isSeries","recurring_event_id","clearRecurringProperties","original_start","createException","nid","nev","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","old_add_event","ev_id","_ignore_call","tev","_pid_changed","deleteEventFromSeries","idTimestamp","_is_modified_occurence","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","groupExceptions","exceptions","get_visible_events_rec","repeat_date","old_update_event","toIcalString","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","getTopLevelOption","rruleObj","untilDate","hasEndCondition","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","jsDaysToRRULEDays","RruleDayNumsToJs","fillCustomDaily","fillCustomWeekly","dayCheckboxes","dayNum","dayLabel","fillCustomMonthly","dateOfMonth","nthWeekDayOfMonth","repeat_monthly_date","repeat_monthly_weekday","formatDayNumber","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","fillCustomYearly","dateOfYear","nthWeekDayOfYear","fillEndRule","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","rec","_get_node","_outer_html","loc","_init_set_value","_ds","show","onRepeatOptionChange","onCustomRepeatIntervalChange","weekly","monthly","yearly","onCustomRepeatEndRule","_rec_init_done","rf","blocked","rruleset","topOption","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","getFirstSectionOfType","recurring_legacy","occurrence_timestamp_in_utc","outerHTML","getOuterHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","str_date","date_str","register_els","inps","change_current_view","get_repeat_code","get_rcode","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","set_repeat_code","MouseEvent","_set_repeat_code","elements","_toggle_block","_get_button","getRecurringSection","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","_getViewPort","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","hideTooltip","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"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","x_google_ignoreList":[126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153]} \ No newline at end of file +{"version":3,"file":"dhtmlxscheduler.es.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/plugins/drag_highlight_pos.js","../../sources/plugins/undo_delete.js","../../sources/plugins/limit.js","../../sources/plugins/batch_update.js","../../sources/plugins/index.js","../../sources/core/utils/utils.js","../../sources/core/state.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view/gMapAdapter.ts","../../sources/ext/map_view/osmMapAdapter.ts","../../sources/ext/map_view/mapboxAdapter.ts","../../sources/ext/map_view/index.ts","../../sources/ext/minical.js","../../sources/ext/monthheight.js","../../sources/ext/restricted_extensions/multisection.js","../../sources/ext/multiselect.js","../../sources/ext/multisource.js","../../sources/ext/mvc.js","../../sources/ext/outerdrag.js","../../sources/ext/pdf.js","../../sources/ext/quick_info.js","../../sources/ext/readonly.js","../../node_modules/rrule/dist/esm/weekday.js","../../node_modules/rrule/dist/esm/helpers.js","../../node_modules/rrule/dist/esm/dateutil.js","../../node_modules/rrule/dist/esm/iterresult.js","../../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../../node_modules/rrule/dist/esm/callbackiterresult.js","../../node_modules/rrule/dist/esm/nlp/i18n.js","../../node_modules/rrule/dist/esm/nlp/totext.js","../../node_modules/rrule/dist/esm/nlp/parsetext.js","../../node_modules/rrule/dist/esm/types.js","../../node_modules/rrule/dist/esm/nlp/index.js","../../node_modules/rrule/dist/esm/datetime.js","../../node_modules/rrule/dist/esm/parseoptions.js","../../node_modules/rrule/dist/esm/parsestring.js","../../node_modules/rrule/dist/esm/datewithzone.js","../../node_modules/rrule/dist/esm/optionstostring.js","../../node_modules/rrule/dist/esm/cache.js","../../node_modules/rrule/dist/esm/masks.js","../../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../../node_modules/rrule/dist/esm/iterinfo/easter.js","../../node_modules/rrule/dist/esm/iterinfo/index.js","../../node_modules/rrule/dist/esm/iter/poslist.js","../../node_modules/rrule/dist/esm/iter/index.js","../../node_modules/rrule/dist/esm/rrule.js","../../node_modules/rrule/dist/esm/iterset.js","../../node_modules/rrule/dist/esm/rrulestr.js","../../node_modules/rrule/dist/esm/rruleset.js","../../sources/ext/recurring.js","../../sources/ext/recurring_legacy.js","../../sources/ext/serialize.js","../../sources/ext/restricted_extensions/timeline.js","../../sources/ext/tooltip/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"\";\r\n\t\thtml+=\"\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_prepareItemForJson(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (let i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop){\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t\t}\r\n\t\t\t} else if (prop !== undefined){\r\n\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareItemForForm(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop) {\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareDataItem: function(item) {\r\n\t\tif(this._serializeAsJson){\r\n\t\t\treturn this._prepareItemForJson(item);\r\n\t\t}else {\r\n\t\t\treturn this._prepareItemForForm(item);\r\n\t\t}\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows && rows.length) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i
\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'
';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\r\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\r\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","dragHighlightPos","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","checkSectionPropertyName","y_property","map_to","setRequiredStylesToMarker","style","top","left","marginLeft","createMarkerConfig","configSettings","sectionId","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","getMonthViewMarkers","getTimelineAndUnitsViewMarkers","getColumnViewMarkers","forEach","cfg","push","columnViewMarkersArray","eventNodes","$container","querySelectorAll","event_attribute","i","length","eventNodeClone","cloneNode","startDate","Date","getAttribute","endDate","dates","monthViewMarkersArray","weekDates","currDate","valueOf","week_start","cells","unitMarkersArray","sectionPropertyName","multisection","String","split","section_delimiter","formatedSections","map","element","elems","attachEvent","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","undoDelete","ev","deletedEvent","copy","undo_deleted","new_event","message","text","expire","type","callback","undoBtn","addEvent","render","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","fix_options","options","days","zones","get_resulting_options","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","timespan_type","on_overlap","res","temp_start_date","temp_end_date","timespans","_marked_timespans","date_part","day_value","day_index","getDay","getZones","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","s","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","recEventInLimits","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","_get_blocked_zones","property","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","concat","containers","_props","matrix","container","view","view_config","linker","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","undefined","min","max","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","area","blocks","min_date","max_date","date_to_display","min_day","areas","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","d","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","_get_unit_index","unit","_date","dx","day_ind","unitsPerDay","floor","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","console","error","$stateProvider","registerProvider","batch_update","batchUpdate","noRedraw","call_dp","_dp","updateMode","dp_mode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","setCurrentView","render_data","render_view_data","updateEvent","sendData","initPlugins","limit","uidSeed","isArray","pop","isStringObject","Function","prototype","toString","constructor","isNumberObject","isBooleanObject","isDate","getFullYear","getMonth","defined","delay","timeout","timer","result","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","utils","mixin","source","force","f","object","Number","Boolean","varType","Object","StateService","stateProviders","name","provider","method","internal","unregisterProvider","assert","check","show_errors","log","extend","commonViews","agenda","grid","timeline","week_agenda","year","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedDoc","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","renderCalendar","exportToPNG","exportToPDF","dhtmlxError","catchError","a","b","responseText","ajax_error","alert","classes","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","navigation","handler","calendar","html_element","findRenderer","renderer","rows","cols","renderElement","value","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","EventHost","_silent_mode","listeners","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","eventable","nav_bar","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","navbar","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","_grid","names","optionalViews","_obj","getElementById","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","_x","scale_x","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","right","node","x","y","prepareValue","val","prepared","isNaN","direction","getElementsByTagName","class_name","attr_value","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","_new_event","select_id","expanded","drag_id","drag_mode","dhx_cal_data","cancelBubble","readonly","icon","mask","buttons","replace","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","confirm","base","_isObject","_isDate","duration","event_duration","time_step","start_hour","setTime","_loading","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","d_pos","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","for_rendered","r","srcElement","classname","drag_event_body","fullClass","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","visibility","totalWidth","col_length","hiddenWidth","c2","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","parse_date","getLabel","lightbox","updateCollection","list_name","collection","serverList","resetLightbox","hideCover","cache","create","n_ev","_focus","focus","getDaysDifference","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","fd","start_slot","end_slot","_get_section_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","addEventListener","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","trg","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","nodeName","loLowerCase","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","serialize$1","serialized","encodeURIComponent","Promise","createConfig","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","cspEnabled","checkIfCSPEnabled","useCsp","csp","old","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","_sorder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","restoreOriginalColors","getSectionTop","posFromDate","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","xmlLoaded","jsonLoader","iCalLoader","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_y","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","monitorThemeChange","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","monitorIntervalId","clearInterval","setInterval","csstheme","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","item","processedItem","prop","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","createDataProcessor","tMode","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProvider","common_errors","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderEmptyView","renderDay","calendarEvent","renderOneEvent","selectedId","bg","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","week_agenda_scale_height","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","renderMultiple","currentStart","currentEnd","TimeSlot","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","_timeline_getX","tempStart","tempEnd","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","listOfScales","arrOfScales","some","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","addEventMarker","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","latitude","longitude","resolveAddress","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","createAdapter","map_view_provider","currentAdapter","_latLngUpdate","_eventLocationChanged","map_settings","resolve_user_location","resolve_event_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","setupMapView","attachSchedulerEvents","addEventWithLocation","coordinates","removeEventMarker","setUserLocation","adapter","geolocation","getCurrentPosition","coords","dblclick_dhx_map_area","unmodifiedEvent","updateEventMarker","newIdEvent","onEventClick","detachSchedulerEvents","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","clearEventMarkers","map_end","mapContainer","_setMapSize","destroy","initialize","elem_id","marginRight","marginTop","_selected_event_id","ariaButtonAttr","_updateEventLocation","_delay","ret","_event_resolve_delay","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","_$quickInfoHandler","getPositionInsideScheduler","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","fitQIInsideWindow","quickInfoPopup","popupRect","containerRect","offsetBottom","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","toArray","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","daysBetween","date1","date2","date1ms","date2ms","differencems","toOrdinal","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","dolly","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","dateStr","dateInTimeZone","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","dateInTargetTZ","tzOffset","IterResult","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","SuppressedError","suppressed","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","numberAsText","every","at","the","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","canConvert","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","delimJoin","finalDelimiter","o","realCallback","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","rule","name_1","v","acceptNumber","expect","parseText","ttr","S","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","MDAYs","decodeM","decodeNTH","Frequency","freqIsDailyOrGreater","fromText","toText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","buildTimeset","millisecondModulo","timeset","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","strippedLine","Days","parseNumber","optionKey","parseWeekday","parseIndividualNumber","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","baseYearMasks","wnomask","firstwkst","wyearlen","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","mmask","mdaymask","nmdaymask","mrange","rebuildMonth","lastyear","lastmonth","nwdaymask","ranges","easter","yearStart","Iterinfo","rebuild","yearinfo","monthinfo","eastermask","ydayset","mdayset","_","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","makeTimeset","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","isFullyConvertibleToText","iterSet","_rrule","_exrule","_rdate","_exdate","_exdateHash","_accept","evalExdate","zonedDate","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","splitIntoLines","_b","breakDownLine","parms","_c","rdateTzid","parseRDate","buildRule","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rrulestr","extractName","validateDateParm","parm","rdateval","createGetterSetter","fieldName","field","field_1","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","clearMilliseconds","isDeletedOccurrence","isSeries","recurring_event_id","clearRecurringProperties","original_start","createException","nid","nev","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","old_add_event","ev_id","_ignore_call","tev","_pid_changed","deleteEventFromSeries","idTimestamp","_is_modified_occurence","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","groupExceptions","exceptions","get_visible_events_rec","repeat_date","old_update_event","toIcalString","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","getTopLevelOption","rruleObj","untilDate","hasEndCondition","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","jsDaysToRRULEDays","RruleDayNumsToJs","fillCustomDaily","fillCustomWeekly","dayCheckboxes","dayNum","dayLabel","fillCustomMonthly","dateOfMonth","nthWeekDayOfMonth","repeat_monthly_date","repeat_monthly_weekday","formatDayNumber","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","fillCustomYearly","dateOfYear","nthWeekDayOfYear","fillEndRule","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","rec","_get_node","_outer_html","loc","_init_set_value","_ds","show","onRepeatOptionChange","onCustomRepeatIntervalChange","weekly","monthly","yearly","onCustomRepeatEndRule","_rec_init_done","rf","blocked","rruleset","topOption","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","getFirstSectionOfType","recurring_legacy","occurrence_timestamp_in_utc","outerHTML","getOuterHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","str_date","date_str","register_els","inps","change_current_view","get_repeat_code","get_rcode","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","set_repeat_code","MouseEvent","_set_repeat_code","elements","_toggle_block","_get_button","getRecurringSection","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","targetEventId","hideTooltip","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"AACe,SAAAA;AAEf,MAAWC,OAAAA,UAAU,eAAeA,OAAOC,UAAU;AACpDD,WAAOC,SAASC,kBAAkB,SAAUC,KAAKC,MAAMC,MAAMC,YAC5D;AAAA,UAAID,OAAOA,QAAQ;AACnB,UAAIE,MAAMC,SAASC,cAAc,KAAA;AACjCF,UAAIG,KAAK,iBAAiBC,KAAKC,QAAQ,EAAA;AACvCL,UAAIM,YAAY,cAAcN,IAAIG,KAAK,qPAAqPL,OAAO;AACnSG,eAASM,KAAKC,YAAYR,IAAIS,UAAAA;AAE9BL,WAAKM,aAAaV,IAAIG,IAAI,OAAO,IAAA;AAEjCC,WAAKO,GAAGP,KAAKQ,EAAIC,EAAAA,QAAQd;AACzBK,WAAKO,GAAGP,KAAKQ,EAAIE,EAAAA,UAAUd,IAAIG;AAC/BJ,MAAAA,WAAUgB,WAAWhB,WAAUiB;AAC/BjB,MAAAA,WAAUkB,aAAa;;AACvBlB,MAAAA,WAAUmB,KAAKlB,IAAIG,IAAIP,KAAKC,IAAAA;AAE5B,aAAOO,KAAKO,GAAGP,KAAKe,aAAgBN,CAAAA,EAAAA;AAAAA,IACtC;AAAA,EACA;AAEA;;ACrBA,IAAIO;AACJ,WAAUC,WAAW,aAAY;AAChCD,gBAAcC;AACf,OAAK;AACJD,gBAAcE;AACf;AAGA,MAAAC,WAAeH;ACVA,SAASI,iBAAiBzB,YAAAA;AACrC,MAAI0B,aAAa;AACjB,MAAIC,cAAc;AAClB,MAAIC,YAAY;AAChB,MAAIC,SAAQ;AAEZ,WAASC;AACL,WAAO9B,WAAU+B,OAAOC,kBAAkBhC,WAAUiC;AAAAA,EACvD;AAED,WAASC,cAAcC,UAAAA;AACnB,UAAMC,UAAUpC,WAAUqC,QAAQF,QAClC;AAAA,QAAGC,SAAQ;AACP,aAAOA,QAAQE;AAAAA,IAClB;AACD,WAAOH;AAAAA,EACV;AAED,WAASI,yBAAyBJ;AAC9B,UAAMC,UAAUpC,WAAUqC,QAAQF;AAClC,QAAGC,QAAQI,YAAW;AAClB,aAAOJ,QAAQI;AAAAA,IAClB;AACD,QAAGJ,QAAQK,QAAO;AACd,aAAOL,QAAQK;AAAAA,IAClB;AAAA,EACJ;AAED,WAASC,0BAA0Bd,YAAWU,QAAAA;AAC1C,YAAQA,QACJ;AAAA,MAAA,KAAK;AACDV,QAAAA,WAAUe,MAAMC,MAAM;AACtBhB,QAAAA,WAAUe,MAAME,OAAO;AACvB;AAAA,MACJ,KAAK;AACDjB,QAAAA,WAAUe,MAAME,OAAO;AACvBjB,QAAAA,WAAUe,MAAMG,aAAa;AAC7B;AAAA,MACJ;AACIlB,QAAAA,WAAUe,MAAMC,MAAM;AACtB;AAAA,IAEX;AAAA,EAAA;AAED,WAASG,mBAAmBC;AACxB,UAAMnB,EAAAA,OAAEA,QAAKS,QAAQH,UAAUc,WAAWrB,WAAEA,eAAcoB;AAC1DN,8BAA0Bd,YAAWU,MACrC;AAAA,UAAMY,WAAW,CAAA;AACjB,QAAIC,eAAe,EACfC,YAAYvB,OAAMuB,YAClBC,UAAUxB,OAAMwB,UAChBC,KAAK,4BACLC,MAAM3B,WAAAA;AAEV,QAAIU,UAAU,cAAcA,UAAU,SAAS;AAE3Ca,qBAAe,EAAIA,GAAAA,cAAcE,UAAUrD,WAAUwD,KAAKC,IAAI5B,OAAMuB,YAAY,GAAG,QAAA,EAAA;AAAA,IACtF;AACD,QAAIH,WAAU;AACVC,eAASf,YAAYc;AACrBE,mBAAaD,WAAWA;AAAAA,IAC3B;AACD,WAAOC;AAAAA,EACV;AAED,WAASO,iBAAiBC;AACtB,UAAMrB,EAAAA,WAAaqB;AACnB,QAAIC;AACJ,YAAQtB,QAAAA;AAAAA,MACJ,KAAK;AACDsB,wBAAgBC,oBAAoBF,QAAAA;AACpC;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AACDC,wBAAgBE,+BAA+BH,QAAAA;AAC/C;AAAA,MACJ;AACIC,wBAAgBG,qBAAqBJ,QACrC;AAAA;AAAA,IAAA;AAERC,kBAAcI,QAASC,SAAAA;AACnBvC,iBAAWwC,KAAKlE,WAAUiC,aAAagC,GAAAA,CAAAA;AAAAA,IAAK;EAEnD;AAED,WAASF,qBAAqBJ,UAC1B;AAAA,UAAA,EAAM9B,OAACA,QAAKS,QAAQH,UAAUc,UAAEA,IAAaU;AAC7C,QAAIQ,yBAAyB,CACzB;AAAA,QAAIC,aAAapE,WAAUqE,WAAWC,iBAAiB,IAAItE,WAAU+B,OAAOwC,eAAoB1C,KAAAA,OAAMzB,EACtG,oDAAA;AAAA,QAAGgE,YAAW;AACV,eAASI,IAAI,GAAGA,IAAIJ,WAAWK,QAAQD,KAAK;AACxC,YAAIE,iBAAiBN,WAAWI,CAAGG,EAAAA,UAAU;AAC7C,YAAIC,YAAY,oBAAIC,KAAAA,CAAMH,eAAeI,aAAa,gBAAA,CAAA;AACtD,YAAIC,UAAU,oBAAIF,MAAMH,eAAeI,aAAa,cACpD,CAAA;AAAA,YAAIE,QAAQ,EAAC5B,YAAYwB,WAAWvB,UAAU0B,QAAAA;AAC9C,cAAM/B,iBAAiB,EACnBnB,OAAOmD,OACP1C,QACAH,UACAc,WACArB,WAAU8C,eAEdP;AAAAA,+BAAuBD,KAAKnB,mBAAmBC,cAAAA,CAAAA;AAAAA,MAClD;AAAA,IACJ;AACL,WAAOmB;AAAAA,EACV;AAED,WAASN,oBAAoBF,UAAAA;AACzB,QAAIsB,wBAAwB,CAAA;AAC5B,UAAMpD,EAAAA,OAACA,QAAKS,QAAQH,UAAUc,cAAeU;AAC7C,UAAMuB,YAAY,CAAA;AAClB,QAAIC,WAAW,IAAIN,KAAKhD,OAAMuB,UAAAA;AAC9B,WAAM+B,SAASC,QAAAA,IAAYvD,OAAMwB,SAAS+B,WAAU;AAChD,UAAInF,MAAM,EAACmD,YAAY+B;AACvBD,gBAAUhB,KAAKjE,GACfkF;AAAAA,iBAAWnF,WAAUwD,KAAK6B,WAAWrF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,MAAA,CAAA;AAAA,IACxE;AACD,QAAIG,QAAQtF,WAAUqE,WAAWC,iBAAiB,IAAItE,WAAU+B,OAAOwC,eAAoB1C,KAAAA,OAAMzB,EACjG,IAAA;AAAA,aAASoE,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAK;AACnC,YAAMxB,iBAAiB,EACnBnB,OAAOqD,UAAUV,CAAAA,GACjBlC,QACAH,UACAc,WACArB,WAAW0D,MAAMd,CAAAA,EAAGG,UAAU,IAAA,EAAA;AAElCM,4BAAsBf,KAAKnB,mBAAmBC;IACjD;AACD,WAAOiC;AAAAA,EACV;AAED,WAASnB,+BAA+BH,UAAAA;AACpC,QAAI4B,mBAAmB,CAAA;AACvB,YAAM1D,OAACA,QAAKS,QAAQH,UAAUP,WAAEA,eAAa+B;AAC7C,QAAI6B,sBAAsBjD,yBAAyBJ,QAAAA;AAC/C,QAAInC,WAAU+B,OAAO0D,gBAAgBD,qBAAoB;AACzD,YAAMtC,WAAWwC,OAAO7D,OAAM2D,mBAAAA,CAAAA,EAAsBG,MAAM3F,WAAU+B,OAAO6D,iBAC3E;AAAA,YAAMC,mBAAmB3C,SAAS4C,IAAIC,aAAWL,OAAOK,OAAAA,CAAAA;AACxD,YAAMC,QAAQ,CAAA;AACd,eAASxB,IAAI,GAAGA,IAAIqB,iBAAiBpB,QAAQD,KAAK;AAC9CwB,cAAMxB,CAAAA,IAAK5C,WAAU+C,UAAU;AAC/B,cAAM3B,iBAAiB,EACnBnB,OACAS,QAAAA,QACAH,UACAc,WAAW4C,iBAAiBrB,CAC5B5C,GAAAA,WAAWoE,MAAMxB,CAErBe,EAAAA;AAAAA,yBAAiBrB,KAAKnB,mBAAmBC,cAAAA,CAAAA;AAAAA,MAC5C;AAAA,IACJ;AACD,WAAOuC;AAAAA,EACV;AAEDvF,EAAAA,WAAUiG,YAAY,gBAAgB,SAAU7F,KAAIN,MAAMoG;AACtD,QAAIpE,WAAAA,GAAa;AACbH,oBAAc;AACdE,MAAAA,SAAQ7B,WAAUmG,SAAS/F,GAC3BwB;AAAAA,kBAAYsE,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eAClD,GAAA;AAAA,YAAMpC,WAAWnC,WAAUsG,SAAAA,EAAWxG;AACtC,YAAMwC,SAASJ,cAAcC,QAAAA;AAE7B,UAAIG,UAAU,WAAWtC,WAAU+B,OAAOwE,uBAAwB;AAC9DvG,QAAAA,WAAUwG,SAASpG,GACnBwB;AAAAA,oBAAYsE,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC;MACrD;AAAA,IACJ;AACD,WAAO;AAAA,EACf;AAEIvE,EAAAA,WAAUiG,YAAY,eAAe,SAAU7F,KAAIN,MAAMoG,GACrD;AAAA,QAAGvE,eAAeG,WAAAA,GAAY;AAC1BH,oBAAc;AACd,YAAMQ,WAAWnC,WAAUsG,WAAWxG;AACtC,YAAMwC,SAASJ,cAAcC;AAC7B,YAAMc,YAAYjD,WAAUyG,cAAcP,CAAAA,EAAGQ;AAC7C,UAAI7E,QAAO;AACP,cAAM8B,WAAW,EACb9B,OAAAA,QACAS,QACAH,UACAc,WACArB;AAEJ8B,yBAAiBC,QAAAA;AAAAA,MACpB;AAAA,IACJ;AAAA,EACT;AAEI3D,EAAAA,WAAUiG,YAAY,aAAa,SAAS7F,KAAIN,MAAMoG,GAClD;AAAA,aAAS1B,IAAI,GAAGA,IAAI9C,WAAW+C,QAAQD,KAAK;AACxCxE,MAAAA,WAAU2G,eAAejF,WAAW8C,CACvC,CAAA;AAAA,IAAA;AACD9C,iBAAa,CACbE;AAAAA,gBAAY;AACZC,IAAAA,SAAQ;AAAA,EAChB;AACA;ACtMe,SAAS+E,WAAW5G,YAAAA;AAClCA,EAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAIyG;AACrD,QAAIC,eAAe9G,WAAU+G,KAAKF;AAClC,QAAI7G,WAAU+B,OAAOiF,gBAAiBhH,CAAAA,WAAUsG,WAAWW,WAAW;AACrEjH,MAAAA,WAAUkH,QAAQ,EACjBC,MAAM;AAAA;AAAA,iFAEuEN,GAAGzG,EAEhFgH;AAAAA,iCAAAA,QAAQ,KACRC,MAAM,sBACNC,UAAU,SAAUpB;AACnB,YAAIqB,UAAUrB,EAAEE,OAAOC,QACtB,2BAA2BQ,GAAGzG,EAAAA,IAAAA;AAE/B,YAAImH,SAAS;AACZvH,UAAAA,WAAUwH,SAASV;AACnB9G,UAAAA,WAAUyH,OAAAA;AAAAA,QACV;AAAA,MACD,EAEF,CAAA;AAAA,IAAA;AAAA,EACH,CACA;AAAA;ACvBe,SAASC,YAAY1H,YAAAA;AAGnCA,EAAAA,WAAU+B,OAAO4F,WAAW;AAC5B3H,EAAAA,WAAU+B,OAAO6F,2BAA2B;AAC5C5H,EAAAA,WAAU+B,OAAO8F,6BAA6B;AAG9C,MAAIC,iBAAiB;AACrB,MAAIC,wBAAwB;AAC5B,MAAIC,cAAc,SAASC,SAASC,MAAMC,OACzC;AAAA,QAAID,gBAAgBrD,QAAQsD,iBAAiBtD,MAAM;AAClDoD,cAAQ7E,aAAa8E;AACrBD,cAAQ5E,WAAW8E;AAAAA,IACtB,OAAS;AACNF,cAAQC,OAAOA;AACfD,cAAQE,QAAQA;AAAAA,IAChB;AACD,WAAOF;AAAAA,EACT;AACC,MAAIG,wBAAwB,SAASF,MAAMC,OAAOjF,UACjD;AAAA,QAAI+E,iBAAkBC,QAAQ,WAAYA,OAAO,EAAEA,KACnDD;AAAAA,YAAQZ,OAAOS;AACfG,YAAQ3E,MAAM;AACd,QAAI6E,OAAO;AACV,UAAIjF;AACH+E,gBAAQ/E,WAAWA;AACpB+E,gBAAUD,YAAYC,SAASC,MAAMC;IACrC;AACD,WAAOF;AAAAA,EACT;AACCjI,EAAAA,WAAUqI,YAAY,SAASH,MAAMC,OAAOjF,UAAAA;AAC3C,QAAI+E,UAAUG,sBAAsBF,MAAMC,OAAOjF;AACjD,WAAOlD,WAAUsI,kBAAkBL,OACrC;AAAA,EAAA;AACCjI,EAAAA,WAAUuI,cAAc,SAASL,MAAMC,OAAOjF;AAC7CiF,YAAQA,SAAS;AACjB,QAAIF,UAAUG,sBAAsBF,MAAMC,OAAOjF,QACjD;AAAA,WAAOlD,WAAUwI,qBAAqBP,OAAAA;AAAAA,EACxC;AAECjI,EAAAA,WAAUyI,wBAAwB,SAAS5B,IAAI6B,eAAeC,YAC7DD;AAAAA,oBAAgBA,iBAAiBX;AAEjC,QAAIa,MAAM;AACV,QAAIC,kBAAkB,IAAIhE,KAAKgC,GAAGzD,WAAWgC;AAC7C,QAAI0D,gBAAgB9I,WAAUwD,KAAKC,IAAIoF,iBAAiB,GAAG,KAAA;AAC3D,QAAIE,YAAY/I,WAAUgJ;AAC1B,WAAOH,kBAAkBhC,GAAGxD,UAAUwF,kBAAkB7I,WAAUwD,KAAKyF,UAAUH,aAAAA,GAAgBA,gBAAgB9I,WAAUwD,KAAKC,IAAIoF,iBAAiB,GAAG,QAAS;AAChK,UAAIK,YAAalJ,CAAAA,WAAUwD,KAAKyF,UAAW,IAAIpE,KAAKgE,eACpD,CAAA;AAAA,UAAIM,YAAYN,gBAAgBO,OAAAA;AAEhC,UAAIjB,QAAQkB,SAASxC,IAAIkC,WAAWI,WAAWD,WAAWR,aAAAA;AAC1D,UAAIP,OAAM;AACT,iBAAS3D,IAAI,GAAGA,IAAI2D,MAAM1D,QAAQD,KAAG,GAAG;AAGvC,cAAI8E,aAAatJ,WAAUuJ,kBAAkBV,eAC7C;AAAA,cAAIW,WAAa3C,GAAGxD,WAASyF,iBAAiBjC,GAAGxD,SAASoG,QAAaZ,KAAAA,gBAAgBY,YAAc,OAAOzJ,WAAUuJ,kBAAkB1C,GAAGxD,QAAAA;AAE3I,cAAIqG,cAAcvB,MAAM3D,CACxB;AAAA,cAAImF,YAAYxB,MAAM3D,IAAE;AACxB,cAAIkF,cAAYF,YAAYG,YAAUL,YAAY;AACjD,gBAAA,OAAUX,cAAc,YAAW;AAGlCC,oBAAMD,WAAW9B,IAAIyC,YAAYE,UAAUE,aAAaC,SAC/D;AAAA,YAAA,OAAW;AACJf,oBAAM;AAAA,YACN;AACD,gBAAIA,CAAAA;AACH;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACD,YAAQA;AAAAA,EACV;AACC5I,EAAAA,WAAU4J,sBAAsB,SAAS/H;AACxC,QAAIA,CAAAA;AACH,aAAO;AACR,SAAK7B,WAAU+B,OAAO8H;AACrB,aAAO;AACR,QAAIC,IAAI9J;AACR,QAAI+J,IAAID,EAAE/H;AACV,QAAIiI,MAAM,CACV;AAAA,QAAKnI,OAAMoI,YAAYpI,OAAMqI,aAAerI,OAAW,OAAG;AACzD,YAAMsI,YAAYtI,OAAMqI,aAAarI,OAAMwB;AAE3C,UAAK0G,EAAEK,eAAeL,EAAEM,WAAY;AACnC,YAAIC,mBAAmBH,UAAU/E,aAAa2E,EAAEK,YAAYhF,QAAavD,KAAAA,OAAMuB,WAAWgC,QAAa2E,KAAAA,EAAEM,UAAUjF,QACnH;AAAA,eAAOkF;AAAAA,MACP;AAAM,eAAO;AAAA,IACjB,OAAS;AACNN,YAAM,CAACnI;IACP;AAED,QAAI0I,eAAe;AACnB,aAASC,IAAE,GAAGA,IAAER,IAAIvF,QAAQ+F,KAAK;AAChC,UAAI5B,MAAM;AACV,UAAI/B,KAAKmD,IAAIQ,CAEb3D;AAAAA,SAAG4D,SAASzK,WAAU0K,cAAc7D;AAEpC+B,YAAOmB,EAAEK,eAAeL,EAAEM,YAAcxD,GAAGzD,WAAWgC,aAAa2E,EAAEK,YAAYhF,aAAayB,GAAGxD,SAAS+B,QAAa2E,KAAAA,EAAEM,UAAUjF,QAAa,IAAA;AAChJ,UAAIwD,KAAI;AACPA,eAAO5I,WAAUyI,sBAAsB5B,IAAIiB,gBAAgB,SAASjG,QAAOyH,YAAYE,UAAUE,aAAaC,WAAAA;AAE7G,cAAIgB,QAAQ;AACZ,cAAIrB,cAAYK,aAAaL,cAAcI,aAAY;AACtD,gBAAIC,aAAa,KAAG,MAAMH,YAAYG,WAAU;AAC/CgB,sBAAQ;AAAA,YACR;AAED,gBAAG9I,OAAM4I,UAAUX,EAAEc,YAAYd,EAAEe,cAAc,YAAW;AAC3DhJ,cAAAA,OAAMuB,WAAW0H,SAAS,CAC1BjJ;AAAAA,cAAAA,OAAMuB,WAAW2H,WAAWpB,SAAAA;AAAAA,YACnC,OAAa;AACNgB,sBAAQ;AAAA,YACR;AAAA,UACD;AACD,cAAKnB,YAAYE,eAAeF,YAAYG,aAAeL,aAAaI,eAAeF,WAAWG,WAAW;AAC5G,gBAAG9H,OAAM4I,UAAUX,EAAEc,YAAYd,EAAEe,cAAc,YAAW;AAC3DhJ,cAAAA,OAAMwB,SAASyH,SAAS,CACxBjJ;AAAAA,cAAAA,OAAMwB,SAAS0H,WAAWrB,WAAAA;AAAAA,YACjC,OAAa;AACNiB,sBAAQ;AAAA,YACR;AAAA,UACD;AACD,iBAAOA;AAAAA,QACZ;MACI;AACD,UAAA,CAAK/B,KAAK;AACTA,cAAOkB,EAAEkB,WAAW,sBAAuBlB,EAAEmB,UAAU,oBAAmB,CAACpE,GAAGzG,IAAIyG,EAAAA,CAAAA,IAAO+B;AAAAA,MACzF;AACD2B,qBAAeA,gBAAgB3B;AAAAA,IAC/B;AACD,SAAI2B,cAAa;AAChBT,QAAEc,WAAW;AACbd,QAAEe,aAAa;AAAA,IACf;AACD,WAAON;AAAAA,EAGT;AACCvK,EAAAA,WAAUkL,qBAAqB,SAASnC,WAAWoC,UAAUhC,WAAWD,WAAWR,eAClF;AAAA,QAAIP,QAAO,CACX;AAAA,QAAIY,aAAaA,UAAUoC,WAAW;AACrC,UAAIC,iBAAiBrC,UAAUoC,QAAAA;AAC/B,UAAIE,yBAAyBhL,KAAKiL,4BAA4BnC,WAAWD,WAAWkC,gBAAgB1C,aAAAA;AACpG,eAASlE,IAAE,GAAGA,IAAE6G,uBAAuB5G,QAAQD,KAAK;AACnD2D,gBAAQ9H,KAAKkL,oBAAoBpD,OAAOkD,uBAAuB7G,GAAG2D,KAClE;AAAA,MAAA;AAAA,IACD;AACD,WAAOA;AAAAA,EACT;AACCnI,EAAAA,WAAUsL,8BAA8B,SAASnC,WAAWD,WAAWf,OAAOO,eAAAA;AAC7E,QAAI8C;AACJ,QAAGxL,WAAU+B,OAAO8F,4BAA2B;AAC9C2D,oBAAerD,MAAMe,SAAcf,KAAAA,MAAMe,SAAWR,EAAAA,aAAAA,IAAkBP,MAAMe,SAAWR,EAAAA,aAAAA,IACtFP,MAAMgB,SAAchB,KAAAA,MAAMgB,WAAWT,aAAkBP,IAAAA,MAAMgB,SAAWT,EAAAA,aAAAA,IAAiB;IAC7F,OAAO;AACJ8C,oBAAc,CACd;AAAA,UAAGrD,MAAMe,SAAcf,KAAAA,MAAMe,SAAWR,EAAAA,aAAAA,GAAe;AACtD8C,sBAAcA,YAAYC,OAAOtD,MAAMe,SAAAA,EAAWR;MAClD;AAED,UAAIP,MAAMgB,SAAAA,KAAchB,MAAMgB,SAAWT,EAAAA,aAAAA,GAAgB;AACxD8C,sBAAcA,YAAYC,OAAOtD,MAAMgB,SAAAA,EAAWT,aAClD,CAAA;AAAA,MAAA;AAAA,IACD;AAED,WAAO8C;AAAAA,EACT;AACC,WAASnC,SAASxC,IAAIkC,WAAWI,WAAWD,WAAWR,eAAAA;AACtD,QAAIoB,IAAI9J;AAER,QAAImI,QAAQ,CAAA;AACZ,QAAIuD,aAAa,EAChBC,QAAS,UACTC,QAAS,aAEV;AAAA,aAAQC,aAAaH,YAAW;AAC/B,UAAIP,WAAWO,WAAWG,SAAAA;AAC1B,UAAG/B,EAAE+B,SAAAA,GAAW;AACf,iBAAQC,QAAQhC,EAAE+B,SAAW,GAAA;AAC5B,cAAIE,cAAcjC,EAAE+B,WAAWC,IAC/B;AAAA,cAAIE,SAASD,YAAYZ,QAAAA;AACzB,cAAItE,CAAAA,GAAGmF;AAAS;AAChB7D,kBAAS2B,EAAEyB,oBAAoBpD,OAC9BnI,WAAUkL,mBAAmBnC,UAAU+C,IAAOjF,GAAAA,GAAGmF,SAAS7C,WAAWD,WAAWR;QACjF;AAAA,MACD;AAAA,IACD;AAEDP,YAAQ2B,EAAEyB,oBAAoBpD,OAAOnI,WAAUkL,mBAAmBnC,WAAW,UAAUI,WAAWD,WAAWR;AAC7G,WAAOP;AAAAA,EACP;AAEDnI,EAAAA,WAAUiM,YAAY,SAASC,MAAAA;AAE9B,QAAIC,eAAe;AACnB,SAAK9L,KAAK+L,KAAKD,YAAe,GAAA;AAC7B9L,WAAK+L,KAAKD,YAAAA,IAAgB;IAC1B;AACD,QAAIE,MAAMrM,WAAUsM,aAAAA;AACpB,QAAIrI,MAAM5D,KAAK0B;AACf/B,IAAAA,WAAUuM;AACV,QAAKL,CAAAA,QAAQjI,IAAI0D,YAAY0E,MAAMhM,KAAKmM,aAAaH,MAAMhM,KAAKoM,aAAaJ,IAAIK,SAAczI,KAAAA,IAAI0I,cAAcN,IAAIK,SAAAA,IAAWzI,IAAI2I,WAAW;AAC9I,UAAIzD,YAAY9I,KAAKwM,kBAAkBR,GAAAA;AACvChM,WAAK+L,KAAKD,YAAAA,IAAgBnM,WAAU8M,iBAAiB3D,WAAWkD,GAChE;AAAA,IAAA;AAAA,EACH;AACCrM,EAAAA,WAAU8M,mBAAmB,SAAS3D,WAAWkD,KAAAA;AAChD,QAAIF,eAAe;AACnB,QAAIY,aAAY/M,WAAUuJ,kBAAkB8C,GAAAA;AAC5C,QAAIpE,UAAU,EACbE,OAAO,CAAC4E,YAAYA,aAAW,CAAA,GAC/BzJ,KAAK6I,cACL9E,MAAM8E;AAEP,QAAK9L,CAAAA,KAAK2M,aAAa;AACtB,UAAI3M,KAAKsL,UAAUtL,KAAKsL,OAAOtL,KAAK4M,QAAQ;AAC3C,YAAIC,aACHC;AAED,YAAIrB,OAAOzL,KAAKsL,OAAOtL,KAAK4M,KAAAA;AAC5B,YAAIG,UAAUtB,KAAKuB,QAAQvB,KAAK7D,QAAQxD;AACxC,YAAIqH,KAAK5D,OAAO,GAAG;AAClB,cAAG4D,KAAKuB,QAAQvB,KAAK7D,QAAQxD,QAAO;AACnC0E,yBAAc2C,KAAKwB,WAAUnE,aAAa2C,KAAK7D,QAAQxD,SAAUqH,KAAKuB;AAAAA,UACtE;AACDH,wBAAc/D;AACdgE,sBAAYhE,YAAYiE;AAAAA,QACxB,OACI;AACJF,wBAAc;AACdC,sBAAYD,cAAcE;AAAAA,QAC1B;AAED,YAAIG,SAAS;AAEb,iBAAS/I,IAAI0I,aAAa1I,IAAI2I,WAAW3I,KAAK;AAC7C,cAAIgJ,QAAQhJ;AACZyD,kBAAQC,OAAOsF;AACf,cAAIC,QAAQzN,WAAU0N,wBAAwBzF,SAAS,MAAMuF,KAAAA,EAAO;AACpED,iBAAOrJ,KAAKuJ,KACZ;AAAA,QAAA;AACD,eAAOF;AAAAA,MACX,OAAU;AACNtF,gBAAQC,OAAOiB;AACf,eAAOnJ,WAAU0N,wBAAwBzF,SAAS,MAAMkB,SACxD;AAAA,MAAA;AAAA,IACJ,OAAS;AACN,UAAI9I,KAAK4M,SAAS,SAAS;AAC1BhF,gBAAQC,QAAQlI,WAAUwD,KAAKyF,UAAUoD,GACzC;AAAA,eAAOrM,WAAU0N,wBAAwBzF,SAAS,MAAM,IAAA;AAAA,MACxD;AAAA,IACD;AAAA,EACH;AACCjI,EAAAA,WAAUuM,mBAAmB,WAAA;AAC5B,QAAIJ,eAAe;AACnB,QAAIwB,MAAMtN,KAAK+L,KAAKD,YAAAA;AACpB,aAAS3H,IAAE,GAAGA,IAAEmJ,IAAIlJ,QAAQD,KAAK;AAChC,UAAIoJ,MAAMD,IAAInJ,CACd;AAAA,UAAIqJ,SAASD,IAAIE;AACjB,UAAID,QAAQ;AACXA,eAAOE,YAAYH;MACnB;AAAA,IACD;AACDvN,SAAK+L,KAAKD,YAAAA,IAAgB,CAC5B;AAAA,EAAA;AA4CCnM,EAAAA,WAAUgJ,oBAAoB,EAAEzH,QAAQ,CAAE,EAAA;AAE1CvB,EAAAA,WAAUuJ,oBAAoB,SAAS/F,MACtC;AAAA,WAAOA,KAAKkJ,SAAW,IAAA,KAAKlJ,KAAKwK,WACnC;AAAA,EAAA;AACChO,EAAAA,WAAUiO,4BAA4B,SAASlM,QAC9C;AAAA,QAAImM,YAAY,CAChB;AAAA,QAAIC,eAAe,CAEnB;AAAA,QAAIpM,OAAOmG,QAAQ;AAClBnG,aAAOmG,OAAO,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAE5B;AAAA,QAAInG,OAAOmG,gBAAgBkG,OAAO;AACjC,UAAIC,SAAStM,OAAOmG,KAAKoG;AACzB,eAAS9J,IAAE,GAAGA,IAAE6J,OAAO5J,QAAQD,KAAK;AACnC,YAAI+J,gBAAgBvO,WAAUwO,YAAYzM,MAC1CwM;AAAAA,sBAAcrG,OAAOmG,OAAO7J,CAAAA;AAC5B0J,kBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAUiO,0BAA0BM,aACpE,CAAA;AAAA,MAAA;AACD,aAAOL;AAAAA,IACP;AAED,SAAMnM,UACFA,EAAAA,OAAOqB,cAAcrB,OAAOsB,YAAYtB,OAAOsB,WAAWtB,OAAOqB,cAAgBrB,OAAOmG,SAASwG,UAAa3M,OAAOoG,WAAYpG,OAAOsF;AAC3I,aAAO6G;AAER,QAAIS,MAAM;AACV,QAAIC,MAAM,KAAG;AACb,QAAI7M,OAAOoG,SAAS;AACnBpG,aAAOoG,QAAQ,CAACwG,KAAKC,GACtB;AAAA,QAAI7M,OAAOoG,SAASpG,OAAO8M,cAAc;AACxC9M,aAAOoG,QAAQnI,WAAU8O,YAAY/M,OAAOoG,KAAAA;AAAAA,IAC5C;AAEDpG,WAAO3B,KAAKJ,WAAU+O,IAAAA;AACtBhN,WAAOuB,MAAMvB,OAAOuB,OAAK;AACzBvB,WAAOsF,OAAOtF,OAAOsF,QAAMU;AAE3B,QAAI7E,WAAWnB,OAAOmB;AACtB,QAAIA,UAAU;AACb,eAAS8L,YAAY9L,UAAU;AAC9B,YAAIA,SAAS+L,eAAeD,WAAW;AACtC,cAAIE,MAAMhM,SAAS8L,QAAAA;AACnB,cAAME,EAAAA,eAAed;AACpBc,kBAAM,CAACA;AACR,mBAAS1K,IAAE,GAAGA,IAAE0K,IAAIzK,QAAQD,KAAK;AAChC,gBAAI2K,WAAWnP,WAAUoP,WAAW,CAAE,GAAErN,MAAAA;AACxCoN,qBAASjM,WAAW;AACpBiM,qBAASjM,SAAS8L,QAAYE,IAAAA,IAAI1K;AAClC2J,yBAAajK,KAAKiL,QAClB;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACJ,OAAS;AACNhB,mBAAajK,KAAKnC;IAClB;AAED,aAASsN,IAAE,GAAGA,IAAElB,aAAa1J,QAAQ4K,KAAK;AACzC,UAAIC,WAAWnB,aAAakB,CAE5B;AAAA,UAAIjM,aAAakM,SAASlM;AAC1B,UAAIC,WAAWiM,SAASjM;AAExB,UAAID,cAAcC,UAAU;AAC3B,YAAIkM,OAAOvP,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKzB,UAC7C,CAAA;AAAA,YAAIoM,OAAMxP,WAAUwD,KAAKC,IAAI8L,MAAM,GAAG,KAEtC;AAAA,eAAOA,OAAOlM,UAAU;AACvB,cAAI8L,WAAWnP,WAAUoP,WAAW,CAAE,GAAEE,QACjCH;AAAAA,iBAAAA,SAAS/L;iBACT+L,SAAS9L;AAChB8L,mBAASjH,OAAOqH,KAAKnK,QACrB;AAAA,cAAI2H,aAAc3J,aAAamM,OAAQvP,WAAUuJ,kBAAkBnG,UAAAA,IAAcuL;AACjF,cAAIc,WAAapM,WAAWmM,QAAQnM,SAASoG,QAAa8F,KAAAA,KAAK9F,YAAcmF,MAAM5O,WAAUuJ,kBAAkBlG,QAAAA;AAC/G8L,mBAAShH,QAAQ,CAAC4E,YAAY0C,QAC9BvB;AAAAA,oBAAUhK,KAAKiL,QAEfI;AAAAA,iBAAOC;AACPA,iBAAOxP,WAAUwD,KAAKC,IAAI+L,MAAM,GAAG,KAAA;AAAA,QACnC;AAAA,MACL,OAAU;AACN,YAAIF,SAASpH,gBAAgBrD;AAC5ByK,mBAASpH,OAAQlI,WAAUwD,KAAKyF,UAAUqG,SAASpH,IAAAA,EAAO9C,QAC3DkK;AAAAA,iBAASnH,QAAQpG,OAAOoG,MAAMmG;AAC9BJ,kBAAUhK,KAAKoL;MACf;AAAA,IACD;AACD,WAAOpB;AAAAA,EACT;AACClO,EAAAA,WAAU0P,sBAAsB,SAASC,OAAOC,OAAOC;AACtD,QAAI7K,QAAQ,CACZ4K;AAAAA,YAAQ5P,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAK+K,SAAO5P,WAAUyM,SAC3DoD,CAAAA;AAAAA,UAAM,IAAIhL,KAAKgL,OAAK7P,WAAUwM,SAAAA;AAC9B,QAAIsD,YAAYF,MAAMxG;AACtB,QAAI2G,QAASJ,QAAMG,aAAa,IAAMH,QAAMG,YAAc,IAAEF,MAAMxG,OAAAA,IAASuG;AAC3E,QAAIK,SAAShQ,WAAUwD,KAAKC,IAAImM,OAAOG,OAAO;AAC9C,WAAOC,SAASH,KAAKG,SAAShQ,WAAUwD,KAAKC,IAAIuM,QAAQ,GAAG,MAAA,GAAS;AACpEhL,YAAMd,KAAK8L;IACX;AACD,WAAOhL;AAAAA,EACT;AACChF,EAAAA,WAAUiQ,6BAA6B,SAASlO,QAC/C;AAAA,QAAImO,cAAc,CAClB;AAAA,QAAInO,OAAOsF,QAAQS,gBAAgB;AAClCoI,kBAAYhM,KAAK4D,cACjB;AAAA,UAAI/F,OAAOuB;AACV4M,oBAAYhM,KAAK4D,iBAAe;IACjC;AACDoI,gBAAYhM,KAAK,uBAAuBnC,OAAOuB;AAC/C,WAAO4M,YAAYC,KAAK,GAAA;AAAA,EAC1B;AACCnQ,EAAAA,WAAUoQ,uBAAuB,SAASrO,QACzC;AAAA,QAAIsO,QAASnQ,SAASC,cAAc,KACpC;AAAA,QAAI4B,OAAOwB,MAAM;AAChB,iBAAWxB,OAAOwB,QAAQ;AACzB8M,cAAM9P,YAAYwB,OAAOwB;AAAAA;AAEzB8M,cAAM5P,YAAYsB,OAAOwB;IAC1B;AACD,WAAO8M;AAAAA,EACT;AACCrQ,EAAAA,WAAU0N,0BAA0B,SAASzF,SAASqI,MAAMzQ,KAAAA;AAC3D,QAAI0Q,SAAS,CAAA;AACb,QAAIxG,IAAI/J,WAAU+B;AAClB,QAAIyO,WAAWnQ,KAAKoM;AACpB,QAAIgE,WAAWpQ,KAAKmM;AACpB,QAAItD,YAAY;AAEhB,QAAA,CAAKa,EAAEnC;AACN,aAAO2I;AAGR,QAAK1Q,CAAAA,OAAOA,QAAQ,GAAG;AACtB,UAAIoI,QAAQC,OAAO;AAClBrI,cAAMoI,QAAQC;AAAAA,WACV;AACJ,YAAIwI,kBAAkB,IAAI7L,KAAKoD,QAAQC;AACvCgB,oBAAawH,CAAAA;AAGb,eAAQD,WAAYC,CAAAA,mBAAAA,CAAoBF,aAAaE;AACpD,iBAAOH;AAER1Q,cAAM6Q,gBAAgBtH,OACtB;AAAA,MAAA;AAGD,UAAIuH,UAAUH,SAASpH;AACvB,UAAIuH,UAAU9Q,KAAK;AAClBA,cAAM,KAAK8Q,UAAQ9Q;AAAAA,MACvB,OAAU;AACNA,cAAMA,MAAM8Q;AAAAA,MACZ;AAAA,IACD;AACD,QAAIxI,QAAQF,QAAQE;AACpB,QAAI+H,cAAclQ,WAAUiQ,2BAA2BhI,OAAAA;AAEvD,QAAIjI,WAAUgN,eAAehN,WAAUiN,SAAS,SAAS;AACxD,UAAI2D,QAAQ,CACZ;AAAA,UAAI1I,OAAO,CAAA;AAGX,WAAKoI,MAAM;AACVpI,eAAO,YAAc,CAACgB,aAAalJ,WAAU0P,oBAAoB7P,GACjE;AAAA,iBAAS2E,IAAE,GAAGA,IAAI0D,KAAKzD,QAAQD,KAAK;AACnCoM,gBAAM1M,KAAM7D,KAAKwQ,QAAQ3I,KAAK1D,CAAAA,CAAAA,CAAAA;AAAAA,QAC9B;AAAA,MACL,OAAU;AACNoM,cAAM1M,KAAKoM,IAAAA;AACXpI,aAAKhE,KAAKrE;MACV;AAED,eAAS2E,IAAE,GAAGA,IAAIoM,MAAMnM,QAAQD,KAAK;AACpC8L,eAAOM,MAAMpM,CAAAA;AACb3E,cAAMqI,KAAK1D,CAAAA;AAEX,YAAIsM,OAAOzQ,KAAKwM,kBAAkBhN,KAAK,SAASQ,KAAK0Q,MAAMtM;AAE3D,YAAGpE,KAAK2Q,SAASF,IAAO;AAAA;AAExB,YAAIG,cAAcjR,WAAUoQ,qBAAqBnI,OAAAA;AACjDgJ,oBAAYC,YAAYhB;AACxBe,oBAAYtO,MAAMC,MAAM;AACxBqO,oBAAYtO,MAAMwO,SAAS;AAE3B,iBAAS9B,IAAE,GAAGA,IAAIlH,MAAM1D,QAAQ4K,KAAG,GAAG;AACrC,cAAIO,QAAQzH,MAAM3D,CAAAA;AAClB,cAAIqL,MAAM1H,MAAM3D,IAAE,CAAA;AAClB,cAAIqL,OAAOD;AACV,mBAAO,CAER;AAAA,cAAIS,QAAQY,YAAYtM,UAAU,IAElC0L;AAAAA,gBAAM1N,MAAME,OAAO;AACnBwN,gBAAM1N,MAAMyO,QAAQ;AAEpBd,eAAK7P,YAAY4P,KACjBE;AAAAA,iBAAOrM,KAAKmM,KACZ;AAAA,QAAA;AAAA,MACD;AAAA,IACJ,OAAS;AACN,UAAIV,QAAQ9P;AAEZ,UAAGQ,KAAK2Q,SAAS3Q,KAAKwM,kBAAkBhN,KAAK,KAAS,CAAA;AAAA,eAAO0Q;AAE7D,UAAIlQ,KAAKsL,UAAUtL,KAAKsL,OAAOtL,KAAK4M,KAAAA,KAAUhF,QAAQ/E,YAAY+E,QAAQ/E,SAAS7C,KAAK4M,KAAAA,GAAQ;AAC/F,YAAInB,OAAOzL,KAAKsL,OAAOtL,KAAK4M,KAC5B0C;AAAAA,gBAAQ7D,KAAKuF,MAAMpJ,QAAQ/E,SAAS7C,KAAK4M;AAEzC,YAAIqE,cAAcxF,KAAKuF,MAAMpJ,QAAQ/E,SAAS7C,KAAK4M,KAAAA,CAAAA;AACnD,YAAKnB,EAAAA,KAAK5D,OAAO,IAAG;AACnByH,kBAAQ2B;AACR,cAAIxF,KAAKuB,QAASsC,QAAQ7D,KAAKwB,WAASxB,KAAKuB,MAAO;AACnDsC,oBAAQ;AAAA,UACR;AAAA,QACN,OAAS;AACJ,cAAIvC,UAAUtB,KAAKuB,QAAQvB,KAAK7D,QAAQxD;AACxCkL,kBAAQA,QAAMvC,UAAUkE;AAAAA,QACxB;AAAA,MACD;AACDhB,aAAOA,OAAOA,OAAOtQ,WAAUuR,cAAc5B,KAE7C;AAAA,eAASnL,IAAI,GAAGA,IAAI2D,MAAM1D,QAAQD,KAAG,GAAE;AACtC,YAAIoL,QAAQ4B,KAAK5C,IAAIzG,MAAM3D,CAAIuF,GAAAA,EAAE4C,aAAW,EAC5C;AAAA,YAAIkD,MAAM2B,KAAK7C,IAAIxG,MAAM3D,IAAE,CAAA,GAAIuF,EAAE6C,YAAU;AAC3C,YAAIiD,OAAOD,OAAO;AACjB,cAAIpL,IAAE,IAAI2D,MAAM1D;AACf;AAAA;AAEA,mBAAO,CACR;AAAA,QAAA;AAED,YAAI4L,QAAQrQ,WAAUoQ,qBAAqBnI,OAC3CoI;AAAAA,cAAMa,YAAYhB;AAGlB,YAAIuB,mBAAmBpR,KAAK0B,OAAO2P,eAAa,KAAK;AACrD,YAAIC,UAAU,KAAG,KAAG;AACpBtB,cAAM1N,MAAMC,MAAO4O,KAAKI,OAAOhC,QAAM,KAAG,MAAKvP,KAAK0B,OAAO4K,aAAWgF,WAAStR,KAAK0B,OAAO2P,eAAaC,OAAAA,IAAWF,mBAAoB;AACrIpB,cAAM1N,MAAMwO,SAASK,KAAK5C,IAAK4C,KAAKI,OAAQ/B,MAAID,SAAO,KAAG,MAAMvP,KAAK0B,OAAO2P,eAAaC,WAAYF,kBAAkB,CAAA,IAAG;AAE1HnB,aAAK7P,YAAY4P;AACjBE,eAAOrM,KAAKmM,KACZ;AAAA,MAAA;AAAA,IACD;AACD,WAAOE;AAAAA,EACT;AAECvQ,EAAAA,WAAU6R,kBAAkB;AAC3B,QAAIC,OAAOzR,KAAK+L,KAAK,gBAAgB,CACrC;AAAA,QAAI2F,OAAO,CACX;AAAA,QAAI/R,WAAUgN,eAAehN,WAAUiN,SAAS,SAAQ;AACvD,eAASpN,OAAOQ,KAAKwQ,SAAS;AAC7B,YAAIrN,OAAO,oBAAIqB,KAAAA,CAAMhF;AACrBkS,aAAK7N,KAAKuK,MAAMsD,MAAM/R,WAAUgS,qBAAqB3R,KAAKwQ,QAAQhR,GAAK2D,GAAAA,IAAAA,CAAAA;AAAAA,MACvE;AAAA,IACJ,OAAQ;AAEL,UAAIA,OAAO,IAAIqB,KAAK7E,WAAUyM,SAAAA;AAC9B,eAASjI,IAAI,GAAGyN,MAAMH,KAAKI,WAAWzN,QAAQD,IAAIyN,KAAKzN,KAAK;AAC3D,YAAI8L,OAAOwB,KAAKI,WAAW1N;AAC3B,YAAI8L,KAAK5P,cAAcV,WAAUmS,cAAc7B,KAAK5P,UAAAA,EAAY0R,QAAQ,gBAAqB,IAAA,IAAG;AAC/F;AAAA,QACA;AAEDL,aAAK7N,KAAKuK,MAAMsD,MAAM/R,WAAUgS,qBAAqB1B,MAAM9M,IAAAA,CAAAA;AAC3DA,eAAOxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KACnC;AAAA,MAAA;AAAA,IACD;AACD,WAAOuO;AAAAA,EACT;AAGC/R,EAAAA,WAAUiC,eAAe,SAASoQ,eACjC;AAAA,QAAA,CAAIhS,KAAK+L,MAAK;AACb,YAAM,IAAIkG,MAAM,qIAChB;AAAA,IAAA;AAGD,QAAIC,cAAc;AAClB,QAAIlS,CAAAA,KAAK+L,KAAK,cAAgB,GAAA;AAC7BpM,MAAAA,WAAUwS,aACVD;AAAAA,oBAAc;AAAA,IACd;AAID,QAAIE,gBAAgBzS,WAAU0S,uBAC7BC,iBAAiB3S,WAAU4S,yBAC3B7J,YAAY/I,WAAUgJ;AAEvBhJ,IAAAA,WAAUwI,qBAAAA;AAGVxI,IAAAA,WAAUsI,kBAAkB+J;AAE5B,QAAIN,OAAO/R,WAAU6R,gBAErB;AAAA,QAAGU;AACFvS,MAAAA,WAAUoM,OAAO,CAGlBpM;AAAAA,IAAAA,WAAU0S,wBAAwBD;AAClCzS,IAAAA,WAAU4S,0BAA0BD;AACpC3S,IAAAA,WAAUgJ,oBAAoBD;AAE9B,WAAOgJ;AAAAA,EACT;AACC/R,EAAAA,WAAU2G,iBAAiB,SAASoL;AACnC,QAAKA,CAAAA;AACJ;AACD,aAASvN,IAAE,GAAGA,IAAEuN,KAAKtN,QAAQD,KAAK;AACjC,UAAIoJ,MAAMmE,KAAKvN,CAAAA;AAEf,UAAIoJ,IAAIE,YAAY;AACnBF,YAAIE,WAAWC,YAAYH,GAAAA;AAAAA,MAC3B;AAAA,IACD;AAAA,EACH;AAGC5N,EAAAA,WAAU6S,2BAA2B,SAAS9Q,QAC7C;AAAA,QAAIR,UAAS;AACb,QAAIwH,YAAY/I,WAAUgJ;AAC1B,QAAI5I,MAAK2B,OAAO3B;AAEhB,QAAI8O,MAAMlP,WAAU0S;AACpB,SAAKxD,IAAI9O,GAAAA;AACR8O,UAAI9O,GAAAA,IAAM;AAGX,QAAIP,MAAMkC,OAAOmG;AAEjB,QAAIhF,WAAWnB,OAAOmB;AACtB,QAAImE,OAAOtF,OAAOsF;AAClBtF,WAAO3B,KAAKA;AAEZ,QAAI8C,UAAU;AACb,eAAS8L,YAAY9L,UAAU;AAC9B,YAAIA,SAAS+L,eAAeD,WAAW;AACtC,cAAA,CAAKjG,UAAUiG,QAAAA;AACdjG,sBAAUiG,QAAY,IAAA;AACvB,cAAI8D,UAAU5P,SAAS8L,QACvB;AAAA,cAAI+D,iBAAiBhK,UAAUiG;AAC/B,cAAK+D,CAAAA,eAAeD;AACnBC,2BAAeD,OAAAA,IAAW;AAC3B,cAAA,CAAKC,eAAeD,OAAAA,EAASjT;AAC5BkT,2BAAeD,OAAAA,EAASjT,OAAO,CAAA;AAChC,eAAKkT,eAAeD,OAAAA,EAASjT,GAAKwH,EAAAA,IAAAA,GAAM;AACvC0L,2BAAeD,OAAAA,EAASjT,KAAKwH,IAAQ,IAAA,CAAA;AACrC,iBAAIrH,WAAU4S;AACb5S,cAAAA,WAAU4S,0BAA0B;AACrC,gBAAA,CAAI5S,WAAU4S,wBAAwBvL,IAAAA;AACrCrH,cAAAA,WAAU4S,wBAAwBvL,IAAAA,IAAQ;AAAA,UAC3C;AACD,cAAI2L,cAAcD,eAAeD,SAASjT,GAAKwH,EAAAA,IAAAA;AAC/CtF,iBAAOkR,SAASD;AAChBA,sBAAY9O,KAAKnC;AACjBmN,cAAI9O,GAAAA,EAAI8D,KAAKnC,MACb;AAAA,QAAA;AAAA,MACD;AAAA,IACJ,OAAS;AACN,UAAKgH,CAAAA,UAAUxH,SAAQ1B,GACtBkJ;AAAAA,kBAAUxH,SAAQ1B,GAAO,IAAA,CAAA;AAC1B,UAAKkJ,CAAAA,UAAUxH,OAAQ1B,EAAAA,GAAAA,EAAKwH;AAC3B0B,kBAAUxH,OAAAA,EAAQ1B,KAAKwH,IAAQ,IAAA,CAAA;AAEhC,WAAIrH,WAAU4S;AACb5S,QAAAA,WAAU4S,0BAA0B;AACrC,UAAA,CAAI5S,WAAU4S,wBAAwBvL,IAAAA;AACrCrH,QAAAA,WAAU4S,wBAAwBvL,IAAAA,IAAQ;AAE3C,UAAI2L,cAAcjK,UAAUxH,OAAAA,EAAQ1B,KAAKwH,IACzCtF;AAAAA,aAAOkR,SAASD;AAChBA,kBAAY9O,KAAKnC,MAAAA;AACjBmN,UAAI9O,GAAI8D,EAAAA,KAAKnC;IACb;AAAA,EAEH;AAEC/B,EAAAA,WAAU0S,wBAAwB;AAElC1S,EAAAA,WAAUsI,oBAAoB,SAAS+J,eAAAA;AACtC,QAAIa,UAAUlT,WAAUiO,0BAA0BoE,aAClD;AAAA,QAAA,CAAKa,QAAQzO;AACZ;AAED,QAAIrE,MAAK8S,QAAQ,CAAG9S,EAAAA;AACpB,aAASoE,IAAE,GAAGA,IAAE0O,QAAQzO,QAAQD,KAAK;AACpCxE,MAAAA,WAAU6S,yBAAyBK,QAAQ1O,CAC3C,CAAA;AAAA,IAAA;AACD,WAAOpE;AAAAA,EACT;AAECJ,EAAAA,WAAUuL,sBAAsB,SAAS4H,eAAehL,OAAAA;AACvD,QAAIiL,kBAAkBD,cAAc7E,MACpCnG;AAAAA,YAAQA,MAAMmG,MAEd;AAAA,QAAA,CAAK8E,gBAAgB3O;AACpB,aAAO0D;AAER,aAAS3D,IAAE,GAAGA,IAAE4O,gBAAgB3O,QAAQD,KAAG,GAAG;AAC7C,UAAI6O,eAAeD,gBAAgB5O,CACnC;AAAA,UAAI8O,aAAaF,gBAAgB5O,IAAE;AACnC,UAAI+O,SAAU/O,IAAE,KAAK4O,gBAAgB3O;AAErC,eAAS4K,IAAE,GAAGA,IAAElH,MAAM1D,QAAQ4K,KAAG,GAAG;AACnC,YAAItC,aAAa5E,MAAMkH,CACvB;AAAA,YAAII,WAAWtH,MAAMkH,IAAE;AACvB,YAAKI,WAAW6D,cAAcvG,cAAcuG,cAAgBvG,aAAasG,gBAAgB5D,YAAY4D,cAAe;AACnHD,0BAAgB5O,CAAKgN,IAAAA,KAAK7C,IAAI0E,cAActG;AAC5CqG,0BAAgB5O,IAAE,KAAKgN,KAAK5C,IAAI0E,YAAY7D,QAC5CjL;AAAAA,eAAK;AAAA,QACV,OAAW;AACN,cAAK+O,CAAAA;AACJ;AAED,cAAIC,SAAUH,eAAetG,aAAY,IAAE;AAC3CqG,0BAAgBK,OAAOjP,IAAEgP,QAAQ,GAAGzG,YAAY0C,QAAAA;AAAAA,QAChD;AACDtH,cAAMsL,OAAOpE,KAAI,CAAA;AACjB;AAAA,MACA;AAAA,IACD;AACD,WAAO+D;AAAAA,EACT;AACCpT,EAAAA,WAAU0T,2BAA2B,SAASP,eAAehL,OAAAA;AAC5D,QAAIiL,kBAAkBD,cAAc7E;AACpC,aAAS9J,IAAE,GAAGA,IAAE4O,gBAAgB3O,QAAQD,KAAG,GAAI;AAC9C,UAAI6O,eAAeD,gBAAgB5O;AACnC,UAAI8O,aAAaF,gBAAgB5O,IAAE;AACnC,eAAS6K,IAAE,GAAGA,IAAElH,MAAM1D,QAAQ4K,KAAG,GAAG;AACnC,YAAItC,aAAa5E,MAAMkH;AACvB,YAAII,WAAWtH,MAAMkH,IAAE,CAAA;AACvB,YAAII,WAAW4D,gBAAgBtG,aAAauG,YAAY;AACvD,cAAIK,cAAc;AAClB,cAAIN,gBAAgBtG,cAAcuG,cAAc7D,UAAU;AACzD2D,4BAAgBK,OAAOjP,GAAG,CAAA;AAAA,UAC1B;AACD,cAAI6O,eAAetG,YAAY;AAC9BqG,4BAAgBK,OAAOjP,GAAG,GAAG6O,cAActG,UAAAA;AAC3C4G,0BAAc;AAAA,UACd;AACD,cAAIL,aAAa7D,UAAU;AAC1B2D,4BAAgBK,OAAQ,cAAejP,IAAE,IAAGA,GAAG,cAAc,IAAE,GAAGiL,UAAU6D,UAC5E;AAAA,UAAA;AACD9O,eAAK;AACL;AAAA,QACL,OAAW;AACN;AAAA,QACA;AAAA,MACD;AAAA,IACD;AACD,WAAO4O;AAAAA,EACT;AACCpT,EAAAA,WAAU8O,cAAc,SAAS3G,OAChC;AAAA,WAAOnI,WAAU0T,yBAAyB,CAAC,GAAG,IAAA,GAAOvL,MAAMmG,MAC7D,CAAA;AAAA,EAAA;AACCtO,EAAAA,WAAU4T,gCAAgC,SAASxT,KAClD;AAAA,QAAI8S,UAAUlT,WAAU0S,sBAAsBtS;AAC9C,QAAI8S,SAAS;AACZ,eAAS1O,IAAE,GAAGA,IAAE0O,QAAQzO,QAAQD,KAAK;AACpC,YAAIzC,SAASmR,QAAQ1O,CAAAA;AACrB,YAAIqP,eAAe9R,OAAOkR;AAC1B,iBAAS5D,IAAE,GAAGA,IAAEwE,aAAapP,QAAQ4K,KAAK;AACzC,cAAIwE,aAAaxE,CAAAA,KAAMtN,QAAQ;AAC9B8R,yBAAaJ,OAAOpE,GAAG,CAAA;AACvB;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACH;AACCrP,EAAAA,WAAU8T,oCAAoC,SAAS/R,QACtD;AAAA,QAAIgH,YAAY/I,WAAUgJ;AAC1B,QAAI9F,WAAWnB,OAAOmB;AACtB,QAAIrD,MAAMkC,OAAOmG;AACjB,QAAIb,OAAOtF,OAAOsF,QAAMU;AACxB,QAAIgM;AACJ,QAAI7Q,UAAU;AACb,eAAS8L,YAAY9L,UAAU;AAC9B,YAAIA,SAAS+L,eAAeD,QAAAA,KAAajG,UAAUiG,QAAW,GAAA;AAC7D,cAAI8D,UAAU5P,SAAS8L,QACvB;AAAA,cAAIjG,UAAUiG,QAAU8D,EAAAA,OAAAA,GAAS;AAChCiB,wBAAYhL,UAAUiG,QAAU8D,EAAAA,OAAAA;AAAAA,UAChC;AAAA,QACD;AAAA,MACD;AAAA,IACJ,OAAS;AACNiB,kBAAYhL,UAAUxH;AAAAA,IACtB;AAED,QAAGwS,WAAW;AACb,UAAIlU,QAAQ6O,QAAW;AACtB,YAAIqF,UAAUlU,GAAQkU,KAAAA,UAAUlU,GAAKwH,EAAAA,IAAAA,GAAO;AAC3CrH,UAAAA,WAAU6S,yBAAyB9Q;AACnC/B,UAAAA,WAAUgU,8BAA8BD,UAAUlU,GAAKwH,EAAAA,IAAAA,GAAOtF,MAC9D;AAAA,QAAA;AAAA,MACD,OACI;AACJ,iBAASkS,KAAKF,WAAW;AACxB,cAAIA,UAAUE,CAAG5M,EAAAA,IAAAA,GAAO;AACvB,gBAAI6M,YAAYlU,WAAUwO,YAAYzM,MAAAA;AACtCA,mBAAOmG,OAAO+L;AACdjU,YAAAA,WAAU6S,yBAAyBqB;AACnClU,YAAAA,WAAUgU,8BAA8BD,UAAUE,CAAG5M,EAAAA,IAAAA,GAAOtF;UAC5D;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACH;AACC/B,EAAAA,WAAUgU,gCAAgC,SAASG,eAAepS,QAAAA;AACjE,aAASyC,IAAE,GAAGA,IAAE2P,cAAc1P,QAAQD,KAAK;AAC1C,UAAI4P,MAAMD,cAAc3P,CACxB;AAAA,UAAI2D,QAAQnI,WAAU0T,yBAAyBU,IAAIjM,OAAOpG,OAAOoG,KACjE;AAAA,UAAIA,MAAM1D;AACT2P,YAAIjM,QAAQA;AAAAA,WACR;AACJgM,sBAAcV,OAAOjP,GAAE,CACvBA;AAAAA;AAEA,YAAI6P,gBAAgBrU,WAAU0S,sBAAsB0B,IAAIhU;AACxD,iBAASiP,IAAE,GAAGA,IAAEgF,cAAc5P,QAAQ4K,KAAK;AAC1C,cAAIgF,cAAchF,CAAM+E,KAAAA,KAAK;AAC5BC,0BAAcZ,OAAOpE,GAAG,CACxB;AAAA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACH;AACCrP,EAAAA,WAAUwI,uBAAuB,SAAS6J;AAEzC,QAAKiC,CAAAA,UAAU7P,QAAQ;AACtBzE,MAAAA,WAAUgJ,oBAAoB,EAAEzH,QAAQ,CAAE,EAAA;AAC1CvB,MAAAA,WAAU0S,wBAAwB;AAClC1S,MAAAA,WAAU4S,0BAA0B;IACpC;AAED,QAAWP,OAAAA,iBAAiB,UAAU;AACrCrS,MAAAA,WAAU4T,8BAA8BvB,aAAAA;AAAAA,IAC3C,OAAS;AAEN,UAAA,EAAKA,cAAcjP,cAAciP,cAAchP,WAAU;AACxD,YAAGgP,cAAcnK,SAASwG,UAAc2D,CAAAA,cAAchL;AACrDgL,wBAAcnK,OAAO;AACtB,YAAImK,CAAAA,cAAclK;AACjBkK,wBAAclK,QAAQ;AAAA,MACvB;AAED,UAAIoM,QAAQ,CAAA;AACZ,WAAIlC,cAAchL,MAAK;AAEtB,iBAAQA,QAAQrH,WAAU4S,yBAAwB;AACjD2B,gBAAMrQ,KAAKmD,IACX;AAAA,QAAA;AAAA,MACL,OAAQ;AACJkN,cAAMrQ,KAAKmO,cAAchL;MACzB;AAGD,UAAI6L,UAAUlT,WAAUiO,0BAA0BoE,aAElD;AAAA,eAAS7N,IAAE,GAAGA,IAAE0O,QAAQzO,QAAQD,KAAK;AAEpC,YAAIzC,SAASmR,QAAQ1O;AACrB,iBAASgQ,IAAE,GAAGA,IAAID,MAAM9P,QAAQ+P,KAAI;AACnC,cAAIC,cAAczU,WAAUwO,YAAYzM;AACxC0S,sBAAYpN,OAAOkN,MAAMC,CACzBxU;AAAAA,UAAAA,WAAU8T,kCAAkCW,WAAAA;AAAAA,QAC5C;AAAA,MACD;AAAA,IAED;AAAA,EACH;AACCzU,EAAAA,WAAU0U,uBAAuB,SAASC,SAAQC,UAAAA;AACjD,QAAIC,kBAAkBF,UAAW3U,WAAUoP,WAAW,IAAGuF,OAAAA,IAAU;AACnE,aAAStN,QAAQuN,YAAU,IAAK;AAC/B,UAAIA,SAAS3F,eAAe5H,IAAO,GAAA;AAClCwN,wBAAgBxN,IAAAA,IAAQuN,SAASvN,IACjC;AAAA,MAAA;AAAA,IACD;AACD,WAAOwN;AAAAA,EACT;AACC7U,EAAAA,WAAU8U,yBAAyB,SAASP,OAAAA;AAC3C,QAAIrB,UAAU,CAAA;AACd,aAAS7L,QAAQkN,OAAO;AACvB,UAAIA,MAAMtF,eAAe5H,OAAO;AAC/B6L,gBAAQhP,KAAKuK,MAAMyE,SAASqB,MAAMlN,IAClC,CAAA;AAAA,MAAA;AAAA,IACD;AACD,WAAO6L;AAAAA,EACT;AAEClT,EAAAA,WAAUgS,uBAAuB,SAAS1B,MAAMzQ;AAC/C,QAAIG,WAAUgN,eAAehN,WAAUiN,SAAS;AAC/C;AAED,QAAI9D,YAAYtJ,IAAIuJ;AACpB,QAAIF,YAAYrJ,IAAIuF,QAAAA;AACpB,QAAItF,OAAOO,KAAK4M;AAChB,QAAIlE,YAAY/I,WAAUgJ;AAC1B,QAAIkF,YAAY,CAAA;AAChB,QAAI6D,OAAO,CAAA;AACX,QAAI1R,KAAKsL,UAAUtL,KAAKsL,OAAO7L,IAAAA,GAAO;AACrC,UAAIgM,OAAOzL,KAAKsL,OAAO7L;AACvB,UAAIiV,QAAQjJ,KAAK7D;AACjB,UAAI0H,QAAQ3P,WAAUgV,gBAAgBlJ,MAAMjM,GAAAA;AAC5C,UAAIoV,OAAOF,MAAMpF;AAEjB,UAAK7D,EAAAA,KAAK5D,OAAO,IAAG;AACnBrI,cAAMG,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKxE,KAAK6U,KAAAA,CAAAA;AAAAA,MACjD,OAAQ;AACJ,YAAIC,KAAK,KAAG,KAAG,KAAG;AAClB,YAAIC,UAAU5D,KAAKI,OAAO/R,MAAMG,WAAUyM,aAAW0I,EAAAA;AACrD,YAAIE,cAAcvJ,KAAKuB,QAAQ0H,MAAMtQ;AACrC5E,cAAMG,WAAUwD,KAAKC,IAAIzD,WAAUyM,WAAW+E,KAAK8D,MAAMF,UAAQC,WAAc,GAAA,KAAA;AAC/ExV,cAAMG,WAAUwD,KAAKyF,UAAUpJ,GAAAA;AAAAA,MAC/B;AACDsJ,kBAAYtJ,IAAIuJ;AAChBF,kBAAYrJ,IAAIuF,QAEhB;AAAA,UAAI2D,UAAUjJ,IAASiJ,KAAAA,UAAUjJ,MAAMmV,KAAKM,GAAAA,GAAM;AACjD,YAAIC,aAAazM,UAAUjJ,IAAAA,EAAMmV,KAAKM,GACtC;AAAA,YAAIE,aAAazV,WAAU0U,qBAAqBc,WAAWrM,SAAYqM,GAAAA,WAAWtM,SAClFgF,CAAAA;AAAAA,kBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBW,UAAAA,CAAAA;AAAAA,MACjE;AAAA,IACD;AAED,QAAIC,cAAc3M,UAAU;AAE5B,QAAG/I,WAAU+B,OAAO8F,4BAA2B;AAC9C,UAAI8N,YAAYD,YAAYxM,SAAYwM,KAAAA,YAAYvM;AACpD+E,gBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBa,SACpE,CAAA;AAAA,IAAA,OAAS;AACN,UAAGD,YAAYxM,SAAW,GAAA;AACzBgF,kBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBY,YAAYxM,SAAAA,CAAAA,CAAAA;AAAAA,MAC7E;AACD,UAAGwM,YAAYvM,YAAW;AACzB+E,kBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBY,YAAYvM,SAC7E,CAAA,CAAA;AAAA,MAAA;AAAA,IACD;AAED,aAAS3E,IAAE,GAAGA,IAAE0J,UAAUzJ,QAAQD,KAAK;AACtCuN,WAAK7N,KAAKuK,MAAMsD,MAAO/R,WAAU0N,wBAAwBQ,UAAU1J,CAAI8L,GAAAA,MAAMzQ;IAC7E;AACD,WAAOkS;AAAAA,EACT;AACC/R,EAAAA,WAAUiG,YAAY,cAAc,WAAA;AACnCjG,IAAAA,WAAUgS,qBAAqBvD,MAAMzO,YAAWsU,SAAAA;AAAAA,EAClD;AAECtU,EAAAA,WAAU4V,+BAA+B,SAAS1P,GAAE2P,KAAAA;AACnD7V,IAAAA,WAAUiL,UAAU,mBAAkB,CAACjL,WAAUyG,cAAcP,CAAG1C,EAAAA,MAAKqS,KAAI3P,CAE3E,CAAA;AAAA,QAAIlG,WAAU+B,OAAO+T,iBAAgB;AACpC9V,MAAAA,WAAU+V,YAAY/V,WAAUyG,cAAcP,GAAG1C,MAAK,MAAK0C,CAC3D;AAAA,IAAA;AAAA,EACH;AAEA;AC/8BA,SAAS8P,aAAahW,YACrB;AAAA,MAAIiW,UAAU,CAAA;AACd,MAAIC,WAAW;AACf,WAASC,cAAcC,YAAYC,aAClCA;AAAAA,kBAAAA,OAAqBA,eAAe,aAAaA,cAAc,WAAU;AAAA,IAAA;AAEzE,SAAIJ,QAAQG,UAAAA,GAAY;AACvBH,cAAQG,UAAAA,IAAc/V,KAAK+V,UAC3B/V;AAAAA,WAAK+V,UAAcC,IAAAA;AAAAA,IACnB;AAAA,EACD;AACD,WAASC,cAAcF,YACtB;AAAA,QAAGH,QAAQG,UAAY,GAAA;AACtB/V,WAAK+V,UAAAA,IAAcH,QAAQG,UAC3BH;AAAAA,cAAQG,cAAc;AAAA,IACtB;AAAA,EACD;AACD,WAASG,eAAeC,aACvB;AAAA,aAAQhS,KAAKgS,aAAY;AACxBL,oBAAcM,KAAKpW,MAAMmE,GAAGgS,YAAYhS,CACxC,CAAA;AAAA,IAAA;AAAA,EACD;AACD,WAASkS,iBAAAA;AACR,aAAQlS,KAAKyR,SAAQ;AACpBK,oBAAcG,KAAKpW,MAAMmE;IACzB;AAAA,EACD;AAED,WAASmS,mBAAmBrP,UAAAA;AAC3B;AACCA,eACA;AAAA,IAAA,SAAMpB,GAAAA;AACN5E,aAAOsV,QAAQC,MAAM3Q;IACrB;AAAA,EACD;AAEDlG,EAAAA,WAAU8W,eAAeC,iBAAiB,eAAe,WAAA;AACxD,WAAO,EACNC,cAAcd;EAEf,GAAE,KAAA;AAEH,SAAO,SAASe,aAAY3P,UAAU4P,UAAAA;AACrC,QAAGhB,UAAS;AAEXS,yBAAmBrP,QACnB;AAAA;AAAA,IACA;AAED,QAAI6P,UAAW9W,KAAK+W,OAAO/W,KAAK+W,IAAIC,cAAc;AAClD,QAAIC;AACJ,QAAIH,SAAQ;AACXG,gBAAUjX,KAAK+W,IAAIC;AACnBhX,WAAK+W,IAAIG,cAAc,KAAA;AAAA,IACvB;AAID,UAAMC,QAAQ,EACbC,aAAa,EAACjU,MAAM,MAAM1D,MAAM,KAChC4X,GAAAA,YAAY,OACZC,gBAAgB,OAChBC,eAAe,CAAE;AAIlB,UAAMC,mBAAmB,CAACrU,MAAM1D,SAAAA;AAC/B,UAAG0D,MAAK;AACPgU,cAAMC,YAAYjU,OAAOA;AAAAA,MACzB;AACD,UAAG1D,MAAK;AACP0X,cAAMC,YAAY3X,OAAOA;AAAAA,MACzB;AAAA,IAAA;AAGF,QAAImW,WAAU,EACbxO,QAAO,CAACjE,MAAM1D;AAAU0X,YAAME,aAAa;AAAMG,uBAAiBrU,MAAM1D,IAAK;AAAA,IAAA,GAC7EgY,gBAAe,CAACtU,MAAM1D;AAAU0X,YAAME,aAAa;AAAMG,uBAAiBrU,MAAM1D,IAAK;AAAA,IAAA,GACrFmB,YAAW,CAACuC,MAAM1D;AAAU0X,YAAMG,iBAAiB;AAAME,uBAAiBrU,MAAM1D,IAAK;AAAA,IAAA,GACrFiY,aAAY,MAAMP,MAAME,aAAa,MACrCM,kBAAkBhO,SACjB;AAAA,UAAGA,OAAOA,IAAIvF,QAAO;AACpBuF,YAAIhG,QAASkC,OAAMsR,MAAMI,cAAc1R,EAAE9F,EAAAA,IAAM;MACpD,OAAS;AACJoX,cAAME,aAAa;AAAA,MACnB;AAAA;AAIHnB,mBAAeE,KAAKpW,MAAM4V,QAAAA;AAE1BC,eAAW;AACX7V,SAAK4K,UAAU,uBAAuB,CAAA,CAAA;AAEtC0L,uBAAmBrP,QAEnBjH;AAAAA,SAAK4K,UAAU,sBAAsB;AAErCyL,mBAAeD,KAAKpW;AAEpB6V,eAAW;AACX,SAAIgB,UAAS;AACZ,UAAGM,MAAME,YAAW;AACnB1X,QAAAA,WAAUyH,OAAO+P,MAAMC,YAAYjU,MAAMgU,MAAMC,YAAY3X,IAC/D;AAAA,MAAA,WAAY0X,MAAMG,gBAAe;AAC7B3X,QAAAA,WAAUiB,WAAWuW,MAAMC,YAAYjU,MAAMgU,MAAMC,YAAY3X;MACnE,OAAQ;AACJ,mBAAU0E,KAAKgT,MAAMI,eAAc;AAClC5X,UAAAA,WAAUiY,YAAYzT,CACtB;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,QAAI2S,SAAS;AACZ9W,WAAK+W,IAAIG,cAAcD;AACvBjX,WAAK+W,IAAIc;IACT;AAAA,EACH;AACA;AAEe,SAAQjB,YAACjX,YACvBA;AAAAA,EAAAA,WAAUiX,cAAcjB,aAAahW,UAAAA;AACtC;ACrHe,SAASmY,YAAYnY;AAChC4G,aAAW5G,UAAAA;AACXyB,mBAAiBzB,UAAAA;AACjBoY,cAAMpY,UACNiX;AAAAA,cAAYjX;AAChB;ACVA,IAAIqY,UAAUxT,KAAKwH,IAAAA;AACnB,SAAS0C,MAAAA;AACR,SAAOsJ;AACR;AAGA,SAASC,UAAQrY,KAAAA;AAChB,MAAGmO,MAAMkK,SAAQ;AAChB,WAAOlK,MAAMkK,QAAQrY,GAAAA;AAAAA,EACvB,OAAM;AAEJ,WAAQA,OAAOA,IAAIwE,WAAWiK,UAAazO,IAAIsY,OAAOtY,IAAIiE;AAAAA,EAC1D;AACF;AAGA,SAASsU,eAAevY,KACvB;AAAA,SAAOA,OAAcA,OAAAA,QAAQ,YAC5BwY,SAASC,UAAUC,SAASlC,KAAKxW,IAAI2Y,iBAAiB;AACxD;AAGA,SAASC,eAAe5Y;AACvB,SAAOA,OAAAA,OAAcA,QAAQ,YAC5BwY,SAASC,UAAUC,SAASlC,KAAKxW,IAAI2Y,WAAAA,MAAiB;AACxD;AAGA,SAASE,gBAAgB7Y,KACxB;AAAA,SAAOA,cAAcA,QAAQ,YAC5BwY,SAASC,UAAUC,SAASlC,KAAKxW,IAAI2Y,iBAAiB;AACxD;AAEA,SAASG,SAAO9Y,KAAAA;AACf,MAAIA,OAAAA,OAAcA,QAAQ,UAAU;AACnC,cAAUA,IAAI+Y,eAAe/Y,IAAIgZ,YAAYhZ,IAAIwJ;AAAAA,EACnD,OAAQ;AACN,WAAO;AAAA,EACP;AACF;AAEA,SAASyP,QAAQjZ,KAChB;AAAA,SAAA,OAAc,OAAQ;AACvB;AAEA,SAASkZ,MAAO7R,UAAU8R,SACzB;AAAA,MAAIC;AAEJ,MAAIC,SAAS,WACZA;AAAAA,WAAOC;AACPD,WAAOE,WAAW;AAClB,QAAIC,OAAOrL,MAAMsK,UAAUpK,MAAMmI,KAAKnC,SAAAA;AACtC+E,YAAQK,WAAW,WAAA;AAClBpS,eAASmH,MAAMpO,MAAMoZ;AACrBH,aAAOE,WAAW;AAAA,IAClB,GAAEJ;EACL;AAECE,SAAOE,WAAW;AAClBF,SAAOC,iBAAiB,WACvBI;AAAAA,iBAAaN,KACbC;AAAAA,WAAOE,WAAW;AAAA,EACpB;AACCF,SAAOM,WAAW,WAAA;AACjB,QAAIH,OAAOrL,MAAMsK,UAAUpK,MAAMmI,KAAKnC,SACtChN;AAAAA,aAASmH,MAAMpO,MAAMoZ,IAAAA;AACrBH,WAAOC,eACT;AAAA,EAAA;AAEC,SAAOD;AACR;AAEA,MAAeO,QAAA,EACd9K,KACA+K,OAAO,SAASA,MAAO1T,QAAQ2T,QAAQC;AACtC,WAASC,KAAKF;AACb,QAAM3T,OAAO6T,CAAOvL,MAAAA,UAAcsL;AAAQ5T,aAAO6T,KAAGF,OAAOE,CAAAA;AAC5D,SAAO7T;AACP,GACDW,MAAM,SAASA,KAAKmT,QACnB;AAAA,MAAI1V,GAAG8U;AAEP,MAAIY,iBAAiBA,UAAU,UAAU;AAExC,YAAQ,MAAA;AAAA,MACP,KAAMnB,SAAOmB;AACZZ,iBAAS,IAAIzU,KAAKqV,MAClB;AAAA;AAAA,MACD,KAAM5B,UAAQ4B,MAAAA;AACbZ,iBAAS,IAAIlL,MAAM8L,OAAOzV,MAAAA;AAC1B,aAAID,IAAI,GAAGA,IAAI0V,OAAOzV,QAAQD,KAAI;AACjC8U,iBAAO9U,CAAKuC,IAAAA,KAAKmT,OAAO1V,CACxB,CAAA;AAAA,QAAA;AACD;AAAA,MACD,KAAMgU,eAAe0B,MACpBZ;AAAAA,iBAAS,IAAI5T,OAAOwU,MAAAA;AACpB;AAAA,MACD,KAAMrB,eAAeqB;AACpBZ,iBAAS,IAAIa,OAAOD,MAAAA;AACpB;AAAA,MACD,KAAMpB,gBAAgBoB;AACrBZ,iBAAS,IAAIc,QAAQF,MACrB;AAAA;AAAA,MACD;AACCZ,iBAAS,CAAA;AACT,aAAK9U,KAAK0V,QAAQ;AACjB,gBAAMG,UAAiBH,OAAAA,OAAO1V,CAE9B;AAAA,cAAI6V,YAAY,YAAYA,YAAY,YAAYA,YAAY,WAAY;AAC3Ef,mBAAO9U,CAAAA,IAAK0V,OAAO1V,CAAAA;AAAAA,UACnB,WAASuU,SAAOmB,OAAO1V,CAAI,CAAA,GAAA;AAC3B8U,mBAAO9U,CAAK,IAAA,IAAIK,KAAKqV,OAAO1V;UACnC,WAAgB8V,OAAO5B,UAAUzJ,eAAeR,MAAMyL,QAAQ,CAAC1V,CACxD8U,CAAAA;AAAAA,mBAAO9U,KAAKuC,KAAKmT,OAAO1V;QACzB;AACF;AAAA,IAAA;AAAA,EAED;AACD,SAAO8U,UAAUY;AACjB,GACDhB,SACDH,QAACA,UACAI;ACxHD,MAAMoB;AACL,QAAMC,iBAAiB,CAAA;AAEvB,WAASlU,SAASmU,MAAAA;AACjB,UAAMC,WAAWF,eAAeC;AAChC,QAAGC,UAAS;AACX,aAAOF,eAAeC,IAAME,EAAAA,OAAAA;AAAAA,IAC/B,OAAO;AACJ,YAAM/R,MAAM,CAAA;AACZ,iBAAUpE,KAAKgW,gBAAe;AAC7B,aAAIA,eAAehW,CAAAA,EAAGoW;AACrBf,gBAAMC,MAAMlR,KAAK4R,eAAehW,GAAGmW,OAAU,GAAA,IAAA;AAAA,MAC9C;AACD,aAAO/R;AAAAA,IACP;AAAA,EACD;AAED,WAASmO,iBAAiB0D,MAAMC,UAAUE,UACzCJ;AAAAA,mBAAeC,QAAQ,EAAEE,QAAQD,UAAUE,SAAUA;AAAAA,EACrD;AAED,WAASC,mBAAmBJ,MACpBD;AAAAA,WAAAA,eAAeC;EACtB;AAED,SAAO,EACNnU,UACAyQ,kBACA8D,mBAED;AAAA;AChCc,SAAQC,OAAC9a,YAAAA;AACvB,SAAO,SAAS8a,QAAOC,OAAO7T,UAAAA;AAC7B,SAAK6T,OAAM;AACV,UAAG/a,WAAU+B,OAAOiZ,eAAehb,WAAUiL,UAAU,WAAU,CAAC/D,eAAc,OAAO;AACtF,YAAIlH,WAAUkH,SAAS;AACtBlH,UAAAA,WAAUkH,QAAQ,EAACG,MAAM,SAASF,MAAMD,UAASE,WACjD,CAAA;AAAA,QAAA,OACI;AAEJwP,kBAAQqE,IAAI/T,QACZ;AAAA,QAAA;AAGD;AAAA,MACA;AAAA,IACD;AAAA,EACH;AACA;ACjBe,SAASgU,SAAOlb,YAE/B;AAAA,MAAImb,cAAc,EACjBC,QAAQ,sDACRC,MAAM,oDACNvV,KAAK,mDACLmP,MAAM,qDACNqG,UAAU,wDACVC,aAAa,0DACbC,MAAM,oDACNC,cAAc,+CAGf;AAAA,MAAIC,qBAAqB,EACxBN,QAAQ,sCACRC,MAAM,oCACNvV,KAAK,mCACLmP,MAAM,gCACNqG,UAAU,4GACVC,aAAa,sCACbC,MAAM,oCACNpD,OAAO,+BAGRpY;AAAAA,EAAAA,WAAU2b,uBAAuB,EAChCC,aAAa,SAAS9P,MACrB;AAAA,QAAI+P,aAAa,oBAAoBV,YAAYrP,IAASqP,KAAAA,YAAYM;AACtE,QAAIK,mBAAmBJ,mBAAmB5P,IAAS,IAAA,6BAA6B4P,mBAAmB5P,IAAAA,IAAQ,MAAO;AAClH,WACC,MAAIA,OAAK,mLAET+P,aAAa,QAAQC,mBAAoBA,mBAAmB,OAAQ;AAAA,EACrE,GACDC,oBAAoB,SAASnO,KAAAA;AAC5B,WAAO;AAAA,EAGP,EAAA;AAGF5N,EAAAA,WAAUgc,qBAAqB,WAAA;AAC9B,UAAM,IAAI1J,MAAM,6FAA6FoJ,mBAAmBJ,WAChI,qBACmBH,YAAYG,QAChC;AAAA,EAAA;AAEAtb,EAAAA,WAAUic,kBAAkB,WAAA;AAC3B,UAAM,IAAI3J,MAAM,0FAA0FoJ,mBAAmBzG,OAC7H,qBACmBkG,YAAYlG,IAChC;AAAA,EAAA;AAEAjV,EAAAA,WAAUkc,iBAAiB,WAAA;AAC1B,UAAM,IAAI5J,MAAM,yFAAyFoJ,mBAAmBL,OAC5H,qBACmBF,YAAYE,IAChC;AAAA,EAAA;AAEArb,EAAAA,WAAUsI,oBAAoB;AAC7B,UAAM,IAAIgK,MAAM;EAGjB;AAEAtS,EAAAA,WAAUmc,iBAAiB,WAAA;AAC1B,UAAM,IAAI7J,MAAM,yKAEhB;AAAA,EACD;AAEAtS,EAAAA,WAAUoc,cAAc,WACvB;AAAA,UAAM,IAAI9J,MAAM,CACf,6CACA,gIACA,+EAAA,EACCnC,KAAK,IACR,CAAA;AAAA,EAAA;AAEAnQ,EAAAA,WAAUqc,cAAc;AACvB,UAAM,IAAI/J,MAAM,CACf,6CACA,gIACA,+EACCnC,EAAAA,KAAK,IACR,CAAA;AAAA,EAAA;AAGA;ACrFe,SAAS+K,SAAOlb;AAa/BA,EAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,QAAA,OAAUqW,gBAAgB,aAAa;AACtChb,aAAOgb,YAAYC,WAAW,WAAW,SAASC,GAAGC,GAAG1S,GAAAA;AACvD,YAAI7C,WAAU6C,EAAE,CAAG2S,EAAAA;AAEnB,gBAAQ1c,WAAU+B,OAAO4a;UACxB,KAAK;AACJpb,qBAAOqb,MAAM1V;AACb;AAAA,UACD,KAAK;AACJ3F,qBAAOqV,QAAQqE,IAAI/T,QAAAA;AACnB;AAAA,QAIL;AAAA,MAAA,CAAA;AAAA,IACE;AAAA,EACF,CAGA;AAAA;ACnCe,SAASgU,SAAOlb,YAAAA;AAE/B,WAAS4N,IAAIsD,WAAAA;AACZ,QAAInL,UAAU7F,SAASC,cAAc,KAAA;AACrC,QAAI0c,WAAW3L,aAAa,IAAIvL,MAAM,GAAA;AACtCkX,YAAQ7Y,QAAQ,SAAS8Y,UACxB/W;AAAAA,cAAQgX,UAAUtZ,IAAIqZ,QAAAA;AAAAA,IACxB;AACC,WAAO/W;AAAAA,EACR;AACA,MAAIiX,YAAY,EACfC,gBAAgB;AACf,WAAOrP,IAAI;EACX,GACDsP,KAAK,WACJ;AAAA,WAAOtP,IAAI,oBACX;AAAA,EAAA,GACD9B,MAAM,SAAU/J,QAAAA;AACf,QAAIgE,UAAU6H,IAAI,aAClB7H;AAAAA,YAAQoX,aAAa,QAAQpb,OAAO+J,OAAO,MAC3C/F;AAAAA,YAAQoX,aAAa,YAAYpb,OAAO+J,IAExC;AAAA,QAAG9L,WAAU+B,OAAOqb,kBAAiB;AACpC,UAAGrb,OAAOsb,WAAW;AACpBtX,gBAAQgX,UAAUtZ,IAAI;MAC1B,WAAY1B,OAAOub,UAAU;AACzBvX,gBAAQgX,UAAUtZ,IAAI,kBAC1B;AAAA,MAAA,WAAa1B,OAAO+J,SAAS,QAAQ;AACjC/F,gBAAQgX,UAAUtZ,IAAI,wBAAA;AAAA,MACtB;AAED,UAAG1B,OAAOwb,eAAe;AACxBxX,gBAAQgX,UAAUtZ,IAAI;MACtB;AAAA,IACD;AACD,WAAOsC;AAAAA,EACP,GACDvC,MAAM,WAAA;AACL,WAAOoK,IAAI,cAAA;AAAA,EACX,GACD4P,QAAQ,SAAUzb,QACjB;AAAA,WAAO6L,IAAI,0DACX;AAAA,EAAA,GACD6P,eAAe,SAAU1b,QAAAA;AACxB,WAAO6L,IAAI,aAAa7L,OAAO+J,OAAO;EACtC,GACD4R,QAAQ;AACP,WAAO9P,IAAI;EACX,GACD+P,oBAAoB,SAAS5b,QAAAA;AAC5B,QAAI6b,kBAAkBhQ,IAAI;AAC1B,QAAI7L,CAAAA,OAAO8b,UAAUD,gBAAgBE,iBAAgB;AAEpD9d,MAAAA,WAAU6B,MAAM+b,iBAAiB,SAAS;AACzC,YAAI5d,WAAU+d,qBAAqB;AAClC/d,UAAAA,WAAUge,gBACf;AAAA,QAAA,OAAW;AACNhe,UAAAA,WAAUmc,eAAe,EACxB7O,UAAUjN,MACVmD,MAAMxD,WAAUsG,SAAAA,EAAW9C,MAC3Bya,YAAY,MACZC,SAAS,SAAU1a,MAAM2a,UACxBne;AAAAA,YAAAA,WAAU8X,eAAetU,IACzBxD;AAAAA,YAAAA,WAAUge,gBACV;AAAA,UAAA,EAAA,CAAA;AAAA,QAEF;AAAA,MACL,CACG;AAAA,IAAA;AACD,WAAOJ;AAAAA,EACP,GACDQ,cAAc,SAAUrc,QAAAA;AACvB,WAAO6L,IAAI;EACX,EAGF;AAAA,WAASyQ,aAAatc,QACrB;AAAA,QAAIuc;AACJ,QAAIvc,OAAO+J,MAAM;AAChB,cAAQ/J,OAAO+J,MAAAA;AAAAA,QACd,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJwS,qBAAWtB,UAAUS;AACrB;AAAA,QACD,KAAK;AACJa,qBAAWtB,UAAUxZ;AACrB;AAAA,QACD,KAAK;AACJ8a,qBAAWtB,UAAUU;AACrB;AAAA,QACD,KAAK;AACJY,qBAAWtB,UAAUQ;AACrB;AAAA,QACD,KAAK;AACJc,qBAAWtB,UAAUW;AACrB;AAAA,QACD;AACCW,qBAAWtB,UAAUlR;AACrB;AAAA,MAAA;AAAA,IAEJ,WAAW/J,OAAOwc,MAAM;AACtBD,iBAAWtB,UAAUC;AAAAA,IACvB,WAAWlb,OAAOyc,MAAM;AACtBF,iBAAWtB,UAAUE;AAAAA,IACrB;AACD,WAAOoB;AAAAA,EACR;AAEA,WAASG,cAAc1c,QACtB;AAAA,QAAIuc,WAAWD,aAAatc,MAAAA;AAC5B,SAAIuc,UAAS;AACZ;AAAA,IACA;AACD,QAAIvY,UAAUuY,SAASvc;AACvB,QAAGA,OAAOuB,KAAI;AACbyC,cAAQgX,UAAUtZ,IAAI1B,OAAOuB,GAC7B;AAAA,IAAA;AACD,QAAGvB,OAAOqP,OAAM;AACf,UAAIsN,QAAQ3c,OAAOqP;AACnB,UAAGsN,UAAUA,QAAQ,GAAE;AACtBA,iBAAS;AAAA,MACT;AACD3Y,cAAQpD,MAAMyO,QAAQsN;AAAAA,IACtB;AACD,QAAG3c,OAAOoP,QAAO;AAChB,UAAIuN,QAAQ3c,OAAOoP;AACnB,UAAGuN,UAAUA,QAAQ,GAAE;AACtBA,iBAAS;AAAA,MACT;AACD3Y,cAAQpD,MAAMwO,SAASuN;AAAAA,IACvB;AACD,QAAI3c,OAAO8b,OAAO;AACjB7d,MAAAA,WAAU6B,MAAMkE,SAAS,SAAShE,OAAO8b,KACzC;AAAA,IAAA;AACD,QAAI9b,OAAOwB,MAAM;AAChBwC,cAAQxF,YAAYwB,OAAOwB;AAAAA,IAC3B;AAED,QAAIxB,OAAO4c,OAAO;AACjB,UAAID,QAAQ;AACZ,UAAI3c,OAAO4c,SAAS,SAAS;AAC5BD,gBAAQ;AAAA,MACX,WAAY3c,OAAO4c,SAAS,QAAQ;AACjCD,gBAAQ;AAAA,MACR;AACD3Y,cAAQpD,MAAMic,iBAAiBF;AAAAA,IAC/B;AACD,WAAO3Y;AAAAA,EACR;AAEA,WAAS8Y,cAAc9c,QACtB;AAAA,QAAA,OAAWA,WAAW,UAAU;AAC/BA,eAAS,EACR+J,MAAM/J,OAEP;AAAA,IAAA;AACD,SAAKA,OAAO+J,QAAAA,CAAS/J,OAAOwc,QAAAA,CAASxc,OAAOyc,MAAM;AACjDzc,aAAO+J,OAAO;AAAA,IACd;AACD,WAAO/J;AAAAA,EACR;AAEA,WAAS+c,aAAa/c,QACrB;AAAA,QAAIgd,WAAW7e,SAAS8e,uBAAAA;AACxB,QAAIC;AACJ,QAAG7Q,MAAMkK,QAAQvW,SAAQ;AACxBkd,cAAQld;AAAAA,IACV,OAAM;AACJkd,cAAQ,CAACld,MAAAA;AAAAA,IACT;AAED,aAASyC,IAAI,GAAGA,IAAIya,MAAMxa,QAAQD,KAAK;AACtC,UAAIsH,OAAO+S,cAAcI,MAAMza,CAE/B,CAAA;AAAA,UAAGsH,KAAKA,SAAS,SAASmT,MAAMza,IAAI,CAAA,GAAG;AACtC,YAAI0a,OAAOL,cAAcI,MAAMza,IAAI,CACnC,CAAA;AAAA,YAAG0a,KAAKpT,SAAS,UAAUoT,KAAKpT,SAAS,SAAQ;AAChDA,eAAKuR,YAAY;AACjBvR,eAAKyR,gBAAgB;AAAA,QACrB;AAAA,MACD;AAED,UAAGzR,KAAKA,SAAS,UAAUmT,MAAMza,IAAI,CAAA,GAAG;AACvC,YAAI0a,OAAOL,cAAcI,MAAMza,IAAI,CACnC,CAAA;AAAA,YAAG0a,KAAKpT,SAAS,UAAUoT,KAAKpT,SAAS,SAAQ;AAChDA,eAAKyR,gBAAgB;AAAA,QACrB;AAAA,MACD;AAED,UAAGzR,KAAKA,SAAS,WAAWmT,MAAMza,IAAI,CAAA,GAAG;AACxC,YAAI0a,OAAOL,cAAcI,MAAMza,IAAI;AACnC,YAAG0a,KAAKpT,SAAS,UAAUoT,KAAKpT,SAAS,OAAM;AAC9CA,eAAKwR,WAAW;AAChBxR,eAAKyR,gBAAgB;AAAA,QACrB;AAAA,MACD;AAED,UAAIxX,UAAU0Y,cAAc3S,IAE5BiT;AAAAA,eAASte,YAAYsF,OACrB;AAAA,UAAG+F,KAAK0S,QAAQ1S,KAAKyS,MAAK;AACzBxY,gBAAQtF,YAAYqe,aAAahT,KAAK0S,QAAQ1S,KAAKyS,IACnD,CAAA;AAAA,MAAA;AAAA,IACD;AACD,WAAOQ;AAAAA,EACR;AAEA/e,EAAAA,WAAUmf,gBAAgB,SAAUF,OACnC;AAAA,QAAIG,SAAS/e,KAAKgE,WAAWgb,cAAc,kBAAA;AAC3C,SAAKD,QAAO;AACXA,eAASlf,SAASC,cAAc,KAChCif;AAAAA,aAAOlO,YAAY;AACnBlR,MAAAA,WAAUsf,gBAAgBL,OAAOG,MAAAA;AACjC,aAAOA;AAAAA,IACP;AACD,WAAOA;AAAAA,EACR;AAGA,MAAIG,iBAAiB;AACrBvf,EAAAA,WAAUsf,kBAAkB,SAAUvd,QAAQ8J,WAAAA;AAE7C,QAAI9J,CAAAA,QAAO;AACV;AAAA,IACA;AACD,QAAIyd,gBAAgB;AACpB,QAAIC,gBAAgB;AAEpB,QAAIC,YAAY3d,OAAOoP,UAAUnR,WAAU2f,GAAGC;AAE9C,QAAGL,mBAAmB,QACnBA,mBAAmBG,WAAW;AAChCF,sBAAgB;AAAA,IAChB;AAC+D;AAC/DC,sBAAgB;AAAA,IAChB;AAED,QAAGD,eAAc;AAChBxf,MAAAA,WAAU2f,GAAGC,aAAaF;AAAAA,IAC1B;AACD,QAAGD,eAAc;AAChB5T,gBAAUtL,YAAY;AACtBsL,gBAAUpL,YAAYqe,aAAa/c,MAAAA,CAAAA;AAAAA,IACnC;AAED,QAAGyd,iBAAiBC,eAAc;AACjCzf,MAAAA,WAAU6f,cACV7f;AAAAA,MAAAA,WAAUoM,OAAO,CACjBpM;AAAAA,MAAAA,WAAUwS;AACVxS,MAAAA,WAAU8f,YAAAA;AAAAA,IACV;AAED,QAAGJ,cAAc,GAAE;AAClB7T,gBAAUlJ,MAAMod,UAAU;AAAA,IAC5B,OAAM;AACJlU,gBAAUlJ,MAAMod,UAAU;AAAA,IAC1B;AAEDR,qBAAiBG;AAAAA,EAClB;AAEA;ACvQe,SAASxE,SAAOlb;AAE9B,WAASggB,eAAenU,WACvB;AAAA,QAAIoU,OAAO/f,SAASM;AAEpB,WAAMqL,aAAaA,aAAaoU,MAAK;AACpCpU,kBAAYA,UAAUiC;AAAAA,IACtB;AAED,WAAA,CAAA,EAAUmS,QAAQpU;AAAAA,EAClB;AAED,WAASqU,cAAc5e,SAAAA;AACtB,WAAO,EACN6e,GAAI7e,QAAO8e,cAAclgB,SAASmgB,gBAAgBC,aAClDC,GAAIjf,QAAOkf,eAAetgB,SAASmgB,gBAAgBI;EAEpD;AACD,WAASC,OAAOlE,GAAEC,GAAAA;AACjB,WAAOD,EAAE2D,KAAK1D,EAAE0D,KAAK3D,EAAE+D,KAAK9D,EAAE8D;AAAAA,EAC9B;AAED,WAASI,mBAAmB3gB,YAAWsB,SAAAA;AACtC,QAAIsf,UAAUV,cAAc5e,OAC5B;AAAA,QAAIuf;AACJ7gB,IAAAA,WAAU6B,MAAMP,SAAQ,UAAU,WAAA;AACjCqY,mBAAakH,WAAAA;AACbA,oBAAcnH,WAAW,WAAA;AAExB,aAAKsG,eAAehgB,WAAUqE,eAAerE,WAAU8gB,YAAW;AACjE;AAAA,QACA;AACD,YAAIC,UAAUb,cAAc5e,OAG5B;AAAA,YAAA,CAAKof,OAAOE,SAASG,OAAAA,GAAU;AAC9BH,oBAAUG;AACVC,iCAAuBhhB,UAAAA;AAAAA,QACvB;AAAA,MACD,GAAE,GAAA;AAAA,IACN;EACE;AAED,WAASghB,uBAAuBhhB,YAAAA;AAC/B,QAAGA,WAAU8gB,cAAAA,CAAe9gB,WAAUihB,SAAUjB,CAAAA,eAAehgB,WAAUihB,KAAO,GAAA;AAC/E;AAAA,IACA;AACD,QAAIjhB,WAAUiL,UAAU,qBAAqB,CAAK,CAAA,GAAA;AACjDjL,MAAAA,WAAUiB,WACVjB;AAAAA,MAAAA,WAAUiL,UAAU,0BAA0B;IAC9C;AAAA,EACD;AAED,WAASiW,gBAAgBlhB,YAAAA;AACxB,QAAIuf,iBAAiBvf,WAAUihB,MAAME;AACrC,QAAIC,gBAAgBphB,WAAUihB,MAAMI;AAEpC,aAASC;AACR,UAAGthB,WAAU8gB,YAAW;AACvB;AAAA,MACA;AAED,UAAG9gB,WAAUihB,OAAM;AAClB,YAAIjhB,WAAUihB,MAAME,gBAAgB5B,kBACnCvf,WAAUihB,MAAMI,eAAeD,eAAc;AAC7CJ,iCAAuBhhB;QACvB;AAEDuf,yBAAiBvf,WAAUihB,MAAME;AACjCC,wBAAgBphB,WAAUihB,MAAMI;AAAAA,MAChC;AAED3H,iBAAW4H,uBAAuB,GAAA;AAAA,IAClC;AAEDA,0BAAAA;AAAAA,EACA;AAED,WAASC,kBAAkBvhB;AAC1B,QAAIigB,OAAOjgB,WAAUqE;AACrB,QAAImd,kBAAkBlgB,OAAOmgB,iBAAiBxB,IAC9C;AAAA,QAAGuB,gBAAgBE,iBAAiB,UAAA,KAAe,UAAS;AAC3DzB,WAAKtd,MAAM2K,WAAW;AAAA,IACtB;AAED,QAAIqU,gBAAgBzhB,SAASC,cAAc;AAC3CwhB,kBAAczQ,YAAY;AAC1ByQ,kBAAcC;AACd,QAAG5hB,WAAU+B,OAAO8f,qBAAoB;AACvCF,oBAAcxE,aAAa,QAAQ,MAAA;AACnCwE,oBAAcxE,aAAa,eAAe;IAC1C;AAGD,QAAI2E,2BAA2BxgB,OAAO,MAAA,KAAA,CAAA,CAAaA,OAAO,IAAA,KAASA,OAAO,MAC1E;AAAA,QAAGwgB,wBAAuB;AACzBZ,sBAAgBlhB;IACnB,OAAS;AACNigB,WAAKxf,YAAYkhB;AACjB,UAAIA,cAAcI,eAAe;AAChCpB,2BAAmB3gB,YAAW2hB,cAAcI,aAAAA;AAAAA,MAChD,OAAU;AAEN9B,aAAKlS,YAAY4T,aAAAA;AACjBhB,2BAAmB3gB,YAAWsB,MAAAA;AAAAA,MAC9B;AAAA,IACD;AAAA,EACD;AAEDigB,oBAAkBvhB,UAAAA;AAEnB;AC/GA,MAAMgiB,UAAAA;AAAAA,EACL,cACC3hB;AAAAA,SAAK4hB,eAAe;AACpB5hB,SAAK6hB,YAAY;EACjB;AAAA,EACD;AACC7hB,SAAK4hB,eAAe;AAAA,EACpB;AAAA,EACD,aACC5hB;AAAAA,SAAK4hB,eAAe;AAAA,EACpB;AAAA;AAGF,MAAME,qBAAqB,SAASliB;AACnC,MAAImiB,WAAW,CAAA;AACf,MAAIzS,QAAQ;AACZ,QAAM0S,eAAe,WAAA;AACpB,QAAIC,iBAAiB;AACrB,eAAU9d,KAAK4d,UAAS;AACvB,YAAMG,gBAAgBH,SAAS5d,GAAGiK,MAAMxO,KAAKqU,SAC7CgO;AAAAA,uBAAeA,kBAAkBC;AAAAA,IACjC;AACD,WAAOD;AAAAA,EACT;AACCD,eAAa7a,WAAS,SAAS0W,SAASva,UAAAA;AACvC,eAAY,WAAY,YAAW;AAClC,UAAI6e;AACJ,UAAG7e,YAAYA,SAASvD,IAAG;AAC1BoiB,oBAAY7e,SAASvD;AAAAA,MACzB,OAAQ;AACJoiB,oBAAY7S;AACZA;AAAAA,MACA;AAED,UAAGhM,YAAYA,SAAS8e,MAAK;AAC5B,cAAMC,kBAAkBxE;AACxBA,kBAAU,WAAA;AACTwE,0BACAL;AAAAA,uBAAaM,YAAYH,SAC9B;AAAA,QAAA;AAAA,MACI;AAEDJ,eAASI,SAAAA,IAAatE;AACtB,aAAOsE;AAAAA,IACP;AACD,WAAO;AAAA,EACT;AACCH,eAAaM,cAAY,SAASviB,KAAAA;AAAAA,WAC1BgiB,SAAShiB,GAClB;AAAA,EAAA;AAECiiB,eAAaO,QAAQ;AACpBR,eAAW,CAAA;AAAA,EACb;AAEC,SAAOC;AACR;AAEA,SAASQ,cAAc5iB,KAAAA;AAEtB,QAAM6iB,YAAY,IAAId;AACtB/hB,MAAIgG,cAAY,SAAS8c,WAAW7E,SAASva,UAC5Cof;AAAAA,gBAAY,QAAMA,UAAUC,YAAAA;AAC5B,SAAKF,UAAUZ,UAAUa,YAAW;AACnCD,gBAAUZ,UAAUa,SAAAA,IAAaZ,mBAAmB9hB,IACpD;AAAA,IAAA;AAED,QAAGsD,YAAYA,SAASsf,YAAW;AAClC/E,gBAAUA,QAAQgF,KAAKvf,SAASsf,UAChC;AAAA,IAAA;AAED,UAAME,UAAUL,UAAUZ,UAAUa,SAAWvb,EAAAA,SAAS0W,SAASva,QAAAA;AAEjE,QAAI6e,YAAaO,YAAU,MAAII;AAC/B,QAAGxf,YAAYA,SAASvD,IAAG;AAC1BoiB,kBAAY7e,SAASvD;AAAAA,IACrB;AACD,WAAOoiB;AAAAA,EACT;AAECviB,MAAImjB,YAAY,SAAS9b,UACxBjH;AAAAA,SAAK4F,YAAY,cAAcqB,QAAAA;AAAAA,EACjC;AAECrH,MAAIgL,YAAU,SAASwP,MAAM4I,gBAAAA;AAC5B,QAAIP,UAAUb;AAAc,aAAO;AAEnC,UAAMqB,cAAc,QAAM7I,KAAKuI,YAE/B;AAAA,UAAMd,YAAYY,UAAUZ;AAC5B,QAAIA,UAAU,kBAAiB;AAC9BA,gBAAU,iBAAiBzT,MAAMpO,MAAM,CAACoa,IAAAA,EAAMhP,OAAO4X,cACrD,CAAA;AAAA,IAAA;AAED,QAAInB,UAAUoB,WAAAA;AACb,aAAOpB,UAAUoB,WAAAA,EAAa7U,MAAMpO,MAAMgjB;AAC3C,WAAO;AAAA,EACT;AAECpjB,MAAI+K,aAAW,SAASyP,MACvB;AAAA,UAAMyH,YAAYY,UAAUZ;AAC5B,WAAUA,CAAAA,CAAAA,UAAU,QAAMzH,KAAKuI,YAAAA,CAAAA;AAAAA,EACjC;AAEC/iB,MAAIsjB,cAAY,SAASnjB,KAAAA;AACxB,QAAIA,KAAG;AACN,UAAI8hB,YAAYY,UAAUZ;AAC1B,iBAAU1d,KAAK0d,WAAU;AACxBA,kBAAU1d,CAAAA,EAAGme,YAAYviB,GACzB;AAAA,MAAA;AAED,YAAMojB,OAAOpjB,IAAGuF,MAAM,GAAA;AACtBuc,kBAAYY,UAAUZ;AACtB,UAAGsB,KAAK/e,WAAW,GAAE;AACpB,cAAMse,YAAYS,KAAK;AACvB,cAAMC,UAAUD,KAAK,CACrB;AAAA,YAAGtB,UAAUa,SAAW,GAAA;AACvBb,oBAAUa,SAAAA,EAAWJ,YAAYc,OACjC;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACH;AACCxjB,MAAIyjB,kBAAkB,WAAA;AACrB,eAAWjJ,QAAQqI,UAAUZ,WAAW;AACvCY,gBAAUZ,UAAUzH,MAAMmI,MAC1B;AAAA,IAAA;AAAA,EACH;AAEA;AC1He,SAAS1H,SAAOlb,YAAAA;AAE/B2jB,gBAAU3jB,UAEV4jB;AAAAA,WAAQ5jB;AAERA,EAAAA,WAAU6jB,kBAAkB,SAASC,KAAIjiB,QAAOqc,SAC/C;AAAA,QAAI4F,IAAGC,qBAAoB;AAC1BD,MAAAA,IAAGC,oBAAoBliB,QAAOqc,SAAS,KAAA;AAAA,IAEzC,WAAW4F,IAAGP,aAAY;AACxBO,MAAAA,IAAGP,YAAY,OAAK1hB,QAAOqc,OAC3B;AAAA,IAAA;AAAA,EACF;AAGAle,EAAAA,WAAUgkB,aAAa;AACtBC,aAA0BjkB,UAAAA;AAE1BA,IAAAA,WAAUgkB,aAAa,WAAA;AAAA;EACxB;AAEA,QAAM1hB,SAAS,EACd4hB,QAAU,EACTzc,QAAQ,SAAU1F,QACjB;AAAA,WAAO/B,WAAUmf,cAAcpd;EAC/B,EAEFoiB,GAAAA,QAAU,EACT1c,QAAQ,SAAU1F;AACjB,UAAMgE,UAAU7F,SAASC,cAAc;AACvC4F,YAAQmL,YAAY;AACpB,WAAOnL;AAAAA,EACP,KAEFqe,UAAY,EACX3c,QAAQ,SAAU1F;AACjB,UAAMgE,UAAU7F,SAASC,cAAc,KAAA;AACvC4F,YAAQmL,YAAY;AACpB,WAAOnL;AAAAA,EACP,KAEFqY,cAAgB,EACf3W,QAAQ,SAAU1F,QAAAA;AACjB,WAAOA,OAAOwB;AAAAA,EACd,EAIH,EAAA;AAAA,WAAS8gB,mBAAmBte,SAC3B;AAAA,WAAA,CAAA,EACCA,QAAQsZ,cAAc,iBAAA,KACtBtZ,QAAQsZ,cAAc,eAAA,KACtBtZ,QAAQsZ,cAAc;EAExB;AAEA,WAASiF,oBAAoBtkB,YAAAA;AAC5B,UAAMukB,QAAQ,CACb,OACA,QACA;AAED,UAAM/gB,OAAO,CACZ,MAED;AAAA,UAAMghB,MAAM,CACX,QACA,SACA,MAAA;AAGD,QAAGxkB,WAAU4L,QAAO;AACnB,iBAAUpH,KAAKxE,WAAU4L,QAAO;AAC/B2Y,cAAMrgB,KAAKM,CACX;AAAA,MAAA;AAAA,IACD;AACD,QAAGxE,WAAU2L,QAAO;AACnB,iBAAUnH,KAAKxE,WAAU2L,QAAO;AAC/B4Y,cAAMrgB,KAAKM,CAAAA;AAAAA,MACX;AAAA,IACD;AAED,QAAGxE,WAAUykB,SAASzkB,WAAUykB,MAAMC,OAAM;AAC3C,iBAAUlgB,KAAKxE,WAAUykB,MAAMC,OAAM;AACpCH,cAAMrgB,KAAKM,CAAAA;AAAAA,MACX;AAAA,IACD;AAED,UAAMmgB,gBAAgB,CACrB,OACA,UACA,eACA;AAGDA,kBAAc3gB,QAAQ,SAAS7B,UAC9B;AAAA,UAAGnC,WAAUmC,WAAW,OAAA,GAAS;AAChCoiB,cAAMrgB,KAAK/B,QACX;AAAA,MAAA;AAAA,IACH;AAEC,WAAOoiB,MAAM9Y,OAAOjI,IAAMiI,EAAAA,OAAO+Y,GAClC;AAAA,EAAA;AAEAxkB,EAAAA,WAAUmB,OAAK,SAASf,KAAGoD,MAAK1D,MAAAA;AAC/B,QAAGO,KAAKygB,YAAW;AAClB;AAAA,IACA;AACDtd,WAAKA,QAAOxD,WAAUsM,aACtBxM;AAAAA,WAAKA,QAAM;AAEX,QAAGO,KAAKukB,MAAK;AACZvkB,WAAKwf,cAAAA;AAAAA,IACL;AAEDxf,SAAKukB,OAAAA,OAAaxkB,OAAM,WAAUF,SAAS2kB,eAAezkB,GAAAA,IAAIA;AAC9DC,SAAKgE,aAAahE,KAAKukB;AACvBvkB,SAAK4gB,QAAQ5gB,KAAKukB;AAElB,QAAIvkB,CAAAA,KAAKgE,WAAW8c,gBAAgB9gB,KAAKgE,WAAWgd,eAAehhB,KAAKgE,WAAW1B,MAAMwO,WAAW,QAAO;AAE1G7P,aAAOsV,QAAQC,MAAM7W,WAAU2b,qBAAqBI,mBAAAA,GAAsB1b,KAAKgE,UAC/E;AAAA,IAAA;AAED,QAAGhE,KAAK0B,OAAO8f,uBAAuBxhB,KAAK0B,OAAO+iB,2BAA0B;AAC3EzkB,WAAKgE,WAAW8Y,aAAa,QAAQ,aAAA;AAAA,IACrC;AAED,QAAI9c,CAAAA,KAAK0B,OAAOoiB,UAAWE,CAAAA,mBAAmBhkB,KAAKgE,UAAY,GAAA;AAG9DhE,WAAK0B,OAAOoiB,SAASG,oBAAoBjkB,IAAAA;AACzCiB,aAAOsV,QAAQqE,IAAI,CAClB,oHACA,0CACA,+BAA+B8J,KAAKC,UAAU3kB,KAAK0B,OAAOoiB,QAAQ,MAAM,CAAA,GACxE,6FACChU,KAAK,IAAA,CAAA;AAAA,IACP;AAED,QAAI9P,KAAK0B,OAAOoiB,QAAQ;AACvB9jB,WAAKgE,WAAW9D,YAAY;AAC5BF,WAAKgE,WAAW0Y,UAAUtZ,IAAI,mBAC9B;AAAA,UAAGpD,KAAK0B,OAAOoiB,OAAOhT,QAAO;AAC5B9Q,aAAKsf,GAAGC,aAAavf,KAAK0B,OAAOoiB,OAAOhT;AAAAA,MACxC;AACD9Q,WAAKgE,WAAW5D,YAAY6B,OAAO4hB,OAAOzc,OAAOpH,KAAK0B,OAAOoiB,MAAAA,CAAAA;AAC7D9jB,WAAKgE,WAAW5D,YAAY6B,OAAO6hB,OAAO1c,OAAAA,CAAAA;AAC1CpH,WAAKgE,WAAW5D,YAAY6B,OAAO8hB,SAAS3c;IAC9C,OAAQ;AAEN,WAAI4c,mBAAmBhkB,KAAKgE,UAAY,GAAA;AACvC,cAAM,IAAIiO,MAAM,CACf,mEACA,+IACA,oLACCnC,KAAK,IAAA,CAAA;AAAA,MACP;AAAA,IACD;AAED,QAAI9P,KAAK0B,OAAOkjB;AAAK5kB,WAAKgE,WAAW6M,aAAa;AAGlD,QAAI7Q,KAAK6kB;AACRllB,MAAAA,WAAUklB,WAEXllB;AAAAA,IAAAA,WAAUwD,KAAKrC,KAEfd;AAAAA,SAAK8kB,UAAQ;AAEb9kB,SAAK+L,OAAK,CAAA;AACV/L,SAAKmS,aACLnS;AAAAA,SAAK+kB;AACL/kB,SAAKyf,YAAAA;AAELzf,SAAK2jB,WACL3jB;AAAAA,SAAKglB,mBAELhlB;AAAAA,SAAKilB;AACLtlB,IAAAA,WAAUiL,UAAU,oBAAoB,CACxCjL,CAAAA;AAAAA,IAAAA,WAAUulB,eAAe;AACzBllB,SAAKyX,eAAetU,MAAK1D;EAE1B;AAEAE,EAAAA,WAAU2f,KAAG,EACZ6F,kBAAiB,IACjBC,YAAY,IACZC,aAAY,IACZC,cAAa,IACbC,cAAa,IACbC,oBAAmB,IACnBC,YAAW,IACXC,YAAW,GACXC,aAAY,GACZC,cAAa,KACbC,mBAAkB,IAClBC,qBAAqB;AAEtBnmB,EAAAA,WAAUomB,OAAK,EACdC,WAAU,IACVC,aAAY,GAAA;AAGbtmB,EAAAA,WAAUkjB,OAAO,SAASA,KAAKqD,SAASrM,QAAAA;AACvC,QAAGqM,QAAQrD;AACV,aAAOqD,QAAQrD,KAAKhJ,MAEpB;AAAA;AAAA,aAAO;AAAY,eAAOqM,QAAQ9X,MAAMyL,QAAO5F;;EACjD;AAEAtU,EAAAA,WAAUslB,YAAU,WAAA;AAEnB,QAAInF,IAAI9f,KAAKmmB,KAAKnmB,KAAKukB,KAAKtE,cAAYjgB,KAAKsf,GAAGqG;AAGhD,QAAIS,UAAQpmB,KAAK2M,cAAY,IAAG3M,KAAKsf,GAAG+F,cAAYrlB,KAAKsf,GAAGgG;AAE5D,QAAIe,2BAA2BrmB,KAAKgE,WAAWgb,cAAc,4BAAA;AAC7D,QAAGrf,WAAU2mB,kBAAAA,GAAoB;AAChC,UAAID,CAAAA,0BAA0B;AAC7BA,mCAA2BxmB,SAASC,cAAc,KAAA;AAClDumB,iCAAyBxV,YAAY;AACrC7Q,aAAKgE,WAAWuiB,aAAaF,0BAA0BrmB,KAAK+L,KAAK,gBAAkB,EAAA,CAAA,CAAA;AAAA,MACnF;AACDsa,+BAAyB/jB,MAAMod,UAAU;AAEzC1f,WAAKwmB,OAAOH,0BAAyBvG,GAAE9f,KAAKsf,GAAGiG,eAAe,GAAE,GAAGvlB,KAAK+L,KAAK,gBAAA,EAAkB,GAAG0a,SAEpG;AAAA,IAAA,OAAM;AACJ,UAAGJ,0BAAyB;AAC3BA,iCAAyB5Y,WAAWC,YAAY2Y,wBAAAA;AAAAA,MAChD;AAAA,IACD;AAED,QAAIrmB,KAAK0mB,WAAW;AACnB,UAAI/mB,WAAUqE,WAAWgd,cAAe;AAAA;AAAA,WACjC;AACNhhB,aAAK2mB,eAAe9mB,SAASmf,cAAc;MAC3C;AAAA,IACD;AAEDhf,SAAK4mB,cAAc9G,IAAEsG;AAErBpmB,SAAK+L,KAAK,iBAAmB,EAAA,CAAA,EAAGzJ,MAAMyO,QAAQ+O,IAAI;AAClD,UAAMgE,SAAS9jB,KAAK+L,KAAK,gBAAA,EAAkB,CAC3C/L;AAAAA,SAAKwmB,OAAO1C,QAAQ9jB,KAAK4mB,aAAa5mB,KAAKsf,GAAGiG;AAE9CzB,WAAOxhB,MAAME,OAAO;AACpBshB,WAAOxhB,MAAMukB,QAAQ;AACrB,QAAI7mB,CAAAA,KAAK2M,aAAY;AACpB,UAAG3M,KAAK0B,OAAOkjB,KAAI;AAClBd,eAAOxhB,MAAMukB,QAAQ,GAAG7mB,KAAKsf,GAAG+F,WAAAA;AAAAA,MACnC,OAAO;AACJvB,eAAOxhB,MAAME,OAAO,GAAGxC,KAAKsf,GAAG+F;MAC/B;AAAA,IACH,OAAQ;AACN,UAAA,CAAIrlB,KAAK0B,OAAOkjB,KAAI;AACnBd,eAAOxhB,MAAME,OAAO;AAAA,MACvB,OAAS;AACNshB,eAAOxhB,MAAMukB,QAAQ;AAAA,MACrB;AAAA,IACD;AAAA,EACF;AACAlnB,EAAAA,WAAU6mB,SAAO,SAASM,MAAKhH,GAAEI,GAAE6G,GAAEC,GAAAA;AACpC,aAASC,aAAaC,KAAAA;AACrB,UAAIC,WAAWD;AACf,UAAIE,CAAAA,MAAMtN,OAAOqN,QAAW,CAAA,GAAA;AAC3BA,mBAAWhW,KAAK5C,IAAI,GAAE4Y,QAAY,IAAA;AAAA,MAClC;AACD,aAAOA;AAAAA,IACP;AAED,QAAIE,YAAY;AAEhB,QAAGvH,MAAMzR,QAAW;AACnByY,WAAKxkB,MAAMyO,QAAQkW,aAAanH,CAAAA;AAAAA,IAChC;AAED,QAAGI,MAAM7R,QAAU;AAClByY,WAAKxkB,MAAMwO,SAASmW,aAAa/G,CACjC;AAAA,IAAA;AAED,QAAIjM,UAAU7P,SAAO,GAAE;AAEtB,UAAG2iB,MAAM1Y,QAAU;AAClB,YAAIrO,KAAK0B,OAAOkjB;AAAKyC,sBAAY;AACjCP,aAAKxkB,MAAM+kB,SAAWN,IAAAA,IAAE;AAAA,MACxB;AACD,UAAGC,MAAM3Y,QAAU;AAClByY,aAAKxkB,MAAMC,MAAIykB,IAAE;AAAA,MACjB;AAAA,IACD;AAAA,EACF;AACArnB,EAAAA,WAAUwS,eAAa,WAAA;AAEtB,UAAM7E,MAAItN,KAAKukB,KAAK+C,qBAAqB;AACzC,aAASnjB,IAAE,GAAGA,IAAImJ,IAAIlJ,QAAQD,KAAI;AACjC,UAAIojB,aAAY5nB,WAAUmS,cAAcxE,IAAInJ,CAC5C,CAAA;AAAA,YAAMqjB,aAAala,IAAInJ,CAAAA,EAAGM,aAAa,UAAA,KAAe6I,IAAInJ,CAAGM,EAAAA,aAAa,WAAW;AACrF,UAAI8iB;AAAYA,qBAAaA,WAAWjiB,MAAM,GAAA,EAAK;AACnD,UAAKtF,CAAAA,KAAK+L,KAAKwb,UAAavnB;AAAAA,aAAK+L,KAAKwb,UAAY,IAAA,CAAA;AAClDvnB,WAAK+L,KAAKwb,YAAY1jB,KAAKyJ,IAAInJ;AAI/B,UAAIsjB,QAAQ9nB,WAAU+nB,OAAOC,OAAOH,aAAW,MAAA,KAAW7nB,WAAU+nB,OAAOC,OAAOH,cAAYD,UAAAA;AAC9F,iBAAWE,UAAU,YAAYD,cAAela,CAAAA,IAAInJ,GAAGjE;AACtDunB,gBAAQD,WAAWliB,MAAM,GAAA,EAAK;AAC/B,UAAImiB,OAAO;AACVznB,aAAK4nB,SAASC,UAAUva,IAAInJ,IAAIsjB,KAChCna;AAAAA,YAAInJ,GAAGjE,YAAYunB;AAAAA,MACnB;AAAA,IACD;AAAA,EACF;AAGA,QAAMK,iBAAiBnoB,WAAUooB,qBAEjCpoB;AAAAA,EAAAA,WAAU6f,gBAAgB,WACzBsI;AAAAA,mBAAeE,UAChB;AAAA,EAAA;AAEAroB,EAAAA,WAAU8f,cAAY,WAAA;AACrB,eAAWtD,KAAKnc,KAAK+L,MAAK;AACzB,UAAI/L,KAAKioB,OAAO9L,CAAG,GAAA;AAClB,iBAAShY,IAAE,GAAGA,IAAInE,KAAK+L,KAAKoQ,CAAAA,EAAG/X,QAAQD,KAAI;AAC1C,gBAAMuB,UAAU1F,KAAK+L,KAAKoQ,CAAGhY,EAAAA,CAAAA;AAC7B,gBAAM0Z,UAAU7d,KAAKioB,OAAO9L,CAAAA,EAAG0G,KAAKnd,OACpCoiB;AAAAA,yBAAeI,OAAOxiB,SAAS,SAASmY,OACxC;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAEDiK,mBAAeI,OAAOloB,KAAKukB,MAAM,eAAe,SAAS1e,GAAAA;AACxDA,QAAEsiB,eAAAA;AACF,aAAO;AAAA,IACT,CAAA;AAECL,mBAAeI,OAAOloB,KAAKukB,MAAM,aAAa,SAAS1e,GACtD;AAAA,UAAA,CAAKlG,WAAUyoB;AACdzoB,QAAAA,WAAU0oB,eAAexiB,CAC5B;AAAA,IAAA,CAAA;AACCiiB,mBAAeI,OAAOloB,KAAKukB,MAAM,aAAa,SAAS1e,GACtD;AAAA,UAAA,CAAKlG,WAAU2oB;AACd3oB,QAAAA,WAAU4oB,eAAe1iB,CAC5B;AAAA,IAAA,CAAA;AACCiiB,mBAAeI,OAAOloB,KAAKukB,MAAM,WAAW,SAAS1e,GACpD;AAAA,UAAA,CAAKlG,WAAU2oB;AACd3oB,QAAAA,WAAU6oB,aAAa3iB,CAAAA;AAAAA,IAC1B;AACCiiB,mBAAeI,OAAOloB,KAAKukB,MAAM,YAAY,SAAS1e,GACrDlG;AAAAA,MAAAA,WAAU8oB,cAAc5iB,CAAAA;AAAAA,IAC1B;AACCiiB,mBAAeI,OAAOloB,KAAKukB,MAAM,eAAe,SAAS/iB,QACxD;AAAA,UAAG7B,WAAUgL,WAAW,kBAAiB;AAExCnJ,QAAAA,OAAM2mB;MACN;AAED,YAAMO,cAAc/oB,WAAUiL,UAAU,iBAAiB,CAACjL,WAAUgpB,cAAcnnB,OAAMuE,SAASvE,MACjG,CAAA;AAAA,aAAOknB;AAAAA,IACT,CACA;AAAA,EAAA;AACA/oB,EAAAA,WAAUipB,SAAO,SAAS7oB,KACzB;AAAA,QAAIC,KAAK6oB,cAAY9oB;AAAI;AACzBJ,IAAAA,WAAUmpB,iBAAAA;AACV9oB,SAAK+oB,SAAS;AACd,QAAG/oB,KAAK6oB,YAAW;AAClB7oB,WAAKmG;IACL;AACDnG,SAAK6oB,aAAa9oB;AAClBC,SAAK4X,YAAY7X,GAAAA;AACjBC,SAAK4K,UAAU,mBAAmB,CAAC7K,GACpC,CAAA;AAAA,EAAA;AACAJ,EAAAA,WAAUwG,WAAS,SAASpG,KAC3B;AAAA,QAAIA,OAAMA,OAAIC,KAAK6oB,YAAY;AAC9B;AAAA,IACA;AACD,UAAMG,oBAAoBhpB,KAAK6oB;AAC/B7oB,SAAK6oB,aAAa;AAClB,QAAIG,qBAAqBhpB,KAAK8F,SAASkjB,iBAAAA,GAAoB;AAC1DhpB,WAAK4X,YAAYoR;IACjB;AACDhpB,SAAK4K,UAAU,qBAAqB,CAACoe,iBACtC,CAAA;AAAA,EAAA;AACArpB,EAAAA,WAAU8W,eAAeC,iBAAiB,WAAU,WACnD;AAAA,WAAO,EACNjX,MAAMO,KAAK4M,OACXzJ,MAAM,IAAIqB,KAAKxE,KAAK6U,QACpB1E,UAAU,IAAI3L,KAAKxE,KAAKoM,SAAAA,GACxBgE,UAAU,IAAI5L,KAAKxE,KAAKmM,SAAAA,GACxB8c,WAAWjpB,KAAKkpB,UAChBC,aAAanpB,KAAKopB,cAClBxiB,WAAW5G,KAAKqpB,YAChBC,WAAWtpB,KAAK6oB,YAChBU,UAAUvpB,KAAKupB,UACfC,SAASxpB,KAAKuK,UACdkf,WAAWzpB,KAAKwK,WAEjB;AAAA,EAAA,GAAEqY,KAAKljB,UAERA,CAAAA;AAAAA,EAAAA,WAAUsoB,SAAO,EAChByB,cAAa,SAAS7jB,GAAAA;AAErB,QAAIlG,WAAU2oB,oBAAmB;AAChC,UAAIziB,EAAEsiB;AACLtiB,UAAEsiB,eAAAA;AACHtiB,QAAE8jB,eAAe;AACjBhqB,MAAAA,WAAU2oB,qBAAqB;AAC/B,aAAO;AAAA,IACP;AAGD,UAAMvoB,MAAKJ,WAAUgpB,cAAc9iB,EAAEE,MAErC;AAAA,QAAA,CAAKhG,KAAI;AACRJ,MAAAA,WAAUiL,UAAU,gBAAe,CAACjL,WAAUyG,cAAcP,GAAG1C,MAAM0C,CAAAA,CAAAA;AAAAA,IACxE,OAAS;AACN,UAAA,CAAMlG,WAAUiL,UAAU,WAAU,CAAC7K,KAAG8F,OAAOlG,WAAU+B,OAAOkoB;AAAW;AAAA,IAC3E;AAED,QAAI7pB,OAAMJ,WAAU+B,OAAOknB,QAAQ;AAElCjpB,MAAAA,WAAUipB,OAAO7oB;AACjB,YAAM8pB,OAAOhkB,EAAEE,OAAOC,QAAQ,gBAE9B;AAAA,YAAM8jB,OAAOnqB,WAAUmS,cAAc+X;AACrC,UAAIC,KAAK/X,QAAQ,OAAW,KAAA;AAC3BpS,QAAAA,WAAUsoB,OAAO8B,QAAQD,KAAKxkB,MAAM,KAAK,CAAG0kB,EAAAA,QAAQ,SAAQ,EAAKjqB,CAAAA,EAAAA,GAAAA;AAAAA,IACrE,OAAQ;AACLJ,MAAAA,WAAUmpB,iBACV;AAAA,UAAInpB,WAAUsG,SAAWqjB,EAAAA,cAAa,oBAAI9kB,QAAOO,QAAAA,KAAWpF,WAAU0pB,cAAY,KAAK,KAAI;AAC1F1pB,QAAAA,WAAUwG,SACV;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GACD8jB,qBAAoB,WACnBtqB;AAAAA,IAAAA,WAAUsoB,OAAOiC,oBAAoB,GAAA;EACrC,GACDA,qBAAoB,SAASC,OAAMC,MAAAA;AAClC,QAAIC,WAAW;AACf,QAAI1qB,WAAU+B,OAAOkjB,KAAI;AACxBwF,cAAQA;AACRC,iBAAAA,CAAYA;AAAAA,IACZ;AACD1qB,IAAAA,WAAU8X,eAAe9X,WAAUwD,KAAKC,IACvCzD,WAAUwD,KAAKxD,WAAUiN,QAAM,QAAU,EAAA,IAAIpI,KAAK7E,WAAUkV,KAAAA,CAAAA,GAASuV,QAAMC,UAAU1qB,WAAUiN;EAChG,GACD0d,sBAAqB,WACpB;AAAA,QAAI3qB,WAAUiL,UAAU,0BAA0B,KAAK;AACtDjL,MAAAA,WAAU8X,eAAe9X,WAAUsM,aAAAA,CAAAA;AAAAA,IACnC;AAAA,EACD,GACDse,aAAY,WACX;AAAA,UAAMnQ,OAAOpa,KAAKyE,aAAa;AAC/B,UAAM+lB,kBAAkBxqB,KAAKyE,aAAa;AAC1C,UAAMhF,OAAO2a,QAAQoQ,gBAAgBC,UAAU,GAAGD,gBAAgBE,OAAO,MACzE/qB,CAAAA;AAAAA,IAAAA,WAAU8X,eAAe9X,WAAUkV,OAAMpV;EACzC,GACDsqB,SAAQ,EACPY,QAAS,SAAS5qB,KACjB;AAAA,UAAM2J,IAAI/J,WAAU+nB,OAAOC,OAAOiD;AAClCjrB,IAAAA,WAAUkrB,gBAAgB,EAAChkB,SAAS6C,GAAGohB,OAAOnrB,WAAU+nB,OAAOC,OAAOoD,wBAAwB9jB,UAAS,WAAA;AAAYtH,MAAAA,WAAUqrB,YAAYjrB,GAAAA;AAAAA,IAAM,GAC/I2B,QAAQ,EAACupB,IAAItrB,WAAU+nB,OAAOC,OAAOuD,YAAAA,EAAAA,CAAAA;AAAAA,EAErC,GACDC,MAAK,SAASprB,KAAKJ;AAAAA,IAAAA,WAAUwrB,KAAKprB,GAAM;AAAA,EAAA,GACxCqrB,MAAK,SAASrrB,KAAAA;AAAKJ,IAAAA,WAAUopB,SAAS,IAAA;AAAA,EAAQ,GAC9CsC,SAAQ,SAAStrB,KAAKJ;AAAAA,IAAAA,WAAU2rB,aAAavrB,GAAM;AAAA,EAAA,GACnDwrB,MAAK,SAASxrB,KAAAA;AAAKJ,IAAAA,WAAU2rB,aAAavrB;EAAM,GAChDyrB,QAAO,SAASzrB,KAAKJ;AAAAA,IAAAA,WAAUopB,SAAS,KAAS;AAAA,EAAA,EAAA,EAAA;AAGnDppB,EAAAA,WAAUkrB,kBAAkB,WAAShkB,SAACA,UAAOikB,OAAO7jB,UAAUvF,OAAEA,GAAAA;AAC/D,QAAKmF,CAAAA;AACJ,aAAOI,SAERvF;AAAAA,aAASA,UAAU;AACnB,UAAM+pB,OAAO,EAAA,GAAK/pB,QAAQoF,MAAMD;AAChC,QAAIikB,OAAO;AACVW,WAAKX,QAAQA;AAAAA,IACb;AACD,QAAI7jB,UAAU;AACbwkB,WAAKxkB,WAAW,SAASgS;AACxB,YAAIA,QAAQ;AACXhS,mBACA;AAAA,QAAA;AAAA,MACJ;AAAA,IACE;AACDtH,IAAAA,WAAU+rB,QAAQD,IAAAA;AAAAA,EACnB;AACA9rB,EAAAA,WAAU+V,cAAY,SAASnG,OAAMC,KAAI3J,GACxC;AAAA,QAAI8lB,OAAO,CAAA;AACX,QAAIhsB,WAAUisB,UAAUrc,WAAW5P,WAAUksB,QAAQtc,KAAO,GAAA;AAC3Doc,aAAOpc;AACPA,cAAQ;AAAA,IACR;AAED,UAAMuc,YAAY9rB,KAAK0B,OAAOqqB,kBAAgB/rB,KAAK0B,OAAOsqB,aAAW;AACrE,SAAKzc;AAAOA,cAAQoc,KAAK5oB,cAAYoO,KAAKI,MAAO5R,WAAUsM,eAAgBlH,QAAU+mB,IAAAA,QAAAA,IAAUA;AAC/F,QAAI/oB,aAAa,IAAIyB,KAAK+K,KAAAA;AAC1B,QAAKC,CAAAA,KAAI;AACR,UAAIyc,aAAajsB,KAAK0B,OAAO4K;AAC7B,UAAI2f,aAAalpB,WAAWsJ,SAAW,GAAA;AACtCtJ,mBAAW0H,SAASwhB,UAAAA;AACpB1c,gBAAQxM,WAAWgC,QAAAA;AAAAA,MACnB;AACDyK,YAAMD,MAAMxK,QAAU+mB,IAAAA;AAAAA,IACtB;AACD,QAAI9oB,WAAW,IAAIwB,KAAKgL,GAAAA;AAGxB,QAAGzM,WAAWgC,QAAAA,KAAa/B,SAAS+B,QAAAA;AACnC/B,eAASkpB,QAAQlpB,SAAS+B,QAAU+mB,IAAAA,QAAAA;AACrCH,SAAK5oB,aAAa4oB,KAAK5oB,cAAYA;AACnC4oB,SAAK3oB,WAAY2oB,KAAK3oB,YAAUA;AAChC2oB,SAAK7kB,OAAO6kB,KAAK7kB,QAAM9G,KAAK0nB,OAAOC,OAAO/gB;AAC1C+kB,SAAK5rB,KAAKC,KAAKuK,WAAWohB,KAAK5rB,MAAMC,KAAK0O,IAC1C1O;AAAAA,SAAKwK,aAAW;AAChBxK,SAAKmsB,WAAS;AACd,UAAM/I,UAAUpjB,KAAKmH,SAASwkB,IAC9B3rB;AAAAA,SAAK4K,UAAU,kBAAiB,CAAC5K,KAAKuK,UAAS1E,CAAAA,CAAAA;AAC/C7F,SAAKmsB,WAAS;AAEdnsB,SAAKosB,cAAY;AACjBpsB,SAAKwoB,aAAa3iB,CAClB;AAAA,WAAOud;AAAAA,EACR;AACAzjB,EAAAA,WAAU8oB,gBAAc,SAAS5iB,GAAE2P,KAClCA;AAAAA,UAAMA,OAAO3P,EAAEE;AACf,QAAI/F,KAAK0B,OAAOkoB;AAAU;AAC1B,UAAMxP,OAAOza,WAAUmS,cAAc0D,GAAKlQ,EAAAA,MAAM,KAAK,CACrD;AAAA,YAAO8U,MACN;AAAA,MAAA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJ,YAAKza,CAAAA,WAAU+B,OAAO+T;AAAiB;AACvCzV,aAAK0V,YAAY1V,KAAKoG,cAAcP,CAAAA,EAAG1C,MAAK,MAAK0C,CAAAA;AACjD;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,uBAAuB;AAC3B,cAAM9F,MAAKC,KAAK2oB,cAAcnT,GAC9B;AAAA,YAAA,CAAKxV,KAAK4K,UAAU,cAAa,CAAC7K,KAAG8F;AAAK;AAC1C,YAAI7F,KAAK0B,OAAO2qB,uBAAuBrsB,KAAK2M,eAAAA,CAAgB3M,KAAK8F,SAAS/F,GAAAA,EAAIqK,WAAWpK,KAAK0B,OAAOknB;AACpG5oB,eAAKsrB,aAAavrB,GAElBC;AAAAA;AAAAA,eAAKmrB,KAAKprB,GACX;AAAA;AAAA,MACA;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJ;AAAA,MACD,SAAS;AACR,cAAMusB,cAActsB,KAAK,cAAYoa,IACrC;AAAA,YAAIkS,aAAa;AAChBA,sBAAYlW,KAAKpW,MAAK6F;QACtB,OACI;AACJ,cAAI2P,IAAI/H,cAAc+H,OAAOxV;AAC5B,mBAAOL,WAAU8oB,cAAc5iB,GAAE2P,IAAI/H,UAAAA;AAAAA,QACtC;AACD;AAAA,MACA;AAAA,IAAA;AAAA,EAEH;AAEA9N,EAAAA,WAAU4sB,oBAAoB,SAASC,OAAAA;AACtC,QAAIC,SAAS;AACb,QAAIzsB,KAAK0Q,OAAM;AACd,UAAIK,QAAQ;AACZ,UAAI5M,IAAI;AACR,aAAO4M,QAAQ/Q,KAAK0Q,MAAMvM,KAAKqoB,SAASroB,IAAInE,KAAK0Q,MAAMtM,QAAO;AAC7D2M,iBAAS/Q,KAAK0Q,MAAMvM,CAAAA;AACpBA;AAAAA,MACA;AACDsoB,eAAStoB,KAAKnE,KAAK0Q,MAAMvM,CAAOqoB,KAAAA,QAAQzb,SAAQ/Q,KAAK0Q,MAAMvM,KAAM;AAEjE,UAAInE,KAAK2Q,UAAS;AACjB,YAAG8b,UAAUzsB,KAAK0Q,MAAMtM,QAAO;AAC9B,iBAAMqoB,UAAU,KAAKzsB,KAAK2Q,SAASQ,KAAK8D,MAAMwX,UAAS;AACtDA;AAAAA,UACA;AAAA,QACD;AAAA,MAED;AAAA,IACD;AACD,WAAOA;AAAAA,EACR;AAGA9sB,EAAAA,WAAU+sB,yBAAyB,SAASC,KAAAA;AAE3C,SAAI3sB,KAAK0Q,OAAM;AACd,aAAOic;AAAAA,IACT,OAAM;AACJ,YAAMF,SAASzsB,KAAKusB,kBAAkBI,IAAI5F,CAAAA;AAE1C4F,UAAI5F,IAAE5V,KAAK7C,IAAItO,KAAK0Q,MAAMtM,SAAO,GAAG+M,KAAK5C,IAAI,GAAE4C,KAAKyb,KAAKH,UAAQ,CACjEE,CAAAA;AAAAA,UAAI3F,IAAE7V,KAAK5C,IAAI,GAAE4C,KAAKyb,KAAKD,IAAI3F,IAAE,MAAIhnB,KAAK0B,OAAOsqB,YAAUhsB,KAAK0B,OAAO2P,iBAAe,CAAGrR,IAAAA,KAAK0B,OAAO4K,cAAY,KAAGtM,KAAK0B,OAAOsqB;AAChI,aAAOW;AAAAA,IACP;AAAA,EACF;AAEAhtB,EAAAA,WAAUktB,gBAAc,SAASrmB;AAChC,QAAImmB;AACJ,UAAMxsB,OAAON,SAASM;AACtB,UAAM6f,kBAAkBngB,SAASmgB;AACjC,SAAKhgB,KAAK8sB,KAAKC,SAASvmB,GAAGwmB,SAASxmB,GAAGymB;AACtCN,YAAI,EAAC5F,GAAEvgB,GAAGwmB,OAAOhG,GAAExgB,GAAGymB,MAClBN;AAAAA;AAAAA,YAAI,EACR5F,GAAEvgB,GAAG0mB,WAAW/sB,KAAKgtB,cAAYnN,gBAAgBmN,cAAY,KAAKhtB,KAAKitB,YACvEpG,GAAExgB,GAAG6mB,WAAWltB,KAAKmtB,aAAWtN,gBAAgBsN,aAAW,KAAKntB,KAAKotB,UAGtE;AAAA,QAAIvtB,KAAK0B,OAAOkjB,OAAO5kB,KAAKwtB,QAAQ;AACnCb,UAAI5F,IAAI/mB,KAAKgE,WAAWgb,cAAc,iBAAiBgC,cAAc2L,IAAI5F;AACzE4F,UAAI5F,KAAK/mB,KAAKytB,YAAYC,gBAAgB1tB,KAAKukB,IAAAA;AAC/C,UAAIvkB,KAAK4M,UAAU,SAAS;AAC3B+f,YAAI5F,KAAK/mB,KAAKsf,GAAG+F;AAAAA,MACjB;AAAA,IACH,OAAQ;AACNsH,UAAI5F,KAAG/mB,KAAKytB,YAAYC,gBAAgB1tB,KAAKukB,SAAOvkB,KAAK2M,cAAY,IAAE3M,KAAKsf,GAAG+F;AAAAA,IAC/E;AAED,UAAMtB,WAAW/jB,KAAKgE,WAAWgb,cAAc,eAAA;AAE/C2N,QAAI3F,KAAGhnB,KAAKytB,YAAYE,eAAe5J,YAAU/jB,KAAK+L,KAAK,gBAAgB,CAAGuhB,EAAAA;AAC9EX,QAAInmB,KAAKA;AACT,UAAMqX,UAAU7d,KAAK,WAASA,KAAK4M;AACnC,QAAIiR,SAAQ;AACX8O,YAAM9O,QAAQzH,KAAKpW,MAAK2sB;IAC1B,OAAM;AAEJ,WAAK3sB,KAAK2M,aAAa;AACtBggB,cAAM3sB,KAAK0sB,uBAAuBC,GAAAA;AAAAA,MACrC,OAAS;AACN,cAAMF,SAASzsB,KAAKusB,kBAAkBI,IAAI5F,CAC1C;AAAA,YAAA,CAAK/mB,KAAK0Q,SAAAA,CAAU1Q,KAAKwtB;AACxB,iBAAOb;AACR,YAAIiB,KAAG;AACP,aAAKA,KAAG,GAAGA,KAAK5tB,KAAKwtB,OAAOK,QAAQzpB,QAAQwpB;AAC3C,cAAI5tB,KAAKwtB,OAAOK,QAAQD,EAAIjB,IAAAA,IAAI3F;AAAG;AAEpC2F,YAAI3F,IAAE7V,KAAKyb,MAAOzb,KAAK5C,IAAI,GAAGke,MAAQtb,IAAAA,KAAK5C,IAAI,GAAEqf,KAAG,KAAG,KAAG,KAAG,KAAG5tB,KAAK0B,OAAOsqB,SAE5E;AAAA,YAAIrsB,WAAU6K,cAAcxK,KAAK4M,SAAS;AACzC+f,cAAI3F,KAAG7V,KAAK5C,IAAI,GAAE4C,KAAKyb,KAAKH,MAAQ,IAAA,CAAA,IAAGtb,KAAK5C,IAAI,GAAEqf,KAAG,CAAG,IAAA,KAAG,KAAG,KAAG5tB,KAAK0B,OAAOsqB;AAG9E,YAAIhsB,KAAKwK,cAAc,QAAO;AAC7B,cAAI7K,WAAUmuB,qBAAqBnuB,WAAU+B,OAAOqsB,iBAAgB;AACnEpB,gBAAIhc,WAAW;AAEf,gBAAK3Q,CAAAA,KAAKosB,YAAY4B;AACrBhuB,mBAAKosB,YAAY4B,gBAAgBhuB,KAAKiuB,uBAAuBjuB,KAAKosB,YAAYrpB,YAAY/C,KAAKosB,YAAYppB,UAAU,EAAEkrB,QAAO,GAAGC,QAAO,MACzI,CAAA;AAAA,UAAA;AAAA,QACD;AAEDxB,YAAI5F,IAAE;AAAA,MACN;AAAA,IACD;AACD4F,QAAIyB,YAAAA,CAAa,oBAAI5pB;AACrB,WAAOmoB;AAAAA,EACR;AACAhtB,EAAAA,WAAUmpB,mBAAiB,WAAA;AAC1B,SAAI,oBAAItkB,QAAOO,aAAWpF,WAAU0pB,cAAY,KAAK,OAAO1pB,WAAUupB,UAAS;AAC9E,YAAMmF,mBAAiB1uB,WAAU+nB,OAAOC,OAAO2G;AAE/C3uB,MAAAA,WAAUkrB,gBAAgB,EACzBhkB,SAASwnB,kBACTvD,OAAOnrB,WAAU+nB,OAAOC,OAAO4G,uBAC/BtnB,UAAU;AACTtH,QAAAA,WAAUopB,SAASppB,WAAU+B,OAAO8sB;MACpC,EAEF,CAAA;AAAA,UAAGH,kBAAiB;AACnBruB,aAAKuK,WAAWvK,KAAKyuB,YAAYzuB,KAAKwK,aAAa;AAAA,MACnD;AAAA,IACD;AAAA,EACF;AACA7K,EAAAA,WAAU+uB,iBAAe,SAASnf,OAAOof,MAAAA;AACxC,WAAOpf,UAAQ,IAAK/K,KAAK7E,WAAUyM,WAAYwiB,kBAAoB,IAAA,IAAKpqB,KAAK+K,KAAQqf,EAAAA,kBAAAA,KAAqB,OAAOD,OAAAA,KAAQ;AAAA,EAC1H;AAEAhvB,EAAAA,WAAUkvB,kBAAkB,SAASC,SAASC,SAC7C;AAAA,aAASC,KAAKC,SAASC,SAASC,KAC/B;AAAA,aAAA,CAAA,EAAUhe,KAAKie,IAAIH,UAAUC,WAAWC;AAAAA,IACxC;AAED,QAAKL,EAAAA,WAAW9uB,KAAKyuB,YAAW;AAC/B,aAAO;AAAA,IACP;AACD,UAAM3V,SAAQ;AACd,UAAMuW,QAAQ;AAGd,WAAUrvB,CAAAA,EAAAA,KAAKyuB,UAAUa,aAAAA,CAActvB,KAAKyuB,UAAUL,aAAcW,QAAQX,YAAYpuB,KAAKyuB,UAAUL,YAAYtV,UAAUkW,KAAKF,QAAQtoB,GAAG0mB,SAAS6B,QAAQvoB,GAAG0mB,SAASmC,UAAUL,KAAKF,QAAQtoB,GAAG6mB,SAAS0B,QAAQvoB,GAAG6mB,SAASgC,KAAAA;AAAAA,EAClO;AAEA1vB,EAAAA,WAAU4vB,2BAA2B,SAAShgB,OAAAA;AAC7C,QAAI3P;AACJ,QAAID,WAAU4L;AACb3L,YAAMD,WAAU4L,OAAO5L,WAAUiN,KAClChN;AAAAA,UAAMA,OAAQ,EAAEsuB,QAAO,GAAGC,QAAO,MAAA;AAEjC5e,YAAQ,IAAI/K,KAAK+K,KACjB;AAAA,QAAIqC,MAAM;AACV,QAAGhS,IAAI4vB,qBAAqB5vB,IAAI6vB;AAC/B7d,aAAOhS,IAAI2M,aAAW,KAAG,MAAMgD,MAAMlD,SAAAA,IAAW,KAAGkD,MAAM5B,WAAAA,MAAiB;AAE3E,WAAO4B,QAAM,KAAK5P,WAAU+vB,4BAA4BngB,OAAOqC,KAAKhS,OAAQgS;AAAAA,EAC7E;AACAjS,EAAAA,WAAUgwB,yBAAyB,SAASpgB,OAAOuc,UAAAA;AAClD,QAAIlsB;AACJ,QAAID,WAAU4L,QAAQ;AACrB3L,YAAMD,WAAU4L,OAAO5L,WAAUiN,KAAAA;AAAAA,IACjC;AACDhN,UAAMA,OAAQ,EAAEsuB,QAAO,GAAGC,QAAO,MAAA;AAEjC,UAAM3e,MAAMD,QAAM,IAAI5P,WAAU+vB,4BAA4BngB,OAAOuc,UAAUlsB,GAAAA;AAC7E,WAAO,IAAI4E,KAAKgL,MAAI,KAAK7P,WAAU+vB,4BAA4BlgB,KAAAA,IAAS5P,KAAM,EAAA,IAAK,EACpF;AAAA,EAAA;AAEAD,EAAAA,WAAU0oB,iBAAe,SAASxiB;AACjC,QAAI7F,KAAKwK,YAAW;AACnB,UAAImiB,MAAI3sB,KAAK6sB,cAAchnB,CAC3B;AAAA,UAAI7F,KAAK6uB,gBAAgB7uB,KAAKyuB,WAAW9B,GAAK,GAAA;AAC7C,YAAIpd,OAAOC;AACX,YAAIxP,KAAKkpB,YAAUlpB,KAAKuK;AACvBvK,eAAK8oB,iBAEN;AAAA,YAAA,CAAI9oB,KAAKwK;AACR;AAED,YAAIolB,eAAe;AACnB,YAAG5vB,KAAKyuB,cAAczuB,KAAKyuB,UAAUa,WAAU;AAC9CM,yBAAe5vB,KAAKyuB;AACpBmB,uBAAaN,YAAY;AAAA,QACzB;AAEDtvB,aAAKyuB,YAAY9B;AAEjB3sB,aAAKyuB,UAAUa,YAAY;AAE3B,YAAItvB,KAAKwK,cAAY,UAAS;AAG7B,cAAGolB,cAAa;AACfjD,kBAAMiD;AAAAA,UACN;AAED5vB,eAAK8oB,iBACL9oB;AAAAA,eAAKmG,SAASnG,KAAK6oB,UAAAA;AACnB7oB,eAAKmsB,WAAS;AAEd5c,kBAAQvP,KAAK6vB,mBAAmBlD,GAAK5nB,EAAAA,QAAAA;AAErC,eAAK/E,KAAK8vB,aAAa;AACtB,gBAAIvnB,MAAMvI,KAAK4K,UAAU,wBAAwB,CAAC/E,GAAG7F,KAAKuK,QAC1D,CAAA;AAAA,gBAAA,CAAKhC,KAAI;AACRvI,mBAAKmsB,WAAS;AACd;AAAA,YAEA;AAEDnsB,iBAAKmsB,WAAS;AACdnsB,iBAAK8vB,cAAYvgB;AACjB;AAAA,UACA;AAEDC,gBAAMD;AACN,cAAIC,OAAOxP,KAAK8vB;AAGhB;AAAA,cAAI/sB,aAAa,IAAIyB,KAAKxE,KAAK8vB,WAAAA;AAC/B,cAAI9sB,WAAW,IAAIwB,KAAKgL,GACxB;AAAA,eAAMxP,KAAK4M,SAAS,SAAS5M,KAAK4M,SAAS,YACzC7J,WAAWsJ,SAAAA,KAAcrJ,SAASqJ,SACnCtJ,KAAAA,WAAW4K,WAAgB3K,KAAAA,SAAS2K,eAAgB;AACnD3K,uBAAW,IAAIwB,KAAKxE,KAAK8vB,cAAY,GACtC;AAAA,UAAA;AAGD9vB,eAAKuK,WAASvK,KAAK0O,IACnB1O;AAAAA,eAAKmH,SAASpE,YAAYC,UAAUhD,KAAK0nB,OAAOC,OAAO/gB,WAAW5G,KAAKuK,UAAUoiB,IAAIoD,MAAAA;AAErF/vB,eAAK4K,UAAU,kBAAiB,CAAC5K,KAAKuK,UAAS1E,CAC/C7F,CAAAA;AAAAA,eAAKmsB,WAAS;AACdnsB,eAAKwK,aAAW;AAAA,QAEhB;AAED,YAAIwlB,WAAWhwB,KAAK0B,OAAOsqB;AAC3B,YAAIxlB,KAAGxG,KAAK8F,SAAS9F,KAAKuK,QAAAA;AAC1B,YAAI3K;AACJ,YAAID,WAAU4L;AACb3L,gBAAMD,WAAU4L,OAAO5L,WAAUiN,KAClChN;AAAAA,cAAMA,OAAQ,EAAEsuB,QAAO,GAAGC,QAAO;AAEjC,YAAInuB,KAAKwK,cAAY,QAAO;AAC3B+E,kBAAQvP,KAAKoM,UAAUrH,QAAW4nB,KAAAA,IAAI3F,IAAEhnB,KAAK0B,OAAOsqB,YAAUW,IAAI5F,IAAE,KAAG,MAAI;AAC3E,cAAK4F,CAAAA,IAAIsD,UAAUjwB,KAAK2M,aAAa;AACpC4C,qBAASvP,KAAKmD,KAAK+sB,UAAU1pB,GAAGzD,UAAc,IAAA;AAAA,UAC9C;AAED,cAAK/C,CAAAA,KAAK2M,eAAe3M,KAAKmwB,kBAAkBnwB,KAAKosB,YAAYgE,sBAAsB/hB,QAAW;AACjGrO,iBAAKosB,YAAYgE,oBAAoB7gB,QAAQ/I,GAAGzD;AAAAA,UAChD;AAED,cAAI/C,KAAKosB,YAAYgE,mBAAmB;AACvC7gB,qBAASvP,KAAKosB,YAAYgE;AAAAA,UAC1B;AAED7gB,kBAAQvP,KAAK0uB,eAAenf,KAE5B;AAAA,cAAIod,IAAIhc,YAAY3Q,KAAK0B,OAAOqsB,mBAAmB/tB,KAAK2M,eAAe/M,KAAI;AAE1E2P,oBAAQ5P,WAAU4vB,yBAAyBhgB,KAC3CC;AAAAA,kBAAM7P,WAAUgwB,uBAAuBpgB,OAAMvP,KAAKosB,YAAY4B,aAAAA;AAAAA,UAE9D;AACAxe,kBAAMhJ,GAAGxD,SAAS+B,QAAAA,KAAWyB,GAAGzD,WAAWgC,QAAAA,IAAUwK;AAAAA,QAC1D,OAAU;AACNA,kBAAQ/I,GAAGzD,WAAWgC,QACtByK;AAAAA,gBAAMhJ,GAAGxD,SAAS+B,QAAAA;AAClB,cAAI/E,KAAK2M,aAAa;AACrB,gBAAI0jB,cAAcrwB,KAAKoM,UAAUrH,YAAU4nB,IAAI3F,IAAEhnB,KAAK0B,OAAOsqB,YAAU,OAASW,IAAIsD,SAAO,IAAE,KAAG,KAAG;AACnG,gBAAIjwB,KAAK4M,SAAS,SAAS;AAC1ByjB,4BAAcrwB,KAAK0uB,eAAe2B,aAAa;AAC/C,kBAAIrwB,KAAKswB,kBAAmB;AAC3B,oBAAI9wB,MAAM,KAAG,KAAG;AAChB,oBAAI6wB,eAAe1wB,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKgL,MAAIhQ,MAAI,IAAIuF,QAChEwK;AAAAA,0BAAQ8gB,cAAc7wB;AAAAA,cAC9B,OAAa;AACNgQ,sBAAM6gB;AAAAA,cACN;AAAA,YACP,OAAY;AACN,kBAAGrwB,KAAK0B,OAAOqsB,iBAAiB;AAC/B,oBAAIpB,IAAI4D,mBAAmB;AAC1BhhB,0BAAQ5P,WAAU4vB,yBAAyBc,WAAAA;AAAAA,gBACnD,OAAc;AACN7gB,wBAAM7P,WAAUgwB,uBAAuBU,aAAa,CACpD;AAAA,gBAAA;AAAA,cACD,OACI;AACJ,oBAAI1D,IAAI4D,mBAAmB;AAC1BhhB,0BAAQ8gB;AAAAA,gBAChB,OAAc;AACN7gB,wBAAM6gB;AAAAA,gBACN;AAAA,cACD;AAAA,YACD;AAAA,UACN,OAAW;AACN,gBAAIG,gBAAgBxwB,KAAKmD,KAAKyF,UAAU,IAAIpE,KAAKgC,GAAGxD,SAAS+B,QAAY,IAAA,CAAA,CAAA,EAAIA;AAC7E,gBAAI0rB,eAAe,IAAIjsB,KAAKgsB;AAC5B,gBAAIE,YAAY1wB,KAAK0B,OAAO4K;AAC5B,gBAAIqkB,WAAW3wB,KAAK0B,OAAO6K;AAC3B,gBAAIqkB,QAAQD,WAAWD,cAAc,KAAGV;AAExChwB,iBAAK0B,OAAOsqB,YAAY;AACxB,gBAAI6E,aAAa7wB,KAAK6sB,cAAchnB;AACpC7F,iBAAK0B,OAAOsqB,YAAYgE;AAExB,gBAAIc,UAAUnE,IAAI3F,IAAEgJ,WAAS;AAC7B,gBAAIe,UAAU5f,KAAK7C,IAAIqe,IAAI3F,IAAI,GAAG4J,IAAAA,IAAMZ,WAAS;AACjD,gBAAIgB,cAAcH,WAAW7J,IAAE;AAG/B,gBAAG7V,KAAKie,IAAI0B,UAAUE,eAAe7f,KAAKie,IAAI2B,UAAUC,WAAa,GAAA;AACpExhB,oBAAMghB,gBAAgBO;AAAAA,YAC5B,OAAU;AACJvhB,oBAAMghB,gBAAgBM;AAAAA,YACtB;AACDthB,kBAAMA,OAAO,IAAKhL,KAAKgL,GAAAA,EAAMof,kBAAsB6B,IAAAA,aAAa7B,uBAAuB;AACvF5uB,iBAAK+L,KAAK,cAAgB,EAAA,CAAA,EAAGzJ,MAAM2uB,SAAO;AAC1C,gBAAIjxB,KAAK4M,SAAS,UAAU5M,KAAK4M,SAAS;AACzC4C,oBAAMxP,KAAK0uB,eAAelf,GAAAA;AAAAA,UAC3B;AACD,cAAIxP,KAAKwK,cAAc,YAAY;AAClC,gBAAIgF,OAAOxP,KAAK8vB,aAAY;AAC3B,kBAAIoB,QAAQvE,IAAIuE,UAASlxB,KAAK2M,gBAAgBggB,IAAIsD,SAAQ,KAAG,KAAG,MAAM;AACtE1gB,sBAAQC,OAAKmd,IAAIuE,QAAM,IAAEA;AACzB1hB,oBAAMxP,KAAK8vB,eAAaoB,SAAQlB,WAAS;AAAA,YAC/C,OAAY;AACNzgB,sBAAQvP,KAAK8vB;AAAAA,YACb;AAAA,UACN,OAAW;AACN,gBAAItgB,OAAKD;AACRC,oBAAID,QAAMygB,WAAS;AAAA,UACpB;AAAA,QACD;AACD,YAAImB,UAAU,IAAI3sB,KAAKgL,MAAI,CAC3B;AAAA,YAAI4hB,YAAY,IAAI5sB,KAAK+K;AAEzB,YAAGvP,KAAKwK,cAAY,UAAU7K,WAAU+B,OAAO2vB,mBAAAA,CAC5CD,aAAazxB,WAAUyM,aAAAA,CAAcoD,OAAO7P,WAAUwM,YAAW;AAEnE,cAAA,CAAI3F,GAAGzD,aAAcpD,CAAAA,WAAUyM,cAAc5F,GAAGxD,WAAAA,CAAYrD,WAAUwM,WAAU;AAE/EilB,wBAAY,IAAI5sB,KAAKgC,GAAGzD,UAAAA;AACxByM,kBAAM,IAAIhL,KAAKgC,GAAGxD,QACvB;AAAA,UAAA,OAAS;AAEJ,gBAAI8oB,WAAWtc,MAAM4hB;AAErB,iBAAIA,YAAazxB,CAAAA,WAAUyM,WAAU;AACpCglB,0BAAY,IAAI5sB,KAAK7E,WAAUyM,SAC/B;AAAA,kBAAIugB,IAAIhc,YAAY3Q,KAAK0B,OAAOqsB,mBAAmB/tB,KAAK2M,aAAY;AACnEykB,4BAAY,IAAI5sB,KAAK7E,WAAU4vB,yBAAyB6B,SAAAA,CAAAA;AACxD,oBAAGxxB,IAAI4vB;AACN4B,8BAAY,IAAI5sB,KAAK4sB,UAAUrsB,QAAAA,IAAYnF,IAAI4vB,iBAChDhgB;AAAAA,sBAAM,IAAIhL,KAAK4sB,YAAU,IAAIpxB,KAAK0vB,4BAA4B0B,WAAWpxB,KAAKosB,YAAY4B,eAAepuB,GAAAA,CAAAA;AAAAA,cAChH,OAAW;AACJ4P,sBAAM,IAAIhL,KAAAA,CAAM4sB,YAAYtF,QAC5B;AAAA,cAAA;AAAA,YACP,OAAU;AACJtc,oBAAM,IAAIhL,KAAK7E,WAAUwM,SAEzB;AAAA,kBAAIwgB,IAAIhc,YAAY3Q,KAAK0B,OAAOqsB,mBAAmB/tB,KAAK2M,aAAY;AACnE,oBAAG/M,IAAI6vB;AACNjgB,wBAAM,IAAIhL,KAAKgL,IAAIzK,QAAYnF,IAAAA,IAAI6vB;AACpCjgB,sBAAM,IAAIhL,KAAKgL,MAAI,IAAIxP,KAAK0vB,4BAA4BlgB,KAAK,GAAG5P,KAAK;AACrEwxB,4BAAY,IAAI5sB,KAAKgL,MAAI,IAAIxP,KAAK0vB,4BAA4BlgB,KAAKxP,KAAKosB,YAAY4B,eAAepuB,KAAK,IAAA,CAAA;AACxG,oBAAGI,KAAK8tB,mBAAkB;AACzBsD,8BAAYzxB,WAAUwD,KAAKC,IAAIguB,WAAWxxB,IAAIsuB,QAAQtuB,IAAIuuB,MAAAA;AAC1D3e,wBAAM,IAAIhL,KAAKgL,MAAI,IAAIxP,KAAK0vB,4BAA4BlgB,KAAK,GAAG5P,KAAK,IAAA,CAAA;AACrE4P,wBAAM7P,WAAUwD,KAAKC,IAAIoM,KAAK5P,IAAIsuB,QAAQtuB,IAAIuuB,MAAAA;AAAAA,gBAC9C;AAAA,cAER,OAAW;AACJiD,4BAAY,IAAI5sB,MAAMgL,MAAMsc,QAAAA;AAAAA,cAC5B;AAAA,YAED;AAAA,UAED;AACD,cAAIqF,UAAU,IAAI3sB,KAAKgL,MAAI;QAC3B;AAKD,YAAA,CAAIxP,KAAK2M,eAAe3M,KAAKmwB,kBAC3BxwB,CAAAA,WAAU+B,OAAO4vB,cACf3xB,CAAAA,WAAU4xB,uBAAuB5E,IAAI5F,KAAK/mB,KAAKwxB,gBAAgB,EAACzuB,YAAY,IAAIyB,KAAK+K,KAAQvM,GAAAA,UAAS,IAAIwB,KAAK+K,KAAAA,EAAAA,CAAAA,KAAa,IAAI/K,KAAK+K,KAAAA,EAAOlD,SAAarM,IAAAA,KAAK0B,OAAO4K,aAAY;AACpL,cAAIwf,WAAWtc,MAAM4hB;AACrB,cAAIpxB,KAAKwK,cAAc,QAAQ;AAC9B,gBAAIhL,MAAMQ,KAAKoM,UAAUrH,QAAAA,IAAa4nB,IAAI5F,IAAI,KAAK,KAAM;AACzDqK,wBAAY,IAAI5sB,KAAKhF;AACrB4xB,sBAAU3mB,SAASzK,KAAK0B,OAAO4K,UAAAA;AAC/BkD,kBAAM,IAAIhL,KAAK4sB,UAAUrsB,QAAAA,IAAY+mB;AACrCqF,sBAAU,IAAI3sB,KAAKgL,MAAI,CAAA;AAAA,UACvB;AAAA,QACD;AAGD,aAAIxP,KAAK2M,eAAAA,CACPhN,WAAU+B,OAAO4vB,cAAAA,CACf3xB,WAAUqC,QAAa2qB,KAAAA,IAAI5F,KAAK/mB,KAAKwxB,gBAAgB,EAACzuB,YAAY,IAAIyB,KAAKgL,GAAAA,GAAMxM,UAAS,IAAIwB,KAAKgL,GAAW,EAAA,CAAA,KAAA,IAAIhL,KAAKgL,GAAKnD,EAAAA,SAAAA,KAAcrM,KAAK0B,OAAO6K,YAAW;AACpK,cAAIuf,WAAWtc,MAAM4hB;AACrB,cAAI5xB,MAAMQ,KAAKoM,UAAUrH,QAAW4nB,IAAAA,IAAI5F,IAAE,KAAG,KAAI;AACjDvX,gBAAM7P,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKhF,GAAAA,CAAAA;AACxCgQ,cAAI/E,SAASzK,KAAK0B,OAAO6K,SAAAA;AACzB4kB,oBAAU,IAAI3sB,KAAKgL,MAAI,CACvB;AAAA,cAAGxP,KAAKwK,cAAc,QAAO;AAC5B4mB,wBAAY,IAAI5sB,KAAMgL,CAAAA,MAAMsc;UAC5B;AAAA,QACD;AAGD,YAAK9rB,KAAK2M,eAAgBwkB,QAAQ/nB,QAAAA,KAAWgoB,UAAUhoB,QAAa+nB,KAAAA,QAAQ9kB,aAAWrM,KAAK0B,OAAO6K,aAAc5M,WAAU8xB,YAAY;AACtIjrB,aAAGzD,aAAWquB;AACd5qB,aAAGxD,WAAS,IAAIwB,KAAKgL;AACrB,cAAIxP,KAAK0B,OAAOgwB,eAAc;AAE7B,gBAAIC,KAAKhyB,WAAUoM,KAAK,cAAA,EAAgB,GAAGuhB;AAC3CttB,iBAAK4xB,YACLjyB;AAAAA,YAAAA,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAGuhB,YAAYqE;AAAAA,UAC9C;AACA3xB,iBAAK4X,YAAY5X,KAAKuK,QACvB;AAAA,QAAA;AACD,YAAIvK,KAAK2M,aAAa;AACrB3M,eAAK6xB,aAAa7xB,KAAKuK,UAAS,SAASunB,GACxCA;AAAAA,cAAEjhB,aAAW;AAAA,UAClB,CAAA;AAAA,QACI;AAED7Q,aAAK4K,UAAU,eAAe,CAAC5K,KAAKuK,UAAUvK,KAAKwK,YAAY3E,CAC/D,CAAA;AAAA,MAAA;AAAA,IACH,OAAS;AACP,UAAIlG,WAAUgL,WAAW,aAAA,GAAe;AACvC,YAAI5K,MAAKC,KAAK2oB,cAAc9iB,EAAEE,UAAQF,EAAEksB;AACxC/xB,aAAK4K,UAAU,eAAc,CAAC7K,KAAG8F,CACjC,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AACAlG,EAAAA,WAAU4oB,iBAAe,SAAS1iB,GAAE2P,KAGnC;AAAA,QAAI3P,EAAEsX,UAAU;AACf;AAED,QAAInd,KAAK0B,OAAOkoB,YAAY5pB,KAAKwK;AAAY;AAC7CgL,UAAMA,QAAM3P,EAAEE,UAAQF,EAAEksB;AACxB,QAAIC,YAAYryB,WAAUmS,cAAc0D,GAAAA,EAAKlQ,MAAM,GAAK,EAAA,CAAA;AAExD,QAAItF,KAAK0B,OAAOuwB,mBAAmBD,aAAa,YAAY;AAC3D,UAAGxc,IAAI/H,cAAc+H,IAAI/H,WAAWoD,UAAUkB,QAAQ,+BAA8B;AACnFigB,oBAAY;AACZhyB,aAAKmwB,iBAAiB;AAAA,MACtB;AAAA,IACD;AAED,YAAQ6B;MACP,KAAK;AAAA,MACL,KAAK;AACJ,YAAIhyB,KAAK2M;AACR3M,eAAKwK,aAAW;AACjB;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJxK,aAAKwK,aAAW;AAChB;AAAA,MACD,KAAK;AACJxK,aAAKwK,aAAW;AAChB,YAAI0nB,YAAYvyB,WAAUmS,cAAc0D,GAAAA;AACxC,YAAG,UAAYzD,QAAQ,0BAA0B,GAAE;AAClDpS,UAAAA,WAAU2wB,mBAAmB;AAAA,QACjC,OAAQ;AACJ3wB,UAAAA,WAAU2wB,mBAAmB;AAAA,QAC7B;AACD;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACJtwB,aAAKwK,aAAW;AAChB;AAAA,MACD,KAAK;AACJ,YAAIgL,IAAI/H;AACP,iBAAO9N,WAAU4oB,eAAe1iB,GAAE2P,IAAI/H,UAAAA;AACvC;AAAA,MACD;AACC,YAAA,CAAK9N,WAAUgL,WAAW,aAAA,KAAkBhL,WAAUiL,UAAU,eAAe,CAAConB,WAAWnsB,KAAK;AAC/F,cAAI2P,IAAI/H,cAAc+H,OAAOxV,QAAQgyB,aAAa,YAAY;AAC7D,mBAAOryB,WAAU4oB,eAAe1iB,GAAE2P,IAAI/H,UACtC;AAAA,UAAA;AAAA,QACD;AACDzN,aAAKwK,aAAW;AAChBxK,aAAKuK,WAAS;AACd;AAAA,IAAA;AAEF,QAAIvK,KAAKwK,YAAW;AACnB,UAAIzK,MAAKC,KAAK2oB,cAAcnT;AAC5B,UAAKxV,CAAAA,KAAK0B,OAAO,UAAQ1B,KAAKwK,gBAAgBxK,KAAK4K,UAAU,gBAAe,CAAC7K,KAAIC,KAAKwK,YAAY3E;AACjG7F,aAAKwK,aAAWxK,KAAKuK,WAAS;AAAA,WAC1B;AACJvK,aAAKuK,WAAUxK;AAEf,YAAIC,KAAKkpB,YAAUlpB,KAAKuK,YAAavK,KAAKkpB,YAAYlpB,KAAKwK,cAAc;AACxExK,eAAK8oB,iBAAAA;AACN,aAAI9oB,KAAKwK;AACR;AAEDxK,aAAKosB,cAAczsB,WAAUwO,YAAYnO,KAAK8F,SAAS9F,KAAKuK,aAAa,CAAA,CAAA;AACzEvK,aAAKyuB,YAAYzuB,KAAK6sB,cAAchnB,CAAAA;AAAAA,MACpC;AAAA,IACD;AACD7F,SAAK8vB,cAAY;AAAA,EAClB;AAGAnwB,EAAAA,WAAUwyB,0BAA0B,SAAS3wB,QAC5C;AAAA,QAAIuuB,SAAS,CAAA;AACb,aAAQ5rB,KAAK3C,QAAM;AAClB,UAAG2C,EAAE4N,QAAQ,SAAS,GAAE;AACvBge,eAAO5rB,CAAAA,IAAK;AAAA,MACZ;AAAA,IACD;AACD,WAAO4rB;AAAAA,EACR;AACApwB,EAAAA,WAAUyyB,8BAA8B,SAASC,OAAOC,eAAAA;AACvD,QAAIC,UAAUvyB,KAAKmyB,wBAAwBE,KAAAA;AAC3C,QAAIG,gBAAgBxyB,KAAKmyB,wBAAwBG,aACjD;AAAA,aAAQnuB,KAAKquB,eAAc;AAC1B,UAAA,CAAID,QAAQpuB,CAAG,GAAA;AAAA,eACPmuB,cAAcnuB,CACrB;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AAGAxE,EAAAA,WAAU6oB,eAAa,SAAS3iB;AAC/B,QAAIA,KAAKA,EAAEsX,UAAU,KAAKnd,KAAKyyB;AAAS;AACxC,QAAIzyB,KAAKwK,cAAcxK,KAAKuK,UAAS;AACpCvK,WAAK+L,KAAK,gBAAgB,CAAGzJ,EAAAA,MAAM2uB,SAAO;AAG1C,UAAIzH,UAAUxpB,KAAKuK;AACnB,UAAI9K,OAAOO,KAAKwK;AAEhB,UAAIkoB,QAAS1yB,CAAAA,KAAKyuB,aAAazuB,KAAKyuB,UAAUa;aACvCtvB,KAAKosB,YAAYgE;AAExB,UAAI5pB,KAAGxG,KAAK8F,SAAS9F,KAAKuK,QAC1B;AAAA,UAAImoB,UAAU1yB,KAAKosB,YAAYuG,iBAAiB3yB,KAAKosB,YAAYrpB,cAAcyD,GAAGzD,WAAWgC,QAAW/E,KAAAA,KAAKosB,YAAYrpB,WAAWgC,QAAAA,KAAayB,GAAGxD,SAAS+B,QAAAA,KAAW/E,KAAKosB,YAAYppB,SAAS+B,QAAW,IAAA;AAC5M,YAAI6tB,SAAQ5yB,KAAKwK,cAAY;AAC7B,YAAA,CAAKxK,KAAK4K,UAAU,wBAAuB,CAACpE,IAAIX,GAAG+sB,QAAQ5yB,KAAKosB,eAAc;AAC7E,cAAIwG;AACH5yB,iBAAKgrB,YAAYxkB,GAAGzG,IAAI;eACpB;AACJC,iBAAKosB,YAAYuG,eAAe;AAChC3yB,iBAAKoyB,4BAA4B5rB,IAAIxG,KAAKosB,WAAAA;AAC1CzsB,YAAAA,WAAUoP,WAAWvI,IAAIxG,KAAKosB,WAC9BpsB;AAAAA,iBAAK4X,YAAYpR,GAAGzG;UACpB;AAAA,QACL,OAAU;AAENC,eAAKuK,WAAWvK,KAAKwK,aAAa;AAClC,cAAIooB,UAAU5yB,KAAK0B,OAAOmxB,gBAAe;AACxC7yB,iBAAKmG,SAAAA;AACLnG,iBAAKqpB,aAAW,oBAAI7kB;AAEpB,gBAAIxE,KAAK2M,eAAe3M,KAAK0B,OAAOoxB,qBAAsB9yB,CAAAA,KAAK0B,OAAOknB,UAAW5oB,CAAAA,KAAKqK,cAAcrK,KAAK8F,SAAS0jB,OAAW,CAAA,GAAA;AAC5H7pB,cAAAA,WAAUiL,UAAU,aAAa,CAAC4e,SAAS/pB,MAAMoG,CACjD,CAAA;AAAA,qBAAO7F,KAAKsrB,aAAa9B,OAAAA;AAAAA,YACzB;AACDxpB,iBAAKyuB,YAAY;AACjBzuB,iBAAK6oB,aAAa7oB,KAAKkpB,WAAWM;AAAAA,UACvC,OAAW;AACN,iBAAKxpB,KAAKqpB;AACTrpB,mBAAK4K,UAAUgoB,SAAO,iBAAe,kBAAiB,CAACpJ,SAAQxpB,KAAK8F,SAAS0jB,OAC9E,CAAA,CAAA;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AACD,UAAIxpB,KAAKyuB,cAAczuB,KAAKyuB,UAAUa,aAAatvB,KAAKyuB,cAAc,OAAO;AAC5EzuB,aAAKuK,WAAWvK,KAAKwK,aAAa;AAClCxK,aAAK2X,iBAAAA;AAAAA,MACL;AACDhY,MAAAA,WAAUiL,UAAU,aAAa,CAAC4e,SAAS/pB,MAAMoG,CAAAA,CAAAA;AAAAA,IACjD;AACD7F,SAAKuK,WAAW;AAChBvK,SAAKwK,aAAW;AAChBxK,SAAKyuB,YAAU;AACfzuB,SAAKosB,cAAc;AACnBpsB,SAAKswB,mBAAmB;AAAA,EACzB;AAEA3wB,EAAAA,WAAUozB,uBAAuB,WAAA;AAChC,QAAI/yB,KAAKgzB,cAAchzB,KAAKizB,MAAAA,GAAQ;AACnCjzB,WAAKkzB,eAAe;AACpB,aAAO;AAAA,IACT,OAAM;AACJ,aAAO;AAAA,IACP;AAAA,EACF;AACAvzB,EAAAA,WAAUiyB,cAAY;AACrB5xB,SAAKmzB,eAAAA;AACLnzB,SAAKif,gBACJjf,KAAK0B,OAAOoiB,QACZ9jB,KAAKgE,WAAWgb,cAAc;AAE/B,QAAIvT,OAAOzL,KAAKA,KAAK4M,QAAQ,OAC7B;AAAA,QAAGnB,MAAK;AACPA,WAAK2K,KAAKpW,MAAM,IAAA;AAAA,IAClB,OAAM;AACJA,WAAKozB,aACL;AAAA,IAAA;AAED,QAAIpzB,KAAK+yB,qBAAAA,GAAuB;AAC/B,aAAO;AAAA,IACP;AACD/yB,SAAK2X;EACN;AAEAhY,EAAAA,WAAU0zB,eAAe,SAAS5zB,MAAAA;AACjC,cAAUE,WAAUF,OAAM,OACxBE,KAAAA,WAAUwD,KAAK1D,OAAM,QAAA,KAAaE,WAAU2zB,UAAU7zB,OAAM,YAAYE,WAAU2zB,UAAU7zB,OAAM,aAAA;AAAA,EACrG;AAEAE,EAAAA,WAAU4zB,0BAA0B;AACnC,QAAIC,eAAe,CAAC,uBAAuB,uBAAuB,eAAe,sBAAA;AACjF,aAAQrvB,IAAI,GAAGA,IAAIqvB,aAAapvB,QAAQD,KAAI;AAC3C,UAAIsvB,QAAQzzB,KAAK+L,KAAKynB,aAAarvB;AACnC,eAAQuvB,IAAI,GAAGD,SAASC,IAAID,MAAMrvB,QAAQsvB,KAAK;AAC9C,YAAItZ,OAAOqZ,MAAMC,GAAGjvB,aAAa,UAAA,KAAegvB,MAAMC,CAAAA,EAAGjvB,aAAa,MACtE;AAAA,YAAIgjB,QAAQznB,KAAK0nB,OAAOC,OAAO6L,aAAarvB,CAAAA,CAAAA;AAC5C,YAAGiW,MAAK;AACPqN,kBAAQznB,KAAK0nB,OAAOC,OAAOvN,OAAO,WAAWpa,KAAK0nB,OAAOC,OAAOvN,IAAAA,KAASqN;AAAAA,QACzE;AACD,YAAG+L,aAAarvB,CAAM,KAAA,uBAAsB;AAC3CsjB,kBAAQznB,KAAK0nB,OAAOC,OAAO9I;AAAAA,QAC3B,WAAQ2U,aAAarvB,CAAM,KAAA,uBAAsB;AACjDsjB,kBAAQznB,KAAK0nB,OAAOC,OAAOgM;AAAAA,QAC3B;AACD3zB,aAAK4nB,SAASgM,wBAAwBH,MAAMC,IAAIjM,SAAS,EAAA;AAAA,MACzD;AAAA,IACD;AAAA,EACF;AAEA9nB,EAAAA,WAAUiB,aAAa,SAASuC,MAAM1D,MAAAA;AAErC,SAAKO,KAAKgE,YAAY;AACrB,YAAM,IAAIiO,MAAM,2IAAA;AAAA,IAChB;AAED9O,WAAOA,QAAQnD,KAAK6U;AACpBpV,WAAOA,QAAQO,KAAK4M;AACpB,QAAI8c,eAAe;AAEnB,QAAI1pB,CAAAA,KAAK0nB,OAAOC,OAAOkM,WAAU;AAChC7zB,WAAK0nB,OAAOC,OAAOkM,YAAY7zB,KAAK0nB,OAAOC,OAAOmM;AAAAA,IAClD;AAED,QAAItoB,YAAYxL,KAAKukB;AACrB,QAAIwP,WAAW,mBAAmB/zB,KAAK4M;AACvC,QAAIonB,WAAW,mBAAmBv0B;AAElC,QAAA,CAAKO,KAAK4M,SAAUpB,UAAUqF,UAAUkB,QAAQgiB,QAAAA,KAAAA,IAAiB;AAChEvoB,gBAAUqF,aAAa,MAAMmjB;AAAAA,IAC/B,OAAQ;AACNxoB,gBAAUqF,YAAYrF,UAAUqF,UAAUmZ,QAAQ+J,UAAUC,QAC5D;AAAA,IAAA;AAED,QAAIC,gBAAgB;AAEpB,QAAIC,cAAel0B,KAAK4M,SAASnN,QAAQO,KAAK0B,OAAOyyB,kBAAmBn0B,KAAK+L,KAAK2d,YAAAA,EAAc,GAAG4D,YAAY;AAE/G,QAAI8G;AACJ,QAAGp0B,KAAK+L,KAAKkoB,kBAAkBj0B,KAAK+L,KAAKkoB,eAAe,CAAG,GAAA;AAC1DG,uBAAiBp0B,KAAK+L,KAAKkoB,aAAe,EAAA,CAAA,EAAG3G;AAAAA,IAC7C;AAGD,QAAIttB,KAAKA,KAAK4M,QAAQ,YAAYnN,QAAQO,KAAK4M,SAASnN;AACvDO,WAAKA,KAAK4M,QAAQ,SAAS,KAE5B5M;AAAAA,SAAK8oB;AAEL,QAAI9oB,KAAK+L,KAAKkoB,aAAAA,GAAgB;AAC7Bj0B,WAAK+L,KAAKkoB,eAAe,CAAGxmB,EAAAA,WAAWC,YAAY1N,KAAK+L,KAAKkoB,aAAe,EAAA,CAAA,CAAA;AAC5Ej0B,WAAK+L,KAAKkoB,aAAAA,IAAiB;AAAA,IAC3B;AAEDj0B,SAAK4M,QAAQnN;AACbO,SAAK6U,QAAQ1R;AACbnD,SAAK2M,cAAe3M,KAAK4M,SAAS;AAElC5M,SAAKq0B,YAAY;AAGjBr0B,SAAK4xB,YAEL5xB;AAAAA,SAAKuzB;AAEL,QAAI7zB,OAAOM,KAAK+L,KAAK,aAAA;AACrB,QAAGrM,MAAK;AACP,eAASyE,IAAI,GAAGA,IAAIzE,KAAK0E,QAAQD,KAAK;AACrC,YAAImwB,MAAM50B,KAAKyE,CAAAA;AAEf,YAAImwB,IAAI7vB,aAAa,eAAezE,KAAK4M,SAAS0nB,IAAI7vB,aAAa,MAAA,KAAWzE,KAAK4M,QAAQ,QAAO;AACjG0nB,cAAI5X,UAAUtZ,IAAI,QAAA;AAClBpD,eAAK4nB,SAAS2M,kBAAkBD,KAAK,IAAA;AAAA,QACzC,OAAQ;AACJA,cAAI5X,UAAU8X,OAAO,QAAA;AACrBx0B,eAAK4nB,SAAS2M,kBAAkBD,KAAK,KAAA;AAAA,QACrC;AAAA,MACD;AAAA,IACD;AAED,eAAWJ,eAAe;AACzBl0B,WAAK+L,KAAK2d,YAAAA,EAAc,CAAG4D,EAAAA,YAAY4G;AAExC,QAAUE,OAAAA,kBAAkB,YAAYp0B,KAAK+L,KAAKkoB,kBAAkBj0B,KAAK+L,KAAKkoB,aAAe,EAAA,CAAA,GAAG;AAC/Fj0B,WAAK+L,KAAKkoB,eAAe,CAAG3G,EAAAA,YAAY8G;AAAAA,IACxC;AAAA,EAEF;AACAz0B,EAAAA,WAAU8X,iBAAiB,SAAStU,MAAM1D,MAAAA;AACzC,QAAKO,CAAAA,KAAK4K,UAAU,sBAAsB,CAAC5K,KAAK4M,OAAO5M,KAAK6U,OAAOpV,QAAQO,KAAK4M,OAAOzJ,QAAQnD,KAAK6U,KAAS,CAAA;AAAA;AAC7G7U,SAAKY,WAAWuC,MAAM1D,IACtBO;AAAAA,SAAK4K,UAAU,gBAAgB,CAAC5K,KAAK4M,OAAO5M,KAAK6U,KAClD,CAAA;AAAA,EAAA;AAEAlV,EAAAA,WAAUyH,SAAS,SAASjE,MAAM1D,MACjCE;AAAAA,IAAAA,WAAU8X,eAAetU,MAAM1D,IAAAA;AAAAA,EAChC;AAEAE,EAAAA,WAAU80B,mBAAmB,SAAStwB,GAAE3B,MAAKW,MAAKqI,WAAWkpB;AAC5DA,iBAAaA,cAAc;AAE3B,QAAIC,OAAK90B,SAASC,cAAc;AAChC60B,SAAK9jB,YAAY;AAEjB,QAAG7Q,KAAKszB,UAAUtzB,KAAK4M,QAAM,eAAiB,GAAA;AAE7C+nB,WAAK9jB,aAAa,MAAM7Q,KAAKszB,UAAUtzB,KAAK4M,QAAM,eAAA,EAAiBzJ;IACnE;AAED,QAAI4N,QAAQ/Q,KAAK0Q,MAAMvM;AAEvB,QAAInE,KAAK4M,SAAS,WAAWzI,MAAM,KAAKnE,KAAK0B,OAAOkzB,aAAa;AAChED,WAAK9jB,aAAa;AAClBrO,aAAOA,OAAK;AAAA,IACZ;AAEDxC,SAAKwmB,OAAOmO,MAAM5jB,OAAO/Q,KAAKsf,GAAGiG,eAAa,GAAG/iB,MAAMkyB;AAEvD,QAAIG,mBAAmB70B,KAAKszB,UAAUtzB,KAAK4M,QAAM,aAAezJ,EAAAA,MAAKnD,KAAK4M,KAAAA;AAC1E+nB,SAAKz0B,YAAY20B;AAEjB70B,SAAK4nB,SAASkN,cAAcH,MAAME,gBAElCrpB;AAAAA,cAAUpL,YAAYu0B,IAAAA;AAAAA,EACvB;AAEAh1B,EAAAA,WAAUo1B,mBAAmB,SAASC,MAAMC,IAAAA;AAC3C,QAAIC,QAAQ;AACZ,QAAKv1B,CAAAA,WAAUgN,aAAY;AAC1B,UAAIwoB,UAAUx1B,WAAUwD,KAAK,SAAOxD,WAAUiN,QAAM,MACpD;AAAA,UAAIuoB;AAASF,aAAKE,QAAQH;AAC1BE,cAAQ/jB,KAAKI,OAAO0jB,GAAGlwB,QAAAA,IAAUiwB,KAAKjwB,QAAAA,MAAY,MAAK,KAAG,KAAG;IAC7D;AACD,WAAOmwB;AAAAA,EACR;AACAv1B,EAAAA,WAAUy1B,sBAAsB,WAAA;AAE/B,WAAOp1B,KAAKmD,KAAKnD,KAAK4M,QAAM,QAAA,EAAU,IAAIpI,KAAKxE,KAAK6U,MAAM9P,QAAAA,CAAAA,CAAAA;AAAAA,EAC3D;AAEApF,EAAAA,WAAU01B,gBAAgB;AACzB,QAAIC,KAAKt1B,KAAKo1B,oBACd;AAAA,QAAIG,KAAK51B,WAAUwD,KAAKC,IAAIkyB,IAAI,GAAGt1B,KAAK4M,KAAAA;AACxC,SAAKjN,WAAUgN,aAAY;AAC1B,UAAIwoB,UAAUx1B,WAAUwD,KAAK,SAAOxD,WAAUiN,QAAM;AACpD,UAAIuoB;AAASI,aAAKJ,QAAQG;IAC1B;AACD,WAAOC;AAAAA,EACR;AACA51B,EAAAA,WAAU61B,oBAAoB,SAASzkB,OAAOikB,MAAMC,IAAAA;AAEnD,QAAIrQ,MAAM5kB,KAAK0B,OAAOkjB;AACtB,QAAI6Q,OAAO1kB;AACX,QAAImkB,QAAQl1B,KAAK+0B,iBAAiBC,MAAMC,EAAAA;AAGxCj1B,SAAK01B,iBAAiBV,MAAME,OAAO,OAAO,CAAA;AAC1C,QAAIS,YAAYT,QAAQl1B,KAAK8tB;AAC7B,aAAS3pB,IAAE,GAAGA,IAAE+wB,OAAO/wB,KAAI;AAC1B,UAAInE,KAAK2Q,SAASxM,IAAG;AACpBnE,aAAK0Q,MAAMvM,CAAK,IAAA;AAChBwxB;AAAAA,MACH,OAAS;AACN31B,aAAK0Q,MAAMvM,KAAGgN,KAAK8D,MAAMwgB,QAAME,YAAUxxB,EAAAA;AAAAA,MACzC;AACDsxB,cAAMz1B,KAAK0Q,MAAMvM,CAAAA;AACjBnE,WAAKwtB,OAAOrpB,CAAAA,KAAInE,KAAK0Q,MAAMvM,IAAE,CAAI,KAAA,MAAInE,KAAKwtB,OAAOrpB,IAAE,OAAKnE,KAAK2M,cAAY,IAAGiY,MAAM5kB,KAAKsf,GAAGgG,eAAetlB,KAAKsf,GAAG+F;AAAAA,IAEjH;AACDrlB,SAAKwtB,OAAO,gBAAgB0H;AAC5Bl1B,SAAKwtB,OAAO0H,KAAAA,IAAUl1B,KAAK0Q,MAAMwkB,QAAM,KAAGl1B,KAAKwtB,OAAO0H,QAAM,CAAO,KAAA;AAAA,EAEpE;AAEAv1B,EAAAA,WAAUi2B,sBAAsB,SAASroB,KAAKwD,OAAOvO,MACpD;AAAA,QAAIkH,IAAI1J,KAAK0B;AACb1B,SAAKwmB,OAAOjZ,KAAKwD,OAAOrH,EAAE2H,gBAAc3H,EAAE6C,YAAU7C,EAAE4C,aAAa9J,OAAKxC,KAAKsf,GAAG+F,cAAc,GAAG,CAAA;AAAA,EAClG;AAEA1lB,EAAAA,WAAUk2B,iBAAiB,SAAS/R,QAAQgS,YAAAA;AAE3C,QAAIC,KAAK,IAAIvxB,KAAK7E,WAAUyM,YAC3BmpB,KAAK,IAAI/wB,KAAK7E,WAAUwM,SAAAA,GACxB6pB,QAAQh2B,KAAKmD,KAAKyF,UAAWjJ,WAAUsM;AAExC,QAAIwpB,OAAOQ,SAASnS,OAAOxhB,MAAMyO,OAAM,EAAA,IAAM;AAC7C,QAAI6C,IAAI,IAAIpP,KAAKxE,KAAKoM;AAItB,QAAI8oB,QAAQl1B,KAAK+0B,iBAAiBgB,IAAIR,EACtCv1B;AAAAA,SAAKw1B,kBAAkBC,MAAMM,IAAIR;AACjC,QAAI/yB,OAAK;AAETshB,WAAO5jB,YAAY;AACnB,aAASiE,IAAE,GAAGA,IAAE+wB,OAAO/wB,KAAI;AAC1B,UAAA,CAAKnE,KAAK2Q,SAASxM,CAAAA,GAAG;AACrBnE,aAAKy0B,iBAAiBtwB,GAAE3B,MAAKoR,GAAEkQ,MAC/B;AAAA,MAAA;AACD,WAAK9jB,KAAK2M,aAAY;AACrB,YAAIupB,SAAOr2B,SAASC,cAAc,KAAA;AAClC,YAAIq2B,MAAM;AACV,YAAIviB,EAAE7O,aAAaixB,MAAMjxB,QAAAA;AAAWoxB,iBAAO;AAE3CD,eAAOpZ,aAAa,qBAAqB3Y;AACzC,YAAInE,KAAK8tB,qBAAqB9tB,KAAK2Q,SAASxM,IAAG;AAC9CgyB,iBAAO;AAAA,QACP;AAED,iBAAShyB,KAAEnE,KAAK0B,OAAO4K,aAAW,GAAGnI,KAAInE,KAAK0B,OAAO6K,WAAWpI,MAAK;AACpE,gBAAMiyB,YAAYv2B,SAASC,cAAc;AACzCs2B,oBAAUvlB,YAAU;AACpBulB,oBAAU9zB,MAAMwO,SAAO9Q,KAAK0B,OAAO2P,eAAa,IAAE;AAElD,cAAIglB,WAAW,IAAI7xB,KAAKoP,EAAE+E,YAAe/E,GAAAA,EAAEgF,YAAYhF,EAAExK,QAAAA,GAAWjF,IAAG,CACvEiyB;AAAAA,oBAAUtZ,aAAa,kBAAkB9c,KAAKszB,UAAUgD,YAAYD;AAEpE,cAAIE,cAAcv2B,KAAKszB,UAAUkD,eAAeH,QAChD;AAAA,cAAGE,aAAY;AACdH,sBAAUl2B,YAAYq2B;AAAAA,UACtB;AACD,cAAI9Z,WAAWzc,KAAKszB,UAAUmD,gBAAgBJ;AAC9C,cAAG5Z,UAAS;AACX2Z,sBAAU1Z,UAAUtZ,IAAIqZ,QACxB;AAAA,UAAA;AAEDyZ,iBAAO91B,YAAYg2B;AAEnB,gBAAMM,aAAa72B,SAASC,cAAc,KAAA;AAC1C42B,qBAAW7lB,YAAU;AACrBwlB,qBAAW,IAAI7xB,KAAKoP,EAAE+E,YAAAA,GAAe/E,EAAEgF,SAAYhF,GAAAA,EAAExK,WAAWjF,IAAG,EAAA;AACnEuyB,qBAAW5Z,aAAa,kBAAkB9c,KAAKszB,UAAUgD,YAAYD,QACrEK,CAAAA;AAAAA,qBAAWp0B,MAAMwO,SAAO9Q,KAAK0B,OAAO2P,eAAa,IAAE;AACnDklB,wBAAcv2B,KAAKszB,UAAUkD,eAAeH;AAC5C,cAAGE,aAAY;AACdG,uBAAWx2B,YAAYq2B;AAAAA,UACvB;AACD9Z,qBAAWzc,KAAKszB,UAAUmD,gBAAgBJ,QAC1C;AAAA,cAAG5Z,UAAS;AACXia,uBAAWha,UAAUtZ,IAAIqZ;UACzB;AACDyZ,iBAAO91B,YAAYs2B,UACnB;AAAA,QAAA;AAEDR,eAAOrlB,YAAYslB,MAAI,MAAIn2B,KAAKszB,UAAUqD,gBAAgB/iB,GAAEoiB;AAC5Dh2B,aAAK4nB,SAASgP,cAAcV,QAAQtiB;AACpC5T,aAAK41B,oBAAoBM,QAAQl2B,KAAK0Q,MAAMvM,IAAI3B,IAEhDszB;AAAAA,QAAAA,WAAU11B,YAAY81B,MAAAA;AACtBl2B,aAAK4K,UAAU,cAAa,CAACsrB,QAAQtiB,CAAAA,CAAAA;AAAAA,MACrC;AACDpR,cAAMxC,KAAK0Q,MAAMvM,CAAAA;AAGjByP,UAAE5T,KAAKmD,KAAKC,IAAIwQ,GAAE,GAAE;AACpBA,UAAI5T,KAAKmD,KAAK0zB,UAAUjjB;IACxB;AAAA,EACF;AAEAjU,EAAAA,WAAUm3B,qBAAqB,WAAA;AAC9B,WAAO92B,KAAKgE,WAAWgb,cAAc,eAAA;AAAA,EACtC;AAEArf,EAAAA,WAAUyzB,eAAa;AAGtB,QAAKpzB,CAAAA,KAAKszB,UAAUtzB,KAAK4M,QAAQ,OAAU;AAAA;AAE3C,QAAIkX,SAAS9jB,KAAK+L,KAAK,gBAAkB,EAAA,CAAA;AACzC,QAAI+pB,aAAY91B,KAAK+L,KAAK,cAAA,EAAgB;AAC1C,QAAIrC,IAAI1J,KAAK0B;AAEboiB,WAAO5jB,YAAY;AAEnB41B,IAAAA,WAAU51B,YAAY;AAEtB,QAAI62B,OAAQrtB,EAAEkgB,aAAclgB,EAAEstB,cAAgB,uBAAuB,OAAQttB,EAAEkgB,YAAclgB,CAAAA,EAAEutB,YAAc,qBAAqB;AAClInB,IAAAA,WAAUjlB,YAAY,iBAAiBkmB;AAEvC/2B,SAAKwQ,UAAU;AACfxQ,SAAK0Q,QAAQ;AACb1Q,SAAKwtB,SAAS,EAAC1c,QAAQ,EAAA;AACvB9Q,SAAKq0B,YAAY;AAEjBr0B,SAAKilB,UAAAA;AAEL,QAAIrR,GAAEmiB;AACN,QAAIT,KAAKt1B,KAAKo1B,oBACbG,GAAAA,KAAK51B,WAAU01B,cAEhBzhB;AAAAA,QAAImiB,KAAK/1B,KAAK2M,cAAchN,WAAUwD,KAAK6B,WAAWswB,EAAMA,IAAAA;AAG5Dt1B,SAAKoM,YAAUwH;AAEf,QAAIsjB,gBAAgBl3B,KAAKszB,UAAUtzB,KAAK4M,QAAM,OAAS0oB,EAAAA,IAAGC,IAAGv1B,KAAK4M,KAAAA;AAElE,QAAIuqB,eAAen3B,KAAK82B;AACxB,QAAGK,cAAa;AACfA,mBAAaj3B,YAAYg3B;AACzBl3B,WAAK4nB,SAASwP,eAAeD,cAAcD;IAC3C;AAEDl3B,SAAKmM,YAAYopB;AACjB51B,IAAAA,WAAUk2B,eAAe/R,QAAQgS;AAEjC,QAAI91B,KAAK2M;AACR3M,WAAKq3B,mBAAmBvB,YAAUR,IAAGS;SAClC;AACH/1B,WAAKs3B,mBAAmBxB,YAAUR,IAAGS;AACrC,UAAIrsB,EAAE6tB,WAAW;AAChB,YAAItD,gBAAgB;AAEpB,YAAGj0B,KAAK+L,KAAKkoB,gBAAgB;AAC5Bj0B,eAAK+L,KAAKkoB,aAAAA,EAAe,GAAGxmB,WAAWC,YAAY1N,KAAK+L,KAAKkoB,aAAAA,EAAe;AAC5Ej0B,eAAK+L,KAAKkoB,aAAiB,IAAA;AAAA,QAC3B;AAED,YAAIuD,KAAK33B,SAASC,cAAc,KAAA;AAChC03B,WAAG3mB,YAAYojB;AACfuD,WAAGl1B,MAAMm1B,aAAW;AACpBD,WAAGl1B,MAAMod,UAAQ;AACjB,YAAIgY,aAAa13B,KAAKwtB,OAAOxtB,KAAKwtB,OAAOmK,UACzC;AAAA,YAAIxkB,SAASzJ,EAAEkb,MAAM5kB,KAAKsf,GAAG+F,cAAcrlB,KAAKsf,GAAGgG;AACnD,YAAIsS,cAAczmB,KAAK5C,IAAImpB,aAAavkB,QAAQ,CAChDnT;AAAAA,aAAKwmB,OAAOgR,IAAII,aAAa,GAAG,CAAA;AAChC9B,QAAAA,WAAUroB,WAAW8Y,aAAaiR,IAAG1B,UAErC;AAAA,YAAI+B,KAAKL,GAAGlzB,UAAU,IACtBuzB;AAAAA,WAAGhnB,YAAYojB,gBAAc;AAC7B4D,WAAGv1B,MAAMm1B,aAAW;AACpBI,WAAGv1B,MAAMod,UAAQ;AACjB1f,aAAKwmB,OAAOqR,IAAI73B,KAAKsf,GAAG+F,cAAc,GAAG,GAAG;AAE5CmS,WAAGp3B,YAAYy3B;AACf73B,aAAK+L,KAAKkoB,iBAAe,CAACuD,IAAGK,EAC7Bl4B;AAAAA,QAAAA,WAAU6B,MAAMxB,KAAK+L,KAAKkoB,eAAe,CAAI,GAAA,SAASj0B,KAAKioB,OAAOyB,YAAAA;AAAAA,MAClE;AAAA,IACD;AAAA,EACF;AACA/pB,EAAAA,WAAU23B,qBAAmB,SAASlb,GAAEkZ,IAAGS;AAC1C,QAAIrsB,IAAE7J,SAASC,cAAc;AAC7B4J,MAAEmH,YAAU;AAEZ,QAAI1N,OAAO,IAAIqB,KAAK,MAAK,GAAE,GAAExE,KAAK0B,OAAO4K,YAAW,GAAE,CACtD;AAAA,aAASnI,IAAEnE,KAAK0B,OAAO4K,aAAW,GAAGnI,IAAInE,KAAK0B,OAAO6K,WAAWpI,KAAK;AACpE,UAAI2zB,KAAGj4B,SAASC,cAAc;AAC9Bg4B,SAAGjnB,YAAU;AACbinB,SAAGx1B,MAAMwO,SAAO9Q,KAAK0B,OAAO2P,eAAa;AACzC,UAAIN,QAAQ/Q,KAAKsf,GAAG+F;AACpB,UAAIrlB,KAAK0B,OAAOkzB,aAAa;AAC5BkD,WAAGjnB,aAAa;AAAA,MAChB;AACDinB,SAAGx1B,MAAMyO,QAAQA,QAAQ;AAEzB,UAAIgnB,UAAUp4B,WAAU2zB,UAAU0E,WAAW70B,IAAAA;AAC7C20B,SAAG53B,YAAY63B;AACf/3B,WAAK4nB,SAASqQ,cAAcH,IAAIC,OAAAA;AAEhCruB,QAAEtJ,YAAY03B,EAAAA;AACd30B,aAAKnD,KAAKmD,KAAKC,IAAID,MAAK,GAAE,MAC1B;AAAA,IAAA;AACDiZ,MAAEhc,YAAYsJ,CAAAA;AACd,QAAI1J,KAAK0B,OAAOw2B;AACf9b,QAAEkR,YAAYttB,KAAK0B,OAAO2P,gBAAcrR,KAAK0B,OAAOw2B,cAAYl4B,KAAK0B,OAAO4K;AAAAA,EAC9E;AAEA3M,EAAAA,WAAUsM,eAAe,WAAA;AACxB,QAAGtM,WAAU+B,OAAOy2B,UAAS;AAC5B,aAAO,IAAI3zB,KAAK7E,WAAU+B,OAAOy2B,QAAAA;AAAAA,IACjC;AACD,WAAO,oBAAI3zB;AAAAA,EACZ;AAEA7E,EAAAA,WAAUwzB,iBAAiB,WAAA;AAC1BnzB,SAAK2Q,WAAS;AACd3Q,SAAK8tB,oBAAoB;AAAA,EAC1B;AAEAnuB,EAAAA,WAAU+1B,mBAAmB,SAASK,IAAIqC,GAAG34B,MAAM2qB,MAAMiO,UAAAA;AACxDr4B,SAAKmzB,eACL;AAAA,QAAImF,SAAS34B,WAAU,YAAUK,KAAK4M,KAAAA;AACtC,QAAI0rB,QAAO;AACV,UAAIC,WAAW,IAAI/zB,KAAKuxB,EACxB;AAAA,eAAS5xB,IAAE,GAAGA,IAAEi0B,GAAGj0B,KAAI;AACtB,YAAIm0B,OAAOC,QAAU,GAAA;AACpBv4B,eAAK8tB,qBAAqB;AAC1B9tB,eAAK2Q,SAASxM,KAAK;AACnB,cAAIk0B;AACHD;AAAAA,QACD;AACDG,mBAAW54B,WAAUwD,KAAKC,IAAIm1B,UAAUnO,MAAM3qB,IAC9C;AAAA,YAAGE,WAAUwD,KAAK1D,OAAO,QACxB84B;AAAAA,qBAAW54B,WAAUwD,KAAK1D,OAAO,UAAU84B,QAC5C;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AAEA54B,EAAAA,WAAU64B,sBAAsB,SAASjrB,KAAK+nB,IAAmBS,IAAkB7X;AAGlF,QAAIqX,KAAG51B,WAAUwD,KAAKC,IAAIkyB,IAAG,GAAE,UAC9BmD,aAAa,IAAIj0B,KAAKuxB,EACvB;AAAA,QAAI2C,KAAK/4B,WAAUsM,aAAAA;AACnBjM,SAAKmD,KAAKyF,UAAU8vB,EACpB14B;AAAAA,SAAKmD,KAAKyF,UAAUmtB,EAAAA;AAEpB7X,WAAOA,QAAQ/M,KAAKyb,KAAKzb,KAAKI,OAAOgkB,GAAGxwB,QAAAA,IAAUgxB,GAAGhxB,QAAc,MAAA,KAAG,KAAG,KAAG,IAAA,IAAU,CACtF;AAAA,QAAI4zB,WAAS,CAEb;AAAA,aAASx0B,IAAE,GAAGA,KAAG,GAAGA,KAAK;AACxB,UAAIy0B,aAAa54B,KAAK0Q,MAAMvM,MAAM;AAClC,UAAA,CAAIijB,MAAMtN,OAAO8e,UAAAA,CAAAA,GAAa;AAC7BA,qBAAaA,aAAa;AAAA,MAC1B;AACDD,eAASx0B,CAAKy0B,IAAAA;AAAAA,IACd;AAED,aAASC,cAAchc,MACtB;AAAA,UAAIqD,IAAIvgB,WAAU6tB,OAAO1c;AACzB,UAAGnR,WAAU6tB,OAAOK,QAAQhR,OAAM,CAAOxO,MAAAA,QAAW;AACnD6R,YAAIvgB,WAAU6tB,OAAOK,QAAQhR,OAAM,MAAMld,WAAU6tB,OAAOK,QAAQhR,IAAAA,KAAM;AAAA,MACxE;AACD,aAAOqD;AAAAA,IACP;AAGD,QAAI4Y,aAAa;AAEjB,UAAMC,QAAQl5B,SAASC,cAAc,KACrCi5B;AAAAA,UAAMrc,UAAUtZ,IAAI,qBAAA;AAGpB,aAASe,IAAE,GAAGA,IAAE+Z,MAAM/Z,KAAI;AACzB,UAAI0Y,MAAMhd,SAASC,cAAc,KACjC+c;AAAAA,UAAIH,UAAUtZ,IAAI;AAClByZ,UAAIva,MAAMwO,SAAS+nB,cAAc10B,CAAAA,IAAK;AACtC40B,YAAM34B,YAAYyc,GAElB;AAAA,eAAS6W,IAAE,GAAGA,IAAE,GAAGA,KAAK;AACvB,YAAIsF,OAAOn5B,SAASC,cAAc;AAClC+c,YAAIzc,YAAY44B;AAEhB,YAAI7C,MAAM;AACV,YAAIJ,KAAGT;AACNa,iBAAO;AAAA,iBACCJ,MAAIR;AACZY,iBAAO;AAAA,iBACCJ,GAAGhxB,QAAAA,KAAW2zB,GAAG3zB,QAAAA;AACzBoxB,iBAAO;AAER,YAAIn2B,KAAK8tB,qBAAqB9tB,KAAK2Q,SAAS+iB,CAAG,GAAA;AAC9CyC,iBAAO;AAAA,QACP;AAED6C,aAAKnoB,YAAYslB,MAAM,MAAMn2B,KAAKszB,UAAU2F,iBAAiBlD,IAAI2C,EAEjEM;AAAAA,aAAKlc,aAAa,kBAAkBnd,WAAU2zB,UAAUgD,YAAYP,EAAAA,CAAAA;AACpE,YAAImD,aAAa;AACjB,YAAIC,aAAa;AACjB,YAAIzF,MAAM,KAAK1zB,KAAK0B,OAAOkzB,aAAa;AACvCsE,wBAAc;AACdC,wBAAc;AAAA,QACd;AACD,YAAA,CAAKn5B,KAAK8tB,qBAAsB9tB,CAAAA,KAAK2Q,SAAS+iB,CAAG,GAAA;AAChDsF,eAAK12B,MAAMyO,QAAQ4nB,SAASjF,CAAAA;AAC5B1zB,eAAK4nB,SAASwR,cAAcJ,MAAMjD,EAElC;AAAA,cAAIsD,WAAWx5B,SAASC,cAAc,KACtCu5B;AAAAA,mBAAS/2B,MAAMwO,SAASnR,WAAU2f,GAAGuG,oBAAoB;AACzDwT,mBAASxoB,YAAYsoB;AACrBE,mBAASn5B,YAAYF,KAAKszB,UAAUgG,UAAUvD;AAC9CiD,eAAK54B,YAAYi5B,QAEjB;AAAA,cAAIE,WAAW15B,SAASC,cAAc,KACtCy5B;AAAAA,mBAAS1oB,YAAYqoB;AAGrBF,eAAK54B,YAAYm5B,QAAAA;AAAAA,QAErB,OAAU;AACNP,eAAK54B,YAAYP,SAASC,cAAc;AACxCk5B,eAAK54B,YAAYP,SAASC,cAAc;QACxC;AAED,YAAI05B,MAAMzD,GAAG3sB,QAAAA;AACb2sB,aAAG/1B,KAAKmD,KAAKC,IAAI2yB,IAAG,GAAE,KACtB;AAAA,YAAIA,GAAG3sB,QAAYowB,IAAAA,MAAM;AACxBzD,eAAK,IAAIvxB,KAAKuxB,GAAGpd,eAAeod,GAAGnd,SAAAA,GAAY4gB,MAAM,GAAG,IAAI;MAC7D;AAED75B,MAAAA,WAAU6tB,OAAOK,QAAQ1pB,KAAK20B;AAC9BA,oBAAcD,cAAc10B,CAC5B;AAAA,IAAA;AAEDnE,SAAKoM,YAAYqsB;AACjBz4B,SAAKmM,YAAY4pB;AAEjBxoB,QAAIrN,YAAY;AAChBqN,QAAInN,YAAY24B;AAEhB/4B,SAAKwQ,UAAU;AACf,QAAIvL,QAAQsI,IAAItJ,iBAAiB,kBACjCgB;AAAAA,UAAMtB,QAASq1B,CAAAA,UACd;AAAA,YAAM71B,OAAOxD,WAAU2zB,UAAUmG,WAAWT,MAAKv0B,aAAa,gBAC9D,CAAA;AAAA,YAAMtE,OAAO64B,MAAKha,cAAc,iBAChChf;AAAAA,WAAKwQ,SAASrN,IAAQhD,IAAAA;AACtBH,WAAK4K,UAAU,cAAc,CAAC5K,KAAKwQ,QAAAA,CAASrN,IAAOA,GAAAA,IAAAA,CAAAA;AAAAA,IAAM;AAG1D,WAAOnD,KAAKmM;AAAAA,EACb;AAEAxM,EAAAA,WAAU03B,qBAAmB,SAASjb,GAAEkZ,IAAGS,IAAG7X;AAE7C,QAAIqX,KAAG51B,WAAUwD,KAAKC,IAAIkyB,IAAG,GAAE,OAAA;AAG/B,QAAIoD,KAAK/4B,WAAUsM,aACnBjM;AAAAA,SAAKmD,KAAKyF,UAAU8vB,EAAAA;AACpB14B,SAAKmD,KAAKyF,UAAUmtB,EAEpB7X;AAAAA,WAAOA,QAAQ/M,KAAKyb,KAAKzb,KAAKI,OAAOgkB,GAAGxwB,YAAUgxB,GAAGhxB,QAAAA,MAAc,KAAG,KAAG,KAAG,IAAU,IAAA,CAAA;AAEtF,QAAI+L,SAAUK,KAAK8D,MAAMmH,EAAEgE,eAAalC,IAAQle,IAAAA,KAAKsf,GAAGuG;AAExD7lB,SAAKwtB,OAAO1c,SAASA,SAAS9Q,KAAKsf,GAAGuG;AACtC7lB,SAAKwtB,OAAOK,UAAU,CAEtB;AAAA,WAAOluB,WAAU64B,oBAAoBpc,GAAGkZ,IAAIS,IAAI7X,IAAAA;AAAAA,EAEjD;AAEAve,EAAAA,WAAUqC,UAAU,SAAUF,UAAAA;AAC7B,SAAKA,UAAU;AACdA,iBAAWnC,WAAUsG,SAAAA,EAAWxG;AAAAA,IAChC;AACD,QAAIE,WAAU4L,UAAU5L,WAAU4L,OAAOzJ,QAAAA,GAAW;AACnD,aAAOnC,WAAU4L,OAAOzJ,QAAAA;AAAAA,IACxB;AAED,QAAInC,WAAU2L,UAAU3L,WAAU2L,OAAOxJ,WAAW;AACnD,aAAOnC,WAAU2L,OAAOxJ;IACxB;AAED,WAAO;AAAA,EACR;AAEAnC,EAAAA,WAAU+5B,WAAW,SAAS5uB,UAAUoK,KACvC;AAAA,QAAIrS,WAAW7C,KAAK0B,OAAOi4B,SAAS92B;AACpC,aAASsB,IAAE,GAAGA,IAAEtB,SAASuB,QAAQD,KAAK;AACrC,UAAGtB,SAASsB,CAAAA,EAAG/B,UAAU0I,UAAU;AAClC,YAAIlD,UAAU/E,SAASsB,CAAGyD,EAAAA;AAC1B,iBAAS8rB,IAAE,GAAGA,IAAE9rB,QAAQxD,QAAQsvB,KAAK;AACpC,cAAG9rB,QAAQ8rB,GAAGxe,OAAOA,KAAK;AACzB,mBAAOtN,QAAQ8rB,CAAGjM,EAAAA;AAAAA,UAClB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACR;AACA9nB,EAAAA,WAAUi6B,mBAAmB,SAASC,WAAWC;AAChD,QAAI3W,OAAOxjB,WAAUo6B,WAAWF,SAAAA;AAChC,SAAK1W;AAAM,aAAO;AAClBA,SAAK/P,OAAO,GAAG+P,KAAK/e;AACpB+e,SAAKtf,KAAKuK,MAAM+U,MAAM2W,cAAc,CACpCn6B,CAAAA;AAAAA,IAAAA,WAAUiL,UAAU,iBAAiB,CAAA,CAAA;AACrCjL,IAAAA,WAAUq6B,cACVr6B;AAAAA,IAAAA,WAAUs6B;AACV,WAAO;AAAA,EACR;AACAt6B,EAAAA,WAAUwO,cAAc,SAAS0L,QAAQqgB;AACxC,QAAI/1B,GAAGgQ,GAAG8E;AAEVihB,YAAQA,SAAS,CAAA;AAEjB,SAAK/1B,IAAE,GAAGA,IAAE+1B,MAAM91B,QAAQD,KAAG;AAC5B,UAAG0V,WAAWqgB,MAAM/1B;AACnB,eAAO+1B,MAAM/1B,IAAE,CAEjB;AAAA,QAAI0V,iBAAiBA,UAAU,UAAU;AACxCZ,eAASgB,OAAOkgB,OAAOtgB,MAAAA;AACvB1F,UAAI,CAACpG,OAAMvJ,MAAKsV,QAAOzU,QAAO0U,OAC9B;AAAA,WAAK5V,IAAE,GAAGA,IAAEgQ,EAAE/P,QAAQD,KAAK;AAC1B,YAAI0V,kBAAkB1F,EAAEhQ,CAAAA;AACvB8U,mBAAS9U,IAAI,IAAIgQ,EAAEhQ,CAAG0V,EAAAA,MAAAA,IAAU,IAAI1F,EAAEhQ,CAAAA;AAAAA,MACvC;AACD+1B,YAAMr2B,KAAKgW,QAAQZ,MAAAA;AACnB,WAAK9U,KAAK0V,QAAQ;AACjB,YAAII,OAAO5B,UAAUzJ,eAAeR,MAAMyL,QAAQ,CAAC1V;AAClD8U,iBAAO9U,CAAAA,IAAKxE,WAAUwO,YAAY0L,OAAO1V,CAAI+1B,GAAAA,KAAAA;AAAAA,MAC9C;AAAA,IACD;AACD,WAAOjhB,UAAUY;AAAAA,EAClB;AACAla,EAAAA,WAAUoP,aAAa,SAAShJ,QAAQ2T,QAAAA;AACvC,aAASxE,OAAOwE,QAAQ;AACvB,UAAIA,OAAO9K,eAAesG,GAAAA,GAAM;AAC/BnP,eAAOmP,OAAOwE,OAAOxE,GAAAA;AAAAA,MACrB;AAAA,IACD;AACD,WAAOnP;AAAAA,EACR;AACApG,EAAAA,WAAUkwB,qBAAqB,SAASlD;AACvC,QAAIpd,QAAMvP,KAAKoM,UAAUrH,QAAAA,KAAW4nB,IAAI3F,IAAEhnB,KAAK0B,OAAOsqB,aAAWhsB,KAAK2M,cAAY,IAAEggB,IAAI5F,KAAG,KAAG,MAAI;AAElG,WAAO,IAAIviB,KAAKxE,KAAK0uB,eAAenf,KAAAA,CAAAA;AAAAA,EACrC;AAEA5P,EAAAA,WAAUyG,gBAAgB,SAASg0B,MAClC;AAAA,QAAIzN,MAAM3sB,KAAK6sB,cAAcuN,IAC7B;AAAA,WAAO,EACNj3B,MAAKnD,KAAK6vB,mBAAmBlD,GAC7BtmB,GAAAA,SAAQsmB,IAAItmB,QAAAA;AAAAA,EAEd;AACA1G,EAAAA,WAAU06B,SAAS,SAASvT,MAAM8B,QAAAA;AACjC,QAAI9B,QAAQA,KAAKwT,OAAM;AACtB,UAAIt6B,KAAKyyB,SAAQ;AAChBxxB,eAAOoY,WAAW;AACjByN,eAAKwT,MAAAA;AAAAA,QACL,GAAC,EAAA;AAAA,MACL,OAAS;AACN,YAAA;AACC,cAAI1R,UAAU9B,KAAK8B,UAAU9B,KAAK9F,aAAa;AAC9C8F,iBAAK8B;UACL;AACD9B,eAAKwT;QACL,SAAQz0B;QACR;AAAA,MACD;AAAA,IACD;AAAA,EACF;AAEA,WAAS00B,kBAAkBh2B,WAAWG;AACrC,UAAM6K,QAAQ,IAAI/K,KAAKD,SAAAA;AACvB,UAAMiL,MAAM,IAAIhL,KAAKE,OAAAA;AACrB,UAAM81B,mBAAmBhrB,IAAIirB,YAAYlrB,MAAMkrB,QAAAA;AAC/C,UAAMC,mBAAmBF,oBAAoB,MAAO,OAAO;AAC3D,WAAOrpB,KAAKie,IAAIsL,gBACjB;AAAA,EAAA;AAGA/6B,EAAAA,WAAUsuB,yBAAuB,SAAS1pB,WAAWG,SAAShD;AAC7D,QAAIi5B,cAAcj2B,UAAUH;AAI5B,QAAI+zB,SAASt4B,KAAK,YAAUA,KAAK4M,KAAAA;AAEjC,QAAIguB,mBAAmB,GACtBC;AACD,QAAIn5B,OAAO0F,QAAO;AACjBwzB,yBAAmB56B,KAAK86B,gBAAgBp5B,QAAQ6C,SAChDs2B;AAAAA,uBAAiB76B,KAAK86B,gBAAgBp5B,QAAQgD,OAE9C;AAAA,UAAGH,UAAUQ,QAAYpF,IAAAA,WAAUsG,WAAWkK,SAASpL,QAAAA,GAAU;AAChE61B,2BAAoBL,CAAAA,kBAAkBh2B,WAAW5E,WAAUsG,WAAWkK,QACtE;AAAA,MAAA;AACD,UAAGzL,QAAQK,QAAAA,IAAYpF,WAAUsG,SAAWmK,EAAAA,SAASrL,QAAU,GAAA;AAC9D81B,0BAAkBN,kBAAkB71B,SAAS/E,WAAUsG,SAAWmK,EAAAA,QAAAA;AAAAA,MAClE;AAAA,IACH,OAAO;AACLyqB,uBAAiB1pB,KAAKI,MAAMopB,cAAY,KAAG,KAAG,MAAK,EAAA;AAAA,IACnD;AAED,QAAII,cAAc;AAClB,WAAOH,mBAAmBC,gBAAe;AACxC,UAAIngB,QAAQ/a,WAAUwD,KAAKC,IAAIsB,SAAAA,CAAUhD,OAAOwsB,QAAQxsB,OAAOysB,MAC/D;AAAA,UAAImK,UAAUA,OAAO5zB,OAAAA,MAAAA,CAAcq2B,eAAgBA,eAAezC,OAAO5d,KAAU,IAAA;AAClFigB,uBAAgBj2B,UAAQgW;AAAAA,MAE3B,OAAO;AACJ,YAAIsgB,mBAAmB;AACvB,cAAMC,gBAAgB,IAAIz2B,KAAK2M,KAAK5C,IAAImM,MAAM3V,QAAWR,GAAAA,UAAUQ;AACnE,cAAMm2B,cAAcx2B;AACpB,cAAMy2B,sBAAsB,IAAI32B,KAAKy2B,cAActiB,YAAesiB,GAAAA,cAAcriB,YAAYqiB,cAAc7xB,QAAAA,GAAW1H,OAAO4K,UAAAA;AAC5H,cAAM8uB,oBAAoB,IAAI52B,KAAKy2B,cAActiB,YAAAA,GAAesiB,cAAcriB,SAAYqiB,GAAAA,cAAc7xB,QAAW1H,GAAAA,OAAO6K,aAAW,EACrI;AAAA,cAAM8uB,uBAAuB,IAAI72B,KAAKE,QAAQiU,YAAAA,GAAejU,QAAQkU,SAAAA,GAAYlU,QAAQ0E,QAAW1H,GAAAA,OAAO4K;AAC3G,cAAMgvB,qBAAqB,IAAI92B,KAAKE,QAAQiU,YAAejU,GAAAA,QAAQkU,YAAYlU,QAAQ0E,QAAAA,GAAW1H,OAAO6K,aAAW,EAAA;AAEpH,YAAG2uB,YAAYn2B,QAAAA,IAAYu2B,mBAAmBv2B,QAAAA,GAAU;AACvDi2B,8BAAoBE,cAAcI;AAAAA,QAClC;AAED,YAAGJ,YAAYn2B,QAAYs2B,IAAAA,qBAAqBt2B,QAAU,GAAA;AACzDi2B,8BAAoBt5B,OAAO8tB;AAAAA,QAC/B,OAAU;AACNwL,8BAAoBE,YAAY7uB,SAAW,IAAA,KAAG,KAAG,MAAO6uB,YAAYvtB,WAAa,IAAA,KAAG;AAAA,QACpF;AAED,YAAGstB,cAAcl2B,QAAYq2B,IAAAA,kBAAkBr2B,QAAU,GAAA;AACxDi2B,8BAAoBt5B,OAAO+tB;AAAAA,QAC3B;AAED,YAAGwL,cAAcl2B,YAAYo2B,oBAAoBp2B,QAAAA,GAAU;AAC1Di2B,8BAAqBG,oBAAoBp2B,QAAYk2B,IAAAA,cAAcl2B;QACnE;AAGD41B,uBAAeK;AACfD,sBAAc;AAAA,MACd;AACDr2B,gBAAUgW;AACVmgB;AAAAA,IACA;AACD,WAAOF;AAAAA,EACR;AACAh7B,EAAAA,WAAU+vB,8BAA4B,SAAS1sB,UAAUu4B,WAAW37B,KAAK+uB,MACxE;AAAA,QAAIoH,KAAK,IAAIvxB,KAAKxB;AAClB,QAAIw4B,MAAM7M,OAAQ,KAAI;AAGtB,QAAI/uB,IAAI4vB,qBAAqB5vB,IAAI6vB,iBAAgB;AAChD,UAAIuG;AACJ,UAAIrH;AACHqH,gBAASD,GAAG1pB,SAAAA,IAAW,KAAG0pB,GAAGpoB,WAAAA,KAAiB/N,IAAI0M,cAAY,KAAG;AAAA;AAEjE0pB,iBAASp2B,IAAI2M,aAAW,KAAG,MAAMwpB,GAAG1pB,SAAAA,IAAW,KAAG0pB,GAAGpoB,WAAAA;AACtD,UAAI8tB,WAAW77B,IAAI2M,YAAY3M,IAAI0M,cAAY;AAC/C,UAAIzE,OAAOsJ,KAAKyb,MAAO2O,aAAa,KAAG,OAAQvF,SAAUyF,OAAAA;AACzD,UAAG5zB,OAAO;AAAGA,eAAO;AACpB0zB,mBAAa1zB,QAAQ,KAAG,KAAK4zB,WAAW,KAAK;AAAA,IAC7C;AAED,QAAIC,KAAK,IAAIl3B,KAAKxB,WAAS,IAAEu4B,YAAUC,GACvC;AAAA,QAAIlD,SAASt4B,KAAK,YAAUA,KAAK4M,KAEjC;AAAA,QAAI+uB,aAAa,GAChBC;AACD,QAAIh8B,IAAIwH,QAAO;AACdu0B,mBAAa37B,KAAK86B,gBAAgBl7B,KAAKm2B,EACvC6F;AAAAA,iBAAW57B,KAAK86B,gBAAgBl7B,KAAK87B;IACvC,OAAO;AACLE,iBAAWzqB,KAAKI,MAAMgqB,YAAU,KAAG,KAAG,MAAK,EAAA;AAAA,IAC3C;AAED,WAAOI,aAAWH,OAAOI,WAASJ,KAAI;AACrC,UAAI9gB,QAAQ/a,WAAUwD,KAAKC,IAAI2yB,IAAIn2B,IAAIsuB,SAAOsN,KAAK57B,IAAIuuB,MACvD;AAAA,UAAImK,UAAUA,OAAOvC,EAAAA,GAAI;AACxBwF,sBAAc7gB,QAAMqb,MAAIyF;AACxBI,oBAAYJ;AAAAA,MACZ;AAEDzF,WAAKrb;AACLihB,oBAAYH;AAAAA,IACZ;AAED,WAAOD;AAAAA,EACR;AAEA57B,EAAAA,WAAU4xB,oBAAoB,WAAA;AAC7B,WAAOvxB,KAAKgC,QAAAA;AAAAA,EACb;AAEArC,EAAAA,WAAUk8B,wBAAwB;AACjC,QAAG77B,KAAKuL,UAAUvL,KAAKuL,OAAOvL,KAAK4M,KAAAA,GAAO;AACzC,aAAO5M,KAAKuL,OAAOvL,KAAK4M,KAAAA,EAAOzK;AAAAA,IACjC,WAAUnC,KAAKsL,UAAUtL,KAAKsL,OAAOtL,KAAK4M,QAAO;AAC/C,aAAO5M,KAAKsL,OAAOtL,KAAK4M,KAAOxK,EAAAA;AAAAA,IAC/B;AACD,WAAO;AAAA,EACR;AAEAzC,EAAAA,WAAUm8B,kBAAkB,WAC3B;AAAA,QAAIC,QAAQ/7B,KAAKiG,SAAAA;AACjB,WAAQjG,KAAKukB,QAAQwX,MAAM54B,QAAQ44B,MAAMt8B;AAAAA,EAC1C;AACAE,EAAAA,WAAUq8B,oBAAoB,WAAA;AAC7B,QAAID,QAAQ/7B,KAAKiG;AACjB,WAAO81B,MAAM5S,gBAAgB,QAAQ4S,MAAM5S,gBAAgB9a;AAAAA,EAC5D;AAEA;AC37DA,MAAe4tB,mBAAA,EACdz6B,OAAO,SAAUiiB,KAAIjiB,QAAOqc,SAC3B;AAAA,MAAI4F,IAAGyY;AACNzY,IAAAA,IAAGyY,iBAAiB16B,QAAOqc,SAAS,KAEhC;AAAA,WAAI4F,IAAG7d;AACX6d,IAAAA,IAAG7d,YAAY,OAAKpE,QAAOqc;AAC5B,GACDse,aAAa,SAAU1Y,KAAIjiB,QAAOqc,SACjC;AAAA,MAAI4F,IAAGC;AACND,IAAAA,IAAGC,oBAAoBliB,QAAOqc,SAAS,KAEnC;AAAA,WAAI4F,IAAGP;AACXO,IAAAA,IAAGP,YAAY,OAAK1hB,QAAOqc;AAC5B,ECZa;AAAA,SAAAue,mBAEd;AAAA,MAAIC,YAAY,SAAUl1B,UAAUmb;AACnCnb,eAAWA,YAAY80B,iBAAiBz6B;AACxC8gB,kBAAcA,eAAe2Z,iBAAiBE;AAC9C,QAAIpa,WAAW;AACf,QAAIua,aAAa,EAChBpU,QAAQ,SAASzE,KAAIjiB,QAAOyF,UAAUs1B,SACrCxa;AAAAA,eAASle,KAAK,EAAC6B,SAAS+d,KAAIjiB,OAAMA,QAAOyF,UAAoBs1B,QAC7Dp1B,CAAAA;AAAAA,eAASsc,KAAIjiB,QAAOyF,UAAUs1B;IAC9B,GACDC,QAAQ,SAAS/Y,KAAIjiB,QAAOyF,UAAUs1B,SAAAA;AACrCja,kBAAYmB,KAAIjiB,QAAOyF,UAAUs1B,OACjC;AAAA,eAAQp4B,IAAI,GAAGA,IAAI4d,SAAS3d,QAAQD,KAAI;AACvC,YAAI0Z,UAAUkE,SAAS5d,CACvB;AAAA,YAAI0Z,QAAQnY,YAAY+d,OAAM5F,QAAQrc,UAAUA,UAASqc,QAAQ5W,aAAaA,YAAY4W,QAAQ0e,YAAYA,SAAS;AACtHxa,mBAAS3O,OAAOjP,GAAG,CAAA;AACnBA;AAAAA,QACA;AAAA,MACD;AAAA,IACD,GACD6jB,WAAW;AACV,UAAIyU,cAAc1a,SAAS9T,MAE3B;AAAA,eAAS9J,IAAI,GAAGA,IAAIs4B,YAAYr4B,QAAQD,KAAI;AAC3C,YAAI0Z,UAAU4e,YAAYt4B;AAC1Bm4B,mBAAWE,OAAO3e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAU4W,QAAQ0e,OAAAA;AAC5ED,mBAAWE,OAAO3e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAUoH;AACpEiuB,mBAAWE,OAAO3e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAU,KACpEq1B;AAAAA,mBAAWE,OAAO3e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAU,IAAA;AAAA,MACpE;AACD8a,eAAS3O,OAAO,GAAG2O,SAAS3d,MAAAA;AAAAA,IAC5B,GACDyW,QAAQ,WAAA;AACP,aAAOwhB,UAAUr8B,KAAKwB,OAAOxB,KAAKm8B;IAClC,EAEF;AAAA,WAAOG;AAAAA,EACT;AAEC,SAAOD,UACR;AAAA;ACzCe,SAASxhB,SAAOlb,YAAAA;AAG/B,MAAI08B,YAAYD,iBAAAA;AAEhBz8B,EAAAA,WAAU6B,QAAQ66B,UAAUnU;AAC5BvoB,EAAAA,WAAUw8B,cAAcE,UAAUG;AAClC78B,EAAAA,WAAU+8B,kBAAkBL,UAAUrU;AACtCroB,EAAAA,WAAUooB,uBAAuBsU,UAAUxhB;AAG3Clb,EAAAA,WAAUg9B,QAAQ,SAAS5F;AAC1B,QAAI6F,OAAOv3B,OAAOgT,UAAUwkB,QAAQ,WAAY;AAAA,aAAO78B,KAAKgqB,QAAQ,cAAc;IAAI;AACtF,WAAO4S,KAAKxuB,MAAM2oB,GAAAA;AAAAA,EACnB;AAEAp3B,EAAAA,WAAUksB,UAAU,SAASjsB,KAAAA;AAC5B,QAAIA,OAAcA,OAAAA,OAAO,UAAU;AAClC,aAAA,CAAA,EAAUA,IAAI+Y,eAAe/Y,IAAIgZ,YAAYhZ,IAAIwJ;AAAAA,IACnD,OAAQ;AACN,aAAO;AAAA,IACP;AAAA,EACF;AAEAzJ,EAAAA,WAAUisB,YAAY,SAAShsB,KAAAA;AAC9B,WAAQA,OAAcA,OAAAA,OAAO;AAAA,EAC9B;AAEA;AC9Be,SAASib,SAAOlb;GAE/B,WAGC;AAAA,QAAIm9B,WAAW,IAAIC,OAAO,gBAAgB,IAC1C;AAAA,QAAIC,cAAc,IAAID,OAAO,MAAM,IAAA;AAEnC,aAASE,cAAcC,UAAAA;AACtB,cAAQA,WAAW,IACjBlT,QAAQ8S,UAAU,KACnB9S,QAAQgT,aAAa;IACtB;AAED,QAAIG,eAAe,IAAIJ,OAAO,KAAK,IAAA;AACnC,aAASK,aAAat2B,MAAAA;AACrB,cAAQA,OAAO,IAAIkjB,QAAQmT,cAAc,OAAA;AAAA,IACzC;AAEDx9B,IAAAA,WAAUioB,WAAW,EACpByV,oBAAoB,SAASC,MAC5B;AAAA,UAAIC,aAAa,CAAC,GAAA;AAClB,eAAQp5B,MAAKm5B,MAAK;AACjB,mBAAUA,KAAKn5B,EAAAA,KAAM,qBAAqBm5B,KAAKn5B,EAAAA,KAAM,UAAU;AAC9D,cAAI2C,OAAOs2B,aAAaH,cAAcK,KAAKn5B,EAAAA,CAAAA,CAAAA;AAC3Co5B,qBAAW15B,KAAKM,KAAI,OAAO2C,OAAO;QAClC;AAAA,MACD;AACDy2B,iBAAW15B,KAAK,GAAA;AAChB,aAAO05B,WAAWztB,KAAK,GACvB;AAAA,IAAA,GACD0tB,eAAe,SAASjwB,KAAKkwB,QAC5B;AAAA,eAAQt5B,MAAKs5B,QAAO;AACnBlwB,YAAIuP,aAAa3Y,IAAG84B,cAAcQ,OAAOt5B,EACzC,CAAA,CAAA;AAAA,MAAA;AACD,aAAOoJ;AAAAA,IACP,GAEDsa,WAAW,SAASta,KAAKwqB,SACxB;AAAA,aAAO/3B,KAAKw9B,cAAcjwB,KAAK,EAAC,cAAcwqB,QAAAA,CAAAA;AAAAA,IAC9C,GACDtQ,OAAO,SAASA,OACf;AAAA,aAAO9nB,WAAUioB,SAASyV,mBAAmB,EAAC,cAAc5V,MAAAA,CAAAA;AAAAA,IAC5D,GAIDwQ,eAAe,SAAS1qB,KAAKwqB,SAAAA;AAC5B/3B,WAAK6nB,UAAUta,KAAKwqB;IAEpB,GACDqB,eAAe,SAAS7rB,KAAKpK;AAC5BnD,WAAK6nB,UAAUta,KAAK5N,WAAU2zB,UAAUoK,SAASv6B,IACjD,CAAA;AAAA,IAAA,GAEDi0B,gBAAgB,SAAS7pB,KAAKwqB,SAC7B/3B;AAAAA,WAAK6nB,UAAUta,KAAKwqB,OAAAA;AAAAA,IACpB,GACDjD,eAAe,SAASvnB,KAAKwqB,SAAAA;AAC5B/3B,WAAK6nB,UAAUta,KAAKwqB;IACpB,GAEDnB,eAAe,SAASrpB,KAAKpK,MAAAA;AAC5BnD,WAAK80B,cAAcvnB,KAAK5N,WAAU2zB,UAAUoK,SAASv6B,IACrD,CAAA;AAAA,IAAA,GAEDywB,yBAAyB,SAASrmB,KAAKka,OACtC;AAAA,aAAOznB,KAAKw9B,cAAcjwB,KAAK,EAACowB,MAAO,UAAU,cAAalW,MAC9D,CAAA;AAAA,IAAA,GAED8M,mBAAmB,SAAShnB,KAAKsI,UAChC;AAAA,aAAO7V,KAAKw9B,cAAcjwB,KAAK,EAAC,gBAAgBsI,WAAW,SAAS,QAAA,CAAA;AAAA,IACpE,GAGD+nB,mBAAkB,SAASC;AAE1B,aAAOl+B,WAAUioB,SAASyV,mBAAmB,EAAC,cAAcQ,WAAAA,CAAAA;AAAAA,IAC5D,GAGDC,WAAW,SAASt8B,QAAO+L,KAC1BvN;AAAAA,WAAK+9B,iBAAiBv8B,QAAO+L,GAAAA;AAAAA,IAC7B,GAGDwwB,kBAAkB,SAASv8B,QAAO+L,KAAAA;AACjCA,UAAIuP,aAAa,cAAcmgB,cAAct9B,WAAU2zB,UAAU0K,WAAWx8B,OAAMuB,YAAYvB,OAAMwB,UAAUxB;AAE9G,UAAG7B,WAAU+B,OAAOkoB,UAAS;AAC5Brc,YAAIuP,aAAa,iBAAiB,IAElC;AAAA,MAAA;AAED,UAAGtb,OAAMy8B,sBAAqB;AAC7B1wB,YAAIuP,aAAa,aAAa,IAAA;AAAA,MAC9B;AAGDvP,UAAIuP,aAAa,iBACfnd,WAAUsG,SAAAA,EAAWqjB,aAAa9nB,OAAMzB,KAAM,SAAS,OAAA;AAAA,IACzD,GAEDm+B,iBAAiB,SAAS18B,QAAO+L,KAChCvN;AAAAA,WAAK+9B,iBAAiBv8B,QAAO+L,GAAAA;AAAAA,IAC7B,GAED4wB,gBAAgB,SAASC,iBAAiBC,KAAAA;AACzC,UAAIplB,SAAS,EACZ6D,cAAa,SAAS1C,MAAMiE,OAC3Bre;AAAAA,aAAKoa,QAAQiE;AAAAA,MACb,EAAA;AAGF+f,sBAAgBhwB,MAAMpO,MAAM,CAACq+B,KAAKplB,MAAAA,CAAAA;AAClC,aAAOA;AAAAA,IAEP,GAEDqlB,oBAAoB,SAAS98B;AAC5B,aAAOxB,KAAKq9B,mBAAmBr9B,KAAKm+B,eAAen+B,KAAKk+B,iBAAiB18B;IACzE,GAID+8B,sBAAsB;AACrB,aAAOv+B,KAAKq9B,mBAAmB,EAACM,MAAM,MACtC,CAAA;AAAA,IAAA,GACDa,sBAAsB,SAAS/W,OAAAA;AAC9B,aAAOznB,KAAKq9B,mBAAmB,EAACM,MAAM,gBAAgB,cAAclW,MAAAA,CAAAA;AAAAA,IACpE,GACDgX,6BAA6B,SAAShX;AACrC,aAAOznB,KAAKw+B,qBAAqB/W,KACjC;AAAA,IAAA,GACDiX,sBAAsB,WAAA;AACrB,aAAO1+B,KAAKq9B,mBAAmB,EAACM,MAAM,OAAA,CAAA;AAAA,IACtC,GACDgB,uBAAuB,SAASn9B,QAC/B;AAAA,UAAIo9B,QAAQ5+B,KAAKm+B,eAAen+B,KAAK+9B,kBAAkBv8B,MAAAA;AAEvDo9B,YAAM,MAAU,IAAA;AAEhB,aAAO5+B,KAAKq9B,mBAAmBuB,KAE/B;AAAA,IAAA,GACDC,wBAAwB,WACvB;AAAA,aAAO7+B,KAAKq9B,mBAAmB,EAACM,MAAO,UAAU,cAAah+B,WAAU+nB,OAAOC,OAAOmX,aACtF,CAAA;AAAA,IAAA,GAGDC,gBAAgB,WACf;AAAA,aAAO/+B,KAAKq9B,mBAAmB,EAACM,MAAM,OAAA,CAAA;AAAA,IACtC,GAEDqB,mBAAmB,SAASx9B;AAC3B,aAAOxB,KAAK2+B,sBAAsBn9B,MAAAA;AAAAA,IAClC,GAEDy9B,oBAAoB,SAASz9B,QAAOirB,QAAQpO,OAAAA;AAC3C,aAAOre,KAAKq9B,mBAAmB,EAACM,MAAO,YAAY,cAAc,CAC/DlR,OAAOhF,UAAUpZ,SAAYoe,OAAO1sB,KAAK0sB,OAAOhF,OACjD,MACApJ;IAED,GAED6gB,eAAe;AACd,aAAOl/B,KAAK++B;IACZ,GACDI,kBAAkB,SAAS39B,QAAAA;AAC1B,aAAOxB,KAAKg/B,kBAAkBx9B;IAC9B,GACD49B,qBAAqB;AACpB,aAAOp/B,KAAK6+B,uBACZ;AAAA,IAAA,GAEDQ,eAAe,SAAS9xB,KAAK+xB;AAC5Bt/B,WAAKw9B,cAAcjwB,KAAK,EACvBxN,IAAKu/B,WAAS,IACd,aAAY,aACZ,eAAc;IAGf,GACDC,aAAa,SAAShyB,KAAK+xB,UAAAA;AAC1Bt/B,WAAKw9B,cAAcjwB,KAAK,EACvB,mBAAkB+xB,WAAS,IAC3B3B,MAAO;IAER,GACD6B,YAAY,SAASjyB,KAAAA;AACpBvN,WAAKw9B,cAAcjwB,KAAK,EACvBowB,MAAO,MAAA,CAAA;AAAA,IAER,GACD8B,gBAAgB,SAASlyB,KAAKpK,MAAAA;AAC7B,UAAIu8B,WAAYv8B,KAAK4B,YAAYpF,WAAUwM,UAAUpH,aAAa5B,KAAK4B,QAAAA,KAAapF,WAAUyM,UAAUrH;AACxG/E,WAAKw9B,cAAcjwB,KAAK,EACvBowB,MAAO,YACP,cAAch+B,WAAU2zB,UAAUoK,SAASv6B,OAC3C,iBAAiBu8B,WAAW,SAAS,QAEtC,CAAA;AAAA,IAAA,GACDC,iBAAiB,SAASpyB,KAAAA;AACzBvN,WAAKw9B,cAAcjwB,KAAK,EACvBowB,MAAO;IAER,GAGDiC,mBAAmB,SAASryB,KAAKpK,MAAAA;AAChC,UAAI2gB,SAASvW,IAAIyR,cAAc,mBAAA;AAC/B,UAAI+Y,UAAUxqB,IAAIyR,cAAc,kBAChC;AAAA,UAAIsgB,WAAW3/B,WAAU+O,QAAQ;AACjC1O,WAAKw9B,cAAc1Z,QAAQ,EAAE/jB,IAAMu/B,SACnCt/B,CAAAA;AAAAA,WAAKw9B,cAAczF,SAAS,EAAE,mBAAmBuH,SAAAA,CAAAA;AAAAA,IAEjD,GACDO,iBAAiB,SAAStyB,KAAK/L,QAC9BxB;AAAAA,WAAK89B,UAAUt8B,QAAO+L;IACtB,GAEDuyB,oBAAoB,SAASvyB,KAC5BA;AAAAA,UAAIuP,aAAa,eAAe,MAAA;AAAA,IAChC,GAEDijB,qBAAqB,SAASxyB,KAC7BA;AAAAA,UAAIuP,aAAa,eAAe,OAAA;AAAA,IAChC,GAEDkjB,iCAAiC,SAASvY,OACzC;AAAA,aAAOznB,KAAKq9B,mBAAmB,EAACM,MAAO,UAAU,cAAalW,OAAOwY,UAAW,IAAA,CAAA;AAAA,IAChF,GAEDC,YAAY,SAAS3yB,KAAK+xB,UAAAA;AACzBt/B,WAAKw9B,cAAcjwB,KAAK,EACvBxN,IAAKu/B,WAAS,GAEf,CAAA;AAAA,IAAA,GACDa,UAAU,SAAS5yB,KAAK+xB;AACvBt/B,WAAKu/B,YAAYhyB,KAAK+xB,QACtB;AAAA,IAAA,GACDc,cAAc,SAAS7yB;AACtB,aAAOvN,KAAK2/B,gBAAgBpyB,GAC5B;AAAA,IAAA,GACD8yB,SAAS,SAAS9yB,KAAAA;AACjB,aAAOvN,KAAKw/B,WAAWjyB,GACvB;AAAA,IAAA,GACD+yB,aAAa,SAAS/yB,KAAAA;AACrBvN,WAAKw9B,cAAcjwB,KAAK,EACvBowB,MAAO;IAER,GAED4C,cAAc,SAAShzB,KACtBA;AAAAA,UAAIuP,aAAa,QAAQ,QAAA;AACzBvP,UAAIuP,aAAa,eAAe,MAChCvP;AAAAA,UAAIlN,WAAWyc,aAAa,QAAQ;IACpC,GAED0jB,0BAAyB,SAASC,YAAAA;AACjC,aAAOzgC,KAAKq9B,mBAAmB,EAACM,MAAO,UAAU,cAAah+B,WAAU+nB,OAAOC,OAAO8Y,UAAAA,GAAaR,UAAW,IAC9G,CAAA;AAAA,IAAA,GACDS,qBAAqB,SAASC,UAAAA;AAC7B,aAAO3gC,KAAKq9B,mBAAmB,EAACM,MAAO,UAAU,cAAah+B,WAAU+nB,OAAOC,OAAOgZ,QAAAA,EAAAA,CAAAA;AAAAA,IACtF,GACDC,gBAAgB,SAASrzB,KAAKszB,YAAAA;AAC7BtzB,UAAIuP,aAAa,cAAc+jB;IAC/B,GAEDC,0BAA0B,SAASC,aAClC;AAAA,UAAItZ,QAAQ;AAEZ,cAAQsZ,aACP;AAAA,QAAA,KAAK;AACJtZ,kBAAQ9nB,WAAU+nB,OAAOC,OAAOxM;AAChC;AAAA,QACD,KAAK;AACJsM,kBAAQ9nB,WAAU+nB,OAAOC,OAAOqZ;AAChC;AAAA,QACD,KAAK;AACJvZ,kBAAQ9nB,WAAU+nB,OAAOC,OAAOnoB;AAChC;AAAA,QACD,KAAK;AACJioB,kBAAQ9nB,WAAU+nB,OAAOC,OAAOsZ,OAAO,MAAMthC,WAAU+nB,OAAOC,OAAOuZ;AACrE;AAAA,MAAA;AAKF,aAAOvhC,WAAUioB,SAASyV,mBAAmB,EAAC,cAAc5V,MAC5D,CAAA;AAAA,IAAA,GAGD0Z,yBAAyB,SAASC,aAAAA;AACjC,aAAO,4CAA0CA,cAAY;AAAA,IAC7D,GAEDC,iBAAiB,SAAS9zB,KAAAA;AACzBA,UAAIuP,aAAa,QAAQ;IAEzB,GAEDwkB,kBAAkB,SAAS/zB,KAAKmB;AAC/BnB,UAAIuP,aAAa,QAAQ,QACzB;AAAA,UAAGpO,MAAI;AACNnB,YAAIuP,aAAa,mBAAmBpO;MACpC;AAAA,IAGD,GAED6yB,eAAe,SAASh0B;AACvBA,UAAIuP,aAAa,QAAQ,QAAA;AAAA,IACzB,GAED0kB,2BAA2B,WAAA;AAC1B,aAAO;AAAA,IACP,GAEDC,iBAAiB,SAASl0B,KAAKuW,QAC9BvW;AAAAA,UAAIuP,aAAa,cAAcgH,MAAAA;AAAAA,IAC/B,GAED4d,2BAA2B,SAASja;AACnC,aAAO9nB,WAAUioB,SAASyV,mBAAmB,EAACM,MAAO,UAAU,cAAalW,OAAOwY,UAAW;IAC9F,GAED0B,aAAa,SAASp0B,KAAAA;AACrBA,UAAIuP,aAAa,QAAQ;IACzB,GAED8kB,oBAAoB,SAASr0B,KAC5BA;AAAAA,UAAIuP,aAAa,eAAe;IAChC,GAED+kB,mBAAmB,SAASt0B,KAC3BA;AAAAA,UAAIuP,aAAa,eAAe,MAAA;AAAA,IAChC,EAGF;AAAA,aAASglB;AACR,aAAQniC,CAAAA,WAAU+B,OAAO8f;AAAAA,IACzB;AAED,aAAQrd,KAAKxE,WAAUioB,UAAS;AAC/BjoB,MAAAA,WAAUioB,SAASzjB,KAAK,SAAU49B,SAAAA;AACjC,eAAO,WACN;AAAA,cAAGD,WAAa,GAAA;AACf,mBAAO;AAAA,UACP;AACD,iBAAOC,QAAQ3zB,MAAMpO,MAAMiU,SAC/B;AAAA,QAAA;AAAA,MACG,EAAEtU,WAAUioB,SAASzjB,CAAAA,CAAAA;AAAAA,IACtB;AAAA,EAGD,GAnWD;AAqWA;ACtWA,SAAS69B,gBAAgBC,MACxB;AAAA,MAAI1/B,MAAI,GAAGC,OAAK,GAAGqkB,QAAM,GAAGqb,SAAO;AACnC,MAAID,KAAKE,uBAAuB;AAC/B,QAAIC,MAAMH,KAAKE,sBACf;AAAA,QAAIhiC,OAAON,SAASM;AACpB,QAAIkiC,UAAWxiC,SAASmgB,mBACvBngB,SAASM,KAAKsN,cACd5N,SAASM;AAEV,QAAImtB,YAAYrsB,OAAOqhC,eAAeD,QAAQ/U,aAAantB,KAAKmtB;AAChE,QAAIH,aAAalsB,OAAOshC,eAAeF,QAAQlV,cAAchtB,KAAKgtB;AAClE,QAAII,YAAY8U,QAAQ9U,aAAaptB,KAAKotB,aAAa;AACvD,QAAIH,aAAaiV,QAAQjV,cAAcjtB,KAAKitB,cAAc;AAC1D7qB,UAAO6/B,IAAI7/B,MAAO+qB,YAAYC;AAC9B/qB,WAAO4/B,IAAI5/B,OAAO2qB,aAAaC;AAE/BvG,YAAQhnB,SAASM,KAAK6gB,cAAcohB,IAAIvb;AACxCqb,aAASriC,SAASM,KAAK2gB,eAAeshB,IAAIF;AAAAA,EAC5C,OAAQ;AACN,WAAMD,MAAM;AACX1/B,YAAMA,MAAM0zB,SAASgM,KAAKxb,WAAU;AACpCjkB,aAAOA,OAAOyzB,SAASgM,KAAKO,YAAW,EACvCP;AAAAA,aAAOA,KAAKQ;AAAAA,IACZ;AAED5b,YAAQhnB,SAASM,KAAK6gB,cAAcihB,KAAKjhB,cAAcxe;AACvD0/B,aAASriC,SAASM,KAAK2gB,eAAemhB,KAAKnhB,eAAeve;AAAAA,EAC1D;AACD,SAAO,EAAEykB,GAAG7V,KAAKI,MAAMhP,GAAMwkB,GAAAA,GAAG5V,KAAKI,MAAM/O,IAAAA,GAAOuO,OAAMkxB,KAAKjhB,aAAalQ,QAAOmxB,KAAKnhB,cAAc+F,OAAO1V,KAAKI,MAAMsV,KAAQqb,GAAAA,QAAQ/wB,KAAKI,MAAM2wB,MAAAA,EAAAA;AAClJ;AAKA,SAASQ,yBAAyBl8B,IAAIsgB,MAAAA;AACrC,MAAIlT,IAAI/T,SAASmgB;AACjB,MAAIoiB,MAAMJ,gBAAgBlb,IAAAA;AAE1B,SAAO,EACNC,GAAGvgB,GAAG0mB,UAAUtZ,EAAEwZ,aAAagV,IAAIrb,IAAID,KAAKqG,YAC5CnG,GAAGxgB,GAAG6mB,UAAUzZ,EAAE2Z,YAAY6U,IAAIpb,IAAIF,KAAKwG,UAAAA;AAE7C;AAEA,SAASqV,gBAAgBV,MACxB;AAAA,MAAI1/B,MAAI,GAAGC,OAAK,GAAGqkB,QAAM,GAAGqb,SAAO;AACnC,MAAID,KAAKE,uBAAuB;AAC/B,QAAIC,MAAMH,KAAKE,sBACf;AAAA,QAAIhiC,OAAON,SAASM;AACpB,QAAIkiC,UAAWxiC,SAASmgB,mBACvBngB,SAASM,KAAKsN,cACd5N,SAASM;AAEV,QAAImtB,YAAYrsB,OAAOqhC,eAAeD,QAAQ/U,aAAantB,KAAKmtB;AAChE,QAAIH,aAAalsB,OAAOshC,eAAeF,QAAQlV,cAAchtB,KAAKgtB;AAClE,QAAII,YAAY8U,QAAQ9U,aAAaptB,KAAKotB,aAAa;AACvD,QAAIH,aAAaiV,QAAQjV,cAAcjtB,KAAKitB,cAAc;AAC1D7qB,UAAO6/B,IAAI7/B,MAAO+qB,YAAYC;AAC9B/qB,WAAO4/B,IAAI5/B,OAAO2qB,aAAaC;AAE/BvG,YAAQhnB,SAASM,KAAK6gB,cAAcohB,IAAIvb;AACxCqb,aAASriC,SAASM,KAAK2gB,eAAeshB,IAAIF;AAAAA,EAC5C,OAAQ;AACN,WAAMD,MAAM;AACX1/B,YAAMA,MAAM0zB,SAASgM,KAAKxb,WAAU;AACpCjkB,aAAOA,OAAOyzB,SAASgM,KAAKO,YAAW,EACvCP;AAAAA,aAAOA,KAAKQ;AAAAA,IACZ;AAED5b,YAAQhnB,SAASM,KAAK6gB,cAAcihB,KAAKjhB,cAAcxe;AACvD0/B,aAASriC,SAASM,KAAK2gB,eAAemhB,KAAKnhB,eAAeve;AAAAA,EAC1D;AACD,SAAO,EAAEykB,GAAG7V,KAAKI,MAAMhP,GAAMwkB,GAAAA,GAAG5V,KAAKI,MAAM/O,IAAAA,GAAOuO,OAAMkxB,KAAKjhB,aAAalQ,QAAOmxB,KAAKnhB,cAAc+F,OAAO1V,KAAKI,MAAMsV,KAAQqb,GAAAA,QAAQ/wB,KAAKI,MAAM2wB;AAClJ;AAEA,SAASU,aAAa9b,MACrB;AAAA,MAAA,CAAIA;AAAM,WAAO;AAEjB,MAAIjW,YAAYiW,KAAKjW,aAAa;AAClC,MAAGA,UAAUgyB;AACZhyB,gBAAYA,UAAUgyB;AAEvB,MAAIhyB,CAAAA,UAAUkB;AACblB,gBAAY;AAEb,SAAOA,aAAa;AACrB;AAEA,SAASiyB,cAAcj9B,GACtB;AAAA,MAAIk9B;AACJ,MAAIl9B,EAAEm9B;AACLD,UAAMl9B;AAAAA,OACF;AACJA,QAAIA,KAAK5E,OAAOO;AAChBuhC,UAAMl9B,EAAEE,UAAUF,EAAEksB;AACpB,QAAIgR,IAAIE,cAAcp9B,EAAEq9B,cAAc;AACrCH,YAAMl9B,EAAEq9B,aAAAA,EAAe;IACvB;AAAA,EACD;AACD,SAAOH;AACR;AAEA,SAASI,UAAUt9B,GAAGmsB,WAAWoR,QAAAA;AAChC,MAAGA,WAAW/0B;AACb+0B,aAAS;AAEV,MAAIL,MAAMl9B,EAAEE,UAAUF,EAAEksB;AACxB,MAAI9uB,MAAM;AAEV,SAAO8/B,KAAI;AACV9/B,UAAM2/B,aAAaG;AAEnB,QAAG9/B,KAAI;AACN,UAAIogC,MAAMpgC,IAAI8O,QAAQigB,SAAAA;AACtB,UAAIqR,OAAO,GAAE;AACZ,YAAA,CAAKD;AACJ,iBAAOL;AAGR,YAAIvgC,OAAQ6gC,QAAQ,KAAUpgC,EAAAA,IAAIqgC,OAAOD,MAAM,CAAA,KAAI,IAAIxG,KACvD;AAAA,YAAIhW,QAAUwc,MAAMrR,UAAU5tB,UAAUnB,IAAImB,WAAgBnB,IAAIqgC,OAAOD,MAAMrR,UAAU5tB,MAAAA,EAASy4B;AAEhG,YAAIr6B,QAAQqkB;AACX,iBAAOkc;AAAAA,MACR;AAAA,IACD;AAEDA,UAAIA,IAAIt1B;AAAAA,EACR;AACD,SAAO;AACR;AAIA,SAAS81B,UAAUzc,MAClB;AAAA,MAAIpH,UAAU,OACb+X,aAAa;AACd,MAAGx2B,OAAOmgB,kBAAiB;AAC1B,QAAI9e,QAAQrB,OAAOmgB,iBAAiB0F,MAAM,IAAA;AAC1CpH,cAAUpd,MAAM,SAAA;AAChBm1B,iBAAan1B,MAAM;EACrB,WAAUwkB,KAAK0c,cAAa;AAC1B9jB,cAAUoH,KAAK0c,aAAa,SAC5B/L;AAAAA,iBAAa3Q,KAAK0c,aAAa,YAAA;AAAA,EAC/B;AAED,MAAIC,gBAAgB;AACpB,MAAIC,mBAAmBP,UAAU,EAACp9B,QAAO+gB,KAAO,GAAA,mBAAmB;AACnE,MAAG4c,kBAAiB;AACnBD,oBAAmBC,CAAAA,EAAAA,iBAAiBphC,MAAMwO,UAAU;AAAA,EACpD;AACD2yB,kBAAgBA,kBAAmB3c,KAAiB;AAEpD,SAAQpH,WAAW,UAAU+X,cAAc,YAAA,CAAagM;AACzD;AAEA,SAASE,uBAAuB7c,MAC/B;AAAA,SAAA,CAAQM,MAAMN,KAAKriB,aAAa,UAAiBqiB,CAAAA,KAAAA,KAAKriB,aAAa,UAAY,IAAA,KAAK;AACrF;AAEA,SAASm/B,QAAQ9c,MAChB;AAAA,MAAI+c,cAAc,EAAC1nB,GAAK,MAAMlM,MAAQ;AACtC,MAAG4zB,YAAY/c,KAAKgd,SAASC,YAAAA,CAAAA,GAAe;AAC3C,WAAA,CAAA,CAASjd,KAAKriB,aAAa,MAAA;AAAA,EAC3B;AACD,SAAO;AACR;AAEA,SAAShD,UAAUqlB,MAClB;AAAA,MAAIkd,aAAa,EAACC,OAAQ,MAAMrb,QAAS,MAAMsb,UAAW,MAAM/mB,QAAS,MAAMtD,QAAS;AACxF,MAAGmqB,WAAWld,KAAKgd,SAASnhB,YAAAA,CAAAA,GAAe;AAC1C,WAAQmE,CAAAA,KAAKqd,aAAa,UAAA;AAAA,EAC1B;AAED,SAAO;AACR;AAGA,SAASC,kBAAkBxkB,MAC1B;AAAA,MAAIykB,QAAQzkB,KAAK3b,iBAAiB,CACjC,WACA,cACA,SACA,UACA,YACA,UACA,UACA,UACA,SACA,cACA,mBACC6L,EAAAA,KAAK;AAEP,MAAIw0B,aAAav2B,MAAMsK,UAAUpK,MAAMmI,KAAKiuB,OAAO;AAEnD,WAAQlgC,IAAI,GAAGA,IAAImgC,WAAWlgC,QAAQD,KAAI;AACzCmgC,eAAWngC,GAAGogC,YAAYpgC;AAAAA,EAI1B;AAEDmgC,aAAWE,KAAK,SAASroB,GAAGC,GAAAA;AAC3B,QAAGD,EAAEoF,aAAa,KAAKnF,EAAEmF,aAAa,GAAE;AACvC,aAAO;AAAA,IACP;AACD,QAAGpF,EAAEoF,aAAa,KAAKnF,EAAEmF,aAAa,GAAE;AACvC;IACA;AAED,QAAIpF,EAAEoF,aAAanF,EAAEmF,UAAS;AAE7B,aAAOpF,EAAEooB,YAAYnoB,EAAEmoB;AAAAA,IACvB;AACD,QAAIpoB,EAAEoF,WAAWnF,EAAEmF,UAAU;AAC5B,aAAA;AAAA,IACA;AACD,WAAO;AAAA,EACT,CAAA;AAEC,WAAQpd,IAAI,GAAGA,IAAImgC,WAAWlgC,QAAQD,KAAI;AACzC,QAAI2iB,OAAOwd,WAAWngC,CACtB;AAAA,QAAIsgC,WAAWd,uBAAuB7c,IAAAA,KAAUrlB,UAAUqlB,IAAS8c,KAAAA,QAAQ9c,IAAUyc,MAAAA,UAAUzc;AAC/F,QAAI2d,CAAAA,SAAQ;AACXH,iBAAWlxB,OAAOjP,GAAG,CACrBA;AAAAA;AAAAA,IACA;AAAA,EACD;AACD,SAAOmgC;AACR;AAGA,SAASI,uBACR;AAAA,SAAO7kC,SAAS80B,KAAKgQ,oBAAoB9kC,SAAS80B,KAAKiQ;AACxD;AAOA,SAASC;AACR,MAAIC,gBAAgBjlC,SAASilC;AAC7B,MAAIA,cAAc7B,YAAY;AAC7B6B,oBAAgBA,cAAc7B,WAAW6B;AAAAA,EACzC;AACD,MAAIA,kBAAkBjlC,SAASM,QAAQN,SAASklC,cAAc;AAC7DD,oBAAgBjlC,SAASklC,aAAeC,EAAAA,aAAanlC,SAASM;AAAAA,EAC9D;AAED,SAAO2kC;AACR;AAOA,SAASG,YAAYv/B;AACpB,MAAKA,CAAAA,SAAS;AACb,WAAO7F,SAASM;AAAAA,EAChB;AACD,OAAKukC,qBAAwB,GAAA;AAC5B,WAAO7kC,SAASM;AAAAA,EAChB;AACD,SAAOuF,QAAQ+H,eAAe/H,UAAUA,QAAQ+H,aAAa;AAC5D,QAAI/H,mBAAmBw/B,YAAY;AAClC,aAAOx/B,QAAQy/B;AAAAA,IACf;AAAA,EACD;AACD,SAAOtlC,SAASM;AACjB;AAEA,SAASilC,gBAAgB1/B,SACxB;AAAA,SAAA,CAAA,CAASu/B,YAAYv/B,OAAAA;AACtB;AAEA,MAAe2/B,cAAA,EAOd3X,iBAAiB,SAASA,gBAAgB4X,YACzC;AAAA,SAAOtlC,KAAKulC,UAAUD,YAAY9iC;AAClC,GAODmrB,gBAAgB,SAASA,eAAe2X;AACvC,SAAOtlC,KAAKulC,UAAUD,UAAAA,EAAY/iC;AAClC,GAEDijC,cAAc,SAASA,aAAavD,MAAAA;AACnC,MAAI1/B,MAAI,GAAGC,OAAK;AAChB,SAAMy/B,MAAM;AACX1/B,UAAMA,MAAM0zB,SAASgM,KAAKxb,SAC1BjkB;AAAAA,WAAOA,OAAOyzB,SAASgM,KAAKO,UAC5BP;AAAAA,WAAOA,KAAKQ;AAAAA,EACZ;AACD,SAAO,EAAClgC,KAAUC;AAClB,GAEDijC,eAAe,SAASA,cAAcxD,MAAAA;AACrC,MAAIG,MAAMH,KAAKE,sBAEf;AAAA,MAAI5/B,MAAM,GACTC,OAAO;AAGR,MAAK,CAAA,OAAOkjC,KAAKC,UAAUC,SAAAA,GAAY;AACtC,QAAIzlC,OAAON,SAASM;AACpB,QAAIkiC,UAAUxiC,SAASmgB;AACvB,QAAIsN,YAAYrsB,OAAOqhC,eAAeD,QAAQ/U,aAAantB,KAAKmtB;AAChE,QAAIH,aAAalsB,OAAOshC,eAAeF,QAAQlV,cAAchtB,KAAKgtB;AAClE,QAAII,YAAY8U,QAAQ9U,aAAaptB,KAAKotB,aAAa;AACvD,QAAIH,aAAaiV,QAAQjV,cAAcjtB,KAAKitB,cAAc;AAE1D7qB,UAAO6/B,IAAI7/B,MAAO+qB,YAAYC;AAC9B/qB,WAAO4/B,IAAI5/B,OAAO2qB,aAAaC;AAAAA,EAClC,OAAQ;AAIL,QAAIjD,QAAQtqB,SAASC,cAAc,KACnCqqB;AAAAA,UAAM7nB,MAAM2K,WAAS;AACrBkd,UAAM7nB,MAAME,OAAK;AACjB2nB,UAAM7nB,MAAMC,MAAI;AAChB4nB,UAAM7nB,MAAMyO,QAAM;AAClBoZ,UAAM7nB,MAAMwO,SAAS;AAErBjR,aAASM,KAAKC,YAAY+pB;AAC1B,QAAI0b,WAAW1b,MAAMgY,sBACrB5/B;AAAAA,UAAO6/B,IAAI7/B,MAAMsjC,SAAStjC;AAC1BC,WAAO4/B,IAAI5/B,OAAOqjC,SAASrjC;AAE3B2nB,UAAM1c,WAAWC,YAAYyc,KAC7B;AAAA,EAAA;AAED,SAAO,EAAE5nB,KAAK4O,KAAKI,MAAMhP,MAAMC,MAAM2O,KAAKI,MAAM/O,IAChD,EAAA;AAAA,GAED+iC,WAAW,SAASA,UAAUtD,MAC7B;AAAA,MAAIA,KAAKE,uBAAuB;AAC/B,WAAOniC,KAAKylC,cAAcxD,IAC7B;AAAA,EAAA,OAAS;AACN,WAAOjiC,KAAKwlC,aAAavD,IACzB;AAAA,EAAA;AACD,GAEDj8B,SAAS,SAASN,SAASogC,UAAAA;AAC1B,OAAIpgC,WAAYogC,CAAAA,UAAS;AACxB,WAAO;AAAA,EACP;AACD,SAAO9/B,QAAQN,SAASogC,QAAAA;AACxB,GACDC,aAAa,SAASC,SAASC,eAC9B;AAAA,MAAGA,cAAcC,aAAY;AAC5BD,kBAAcx4B,WAAW8Y,aAAayf,SAASC,cAAcC;EAChE,OAAO;AACJD,kBAAcx4B,WAAWrN,YAAY4lC,OACrC;AAAA,EAAA;AACD,GACDxR,QAAQ,SAAS1N;AAChB,MAAIA,QAAQA,KAAKrZ,YAAY;AAC5BqZ,SAAKrZ,WAAWC,YAAYoZ,IAC5B;AAAA,EAAA;AACD,GACDqf,WAAW,SAASC,OAAO54B,QAC1B;AAAA,SAAOA,OAAO64B,SAASD;AACvB,GACDhC,mBACAxB,cACAO,WACA8B,aACAG,iBACAV,sBACAG,kBACAnC,0BACAI,eACAH;AAGD,IAAI38B;AACJ,IAAGsgC,QAAQjuB,UAAUrS,SAAQ;AAC5BA,YAAU,SAASN,SAASogC;AAC3B,WAAOpgC,QAAQM,QAAQ8/B,QACzB;AAAA,EAAA;AACA,OAAK;AACJ,MAAIS,UAAUD,QAAQjuB,UAAUkuB,WAAWD,QAAQjuB,UAAUmuB,qBAAqBF,QAAQjuB,UAAUouB;AACpGzgC,YAAU,SAASN,SAASogC;AAC3B,QAAIriB,MAAK/d;AACT,OAAG;AACF,UAAI6gC,QAAQnwB,KAAKqN,KAAIqiB,QAAAA,GAAU;AAC9B,eAAOriB;AAAAA,MACP;AACDA,MAAAA,MAAKA,IAAGijB,iBAAiBjjB,IAAGhW;AAAAA,IAC5B,SAAQgW,QAAO,QAAQA,IAAGkjB,aAAa;AACxC,WAAO;AAAA,EACT;AACA;ACpZA,IAAIC,oBAA2B3lC,OAAAA,WAAW;AAI1C,MAAe4lC,MAAA,EACd9Z,MAAM6Z,sBAAsBjB,UAAUC,UAAU7zB,QAAQ,MAAW,KAAA,KAAK4zB,UAAUC,UAAU7zB,QAAQ,cAAc,IAClH+0B,SAASF,qBAAsBjB,UAAUC,UAAU7zB,QAAQ,OAAA,KAAY,GACvEg1B,UAAUH,qBAAsBjB,UAAUC,UAAU7zB,QAAQ,aAAa,GACzEi1B,SAASJ,sBAAsBjB,UAAUC,UAAU7zB,QAAQ,QAAA,KAAa,KAAK4zB,UAAUC,UAAU7zB,QAAQ,WAAgB,KAAA,IACzHk1B,MAAML,qBAAsBjB,UAAUC,UAAU7zB,QAAQ,cAAc,GACtEm1B,QAAQN,qBAAsBjB,UAAUC,UAAUlb,OAAO,QAAA,KAAa,GACtEyc,QAAQP,qBAAsBjB,UAAUC,UAAU7zB,QAAQ,eAC1Dq1B,QAAAA,CAAUR,qBAA4BjB,OAAAA,aAAa;ACbrC,SAAS9qB,SAAOlb;AAE/BA,EAAAA,WAAUkB,aAAa;AACtBlB,IAAAA,WAAUiL,UAAU,aAAa,CAAA,CAAA;AACjC5K,SAAKqnC,SAEL;AAAA,QAAGrnC,KAAKgE,YAAW;AAElBhE,WAAKgE,WAAW9D,YAAY;AAAA,IAE5B;AAED,QAAGF,KAAK08B,iBAAgB;AACvB18B,WAAK08B,gBAAAA;AAAAA,IACL;AAED,QAAG18B,KAAKg6B,eAAc;AACrBh6B,WAAKg6B,cACL;AAAA,IAAA;AAED,QAAGh6B,KAAK+W,OAAO/W,KAAK+W,IAAIlW,YAAW;AAClCb,WAAK+W,IAAIlW,WACT;AAAA,IAAA;AAGDb,SAAKqjB,gBAEL;AAAA,aAAQlf,KAAKnE,MAAK;AACjB,UAAGmE,EAAE4N,QAAQ,GAAA,MAAS,GAAE;AAChB/R,eAAAA,KAAKmE;MACZ;AAAA,IACD;AACDxE,IAAAA,WAAU8gB,aAAa;AAAA,EACxB;AAEA;ACnCe,SAAQ6mB,YAAC71B,MAAAA;AACvB,aAAWA,SAAS,YAAA,OAAmBA,SAAS,UAAU;AACzD,WAAOA;AAAAA,EACP;AACD,MAAIwH,SAAS;AACb,WAAS/D,OAAOzD,MAAM;AACrB,QAAI81B,aAAa;AACjB,QAAI91B,KAAK7C,eAAesG,GAAAA,GAAM;AAC7B,UAAA,OAAWzD,KAAKyD,GAAS,MAAA,UAAU;AAClCqyB,qBAAaC,mBAAmB/1B,KAAKyD,GACrC,CAAA;AAAA,MAAA,WAAiBzD,OAAAA,KAAKyD,SAAS,UAAU;AACzCqyB,qBAAa91B,KAAKyD,GAAAA;AAAAA,MACtB,OAAU;AACNqyB,qBAAaC,mBAAmB9iB,KAAKC,UAAUlT,KAAKyD,GAAAA,CAAAA,CAAAA;AAAAA,MACpD;AACDqyB,mBAAaryB,MAAM,MAAMqyB;AAEzB,UAAItuB,OAAO7U,QAAQ;AAClBmjC,qBAAa,MAAMA;AAAAA,MACnB;AACDtuB,gBAAUsuB;AAAAA,IACV;AAAA,EACD;AACD,SAAOtuB;AACR;ACtBe,SAAS4B,SAAOlb;AAE/BA,EAAAA,WAAU8nC,UAAUxmC,OAAOwmC;AAE3B,WAASC,aAAaptB,QAAQlB;AAC7B,QAAIH,SAAS,EACZqB,OAAQA;AAGT,QAAIlB,KAAKhV,WAAW,GAAG;AACtB,YAAM,IAAI6N,MAAM;IAChB;AACD,QAAImH,KAAKhV,WAAW,GAAG;AACtB,UAAA,OAAWgV,KAAK,CAAO,MAAA,UAAU;AAChCH,eAAO0uB,MAAMvuB,KAAK,CAClBH;AAAAA,eAAO2uB,QAAQ;AAAA,MAClB,OAAS;AACN3uB,eAAO0uB,MAAMvuB,KAAK,CAAA,EAAGuuB;AACrB1uB,eAAO2uB,QAASxuB,KAAK,CAAA,EAAGwuB,SAAS;AACjC3uB,eAAOhS,WAAWmS,KAAK,CAAA,EAAGnS;AAC1BgS,eAAO4uB,UAAUzuB,KAAK,CAAA,EAAGyuB;AAAAA,MACzB;AACD,UAAIvtB,WAAW,UAAU,OAAO;AAC/B,YAAIlB,KAAK,CAAG3H,EAAAA,MAAM;AACjB,cAAW2H,OAAAA,KAAK,GAAG3H,SAAS,UAAU;AACrCwH,mBAAOxH,OAAOq2B,YAAU1uB,KAAK,GAAG3H,IACrC;AAAA,UAAA,OAAW;AACNwH,mBAAOxH,OAAO2H,KAAK,CAAG3H,EAAAA;AAAAA,UACtB;AAAA,QACL,OAAU;AACNwH,iBAAOxH,OAAO;AAAA,QACd;AAAA,MACD;AACD,aAAOwH;AAAAA,IACP;AAEDA,WAAO0uB,MAAMvuB,KAAK,CAClB;AAAA,YAAOkB;MACN,KAAK;AAAA,MACL,KAAK;AACJrB,eAAOhS,WAAWmS,KAAK;AACvBH,eAAO4uB,UAAUzuB,KAAK,CACvB;AAAA;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AACJ,YAAIA,KAAK,CAAI,GAAA;AACZ,qBAAWA,KAAK,CAAA,MAAO,UAAU;AAChCH,mBAAOxH,OAAOq2B,YAAU1uB,KAAK,CAClC,CAAA;AAAA,UAAA,OAAW;AACNH,mBAAOxH,OAAO2H,KAAK,CACnB;AAAA,UAAA;AAAA,QACL,OAAU;AACNH,iBAAOxH,OAAO;AAAA,QACd;AACDwH,eAAOhS,WAAWmS,KAAK,CACvBH;AAAAA,eAAO4uB,UAAUzuB,KAAK;AACvB;AAAA,IAED;AAAA,WAAOH;AAAAA,EACR;AACAtZ,EAAAA,WAAUooC,OAAO,EAGhB7N,OAAO,MAGP5f,QAAQ,OAER0tB,wBAAwBF,aACxBG,OAAO,SAASx2B,MAAAA;AACf,eAAWA,SAAS;AAAU,aAAOA;AAErC,QAAI7R;AACJ6R,WAAOA,KAAKuY,QAAQ,UAAS;AAC7B,QAAWke,OAAAA,cAAc,eAAgBvoC,CAAAA,WAAUmtB,KAAKC,MAAM;AAC7DntB,YAAM,IAAKsoC,YAAaC,gBAAgB12B,MAAM,UAAA;AAAA,IAC9C,WAAM,OAAWxQ,OAAOmnC,kBAAkB,aAAa;AACvDxoC,YAAM,IAAIqB,OAAOmnC,cAAc,kBAAA;AAC/BxoC,UAAIgoC,QAAQ;AACZhoC,UAAIyoC,QAAQ52B;IACZ;AACD,WAAO7R;AAAAA,EACP,GACD0oC,QAAQ,SAASC,SAASC,KAAK5oC,KAC9B;AAAA,QAAA,OAAW4oC,IAAIC,UAAU,eAAeD,IAAIC,SAAS,KAAK;AACzD,UAAIC,OAAQF,IAAIG,cAAe3oC,KAAKioC,MAAMO,IAAInsB,gBAAgBmsB,GAAQA,IAAAA,IAAIG,eAAeH;AACzF,UAAIE,OAAOA,IAAI1oB,oBAAoB,QAAS0oB,CAAAA,IAAIphB,qBAAqB,aAAeljB,EAAAA,QAAQ;AAC3F,eAAOskC,IAAIphB,qBAAqBihB,OAAAA,EAAS;MACzC;AAAA,IACD;AACD,QAAI3oC,QAAS;AAAGD,MAAAA,WAAUiL,UAAU,kBAAiB,CAAC,iBAAiBqJ,UAAU,CAAIrU,GAAAA,GAAAA,CAAAA;AACrF,WAAOC,SAASC,cAAc,KAC9B;AAAA,EAAA,GACD8oC,OAAO,SAASC,UAAUC;AACzB,QAAKA,CAAAA,OAAOhF;AAAUgF,eAASA,OAAOH,eAAeG;AACrD,QAAInpC,WAAUmtB,KAAKC,MAAM;AACxB,aAAO+b,OAAOC,YAAYF,QAAAA,KAAW,CACxC;AAAA,IAAA,OAAS;AACN,UAAI3qB,OAAO;AACX,UAAI8qB;AACJ,UAAIC,OAAOH,OAAOI,iBAAeJ,QAAQK,SAASN,UAAUC,QAAQ,MAAMM,YAAYC,UAAU;AAEhG,aAAO,MAAK;AACXL,gBAAQC,IAAIK,YACZ;AAAA,YAAGN,OAAM;AACR9qB,eAAKra,KAAKmlC,KACf;AAAA,QAAA,OAAS;AACJ;AAAA,QACA;AAAA,MACD;AACD,aAAO9qB;AAAAA,IACP;AAAA,EACD,GACDqrB,OAAO,SAAS7nC,QAAAA;AACf,WAAO1B,KAAKwpC,MACV9nC,OAAO4Y,UAAU,OAClB5Y,OAAOimC,KACPjmC,OAAO+P,QAAQ,IACd/P,OAAOkmC,SAAS,MACjBlmC,OAAOuF,UACPvF,OAAOmmC,OAER;AAAA,EAAA,GACD4B,KAAK,SAAS9B,MAAK+B,QAAQ7B,SAAAA;AAC1B,QAAInmC,SAASgmC,aAAa,OAAOzzB,SACjC;AAAA,WAAOjU,KAAKupC,MAAM7nC,MAAAA;AAAAA,EAClB,GACDioC,SAAS,SAAShC,MAAKE,SAAAA;AACtB,QAAInmC,SAASgmC,aAAa,OAAOzzB,SACjCvS;AAAAA,WAAOkmC,QAAQ;AACf,WAAO5nC,KAAKupC,MAAM7nC;EAClB,GACDkoC,KAAK,SAASjC,MAAKkC,UAAUH,QAAQ7B,SAAAA;AACpC,QAAInmC,SAASgmC,aAAa,OAAOzzB,SACjC;AAAA,WAAOjU,KAAKupC,MAAM7nC,MAAAA;AAAAA,EAClB,GACDooC,KAAK,SAASnC,MAAK+B,QAAQ7B;AAO1B,QAAInmC,SAASgmC,aAAa,UAAUzzB,SAAAA;AACpC,WAAOjU,KAAKupC,MAAM7nC,MAClB;AAAA,EAAA,GACDqoC,MAAM,SAASpC,MAAKkC,UAAUH,QAAQ7B,SAAAA;AACrC,QAAI5zB,UAAU7P,UAAU,GAAG;AAC1BylC,iBAAW;AAAA,IACd,WAAa51B,UAAU7P,UAAU,KAAY,OAAA,YAAa,YAAY;AACnEslC,eAASG;AACTA,iBAAW;AAAA,IACX;AACD,QAAInoC,SAASgmC,aAAa,QAAQzzB;AAClC,WAAOjU,KAAKupC,MAAM7nC,MAClB;AAAA,EAAA,GACDsoC,UAAU,SAASrC,MAAKkC,UAAUhC,SAAAA;AACjCgC,eAAYA,aAAa,OAAO,KAAKxkC,OAAOwkC,QAAAA;AAE5C,QAAInoC,SAASgmC,aAAa,QAAQzzB,SAAAA;AAClCvS,WAAOkmC,QAAQ;AACf,WAAO5nC,KAAKupC,MAAM7nC;EAClB,GACD8nC,OAAO,SAASlvB,QAAQqtB,MAAKkC,UAAUjC,OAAO8B,QAAQ7B,SACrD;AAAA,WAAO,IAAIloC,WAAU8nC,SAAS,SAASwC,SAASC;AAC/C,UAAI/1B,IAAAA,OAAYg2B,mBAAmB97B,UAAc1O,CAAAA,WAAUmtB,KAAKC,OAAO,IAAIod,mBAAmB,IAAIlpC,OAAOmnC,cAAc,mBAAA;AACvH,UAAIgC,OAAQzE,UAAUC,UAAUyE,MAAM,aAAA,MAAmB,QAAQ1E,UAAUC,UAAUyE,MAAM,IAAA,MAAU,QAAQ1E,UAAUC,UAAUyE,MAAM,QAAc,MAAA;AAErJ,UAAMzC,CAAAA,CAAAA,OAAO;AACZzzB,UAAE+nB,iBAAiB,oBAAoB,WACtC;AAAA,cAAK/nB,EAAEm2B,cAAc,KAAOF,QAAQj2B,EAAEm2B,cAAc,GAAI;AACvD,gBAAIn2B,EAAEs0B,UAAU,OAAOt0B,EAAEkI,iBAAiB;AACzC,kBAAA,CAAK1c,WAAUiL,UAAU,eAAe,CAACuJ,CAAK,CAAA;AAAA;AAAA;AAE/CkF,uBAAW,WACV;AAAA,kBAAA,OAAW,UAAW,YAAY;AACjCqwB,uBAAOt7B,MAAMnN,QAAQ,CAAC,EAACspC,QAAOp2B,GAAGq2B,UAAS7C,KAC1C,CAAA,CAAA;AAAA,cAAA;AACDsC,sBAAQ91B,CACR;AAAA,kBAAA,OAAW,UAAW,YAAY;AACjCu1B,yBAAS;AACTv1B,oBAAI;AAAA,cACJ;AAAA,YACD,GAAE,CACH;AAAA,UAAA;AAAA,QACN;MACI;AAED,UAAImG,UAAU,SAAUta,CAAAA,KAAKk6B,OAAO;AACnCyN,QAAAA,SAAQA,KAAI51B,QAAQ,QAAM,IAAE,MAAI,OAAK,UAAO,oBAAIvN,QAAOi2B,QAAAA,IAAU;AAAA,MACjE;AAEDtmB,QAAEs2B,KAAKnwB,QAAQqtB,MAAKC;AAEpB,UAAIC,SAAQ;AACX,iBAAS3yB,OAAO2yB;AACf1zB,YAAEu2B,iBAAiBx1B,KAAK2yB,QAAQ3yB,GACrC,CAAA;AAAA,MAAA,WAAcoF,OAAOqwB,iBAAiB,UAAUrwB,UAAU,SAASA,UAAU,UAAU;AACnFnG,UAAEu2B,iBAAiB,gBAAgB;MACvC,WAAcpwB,UAAU,OAAO;AAC3BuvB,mBAAW;AAAA,MACX;AAED11B,QAAEu2B,iBAAiB,oBAAoB,gBAEvCv2B;AAAAA,QAAEy2B,KAAKf,QAEP;AAAA,UAAA,CAAKjC;AAAO,eAAO,EAAC2C,QAAOp2B,GAAGq2B,UAAS7C,KAC1C;AAAA,IAAA,GAAI9kB,KAAK7iB,IACP,CAAA;AAAA,EAAA,GACD6qC,cAAc,SAAS9T,KAAAA;AACtB,QAAIA,IAAIhlB,QAAQ,GAAS,KAAA;AACxB,aAAO;AAAA;AAEP,aAAO;AAAA,EACR,EAGFpS;AAAAA,EAAAA,WAAUmrC,QAAQnrC,WAAUooC;AAE5B;AC9Ne,SAASltB,SAAOlb,YAE/B;AAAA,MAAIorC,uBAAuB,SAAUC,QAAQC,KAC5C;AAAA,QAAIC,OAAO;AACX,QAAIphB,OAAOkhB,OAAOX,MAAM;AACxB,aAASlmC,IAAI,GAAGA,IAAI2lB,KAAK1lB,QAAQD,KAAK;AACrC,cAAQ2lB,KAAK3lB,CACZ,GAAA;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AAAM+mC,kBAAQ,iBAAiB/mC,IAAI;AACvC;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAM+mC,kBAAQ,kBAAkB/mC,IAAI;AACxC;AAAA,QACD,KAAK;AAAM+mC,kBAAQ,iBAAiB/mC,IAAI,eAAeA,IAAI;AAC1D;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ+mC,kBAAQ,iBAAiB/mC,IAAI;AAC7B;AAAA,QACD,KAAK;AACJ+mC,kBAAQ,iBAAiB/mC,IAAI;AAC7B;AAAA,QACD,KAAK;AAAM+mC,kBAAQ,iBAAiB/mC,IAAI;AACvC;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAM+mC,kBAAQ,6BAA6B/mC,IAAI;AACnD;AAAA,QACD,KAAK;AAAM+mC,kBAAQ,iBAAiB/mC,IAAI;AACvC;AAAA,QACD,KAAK;AAAM+mC,kBAAQ,mDAAmD/mC,IAAI;AACzE;AAAA,QACD,KAAK;AAAM+mC,kBAAQ,kDAAkD/mC,IAAI;AACxE;AAAA;IAIF;AACD,QAAIgnC,OAAO;AACX,QAAIF;AAAKE,aAAO,eAAeA,OAAO;AACtC,WAAO,IAAI/yB,SAAS,QAAQ,4BAA4B8yB,OAAO,sBAAsBC,OAAO;EAC7F;AACA,MAAIC,kBAAkB,SAAUJ,QAAQC;AACvC,WAAO,SAAS9nC,MACf;AAAA,aAAO6nC,OAAOhhB,QAAQ,cAAc,SAAU7N,GAC7C;AAAA,gBAAQA;UACP,KAAK;AAAM,mBAAO8uB,MAAMtrC,WAAUwD,KAAKkoC,SAASloC,KAAKmoC,WAAgB3rC,CAAAA,IAAAA,WAAUwD,KAAKkoC,SAASloC,KAAKiG,QAClG,CAAA;AAAA,UAAA,KAAK;AAAM,mBAAO6hC,MAAMtrC,WAAUwD,KAAKkoC,SAAUloC,KAAKooC,YAAgB,IAAA,CAAA,IAAM5rC,WAAUwD,KAAKkoC,SAAUloC,KAAKyV,SAAAA,IAAa;UACvH,KAAK;AAAM,mBAAOqyB,MAAM9nC,KAAKmoC,WAAenoC,IAAAA,KAAKiG;UACjD,KAAK;AAAM,mBAAO6hC,MAAO9nC,KAAKooC,gBAAgB,IAAMpoC,KAAKyV,SAAa,IAAA;AAAA,UACtE,KAAK;AAAM,mBAAOqyB,MAAMtrC,WAAUwD,KAAKkoC,SAASloC,KAAKqoC,eAAAA,IAAmB,GAAO7rC,IAAAA,WAAUwD,KAAKkoC,SAASloC,KAAKwV,gBAAgB,GAC5H;AAAA,UAAA,KAAK;AAAM,mBAAOsyB,MAAM9nC,KAAKqoC,eAAAA,IAAmBroC,KAAKwV,YACrD;AAAA,UAAA,KAAK;AAAM,mBAAOsyB,MAAMtrC,WAAU+nB,OAAOvkB,KAAKsoC,UAAUtoC,KAAKuoC,eAAe/rC,WAAU+nB,OAAOvkB,KAAKsoC,UAAUtoC,KAAK4F;UACjH,KAAK;AAAM,mBAAOkiC,MAAMtrC,WAAU+nB,OAAOvkB,KAAKwoC,SAASxoC,KAAKuoC,UAAAA,CAAAA,IAAe/rC,WAAU+nB,OAAOvkB,KAAKwoC,SAASxoC,KAAK4F;UAC/G,KAAK;AAAM,mBAAOkiC,MAAMtrC,WAAU+nB,OAAOvkB,KAAKyoC,YAAYzoC,KAAKooC,YAAAA,CAAAA,IAAiB5rC,WAAU+nB,OAAOvkB,KAAKyoC,YAAYzoC,KAAKyV,SAAAA,CAAAA;AAAAA,UACvH,KAAK;AAAM,mBAAOqyB,MAAMtrC,WAAU+nB,OAAOvkB,KAAK0oC,WAAW1oC,KAAKooC,YAAiB5rC,CAAAA,IAAAA,WAAU+nB,OAAOvkB,KAAK0oC,WAAW1oC,KAAKyV,SAAAA,CAAAA;AAAAA,UACrH,KAAK;AAAM,mBAAOqyB,MAAMtrC,WAAUwD,KAAKkoC,UAAUloC,KAAK2oC,YAAAA,IAAgB,MAAM,KAAK,KAAKnsC,WAAUwD,KAAKkoC,UAAUloC,KAAKkJ,SAAAA,IAAa,MAAM,KAAK,CAAA;AAAA,UAC5I,KAAK;AAAM,mBAAO4+B,OAAQ9nC,KAAK2oC,gBAAgB,MAAM,KAAK,KAAO3oC,KAAKkJ,SAAAA,IAAa,MAAM,KAAK;AAAA,UAC9F,KAAK;AAAM,mBAAO4+B,MAAM9nC,KAAK2oC,gBAAgB3oC,KAAKkJ,SAAAA;AAAAA,UAClD,KAAK;AAAM,mBAAO4+B,MAAMtrC,WAAUwD,KAAKkoC,SAASloC,KAAK2oC,iBAAiBnsC,WAAUwD,KAAKkoC,SAASloC,KAAKkJ;UACnG,KAAK;AAAM,mBAAO4+B,MAAMtrC,WAAUwD,KAAKkoC,SAASloC,KAAK4oC,cAAmBpsC,CAAAA,IAAAA,WAAUwD,KAAKkoC,SAASloC,KAAKwK;UACrG,KAAK;AAAM,mBAAOs9B,MAAO9nC,KAAK2oC,YAAgB,IAAA,KAAK,OAAO,OAAS3oC,KAAKkJ,aAAa,KAAK,OAAO;AAAA,UACjG,KAAK;AAAM,mBAAO4+B,MAAO9nC,KAAK2oC,YAAgB,IAAA,KAAK,OAAO,OAAS3oC,KAAKkJ,aAAa,KAAK,OAAO;AAAA,UACjG,KAAK;AAAM,mBAAO4+B,MAAMtrC,WAAUwD,KAAKkoC,SAASloC,KAAK6oC,cAAmBrsC,CAAAA,IAAAA,WAAUwD,KAAKkoC,SAASloC,KAAK8oC,WACrG,CAAA;AAAA,UAAA,KAAK;AAAM,mBAAOhB,MAAMtrC,WAAUwD,KAAKkoC,SAAS1rC,WAAUwD,KAAK+oC,cAAc/oC,IAASxD,CAAAA,IAAAA,WAAUwD,KAAKkoC,SAAS1rC,WAAUwD,KAAKgpC,WAAWhpC,IAAAA,CAAAA;AAAAA,UACxI;AAAS,mBAAOgZ;AAAAA;MAEpB,CACA;AAAA,IAAA;AAAA,EACA;AACA,MAAIiwB,kBAAkB,SAAUpB,QAAQC,KAAAA;AACvC,UAAMnhB,OAAOkhB,OAAOX,MAAM,YAAA;AAC1B,WAAO,SAAUlnC,MAAAA;AAChB,UAAIkpC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG;AAC1B,UAAIC,OAAOnpC,KAAKknC,MAAM,mBAAA;AAEtB,eAASlmC,IAAI,GAAGA,IAAI2lB,KAAK1lB,QAAQD,KAAK;AACrC,gBAAQ2lB,KAAK3lB,CACZ,GAAA;AAAA,UAAA,KAAK;AAAA,UACL,KAAK;AACJkoC,gBAAI,CAAKC,IAAAA,KAAKnoC,MAAM;AACpB;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AACJkoC,gBAAI,MAAMC,KAAKnoC,CAAAA,KAAM,KAAK;AAC1B;AAAA,UACD,KAAK;AACJkoC,gBAAI,CAAKC,IAAAA,KAAKnoC,KAAK,KAAKmoC,KAAKnoC,KAAK,KAAK,OAAO;AAC9C;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJkoC,gBAAI,CAAKC,IAAAA,KAAKnoC,MAAM;AACpB;AAAA,UACD,KAAK;AACJkoC,gBAAI,KAAKC,KAAKnoC,CAAAA,KAAM;AACpB;AAAA,UACD,KAAK;AACJkoC,gBAAI,KAAKC,KAAKnoC,CAAAA,KAAM;AACpB;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AACJkoC,gBAAI,CAAA,IAAKA,IAAI,CAAK,IAAA,OAAOC,KAAKnoC,CAAM,KAAA,IAAIwe,YAAiB,KAAA,OAAO,IAAI;AACpE;AAAA,UACD,KAAK;AACJ0pB,gBAAI,KAAKC,KAAKnoC,CAAAA,KAAM;AACpB;AAAA,UACD,KAAK;AACJkoC,gBAAI,KAAK1sC,WAAU+nB,OAAOvkB,KAAKopC,iBAAiBD,KAAKnoC,CAAO,CAAA,KAAA;AAC5D;AAAA,UACD,KAAK;AACJkoC,gBAAI,CAAK1sC,IAAAA,WAAU+nB,OAAOvkB,KAAKqpC,gBAAgBF,KAAKnoC,CAAAA,CAAAA,KAAO;AAC3D;AAAA,QAIF;AAAA,MAAA;AAED,UAAI8mC,KAAK;AACR,eAAO,IAAIzmC,KAAKA,KAAKioC,IAAIJ,IAAI,CAAIA,GAAAA,IAAI,IAAIA,IAAI,CAAA,GAAIA,IAAI,CAAIA,GAAAA,IAAI,CAAIA,GAAAA,IAAI;MACrE;AAED,aAAO,IAAI7nC,KAAK6nC,IAAI,IAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,GAAIA,IAAI,CAAIA,GAAAA,IAAI,IAAIA,IAAI,CAAA,CAAA;AAAA,IAC9D;AAAA,EACA;AAEA,MAAIK,aAAar+B;AACjB,WAASs+B,oBACR;AAAA,QAAA;AACC,UAAIv0B,SAAS,qBAAA;AACbs0B,mBAAa;AAAA,IACb,SAAO7mC,GAAAA;AACP6mC,mBAAa;AAAA,IACb;AACD,WAAOA;AAAAA,EACR;AAEA,WAASE,SACR;AAAA,QAAI3zB,SAAS;AACb,QAAItZ,WAAU+B,OAAOmrC,QAAQ,QAAQ;AACpC,UAAGH,eAAer+B,QAAU;AAC3Bq+B,qBAAaC;MACb;AACD1zB,eAASyzB;AAAAA,IACX,OAAQ;AACNzzB,eAAStZ,WAAU+B,OAAOmrC;AAAAA,IAC1B;AACD,WAAO5zB;AAAAA,EACR;AACAtZ,EAAAA,WAAUwD,OAAO,EAChBrC,MAAK,WAAA;AACJ,QAAI2I,IAAI9J,WAAU+nB,OAAOvkB,KAAKyoC;AAC9B,QAAIz3B,IAAIxU,WAAU+nB,OAAOvkB,KAAKopC,mBAAmB,CAAA;AACjD,aAASpoC,IAAI,GAAGA,IAAIsF,EAAErF,QAAQD;AAC7BgQ,QAAE1K,EAAEtF,MAAIA;AAET,QAAIsF,IAAI9J,WAAU+nB,OAAOvkB,KAAK0oC;AAC9B,QAAI13B,IAAIxU,WAAU+nB,OAAOvkB,KAAKqpC,kBAAkB,CAAA;AAChD,aAASroC,IAAI,GAAGA,IAAIsF,EAAErF,QAAQD;AAC7BgQ,QAAE1K,EAAEtF,CAAIA,CAAAA,IAAAA;AAAAA,EACT,GACDyE,WAAU,SAASzF,MAClB;AAAA,QAAI2pC,MAAM,IAAItoC,KAAKrB;AACnBA,SAAKsH,SAAS;AACdtH,SAAKuH,WAAW,CAChBvH;AAAAA,SAAK4pC,WAAW,CAChB5pC;AAAAA,SAAK6pC,gBAAgB,CACrB;AAAA,QAAI7pC,KAAKkJ,SACPlJ,MAAAA,KAAKiG,QAAY0jC,IAAAA,IAAI1jC,aAAajG,KAAKyV,SAAAA,IAAak0B,IAAIl0B,SAAczV,KAAAA,KAAKwV,gBAAgBm0B,IAAIn0B,YAAAA;AAChGxV,WAAK+oB,QAAQ/oB,KAAKs3B,QAAY,IAAA,KAAK,KAAK,OAAQ,KAAKt3B,KAAKkJ,SAC3D,EAAA;AAAA,WAAOlJ;AAAAA,EACP,GACD+sB,WAAU,SAAS/sB,MAAAA;AAClB,YAAQA,KAAK4B,QAAAA,IAAU,MAAO5B,KAAKyrB,kBAAAA,IAAoB,MAAI;AAAA,EAC3D,GACD5pB,YAAW,SAAS7B;AACnB,QAAI+tB,QAAM/tB,KAAK4F,OACf;AAAA,QAAIpJ,WAAU+B,OAAOurC,iBAAgB;AACpC,UAAI/b,UAAQ;AAAGA,gBAAM;AAAA;AAChBA;AAAAA,IACL;AACD,WAAOlxB,KAAK4I,UAAU5I,KAAKoD,IAAID,WAAQ+tB,OAAM;EAC7C,GACDgc,aAAY,SAAS/pC,MAAAA;AACpBA,SAAKgqC,QAAQ,CAAA;AACb,WAAOntC,KAAK4I,UAAUzF;EACtB,GACDiqC,YAAW,SAASjqC,MAAAA;AACnBA,SAAKkqC,SAAS,CAAA;AACd,WAAOrtC,KAAKktC,YAAY/pC;EACxB,GACD0zB,WAAU,SAAS1zB,MAAAA;AAClB,WAAOnD,KAAK4I,UAAUzF;EACtB,GACDmqC,WAAU,SAASnqC,MAAMoqC,KAAAA;AACxB,QAAIC,QAAQ,IAAIhpC,KAAKrB,KAAK4B;AAE1ByoC,UAAML,QAAQK,MAAMpkC,QAAYmkC,IAAAA,GAAAA;AAGhC,QAAGA,OAAOp8B,KAAKI,MAAMg8B,GAAAA,KAAQA,MAAM,GAAE;AACpC,UAAIE,YAAaD,CAAAA,QAAAA,CAASrqC,MACzBuqC,OAAOD,aAAa,KAAG,KAAG,KAAG;AAC9B,UAAGC,QAAQvqC,KAAKyrB,kBAAAA,KAAuB4e,MAAM5e,kBAAAA,GAAoB;AAChE,YAAI+e,QAAQD,QAAQ,KAAI,KAAK;AAC7BF,cAAMthB,QAAQshB,MAAM/S,QAAAA,KAAa,KAAKkT,SAAS,KAAK,KAAK,GACzD;AAAA,MAAA;AAAA,IACD;AAED,QAAIJ,OAAO,MAAOpqC,CAAAA,KAAKkJ,cAAcmhC,MAAMnhC,SAAAA,OACzCmhC,MAAMpkC,QAAYjG,IAAAA,KAAKiG,aAAaokC,MAAM50B,SAAAA,IAAazV,KAAKyV,SAAAA,KAAc40B,MAAM70B,YAAgBxV,IAAAA,KAAKwV;AACtG60B,YAAMthB,QAAQshB,MAAM/S,QAAY,IAAA,KAAK,KAAK,OAAQ,KAAK+S,MAAMnhC,SAAAA,EAAAA;AAC9D,WAAOmhC;AAAAA,EACP,GACDpqC,KAAI,SAASD,MAAKoqC,KAAI9tC,MAAAA;AACrB,QAAI+tC,QAAM,IAAIhpC,KAAKrB,KAAK4B,QAAAA,CAAAA;AACxB,YAAOtF,MACN;AAAA,MAAA,KAAK;AACJ+tC,gBAAQ7tC,WAAUwD,KAAKmqC,UAAUE,OAAOD,GACxC;AAAA;AAAA,MACD,KAAK;AACJC,gBAAQ7tC,WAAUwD,KAAKmqC,UAAUE,OAAOD,MAAM;AAC9C;AAAA,MACD,KAAK;AAASC,cAAMH,SAASG,MAAM50B,SAAAA,IAAW20B;AAAM;AAAA,MACpD,KAAK;AAAQC,cAAMI,QAAQJ,MAAM70B,YAAc40B,IAAAA,GAAAA;AAAM;AAAA,MACrD,KAAK;AAKJC,cAAMthB,QAAQshB,MAAM/S,QAAY8S,IAAAA,MAAM,KAAK,KAAK,GAAA;AAChD;AAAA,MACD,KAAK;AACJC,cAAMthB,QAAQshB,MAAM/S,QAAY8S,IAAAA,MAAM,KAAK,GAC3C;AAAA;AAAA,MACD;AACC,eAAO5tC,WAAUwD,KAAK,SAAO1D,MAAM0D,MAAKoqC,KAAI9tC;;AAE9C,WAAO+tC;AAAAA,EACP,GACDnC,UAAS,SAASwC,KACjB;AAAA,QAAIA,MAAI;AAAI,aAAO,MAAIA;AACvB,WAAOA;AAAAA,EACP,GACDnnC,MAAK,SAASvD,MAAAA;AACb,WAAO,IAAIqB,KAAKrB,KAAK4B,QACrB,CAAA;AAAA,EAAA,GACD+oC,aAAY,SAAS9C,QAAOC,KAC3B;AAAA,QAAI2B,UAAU;AACb,aAAOxB,gBAAgBJ,QAAOC,GAAAA;AAAAA,IAC9B;AAEDD,aAAOA,OAAOhhB,QAAQ,cAAa,SAAS7N,GAC3C;AAAA,cAAOA;QACN,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB,KAAK;AAAM,iBAAO;AAAA,QAClB;AAAS,iBAAOA;AAAAA,MAAAA;AAAAA,IAEpB,CACE;AAAA,QAAI8uB;AAAKD,eAAOA,OAAOhhB,QAAQ,cAAa,aAAA;AAC5C,QAAI4S,OAAO,IAAIxkB,SAAS,QAAO,aAAY4yB,SAAO,IAAA;AAElD,WAAOpO,KAAK/Z,KAAKljB;EACjB,GACDouC,aAAY,SAAS/C,QAAQC,KAAK+C,aACjC;AAAA,QAAIC,qBAAqBrB,OAAWR,IAAAA,kBAAkBrB;AACtD,QAAImD,mBAAmBD,mBAAmBjD,QAAQC;AAElD,QAAIkD,iBAAiB;AAIrB,QAAIC,iBAAiB;AAGrB,QAAIC,iBAAiB;AAErB,QAAIC,UAAU;AAEd,QAAIC,YAAY,SAAUC,SAAAA;AACzB,aAAOL,eAAezI,KAAKrgC,OAAOmpC,OAAAA,CAAAA;AAAAA,IACrC;AAEE,QAAIC,YAAY,SAAUD,SACzB;AAAA,aAAOJ,eAAe1I,KAAKrgC,OAAOmpC,OACrC,CAAA;AAAA,IAAA;AACE,QAAIE,YAAY,SAAUF;AACzB,aAAOH,eAAe3I,KAAKrgC,OAAOmpC,OAAAA,CAAAA;AAAAA,IACrC;AACE,QAAIG,YAAY,SAAUH,SAAAA;AACzB,aAAOF,QAAQ5I,KAAK8I;IACvB;AAEE,QAAII,WAAWX,mBAAmB,qBAAqBhD,GACvD;AAAA,QAAI4D,WAAWZ,mBAAmB,qBAAqBhD;AACvD,QAAI6D,WAAWb,mBAAmB,qBAAqBhD;AAEvD,WAAO,SAAUpN;AAEhB,UAAKmQ,CAAAA,eAAAA,CAAgBruC,WAAU+B,OAAOqtC,oBAAoB;AACzD,YAAIlR,cAAcA,WAAWsO,YAAY;AACxC,iBAAO,IAAI3nC,KAAKq5B,UACrB;AAAA,QAAA,WAAsBA,OAAAA,eAAe,UAAU;AAC1C,iBAAO,IAAIr5B,KAAKq5B,UAAAA;AAAAA,QACrB,WAAe0Q,UAAU1Q,UAAa,GAAA;AACjC,iBAAO+Q,SAAS/Q,UAAAA;AAAAA,QACrB,WAAe4Q,UAAU5Q,aAAa;AACjC,iBAAOgR,SAAShR,UAAAA;AAAAA,QACrB,WAAe6Q,UAAU7Q,aAAa;AACjC,iBAAOiR,SAASjR,UACrB;AAAA,QAAA,WAAe8Q,UAAU9Q,aAAa;AACjC,iBAAO,IAAIr5B,KAAKq5B,UAAAA;AAAAA,QAChB;AAAA,MACD;AAED,aAAOqQ,iBAAiB93B,KAAKzW,YAAWk+B,UAC3C;AAAA,IAAA;AAAA,EACE,GACDsO,YAAY,SAASqB;AACpB,QAAIA,CAAAA;AAAO,aAAO;AAClBA,YAAQxtC,KAAK4I,UAAU,IAAIpE,KAAKgpC,KAAAA,CAAAA;AAChC,QAAIwB,OAAOxB,MAAMzkC,OACjB;AAAA,QAAIimC,SAAS,GAAG;AACfA,aAAO;AAAA,IACP;AACD,QAAIC,iBAAiB,IAAIzqC,KAAKgpC,MAAMzoC;AACpCkqC,mBAAe9B,QAAQK,MAAMpkC,QAAa,KAAA,IAAI4lC;AAC9C,QAAIE,cAAcD,eAAet2B,YAAAA;AACjC,QAAIw2B,eAAeh+B,KAAKI,OAAQ09B,eAAexU,QAAAA,IAAY,IAAIj2B,KAAK0qC,aAAa,GAAG,CAAA,EAAGzU,aAAa,KACpG;AAAA,QAAI2U,cAAc,IAAIj+B,KAAK8D,MAAOk6B,eAAe,CACjD;AAAA,WAAOC;AAAAA,EACP,GACDlD,eAAe,SAASsB,OACvB;AAAA,WAAOxtC,KAAKmsC,WAAWnsC,KAAKqvC,eAAe7B,KAAAA,CAAAA;AAAAA,EAC3C,GACD6B,gBAAgB,SAASlsC;AACxB,WAAO,IAAIqB,KAAKrB,KAAKqoC,eAAAA,GAAkBroC,KAAKooC,YAAAA,GAAepoC,KAAKmoC,WAAcnoC,GAAAA,KAAK2oC,eAAe3oC,KAAK4oC,cAAAA,GAAiB5oC,KAAK6oC,cAC7H,CAAA;AAAA,EAAA,EAAA;AAGF;ACvWe,SAASnxB,SAAOlb,YAkB/BA;AAAAA,EAAAA,WAAU+B,SAAO,EAChB4tC,cAAc,YACdC,YAAY,SACZC,WAAW,YACXC,WAAW,MACX/R,UAAU,SACVgS,WAAW,SACXpW,WAAW,MAEXqW,aAAa,kBACbC,UAAU,kBACVb,oBAAoB,OACpBhhB,iBAAgB,MAChB/B,WAAW,GACX6jB,uBAAuB,WACvBC,4BAA4B,WAC5BC,WAAW,GACXC,oBAAoB,GACpBC,uBAAuB,MACvBlzB,kBAAkB,MAClBkwB,iBAAiB,MACjB3gC,YAAY,GACZC,WAAW,IACXqd,UAAU,OACVoN,aAAa,MACbC,WAAW,MACXiZ,aAAa,MACbje,iBAAiB,MACjBxc,iBAAiB,MACjB4W,qBAAqB,MACrBwG,gBAAgB,MAChBC,mBAAmB,MACnBhP,QAAQ,MACRzS,cAAc,IACd8+B,qBAAoB,OACpBC,oBAAmB,OACnBC,qBAAqB,OACrBC,uBAAuB,MACvB1rB,KAAI,OAEJ1e,uBAAuB,OACvBqqC,qBAAqB,GACrBC,sBAAsB,IAEtBjZ,WAAU,MACVkZ,wBAAwB,KAExBC,eAAe,MACfvc,iBAAiB,MACjBvL,QAAQ,MACRjiB,cAAc,MACdgqC,YAAY,OACZC,OAAM,MACNC,WAAU,MACVC,YAAW,KACXC,mBAAmB,OACnBC,qBAAoB,MAEpBxiB,kBAAkB,OAElB7sB,gBAAgB,MAChB0vB,gBAAgB,OAChB4f,YAAY,CAAC,aAAa,aAAA,GAC1BC,cAAc,CAAC,gBAAgB,aAAa,aAAA,GAC5CC,cAAc,CAAC,gBAAgB,mBAC/BC,eAAe,CAAC,gBAChBzX,GAAAA,UAAU,EACT92B,UAAU,CACT,EAACuX,MAAM,eAAehY,QAAQ,QAAQ4E,MAAM,YAAYszB,OAAO,QAC/D,EAAClgB,MAAM,QAAQtJ,QAAQ,IAAI9J,MAAM,QAAQ5E,QAAQ,OAGnDivC,CAAAA,EAAAA,GAAAA,2BAA2B,MAC3Bzc,aAAa,OAEbtY,YAAY,SACZg1B,cAAc,GACdC,sBAAsB,MACtB/vB,qBAAqB,MACrBiD,2BAA2B,MAE3BooB,KAAK,QACL3oC,iBAAiB,iBACjByW,aAAa,KAGdhb;AAAAA,EAAAA,WAAU+B,OAAOyvC,aAAaK,WAAW7xC,WAAU+B,OAAOyvC,aAAarhC,KACvEnQ;AAAAA,EAAAA,WAAU+B,OAAO0vC,cAAcI,WAAW7xC,WAAU+B,OAAO0vC,cAActhC,KAEzEnQ;AAAAA,EAAAA,WAAU8xC,WAAW,EACpBC,WAAW,SAASA,UAAUvuC,MAAAA;AAC7B,QAAI8kC,QAAQtoC,WAAU2zB,UAAUqe,YAAYhyC,WAAU2zB,UAAUmG;AAChE,WAAOwO,MAAM9kC,IAAAA;AAAAA,EACb,GACDyuC,YAAY,SAASA,WAAWzuC,MAAAA;AAC/B,QAAI6nC,SAASrrC,WAAU2zB,UAAUue,cAAclyC,WAAU2zB,UAAUgD;AACnE,WAAO0U,OAAO7nC,IAAAA;AAAAA,EACd;AAGFxD,EAAAA,WAAU2zB,YAAU,CAAA;AACpB3zB,EAAAA,WAAUolB,iBAAe,WAAA;AAIxB,QAAInR,IAAEjU,WAAUwD,KAAK2qC;AACrB,QAAIpkC,IAAE/J,WAAU+B;AAChB,QAAIkY,IAAI,SAASuC,GAAEC,GAAAA;AAClB,eAAS1S,MAAK0S;AACb,YAAKD,CAAAA,EAAEzS,EAAIyS;AAAAA,YAAEzS,MAAG0S,EAAE1S,EAAAA;AAAAA,IACrB;AACCkQ,MAAEja,WAAU2zB,WAAU,EACrBoK,UAAS9pB,EAAElK,EAAE4lC,eACbC,YAAW37B,EAAElK,EAAE6lC,UACfE,GAAAA,WAAU,SAASqC,IAAGC,IAAAA;AACrB,UAAGroC,EAAEkb,KAAK;AACT,eAAOjlB,WAAU2zB,UAAUoK,SAAS/9B,WAAUwD,KAAKC,IAAI2uC,IAAI,IAAE,UAAQ,cAAYpyC,WAAU2zB,UAAUoK,SAASoU,EAAAA;AAAAA,MAC9G;AACD,aAAOnyC,WAAU2zB,UAAUoK,SAASoU,MAAI,cAAYnyC,WAAU2zB,UAAUoK,SAAS/9B,WAAUwD,KAAKC,IAAI2uC,IAAAA,IAAM,KAAA,CAAA;AAAA,IAC1G,GACDC,gBAAep+B,EAAElK,EAAE4lC,YACnB9Y,GAAAA,gBAAgB,SAASrzB,MACxB;AAAA,aAAO;AAAA,IACP,GACDszB,iBAAiB,SAAStzB,MAAAA;AACzB,aAAO;AAAA,IACP,GAED8uC,kBAAiBr+B,EAAElK,EAAE+lC,SACrByC,GAAAA,iBAAgBt+B,EAAElK,EAAEg0B,QAAAA,GACpB1F,YAAWpkB,EAAElK,EAAEgmC,YACfyC,aAAYv+B,EAAElK,EAAEgmC,SAAAA,GAChB0C,YAAWx+B,EAAElK,EAAEgmC,YACfpW,WAAU1lB,EAAElK,EAAE4vB,SAEd+Y,GAAAA,aAAaz+B,EAAElK,EAAE8lC,YAGjBlZ,aAAa1iB,EAAElK,EAAEimC,aAAajmC,EAAEinC,aAChClX,YAAW95B,WAAUwD,KAAK4qC,YAAYrkC,EAAEimC,aAAYjmC,EAAEinC,aACtDf,UAASjwC,WAAUwD,KAAK4qC,YAAYrkC,EAAEkmC,UAAU,OAAO,QACvD0C,cAAa,SAAS/iC,OAAMC,KAAIhJ,IAAAA;AAE/B,UAAGA,GAAGoG,UAAU,WAAWpG,GAAGoG,UAAU,YAAW;AAClD,eAAOjN,WAAU2zB,UAAU8e,WAAW7iC,KAC1C;AAAA,MAAA,OAAQ;AACJ,eAAO5P,WAAU2zB,UAAU8e,WAAW7iC,SAAO,QAAM5P,WAAU2zB,UAAU8e,WAAW5iC,GAAAA;AAAAA,MAClF;AAAA,IACD,GACDwuB,YAAW,SAASzuB,OAAMC,KAAIhJ,IAC7B;AAAA,aAAOA,GAAGM;AAAAA,IACV,GACDyrC,aAAY,SAAShjC,OAAMC,KAAIhJ,IAAAA;AAC9B,aAAO;AAAA,IACP,GACDyyB,kBAAiB,SAASrlB,IAAAA;AACzB,aAAO;AAAA,IACP,GACD+iB,iBAAgB,SAAS/iB;AACxB,aAAO;AAAA,IACP,GACD4+B,gBAAe,SAASjjC,OAAMC,KAAIhJ;AACjC,aAAO7G,WAAU2zB,UAAU8e,WAAW7iC,KAAAA;AAAAA,IACtC,GACDkjC,gBAAe,SAASljC,OAAMC,KAAIhJ;AACjC,aAAOA,GAAGM;AAAAA,IACV,GACD4rC,mBAAoB,SAASvvC,MAAM+xB,OAAAA;AAClC,aAAO,kBAAgBA,QAAM;AAAA,IAC7B,GACDyd,mBAAoB,SAASpjC,OAAOC,KAAKhO,QACxC;AAAA,aAAO;AAAA,IACP,GACDoxC,qBAAsB,SAASrjC,OAAOC,KAAKhO,QAC1C;AAAA,aAAO;AAAA,IACP,GAEDqxC,qBAAqBlzC,WAAUwD,KAAK2qC,YAAY,gBAChDgF,GAAAA,cAAc,SAASvjC,OAAOC,KAAKhO;AAClC,aAAO,mBAAmBA,OAAMsF,OAAO,6BAA6BnH,WAAU2zB,UAAUuf,oBAAoBtjC,KAAS,IAAA,2BAA2B5P,WAAU2zB,UAAUuf,oBAAoBrjC,GACxL;AAAA,IAAA,GAEDujC,gBAAgBn/B,EAAE,OAAA,GAClBo/B,qBAAqBp/B,EAAE,IAAA,GACvBq/B,eAAer/B,EAAE,IAAA,GACjBs/B,eAAet/B,EAAE;AAGlB5T,SAAK4K,UAAU,oBAAmB,CACnC,CAAA;AAAA,EAAA;AAGA;AClNe,SAASiQ,SAAOlb,YAE/BA;AAAAA,EAAAA,WAAUwzC,UAAU,CAAA;AACpBxzC,EAAAA,WAAU0nC,WAAW,WAAA;AACpBrnC,SAAKmzC,UAAU;AACfnzC,SAAKozC,UAAU;AAEfpzC,SAAKkpB,WAAW;AAChBlpB,SAAK6oB,aAAa;AAClB7oB,SAAKuK,WAAW;AAChBvK,SAAKwK,aAAa;AAClBxK,SAAKyuB,YAAY;AACjBzuB,SAAKqpB,aAAa;AAElBrpB,SAAKqzC;AACLrzC,SAAK4K,UAAU,cAAc,CAC9B,CAAA;AAAA,EAAA;AACAjL,EAAAA,WAAUwH,WAAW,SAASpE,YAAYC,UAAU8D,MAAM/G,KAAIuzC,YAAAA;AAC7D,SAAKr/B,UAAU7P;AACd,aAAOpE,KAAK0V,YAAAA;AACb,QAAIlP,KAAKzD;AACT,QAAIkR,UAAU7P,UAAU,GAAG;AAC1BoC,WAAK8sC,cAAc;AACnB9sC,SAAGzD,aAAaA;AAChByD,SAAGxD,WAAWA;AACdwD,SAAGM,OAAOA;AACVN,SAAGzG,KAAKA;AAAAA,IACR;AACDyG,OAAGzG,KAAKyG,GAAGzG,MAAMJ,WAAU+O;AAC3BlI,OAAGM,OAAON,GAAGM,QAAQ;AAErB,QAAWN,OAAAA,GAAGzD,cAAc;AAAWyD,SAAGzD,aAAa/C,KAAKszB,UAAUsc,SAASppC,GAAGzD;AAClF,QAAWyD,OAAAA,GAAGxD,YAAY;AAAWwD,SAAGxD,WAAWhD,KAAKszB,UAAUsc,SAASppC,GAAGxD;AAC9E,QAAI4Q,KAAK5T,KAAK0B,OAAOqqB,kBAAkB/rB,KAAK0B,OAAOsqB,aAAa;AAChE,QAAIxlB,GAAGzD,WAAWgC,QAAAA,KAAayB,GAAGxD,SAAS+B,QAAAA;AAC1CyB,SAAGxD,SAASkpB,QAAQ1lB,GAAGxD,SAAS+B,YAAY6O,CAE7CpN;AAAAA,OAAGzD,WAAWiqC,gBAAgB;AAC9BxmC,OAAGxD,SAASgqC,gBAAgB,CAAA;AAE5BxmC,OAAG4D,SAASpK,KAAKqK,cAAc7D,EAE/B;AAAA,QAAIosB,UAAU5yB,KAAKmzC,QAAQ3sC,GAAGzG,EAAAA;AAC9BC,SAAKmzC,QAAQ3sC,GAAGzG,MAAMyG;AACtBxG,SAAKuzC,cAAc/sC,EACnB;AAAA,QAAA,CAAKxG,KAAKmsB;AACTnsB,WAAK4K,UAAUgoB,SAAS,iBAAiB,kBAAkB,CAACpsB,GAAGzG,IAAIyG,EAAAA,CAAAA;AACpE,WAAOA,GAAGzG;AAAAA,EACX;AACAJ,EAAAA,WAAUqrB,cAAc,SAASjrB,KAAIyzC;AACpC,QAAIhtC,KAAKxG,KAAKmzC,QAAQpzC;AACtB,QAAKyzC,CAAAA,WAAAA,CAAYxzC,KAAK4K,UAAU,uBAAuB,CAAC7K,KAAIyG,EAAAA,CAAAA,KAAAA,CAASxG,KAAK4K,UAAU,gCAAgC,CAAC7K,KAAIyG;AACxH;AACD,QAAIA,IAAI;AACP,UAAG7G,WAAUsG,SAAAA,EAAWqjB,aAAavpB,KAAG;AACvCJ,QAAAA,WAAUwG,SACV;AAAA,MAAA;AAAA,aACMnG,KAAKmzC,QAAQpzC,GAAAA;AACpBC,WAAKuzC,cAAc/sC;AAEnB,UAAGxG,KAAKuK,YAAY/D,GAAGzG,IAAG;AACzBC,aAAKuK,WAAW;AAChBvK,aAAKwK,aAAW;AAChBxK,aAAKyuB,YAAU;AAAA,MACf;AAAA,IACD;AAEDzuB,SAAK4K,UAAU,kBAAkB,CAAC7K,KAAIyG,EACvC,CAAA;AAAA,EAAA;AACA7G,EAAAA,WAAUmG,WAAW,SAAS/F;AAC7B,WAAOC,KAAKmzC,QAAQpzC,GAAAA;AAAAA,EACrB;AACAJ,EAAAA,WAAU8zC,WAAW,SAAS1zC,KAAI2zC,MAAAA;AACjC,SAAIA,KAAK3zC;AACR2zC,WAAK3zC,KAAKA;AAEXC,SAAKmzC,QAAQpzC,OAAM2zC;AAAAA,EACpB;AACA/zC,EAAAA,WAAUkyB,eAAe,SAAS9xB,KAAIua,QAAAA;AACrC,aAASnW,IAAInE,KAAK2zC,UAAUvvC,SAAS,GAAGD,KAAK,GAAGA;AAC/C,UAAInE,KAAK2zC,UAAUxvC,CAAAA,EAAGM,aAAazE,KAAK0B,OAAOwC,oBAAoBnE;AAClEua,eAAOta,KAAK2zC,UAAUxvC,IAAIA,CAC7B;AAAA,EAAA;AACAxE,EAAAA,WAAUi0C,gBAAgB,SAAS7zC,KAAI8zC,QACtC;AAAA,QAAI9zC,OAAM8zC;AAAQ;AAClB,QAAIrtC,KAAKxG,KAAKmzC,QAAQpzC,GAAAA;AACtB,QAAIyG,IAAI;AACPA,SAAGzG,KAAK8zC;AACR7zC,WAAKmzC,QAAQU,UAAUrtC;AAChBxG,aAAAA,KAAKmzC,QAAQpzC,GACpB;AAAA,IAAA;AACDC,SAAK6xB,aAAa9xB,KAAI,SAAS+xB,GAAAA;AAC9BA,QAAEhV,aAAa,YAAY+2B;AAC3B/hB,QAAEhV,aAAand,WAAU+B,OAAOwC,iBAAiB2vC,MACnD;AAAA,IAAA,CAAA;AACC,QAAI7zC,KAAK6oB,cAAc9oB;AAAIC,WAAK6oB,aAAagrB;AAC7C,QAAI7zC,KAAKkpB,YAAYnpB;AAAIC,WAAKkpB,WAAW2qB;AAEzC7zC,SAAK4K,UAAU,mBAAmB,CAAC7K,KAAI8zC;EACxC;AAEA,GAAA,WAAA;AACC,QAAIjV,QAAQ,CAAC,QAAQ,QAAQ,cAAc,aAAa,YAAY;AACpE,QAAIkV,gBAAgB,SAAS15B,MAC5B;AAAA,aAAO,SAASra,KAAM;AAAA,eAAQJ,WAAUmG,SAAS/F,KAAKqa;;IACxD;AACC,QAAI25B,gBAAgB,SAAS35B,MAC5B;AAAA,aAAO,SAASra,KAAIse;AACnB,YAAI7X,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5ByG,WAAG4T,IAAQiE,IAAAA;AACX7X,WAAGwtC,WAAW;AACdxtC,WAAG4D,SAASpK,KAAKqK,cAAc7D,EAAAA;AAC/B7G,QAAAA,WAAU4zC,cAAc/sC,IAAI,IAC/B;AAAA,MAAA;AAAA,IACA;AACC,aAASrC,IAAI,GAAGA,IAAIy6B,MAAMx6B,QAAQD,KAAK,GAAG;AACzCxE,MAAAA,WAAU,aAAai/B,MAAMz6B,IAAI,CAAM2vC,CAAAA,IAAAA,cAAclV,MAAMz6B,CAC3DxE,CAAAA;AAAAA,MAAAA,WAAU,aAAai/B,MAAMz6B,IAAI,CAAM4vC,CAAAA,IAAAA,cAAcnV,MAAMz6B,CAC3D,CAAA;AAAA,IAAA;AAAA,EACD,GAEDxE;AAAAA,EAAAA,WAAU4zC,gBAAgB,SAAS/sC,IAAImT,OACtC;AAAA,QAAI3Z,KAAKi0C,kBAAkBztC,EAAAA;AAC1BxG,WAAK2X,iBAEL3X;AAAAA;AAAAA,WAAKk0C,YAAY1tC,GAAGzG;EACtB;AACAJ,EAAAA,WAAUs0C,oBAAoB,SAASztC,IAAAA;AACtC,SAAIxG,KAAKoM,aAAAA,CAAcpM,KAAKmM,WAAU;AACrC,aAAO;AAAA,IACP;AAGD,QAAIgoC,mBAAoB3tC,GAAGzD,WAAWgC,QAAAA,IAAY/E,KAAKmM,UAAUpH,aAAa/E,KAAKoM,UAAUrH,YAAYyB,GAAGxD,SAAS+B;AAErH,QAAGovC,kBAAiB;AAGnB,UAAIC,cAAc5tC,GAAGzD,WAAWsJ,YAC/BgoC,aAAa7tC,GAAGxD,SAASqJ,SAAc7F,IAAAA,GAAGxD,SAAS2K,WAAAA,IAAa,IAChEgjB,WAAW3wB,KAAK0B,OAAO6K,WACvBmkB,YAAY1wB,KAAK0B,OAAO4K;AAEzB,UAAIgoC,oBAAqBt0C,KAAK2M,eAAkB0nC,GAAAA,aAAa1jB,YAAY0jB,cAAc3jB,eAAe0jB,eAAezjB,YAAYyjB,cAAc1jB;AAE/I,UAAG4jB,mBAAkB;AACpB,eAAO;AAAA,MACV,OAAO;AAGJ,YAAIvoB,kBAAkBvlB,GAAGxD,SAAS+B,QAAAA,IAAYyB,GAAGzD,WAAWgC,QAAAA,MAAc,MAAK,KAAG,KACjFwvC,kBAAkB,MAAMv0C,KAAK0B,OAAO6K,YAAYvM,KAAK0B,OAAO4K;AAE7D,kBAAWyf,iBAAiBwoB,mBAAqBH,cAAczjB,YAAY0jB,aAAa3jB;AAAAA,MAExF;AAAA,IACH,OAAM;AACJ,aAAO;AAAA,IACP;AAAA,EACF;AACA/wB,EAAAA,WAAU0K,gBAAgB,SAAS7D,IAIlC;AAAA,QAAIguC,eAAe,IAAIhwC,KAAKgC,GAAGxD,SAAS+B,QAAAA,IAAY;AACpD,WACCyB,GAAGzD,WAAW4V,YAAAA,MAAkB67B,aAAa77B,YAC7CnS,KAAAA,GAAGzD,WAAW6V,SAAe47B,MAAAA,aAAa57B,cAC1CpS,GAAGzD,WAAWqG,QAAcorC,MAAAA,aAAaprC,aACnC5C,GAAGxD,SAAS+B,YAAYyB,GAAGzD,WAAWgC,YAAc,MAAO,KAAK,KAAK;AAAA,EAC7E;AAEApF,EAAAA,WAAU80C,qBAAqB,SAASC,YAEvC;AAAA,QAAIC,QAAQ,CAEZ;AAAA,aAAS50C,OAAMC,KAAKmzC;AACnB,UAAInzC,KAAKi0C,kBAAkBj0C,KAAKmzC,QAAQpzC,GACvC,CAAA;AAAA,YAAA,CAAK20C,cAAc10C,KAAKmzC,QAAQpzC,GAAIqK,EAAAA;AACnC,cAAIpK,KAAK40C,aAAa70C,KAAIC,KAAKmzC,QAAQpzC,GACtC40C,CAAAA;AAAAA,kBAAM9wC,KAAK7D,KAAKmzC,QAAQpzC;;;AAE5B,WAAO40C;AAAAA,EACR;AACAh1C,EAAAA,WAAUi1C,eAAe,SAAS70C,KAAIyG;AACrC,QAAIquC,SAAS70C,KAAK,YAAYA,KAAK4M;AACnC,WAAO,SAAWioC,OAAO90C,KAAIyG,MAAM;AAAA,EACpC;AACA7G,EAAAA,WAAUm1C,sBAAsB,SAAStuC;AACxC,WAASA,CAAAA,CAAAA,GAAG4D;AAAAA,EACb;AACAzK,EAAAA,WAAUgY,mBAAmB,SAAShO,KAAKorC,MAC1C;AAAA,QAAIC,OAAO;AACX,QAAA,CAAKrrC,KAAK;AACTqrC,aAAO;AACP,UAAIh1C,KAAKi1C,aAAa;AACrBj1C,aAAKkzB,eAAe;AACpB;AAAA,MACA;AACDlzB,WAAKkzB,eAAe;AAEpBlzB,WAAKqzC,WACL1pC;AAAAA,YAAM3J,KAAKy0C,mBAAqBz0C,EAAAA,KAAK2M,eAAe3M,KAAK0B,OAAO61B,UAChE;AAAA,IAAA;AACD,aAAQpzB,IAAG,GAAGyN,MAAMjI,IAAIvF,QAAQD,IAAIyN,KAAKzN,KAAI;AAC5CnE,WAAKk1C,mBAAmBvrC,IAAIxF;IAC5B;AAED,QAAInE,KAAK0B,OAAO61B,cAAcv3B,KAAK2M,aAAa;AAE/C,UAAIwoC,MAAM;AACV,UAAIC,MAAM,CACV;AAAA,eAASjxC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAInE,KAAK80C,oBAAoBnrC,IAAIxF,CAChCgxC,CAAAA;AAAAA,cAAItxC,KAAK8F,IAAIxF,CAAAA,CAAAA;AAAAA;AAEbixC,cAAIvxC,KAAK8F,IAAIxF,CACd,CAAA;AAAA,MAAA;AAED,WAAInE,KAAK+L,KAAK,kBAAiB;AAC9B,YAAIlF,WAAUlH,WAAU2b,qBAAqBC,YAAYvb,KAAK4M;AAC9D,cAAM,IAAIqF,MAAMpL,QAChB;AAAA,MAAA;AAGD7G,WAAKq1C,qBAAqBr1C,KAAK+L,KAAK,eAAA,EAAiB;AACrD/L,WAAK2M,cAAc;AACnB3M,WAAK0X,YAAY09B,KAAKL,IACtB/0C;AAAAA,WAAK2M,cAAc;AAGnB3M,WAAKq1C,qBAAqBr1C,KAAK+L,KAAK,cAAgB,EAAA,CAAA;AACpD/L,WAAK2M,cAAc;AACnB3M,WAAK0X,YAAYy9B,KAAKJ,IAExB;AAAA,IAAA,OAAQ;AACN,UAAIO,SAASz1C,SAAS8e,uBACtB;AAAA,UAAI42B,mBAAmBv1C,KAAK+L,KAAK,cAAgB,EAAA,CAAA;AACjD/L,WAAKq1C,qBAAqBC;AAC1Bt1C,WAAK0X,YAAY/N,KAAKorC,IACtBQ;AAAAA,uBAAiBn1C,YAAYk1C,MAC7Bt1C;AAAAA,WAAKq1C,qBAAqBE;AAAAA,IAE1B;AAED,QAAGP,MAAK;AACPh1C,WAAK4K,UAAU,gBAAgB,CAC/B,CAAA;AAAA,IAAA;AAAA,EACF;AAGAjL,EAAAA,WAAU61C,kBAAkB,SAAS3vC,GAAAA;AACpC,QAAI1C,OAAOxD,WAAUyG,cAAcP,CAAAA,EAAG1C;AACtC,QAAIxD,CAAAA,WAAUiL,UAAU,mBAAmB,CAACzH,IAC3C,CAAA;AAAA;AACDxD,IAAAA,WAAU8X,eAAetU,MAAM;EAChC;AAEAxD,EAAAA,WAAU81C,qBAAqB,SAASjvC,IAAAA;AACvC,QAAIgH,SAASxN,KAAKq1C;AAClB,QAAIK,WAAW11C,KAAKmO,YAAY3H;AAGhC,aAAQoN,IAAIpN,GAAGmvC,OAAO/hC,IAAIpN,GAAGovC,OAAOhiC,KAAI;AAEvC8hC,eAASC,QAAQ/hC;AACjB8hC,eAASE,QAAQhiC,IAAE;AAEnB,UAAIzQ,OAAOxD,WAAUwD;AACrB,UAAI0yC,OAAOl2C,WAAUyM;AACrBypC,aAAO1yC,KAAKC,IAAIyyC,MAAMH,SAASI,QAAQ,MAAA;AACvCD,aAAO1yC,KAAKC,IAAIyyC,MAAMH,SAASC,OAAO,KACtC;AAAA,UAAIzgB,QAAQv1B,WAAUo2C,UAAUF,MAAM1yC,KAAKC,IAAIyyC,MAAM,GAAG,QAAQzxC;AAEhE,UAAIuoB,MAAM3sB,KAAKg2C,mBAAmBN;AAClC,UAAIO,OAAQtpB,IAAIupB,KAAKvpB,IAAI5F;AAEzB,UAAItD,MAAK5jB,SAASC,cAAc;AAChCH,MAAAA,WAAU6B,MAAMiiB,KAAI,SAAS,SAAS5d,GAAGlG;AAAAA,QAAAA,WAAU61C,gBAAgB3vC,CAAG;AAAA,MAAA,CAAA;AACtE4d,MAAAA,IAAG5S,YAAY;AACf4S,MAAAA,IAAGnhB,MAAMC,MAAMoqB,IAAI3F,IAAI;AACvBvD,MAAAA,IAAGnhB,MAAME,OAAOmqB,IAAI5F,IAAI;AACxBtD,MAAAA,IAAGnhB,MAAMyO,QAAQklC,OAAO;AACxBxyB,MAAAA,IAAGvjB,YAAYP,WAAU2zB,UAAUof,kBAAkBmD,MAAM3gB,KAAAA;AAC3Dl1B,WAAK2zC,UAAU9vC,KAAK4f;AAEpBjW,aAAOpN,YAAYqjB;IACnB;AAAA,EACF;AAEA9jB,EAAAA,WAAUu1C,qBAAqB,SAASn1C,KACvC;AAAA,QAAA,CAAIA;AAAI;AACR,QAAIyG;AACJ,QAAG,OAAAzG,OAAc;AAChByG,WAAKxG,KAAKmzC,QAAQpzC,GAAAA;AAAAA;AAElByG,WAAKzG;AACN,QAAA,CAAIyG;AAAI;AACRA,OAAG4D,SAASzK,WAAU0K,cAAc7D,EACrC;AAAA,EAAA;AACA7G,EAAAA,WAAUiG,YAAY,kBAAkBjG,WAAUu1C,kBAClDv1C;AAAAA,EAAAA,WAAUiG,YAAY,gBAAgBjG,WAAUu1C,kBAEhDv1C;AAAAA,EAAAA,WAAU+X,cAAc,SAAS/N,KAAKorC;AACrCprC,UAAM3J,KAAKm2C,mBAAmBxsC,KAAKorC;AACnC,QAAI1pC,aAAa,CAAA;AACjB,aAASlH,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AAC/B,UAAInE,KAAK2M,aAAY;AACpB,YAAGhN,WAAUiN,SAAS,SAAQ;AAC7B5M,eAAKo2C,iBAAiBzsC,IAAIxF;QAC9B,OAAQ;AAEJ,cAAIkyC,UAAU12C,WAAU+B,OAAO40C;AAC/B,cAAGD,YAAYA,UAAQ,KAAK1sC,IAAIxF,CAAAA,EAAGoyC,UAAUF,SAAQ;AAEpDr2C,iBAAKo2C,iBAAiBzsC,IAAIxF,CAC/B,CAAA;AAAA,UAAA,WAAakyC,YAAYhoC,UAAa1E,IAAIxF,CAAGoyC,EAAAA,WAAWF,SAAQ;AAE3D12C,YAAAA,WAAU81C,mBAAmB9rC,IAAIxF;UACtC;AAGI;AAAA,QAAA;AAAA,MAIJ,OAAO;AACJ,YAAIqC,KAAKmD,IAAIxF;AACb,YAAIqJ,SAAS7N,WAAUuR,cAAc1K,GAAGmvC;AACxC,YAAKnoC,CAAAA;AAAQ;AAEb,YAAA,CAAInC,WAAW7E,GAAGmvC,KAAAA,GAAO;AACxBtqC,qBAAW7E,GAAGmvC,SAAS,EACtBa,MAAMhpC,QACN8nC,QAAQz1C,SAAS8e,uBACjB5N,GAAAA,OAAOvD,OAAOyS,YAEf;AAAA,QAAA;AAED,YAAIzU,YAAYH,WAAW7E,GAAGmvC,KAAAA;AAC9B31C,aAAKy2C,aAAajwC,IAAIgF,UAAU8pC,QAAQ9pC,UAAUuF;MAClD;AAED,aAAQ5M,KAAKkH,YAAW;AACvB,UAAIG,YAAYH,WAAWlH,CAAAA;AAC3B,UAAGqH,UAAUgrC,QAAQhrC,UAAU8pC,QAAO;AACrC9pC,kBAAUgrC,KAAKp2C,YAAYoL,UAAU8pC,MAAAA;AAAAA,MACrC;AAAA,IACD;AAAA,EACH;AAEA31C,EAAAA,WAAU+2C,0BAA0B,SAASzxC,OAC5C;AAAA,aAASd,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAK;AACtC,WAAKc,MAAMd,CAAAA,EAAG0M,aAAa,IAAIkB,QAAQ,2BAA2B;AACjE,eAAO9M,MAAMd;MACb;AAAA,IACD;AAED,WAAOc,MAAM,CAAA;AAAA,EACd;AAEAtF,EAAAA,WAAUw2C,qBAAqB,SAASxsC,KAAKorC;AAC5C,QAAI4B,KAAK32C,KAAKsf,GAAG8F;AACjB,QAAIwxB,QAAQ52C,KAAKwtB,OAAOK;AACxB,QAAI3N,IAAIlgB,KAAKwtB,OAAOK,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CACjD;AAAA,QAAIpc,OAAOzR,KAAK+L,KAAK,gBAAgB,CAErC;AAAA,QAAA,CAAK/L,KAAK2M,aAAa;AACtBhD,YAAM3J,KAAK62C,wBAAwBltC,KAAKorC,IAAAA;AAAAA,IACxC,OACI;AACJprC,YAAM3J,KAAK82C,yBAAyBntC,KAAKorC,IACzC;AAAA,IAAA;AACD,QAAI/0C,KAAK2M,aAAa;AACrB,UAAIooC;AACH/0C,aAAKwtB,OAAOK,UAAU+oB;AAAAA,WAClB;AACJ,YAAIG,YAAYtlC,KAAKxN,iBAAiB,oBACtC;AAAA,YAAI8yC,UAAU3yC,QAAQ;AACrB,mBAASD,IAAI,GAAGA,IAAI4yC,UAAU3yC,QAAQD,KAAK;AAC1C+b,cAAE/b;AACF,gBAAIc,QAAQ8xC,UAAU5yC,CAAGF,EAAAA,iBAAiB;AAC1C,gBAAI+yC,aAAah3C,KAAKwtB,OAAO1c,SAAS9Q,KAAKsf,GAAGuG;AAC9C,gBAAK3F,EAAE/b,KAAMwyC,KAAKK,YAAY;AAG7B,kBAAIC,UAAUD;AACd,kBAAGh3C,KAAK0B,OAAO40C,mBAAiB,MAAMt2C,KAAK0B,OAAO40C,oBAAoBp2B,EAAE/b,MAAMnE,KAAK0B,OAAO40C,kBAAiB;AAC1GW,0BAAU/2B,EAAE/b,CAAKwyC,IAAAA;AAAAA,cACxB,YAAiB32C,KAAK0B,OAAO40C,mBAAmB,KAAKK,KAAKK,YAAW;AAC9DC,2BAAWj3C,KAAK0B,OAAO40C,mBAAmB,KAAKK;AAAAA,cAC/C;AAEDI,wBAAU5yC,CAAG7B,EAAAA,MAAMwO,SAAUmmC,UAAUj3C,KAAKsf,GAAGuG,oBAAqB;AAAA,YACpE;AAED3F,cAAE/b,MAAM+b,EAAE/b,IAAI,MAAM,KAAKxE,WAAU+2C,wBAAwBzxC,KAAAA,EAAO6b;AAAAA,UAClE;AACDZ,YAAEg3B,QAAQ,CACV;AAAA,gBAAMnzB,WAAW/jB,KAAKgE,WAAWgb,cAAc,eAAA;AAC/C,cAAI+E,SAASjD,eAAeiD,SAASozB,gBAAiBx3C,CAAAA,WAAU6tB,OAAO4pB,cAAcz3C,WAAU2f,GAAGgG,cAAc;AAE/G,gBAAI+xB,iBAAiB13C,WAAU6tB,QAC9B8pB,YAAYD,eAAeA,eAAe1f,UAAAA,GAC1C4f,cAAcF,eAAexpB,QAAQ5f,MAEtCqpC;AAAAA,yBAAc33C,WAAU2f,GAAGgG,gBAAgB;AAC3CtlB,iBAAKw1B,kBAAkB8hB,WAAWt3C,KAAKoM,WAAWpM,KAAKmM,SAAAA;AACvDxM,YAAAA,WAAU6tB,OAAOK,UAAU0pB;AAE3Bv3C,iBAAKwmB,OAAOxmB,KAAK+L,KAAK,kBAAkB,CAAIurC,GAAAA,SAAAA;AAC5C33C,YAAAA,WAAUk2B,eAAe71B,KAAK+L,KAAK,gBAAkB,EAAA,CAAA,CAAA;AACrDpM,YAAAA,WAAU64B,oBAAoBx4B,KAAK+L,KAAK,cAAA,EAAgB,IAAI/L,KAAKo1B,oBAAAA,GAAuBp1B,KAAKoM,SAE7FirC;AAAAA,2BAAeD,aAAa;AAAA,UAC5B;AAAA,QACL,OAAU;AACN,eAAKztC,IAAIvF,UAAUpE,KAAK+L,KAAK,eAAA,EAAiB,CAAGzJ,EAAAA,MAAMm1B,cAAc;AACpEvX,cAAE;AACH,cAAIvW,IAAIvF,UAAU8b,EAAE,CAAO,KAAA,IAAG;AAK7B,gBAAIs3B,yBAAyBt3B,EAAE,CAAK,IAAA,KAAKy2B,KAAK;AAE9C,gBAAIc,wBAAwBD;AAC5B,gBAAIE,4BAA4BF,wBAAwB;AACxD,gBAAIx3C,KAAK0B,OAAO+uC,wBAAwB;AACvCgH,sCAAwBtmC,KAAK7C,IAAIkpC,uBAAuBx3C,KAAK0B,OAAO+uC,sBACpEiH;AAAAA,0CAA4BD,wBAAwB;AAAA,YACpD;AAED,gBAAIE,oBAAoB33C,KAAK+L,KAAK,eAAA,EAAiB;AACnD4rC,8BAAkBr1C,MAAMwO,SAAS4mC;AACjCC,8BAAkBr1C,MAAMm1B,aAAcvX,EAAE,CAAO,KAAA,KAAI,WAAW;AAC9Dy3B,8BAAkBr1C,MAAMod,UAAWQ,EAAE,CAAO,KAAA,KAAI,SAAS;AAGzD,gBAAI03B,iBAAiB53C,KAAK+L,KAAK,iBAAiB,CAChD6rC;AAAAA,2BAAet1C,MAAMwO,SAAS4mC;AAC9BE,2BAAet1C,MAAMm1B,aAAcvX,EAAE,CAAA,KAAA,KAAW,WAAW;AAC3D03B,2BAAet1C,MAAMod,UAAWQ,EAAE,CAAA,KAAA,KAAW,SAAS;AACtD03B,2BAAe/mC,YAAYqP,EAAE,CAAK,IAAA,uBAAuB;AACzDlgB,iBAAKq0B,aAAanU,EAAE,CAAA,IAAK,KAAKy2B;AAC9B,gBAAG32C,KAAK0B,OAAO+uC,wBAAuB;AACrCzwC,mBAAKq0B,YAAYljB,KAAK7C,IAAItO,KAAK0B,OAAO+uC,wBAAwBzwC,KAAKq0B,SAAAA;AAAAA,YACnE;AACDnU,cAAE,CAAA,IAAK;AAEP,gBAAIu3B,yBAAyBD,uBAAuB;AAEnDG,gCAAkBr1C,MAAMu1C,YAAY;AAGpCD,6BAAet1C,MAAM2K,WAAW;AAChC2qC,6BAAet1C,MAAMC,MAAM;AAC3Bq1C,6BAAet1C,MAAME,OAAO;AAAA,YAC5B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AACD,WAAOmH;AAAAA,EACR;AACAhK,EAAAA,WAAU6xB,kBAAkB,SAAShrB,IAAAA;AAGpC,QAAIsxC,WAAW93C,KAAKmD,KAAK0zB,UAAU,IAAIryB,KAAKgC,GAAGzD;AAC/C,WAAOoO,KAAKI,OAAOumC,SAAS/yC,QAAAA,IAAY/E,KAAKoM,UAAUrH,QAAAA,MAAc,KAAK,KAAK,KAAK,IACrF;AAAA,EAAA;AACApF,EAAAA,WAAUo4C,6BAA6B,SAASvxC;AAC/C,QAAIxD,WAAWwD,GAAGxD;AAClB,QAAIhD,KAAK0B,OAAO4uC,uBAAuB;AACtC,UAAI0H,eAAexxC,GAAGxD,WAAWwD,GAAGzD,cAAc;AAClD,UAAIi1C,cAAch4C,KAAKi4C,sBAAsB;AAC5Cj1C,mBAAWhD,KAAKmD,KAAKC,IAAIJ,UAAUhD,KAAKi4C,uBAAuBD,aAAa;MAC5E;AAAA,IACD;AACD,WAAOh1C;AAAAA,EACR;AACArD,EAAAA,WAAUk3C,0BAA0B,SAASltC,KAAKorC,MAAAA;AACjDprC,QAAI66B,KAAK,SAASroB,GAAGC,GACpB;AAAA,UAAID,EAAEpZ,WAAWgC,aAAaqX,EAAErZ,WAAWgC;AAC1C,eAAOoX,EAAEpc,KAAKqc,EAAErc,KAAK,IAAK;AAC3B,aAAOoc,EAAEpZ,aAAaqZ,EAAErZ,aAAa,IAAA;AAAA,IACvC,CACC;AAAA,QAAI8E,OAAO,CAAA;AACX,QAAIqwC,gBAAgB,CAAA;AAEpBl4C,SAAKi4C,uBAAuB9mC,KAAK8D,MAAMjV,KAAKsf,GAAG6F,mBAAmB,KAAKnlB,KAAK0B,OAAO2P,YAAAA;AAEnF,aAASlN,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,UAAIqC,KAAKmD,IAAIxF,CAGb;AAAA,UAAI4xB,KAAKvvB,GAAGzD;AACZ,UAAIwyB,KAAK/uB,GAAGxD;AAEZ,UAAIm1C,KAAKpiB,GAAG1pB,SAAAA;AACZ,UAAI+rC,KAAK7iB,GAAGlpB,SACZ7F;AAAAA,SAAGmvC,QAAQ31C,KAAKwxB,gBAAgBhrB;AAChC,UAAIxG,KAAK2Q,SAASnK,GAAGmvC,KAAAA,GAAO;AAE3BhsC,YAAIyJ,OAAOjP,GAAE,CAAA;AACbA;AACA;AAAA,MACA;AAED,WAAK0D,KAAKrB,GAAGmvC,KAAQ9tC;AAAAA,aAAKrB,GAAGmvC,KAAS,IAAA,CAAA;AAEtC,WAAKZ,MAAM;AACVvuC,WAAG6xC,SAAS;AAEZ,YAAI1D,QAAQ9sC,KAAKrB,GAAGmvC,KAAAA;AAEpB,eAAOhB,MAAMvwC,QAAQ;AACpB,cAAIk0C,OAAO3D,MAAMA,MAAMvwC,SAAS,CAChC;AAAA,cAAIm0C,aAAav4C,KAAK+3C,2BAA2BO;AACjD,cAAIC,WAAWxzC,QAAayB,KAAAA,GAAGzD,WAAWgC,QAAW,GAAA;AACpD4vC,kBAAMvhC,OAAOuhC,MAAMvwC,SAAS,GAAG,CAAA;AAAA,UACpC,OAAW;AACN;AAAA,UACA;AAAA,QACD;AACD,YAAIo0C,aAAa7D,MAAMvwC;AACvB,YAAIq0C,YAAY;AAChB,iBAAS/kB,IAAI,GAAGA,IAAIihB,MAAMvwC,QAAQsvB,KAAK;AACtC,cAAI4kB,OAAO3D,MAAMjhB;AACjB,cAAI6kB,aAAav4C,KAAK+3C,2BAA2BO,IAAAA;AACjD,cAAIC,WAAWxzC,QAAAA,KAAayB,GAAGzD,WAAWgC,WAAW;AACpD0zC,wBAAY;AACZjyC,eAAG+vC,UAAU+B,KAAK/B;AAClBiC,yBAAa9kB;AACbltB,eAAG6xC,SAAS;AACZ;AAAA,UACA;AAAA,QACD;AAED,YAAI1D,MAAMvwC;AACTuwC,gBAAMA,MAAMvwC,SAAS,GAAGi0C,SAAS;AAElC,aAAKI,WAAW;AACf,cAAI9D,MAAMvwC,QAAQ;AACjB,gBAAIuwC,MAAMvwC,UAAUuwC,MAAMA,MAAMvwC,SAAS,CAAA,EAAGmyC,SAAS;AACpD,kBAAA,CAAK5B,MAAMA,MAAMvwC,SAAS,CAAGmyC,EAAAA;AAC5B/vC,mBAAG+vC,UAAU;AAAA;AAEb,qBAAK7iB,IAAI,GAAGA,IAAIihB,MAAMvwC,QAAQsvB,KAAK;AAClC,sBAAIglB,aAAa;AACjB,2BAAS1pC,IAAI,GAAGA,IAAI2lC,MAAMvwC,QAAQ4K,KAAK;AACtC,wBAAI2lC,MAAM3lC,GAAGunC,WAAW7iB,GAAG;AAC1BglB,mCAAa;AACb;AAAA,oBACA;AAAA,kBACD;AACD,sBAAKA,CAAAA,YAAY;AAChBlyC,uBAAG+vC,UAAU7iB;AACb;AAAA,kBACA;AAAA,gBACD;AACFltB,iBAAG6xC,SAAS;AAAA,YAClB,OAAY;AACN,kBAAIM,cAAchE,MAAM,CAAA,EAAG4B;AAC3B,mBAAK7iB,IAAI,GAAGA,IAAIihB,MAAMvwC,QAAQsvB,KAAK;AAClC,oBAAIihB,MAAMjhB,GAAG6iB,UAAUoC;AACtBA,gCAAchE,MAAMjhB,CAAAA,EAAG6iB;AAAAA,cACxB;AACD/vC,iBAAG+vC,UAAUoC,cAAc;AAC3BnyC,iBAAG6xC,SAAS;AAAA,YACZ;AAAA,UAED;AACA7xC,eAAG+vC,UAAU;AAAA,QACd;AAED5B,cAAMvhC,OAAOolC,YAAYA,cAAc7D,MAAMvwC,SAAS,IAAI,GAAGoC,EAE7D;AAAA,YAAImuC,MAAMvwC,UAAUuwC,MAAMiE,aAAa,IAAI;AAC1CjE,gBAAMiE,YAAYjE,MAAMvwC;AACxBoC,aAAGqyC,SAASlE,MAAMvwC;AAAAA,QACtB,OAAU;AACNoC,aAAGqyC,SAAUryC,GAAS,SAAIA,GAAGqyC,SAAS;AAAA,QACtC;AAAA,MACD;AAED,UAAIV,KAAKn4C,KAAK0B,OAAO4K,cAAc8rC,MAAMp4C,KAAK0B,OAAO6K,WAAW;AAG/D2rC,sBAAcr0C,KAAK2C,EAAAA;AACnBmD,YAAIxF,CAAKqC,IAAAA,KAAKxG,KAAK84C,YAAYtyC,EAAAA;AAE/B,YAAI2xC,KAAKn4C,KAAK0B,OAAO4K,YAAY;AAChC9F,aAAGzD,WAAW0H,SAASzK,KAAK0B,OAAO4K,UACnC9F;AAAAA,aAAGzD,WAAW2H,WAAW,CAAA;AAAA,QACzB;AACD,YAAI0tC,MAAMp4C,KAAK0B,OAAO6K,WAAW;AAChC/F,aAAGxD,SAAS0H,WAAW,CAAA;AACvBlE,aAAGxD,SAASyH,SAASzK,KAAK0B,OAAO6K,SAAAA;AAAAA,QACjC;AAED,YAAI/F,GAAGzD,aAAayD,GAAGxD,YAAYm1C,MAAMn4C,KAAK0B,OAAO6K,WAAW;AAC/D5C,cAAIyJ,OAAOjP,GAAG,CACdA;AAAAA;AACA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AACD,QAAK4wC,CAAAA,MAAM;AACV,eAAS5wC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpCwF,YAAIxF,CAAG00C,EAAAA,SAAShxC,KAAK8B,IAAIxF,CAAAA,EAAGwxC,OAAOiD;AAAAA,MACnC;AACD,eAASz0C,IAAI,GAAGA,IAAI+zC,cAAc9zC,QAAQD;AACzC+zC,sBAAc/zC,CAAG00C,EAAAA,SAAShxC,KAAKqwC,cAAc/zC,CAAAA,EAAGwxC,KAAOiD,EAAAA;AAAAA,IACxD;AAED,WAAOjvC;AAAAA,EACR;AACAhK,EAAAA,WAAUo5C,cAAc,SAASpvC,KAChCA;AAAAA,QAAI66B,KAAK,SAASroB,GAAGC,GACpB;AAAA,UAAID,EAAEpZ,WAAWgC,QAAAA,KAAaqX,EAAErZ,WAAWgC,QAAAA,GAAW;AACrD,YAAIoX,EAAE/R,UAAWgS,CAAAA,EAAEhS;AAAQ,iBAAO;AAClC,aAAK+R,EAAE/R,UAAUgS,EAAEhS;AAAQ;AAC3B,eAAO+R,EAAEpc,KAAKqc,EAAErc,KAAK,IAAK;AAAA,MAC1B;AACD,aAAOoc,EAAEpZ,aAAaqZ,EAAErZ,aAAa,IAAK;AAAA,IAC5C;EACA;AAEApD,EAAAA,WAAUq5C,gCAAgC,SAAShkB,MAAMC,IAAIzzB,QAAAA;AAC5D,QAAI2c,OAAOne,KAAK0Q,MAAMtM;AACtB,QAAI60C,mBAAmB;AACvB,QAAIC,YAAYlkB;AAChB,QAAImkB,UAAU;AACd,QAAIC,aAAa,IAAI50C,KAAKywB,EAAAA;AAC1B,QAAGt1B,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKywB,KAAKlwB,QAAakwB,KAAAA,GAAGlwB,QAAU,GAAA;AACnEq0C,mBAAaz5C,WAAUwD,KAAK0zB,UAAUuiB,UACtCA;AAAAA,mBAAaz5C,WAAUwD,KAAKC,IAAIg2C,YAAY,GAAG;IAC/C;AACD,WAAMF,YAAYE,YAAW;AAC5BD,gBAAU;AACV,UAAIE,YAAYr5C,KAAKwM,kBAAkB0sC,WAAW,OAAO13C;AACzD,UAAI83C,gBAAgBD,YAAYl7B;AAChC,UAAA,CAAIne,KAAK2Q,SAAS2oC,gBAAe;AAChCL,2BAAmB;AACnB;AAAA,MACA;AACDC,kBAAYv5C,WAAUwD,KAAKC,IAAI81C,WAAW,GAAG,KAC7C;AAAA,IAAA;AACD,WAAOC,WAAWF;AAAAA,EACnB;AAEAt5C,EAAAA,WAAUm3C,2BAA2B,SAASntC,KAAKorC,MAClD/0C;AAAAA,SAAK+4C,YAAYpvC,GACjB;AAAA,QAAI4vC,MAAM,CACV;AAAA,QAAIC,QAAQ,CACX,IACA,CACA,GAAA,CAAA,GACA,IACA,CACA,GAAA,CAAA,GACA;AAED,QAAIjrC,MAAMvO,KAAKwtB,OAAOK;AACtB,QAAI9qB;AACJ,QAAIob,OAAOne,KAAK0Q,MAAMtM;AACtB,QAAIq1C,cAAc,CAAA;AAElB,aAASt1C,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,UAAIqC,KAAKmD,IAAIxF,CAAAA;AACb,UAAIpE,MAAKyG,GAAGzG;AACZ,UAAK05C,CAAAA,YAAY15C,GAAK,GAAA;AACrB05C,oBAAY15C,GAAM,IAAA,EACjB25C,aAAa,MACbC,YAAY;MAEb;AACD,UAAIC,aAAaH,YAAY15C;AAC7B,UAAIg2B,KAAMhzB,cAAcyD,GAAGzD;AAC3B,UAAIwyB,KAAK/uB,GAAGxD;AAEZ,UAAI+yB,KAAK/1B,KAAKoM,WAAW;AACxBwtC,mBAAWF,cAAc;AACzB3jB,aAAK/1B,KAAKoM;AAAAA,MACV;AACD,UAAImpB,KAAKv1B,KAAKmM,WAAW;AACxBytC,mBAAWD,aAAa;AACxBpkB,aAAKv1B,KAAKmM;AAAAA,MACV;AAED,UAAI0tC,WAAW75C,KAAKwM,kBAAkBupB,IAAI,OAAOvvB,EACjDA;AAAAA,SAAGmvC,QAAQkE,WAAW17B;AAEtB,UAAIne,KAAK2Q,SAASnK,GAAGmvC,KAAAA,KAAUnvC,GAAG4D;AAAQ;AAE1C,UAAI0vC,WAAW95C,KAAKwM,kBAAkB+oB,IAAI,MAAM/uB,EAAO2X,KAAAA;AACvD3X,SAAGovC,QAASkE,WAAW37B,QAASA;AAChC3X,SAAGuzC,UAAUD,WAAWD;AAExBrzC,SAAGsvC,SAAS3kC,KAAK8D,OAAOjV,KAAK0uB,eAAeqH,GAAGhxB,WAAW,CAAK/E,IAAAA,KAAKoM,UAAUrH,QAAc,MAAA,KAAK,KAAK,MAAO,KAAKoZ,KAElH;AAAA,UAAI86B,mBAAmBt5C,WAAUq5C,8BAA8BjjB,IAAIR,IAAI/uB,EAAAA;AAEvE,WAAIyyC,kBAAiB;AACpBl2C,qBAAa;AACb;AAAA,MACA;AAGD,UAAI4xC,QAAQ6E,MAAMhzC,GAAGsvC;AAErB,UAAIkE;AAEJ,WAAKA,aAAa,GAAGA,aAAarF,MAAMvwC,QAAQ41C;AAC/C,YAAIrF,MAAMqF,UAAYpE,EAAAA,SAASpvC,GAAGmvC;AACjC;AAEF,UAAKnvC,CAAAA,GAAG+vC,YAAYxB,MAAM;AACzBvuC,WAAG+vC,UAAUyD;AAAAA,MACb;AAED,UAAIxzC,GAAGmvC,QAAQnvC,GAAGuzC,WAAW57B,MAAM;AAClCpb,qBAAa;AACbw2C,YAAI11C,KAAK2C,EAAAA;AACTmuC,cAAMqF,UAAcxzC,IAAAA;AAEpB+H,YAAI/H,GAAGsvC,MAAAA,IAAUnB,MAAMvwC,SAAS;AAChCoC,WAAGyzC,eAAeL,WAAWF;AAC7BlzC,WAAG0zC,cAAcN,WAAWD;AAAAA,MAC/B,OAAS;AACN,YAAIjzC,QAAO1G,KAAK84C,YAAYtyC,EAC5BE;AAAAA,QAAAA,MAAK3G,KAAKyG,GAAGzG;AACb2G,QAAAA,MAAKqzC,UAAU57B,OAAO3X,GAAGmvC;AACzBjvC,QAAAA,MAAKkvC,QAAQz3B;AACbzX,QAAAA,MAAKivC,QAAQnvC,GAAGmvC;AAChBjvC,QAAAA,MAAKovC,SAAStvC,GAAGsvC;AACjBpvC,QAAAA,MAAK6vC,UAAU/vC,GAAG+vC;AAClB7vC,QAAAA,MAAK1D,WAAWhD,KAAKmD,KAAKC,IAAI2yB,IAAIrvB,MAAKqzC,SAAS,KAChDrzC;AAAAA,QAAAA,MAAKuzC,eAAeL,WAAWF;AAC/B,YAAIE,WAAWF,aAAa;AAC3BE,qBAAWF,cAAc;AAAA,QACzB;AAEDH,YAAI11C,KAAK6C,KAAAA;AACTiuC,cAAMqF,UAActzC,IAAAA;AACpB3D,qBAAa2D,MAAK1D;AAElBuL,YAAI/H,GAAGsvC,UAAUnB,MAAMvwC,SAAS;AAChCD;AACA;AAAA,MACA;AAAA,IACD;AACD,WAAOo1C;AAAAA,EACR;AACA55C,EAAAA,WAAUw6C,cAAc,WAAA;AACvB,QAAIh+B,IAAI,IAAI3X,KAAKxE,KAAK+C;AACtB,QAAIqZ,IAAI,IAAI5X,KAAKxE,KAAKgD;AACtBhD,SAAK+C,aAAaoZ;AAClBnc,SAAKgD,WAAWoZ;AAAAA,EACjB;AACAzc,EAAAA,WAAUm5C,cAAc,SAAStyC;AAChCxG,SAAKm6C,YAAY9hC,YAAY7R;AAC7B,WAAO,IAAIxG,KAAKm6C;AAAAA,EAEjB;AACAx6C,EAAAA,WAAUg0C,YAAY,CACtBh0C;AAAAA,EAAAA,WAAU0zC,aAAa,WAAA;AACtB,aAASlvC,IAAI,GAAGA,IAAInE,KAAK2zC,UAAUvvC,QAAQD,KAAK;AAC/C,UAAIvE,MAAMI,KAAK2zC,UAAUxvC;AACzB,UAAIvE,IAAI6N;AAAY7N,YAAI6N,WAAWC,YAAY9N,GAAAA;AAAAA,IAC/C;AACDI,SAAK2zC,YAAY;EAClB;AACAh0C,EAAAA,WAAUiY,cAAc,SAAS7X,KAAAA;AAChC,QAAIyG,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvBC,SAAKk0C,YAAYn0C,GAAAA;AAEjB,QAAIyG,MAAMxG,KAAKi0C,kBAAkBztC,EAAAA,KAAOxG,KAAK40C,aAAa70C,KAAIyG,QAAQxG,KAAK2M,eAAe3M,KAAK0B,OAAO61B,aAAa/wB,GAAG4D,SAAS;AAC9H,UAAIpK,KAAK0B,OAAOgwB,eAAc;AAC7B1xB,aAAK2X,iBACR;AAAA,MAAA,OAAO;AACJ,YAAG3X,KAAKiG,SAAWxG,EAAAA,QAAQ,YAAYO,KAAKiG,SAAAA,EAAWujB,YAAYxpB,KAAKqK,cAAc7D,EAAI,GAAA;AACzFxG,eAAK2X,iBACT;AAAA,QAAA,OAAQ;AACJ3X,eAAK2X,iBAAiB,CAACnR,EAAK,GAAA,IAAA;AAAA,QAC5B;AAAA,MACD;AAAA,IACD;AAAA,EACF;AACA7G,EAAAA,WAAUu0C,cAAc,SAASn0C,KAAAA;AAChCC,SAAK6xB,aAAa9xB,KAAI,SAAS+mB,MAAM3iB;AACpC,UAAI2iB,KAAKrZ;AACRqZ,aAAKrZ,WAAWC,YAAYoZ,IAC7BnnB;AAAAA,MAAAA,WAAUg0C,UAAUvgC,OAAOjP,GAAG,CAChC;AAAA,IAAA,CAAA;AAAA,EACA;AACAxE,EAAAA,WAAUy6C,eAAe,SAASj3C,MACjC;AAAA,QAAIk3C,KAAKl3C,KAAKkJ,aAAa,KAAKlJ,KAAKwK;AACrC,WAASwD,KAAKI,OAAO8oC,KAAK,KAAK,MAAOr6C,KAAK0B,OAAO4K,aAAa,KAAK,KAAK,OAAQtM,KAAK0B,OAAO2P,gBAAgB,KAAK,KAAK,IAAA,KAAWrR,KAAK0B,OAAO2P,eAAe;AAAA,EAC9J;AACA1R,EAAAA,WAAU26C,gBAAgB,SAAS9zC,IAAI+zC,YACtCA;AAAAA,iBAAaA,cAAc;AAC3B,QAAIF,KAAK7zC,GAAGzD,WAAWsJ,aAAa,KAAK7F,GAAGzD,WAAW4K,WAAAA;AACvD,QAAI6sC,KAAMh0C,GAAGxD,SAASqJ,SAAa,IAAA,KAAK7F,GAAGxD,SAAS2K,WAAAA,KAAkBhO,WAAU+B,OAAO6K,YAAY;AACnG,QAAIhK,MAAMvC,KAAKo6C,aAAa5zC,GAAGzD,UAE/B;AAAA,QAAI+N,SAASK,KAAK5C,IAAIgsC,aAAaC,KAAKH,MAAMr6C,KAAK0B,OAAO2P,eAAe,EACzE;AAAA,WAAO,EACN9O,KACAuO,OAAQA;AAAAA,EAEV;AACAnR,EAAAA,WAAU82C,eAAe,SAASjwC,IAAI8uC,QAAQmF,aAC7C;AAAA,QAAIC,OAAO/6C,WAAU2f,GAAGmG;AACxB,QAAIk1B,cAAe36C,KAAK0B,OAA4B,wBAAI,IAAIg5C;AAC5D,QAAIl0C,GAAGmvC,QAAQ;AAAG;AAElB,QAAInoC,SAAS7N,WAAUuR,cAAc1K,GAAGmvC,KAAAA;AACxC,SAAKnoC;AAAQ;AAEb8nC,aAASA,UAAU9nC;AAEnB,QAAIotC,QAAQ56C,KAAKs6C,cAAc9zC,IAAI7G,WAAU2f,GAAG6F,gBAAAA;AAChD,QAAI5iB,MAAMq4C,MAAMr4C,KACfuO,SAAS8pC,MAAM9pC;AAEhB,QAAI+pC,WAAWr0C,GAAGqyC,UAAU;AAC5B,QAAIiC,YAAYt0C,GAAG+vC,WAAW;AAE9BkE,kBAAcA,eAAejtC,OAAOyS;AACpC,QAAGjgB,KAAK0B,OAAOsuC,oBAAmB;AACjCyK,qBAAez6C,KAAK0B,OAAOsuC;AAAAA,IAC3B;AAED,QAAIj/B,QAAQI,KAAK8D,OAAOwlC,cAAcE,eAAeE,QACrD;AAAA,QAAIr4C,OAAOs4C,YAAY/pC,QAAQ;AAC/B,QAAA,CAAKvK,GAAG6xC;AAAQtnC,cAAQA,SAAS8pC,WAAWC;AAC5C,QAAI96C,KAAK0B,OAAOwE,uBAAuB;AACtC,UAAI6R,SAAQ/X,KAAK0B,OAAO6uC;AACxB,UAAIwK,SAAS/6C,KAAK0B,OAAO8uC;AACzBhuC,aAAOs4C,YAAY/iC,SAAQgjC;AAC3B,UAAIl0B,QAASrgB,GAAS,UAAKq0C,WAAWC,YAAY,KAAK/iC,SAAQgjC,SAAS,IAAI;AAC5EhqC,cAAQI,KAAK8D,MAAMwlC,cAAcE,cAAcn4C,OAAOqkB,KACtD;AAAA,IAAA;AAED,QAAG/V,SAAS,IAAG;AACdtK,SAAGoG,QAAQ;AAAA,IACb,WAAUkE,SAAS,IAAG;AACpBtK,SAAGoG,QAAQ;AAAA,IACb,OAAM;AACJpG,SAAGoG,QAAQ;AAAA,IACX;AAED,QAAIgH,IAAI5T,KAAKg7C,cAAcx0C,IAAIm0C,cAAcn4C,MAAMD,KAAKwO,OAAOD,QAAQtK,GAAGy0C,aAAat7C,WAAU2zB,UAAUgf,aAAa9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,KAAK7G,WAAU2zB,UAAU0K,WAAWx3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,CAAAA;AAEpN,QAAGA,GAAGoG,UAAU,YAAW;AAC1BgH,QAAE8I,UAAUtZ,IAAI;IAClB,WAAWoD,GAAGoG,UAAU,SAAQ;AAC9BgH,QAAE8I,UAAUtZ,IAAI,sBAAA;AAAA,IAChB;AAEDpD,SAAK4nB,SAASkW,UAAUt3B,IAAIoN;AAC5B5T,SAAK2zC,UAAU9vC,KAAK+P,CACpB0hC;AAAAA,WAAOl1C,YAAYwT,CAEnB;AAAA,QAAIsnC,iBAAiBjlB,SAAUj2B,KAAK0B,OAAOkjB,MAAMpX,OAAOlL,MAAMukB,QAAQrZ,OAAOlL,MAAME,MAAM,EAEzFA;AAAAA,WAAOA,OAAO04C,iBAAiBP;AAE/B,QAAI36C,KAAKkpB,YAAY1iB,GAAGzG,IAAI;AAE3B6T,QAAEtR,MAAM64C,SAAS;AACjBpqC,cAAQI,KAAK5C,IAAIwC,OAAOpR,WAAU2f,GAAGsG,YAAAA;AACrChS,UAAI/T,SAASC,cAAc,KAC3B8T;AAAAA,QAAEkJ,aAAa,YAAYtW,GAAGzG;AAC9B6T,QAAEkJ,aAAa9c,KAAK0B,OAAOwC,iBAAiBsC,GAAGzG,EAAAA;AAE/CC,WAAK4nB,SAASkW,UAAUt3B,IAAIoN,CAE5BA;AAAAA,QAAE/C,YAAY;AACd,UAAI7Q,KAAK0B,OAAOkjB;AAAKpiB;AACrBxC,WAAKwmB,OAAO5S,GAAG7C,OAAOD,QAAQtO,MAAMD;AAGpC,UAAGiE,GAAG40C,OAAM;AACXxnC,UAAEtR,MAAM+4C,YAAY,oCAAoC70C,GAAG40C,KAAAA;AAAAA,MAC3D;AACD,UAAIE,WAAW37C,WAAU2zB,UAAUif,YAAY/rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA;AAE3E,UAAG80C,UAAS;AACX1nC,UAAE/C,aAAa,MAAMyqC;AAAAA,MACrB;AACD,UAAIvJ,KAAKlyC,SAASC,cAAc,KAChCiyC;AAAAA,SAAGzvC,MAAMi5C,WAAW;AAEpB3nC,QAAExT,YAAY2xC,EAAAA;AACd/xC,WAAK+L,KAAK,gBAAgB,CAAG3L,EAAAA,YAAYwT;AACzC5T,WAAK2zC,UAAU9vC,KAAK+P,CAEpBm+B;AAAAA,SAAG7xC,YAAY,sCAAsCsG,GAAGM,OAAO;AAC/D9G,WAAKw7C,UAAUzJ,GAAG/yB,cAAc,UAEhCrf;AAAAA,MAAAA,WAAU6B,MAAMxB,KAAKw7C,SAAS,WAAW,SAAS31C;AACjD,YAAIA,EAAE41C;AAAU,iBAAO;AACvB,YAAItQ,OAAOtlC,EAAE61C;AACb,YAAIvQ,QAAQxrC,WAAUomB,KAAKC;AAAWrmB,UAAAA,WAAUopB,SAAS,IACzD;AAAA,YAAIoiB,QAAQxrC,WAAUomB,KAAKE;AAAatmB,UAAAA,WAAUopB,SAAS;AAE3D,YAAGoiB,QAAQxrC,WAAUomB,KAAKC,aAAamlB,QAAQxrC,WAAUomB,KAAKE,aAAY;AACzE,cAAGpgB,EAAEsiB;AAAgBtiB,cAAEsiB,eAAAA;AAAAA,QACvB;AAAA,MACJ,CACExoB;AAAAA,MAAAA,WAAU6B,MAAMxB,KAAKw7C,SAAS,eAAe,SAAU31C,GAAAA;AACtDA,UAAE8jB,eAAe;AACjB,eAAO;AAAA,MACV;AACEhqB,MAAAA,WAAU06B,OAAOr6B,KAAKw7C,SAAS,IAAA;AAE/Bx7C,WAAK+L,KAAK,gBAAgB,CAAGohB,EAAAA,aAAa;AAAA,IAC1C;AACD,QAAIntB,KAAKsf,GAAGmG,eAAe,KAAKzlB,KAAK6oB,cAAcriB,GAAGzG,IAAI;AAEzD,UAAIC,KAAK0B,OAAOwE,yBAAyBlG,KAAKwK;AAC7CoJ,UAAEtR,MAAM64C,SAAS;AAClB,UAAIQ,QAAQ37C,KAAK0B,OAAO,YAAa1B,KAAKkpB,YAAY1iB,GAAGzG,KAAM,SAAS,SAAA;AACxE,UAAI67C,YAAY;AAEhB,UAAIC;AAEJ,eAAS13C,IAAI,GAAGA,IAAIw3C,MAAMv3C,QAAQD,KAAK;AACtC,cAAM23C,cAAcH,MAAMx3C,CAC1B03C;AAAAA,mBAAW77C,KAAK4nB,SAAS8Y,oBAAoBob;AAC7CF,qBAAa,6BAA6BE,uBAAuB97C,KAAK0nB,OAAOC,OAAOm0B,WAAAA,CAAAA,KAAiBD;MACrG;AACD,UAAIj8C,MAAMI,KAAKg7C,cAAcx0C,IAAIhE,OAAOk4C,OAAO,GAAGn4C,KAAKm4C,MAAM,MAAM,IAAI,qCAAqCkB,WAAW,IAAA;AAEvH,UAAGp1C,GAAG40C,OAAM;AACXx7C,YAAI0C,MAAM+4C,YAAY,oCAAoC70C,GAAG40C,KAC7D;AAAA,MAAA;AACD,UAAG50C,GAAGu1C,WAAU;AACfn8C,YAAI0C,MAAM+4C,YAAY,+BAA+B70C,GAAGu1C,SACxD;AAAA,MAAA;AAGD/7C,WAAK+L,KAAK,cAAA,EAAgB,CAAG3L,EAAAA,YAAYR;AACzCI,WAAK2zC,UAAU9vC,KAAKjE,GACpB;AAAA,IAAA;AACD,QAAGI,KAAK0B,OAAOC,kBAAkB3B,KAAKuK,YAAY/D,GAAGzG,IAAG;AACvDC,WAAKg8C,uBAAuBx1C;IAC5B;AAAA,EACF;AACA7G,EAAAA,WAAUq7C,gBAAgB,SAAUx0C,IAAIugB,GAAGC,GAAGlH,GAAGI,GAAG5d,OAAO25C,UAAUC,UAAUha,QAC9E;AAAA,QAAItuB,IAAI/T,SAASC,cAAc;AAC/B,QAAIC,MAAKyG,GAAGzG;AACZ,QAAIo8C,MAAK,SAAW,sCAAsC;AAE1D,QAAIpgB,QAAQp8B,WAAUsG,SAAAA;AACtB,QAAG81B,MAAMvS,WAAWhjB,GAAGzG,IAAG;AACzBo8C,MAAAA,OAAM;AAAA,IACN;AAED,QAAGpgB,MAAMzS,aAAa9iB,GAAGzG,IAAG;AAC3Bo8C,MAAAA,OAAM;AAAA,IACN;AAED,QAAIC,MAAMz8C,WAAU2zB,UAAUif,YAAY/rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD;AACtE,QAAI41C;AAAKD,MAAAA,MAAKA,MAAK,MAAMC;AAEzB,QAAGp8C,KAAK0B,OAAOwE,uBAAuB;AACrCi2C,MAAAA,OAAM;AAAA,IACN;AAED,QAAIE,WAAWv8B,IAAI;AACnB,QAAI5c,OAAO,kBAAkBnD,QAAOC,KAAK0B,OAAOwC,oBAAoBnE,GAAco8C,YAAAA,GAAAA;AAAAA,oCAC/Cn1B,QAAUhnB,KAAK0B,OAAU,MAAI,WAAS,UAAWqlB,CAAcs1B,aAAAA,QAAAA,cAAsBn8B,QAAS5d,SAAS,EAAA;AAAA,sBACrHkE,GAAGzD,WAAWgC,QAAAA,CAAAA,mBAA4ByB,GAAGxD,SAAS+B;;AAG3E6O,MAAE1T,YAAYgD;AAEd,QAAIsI,YAAYoI,EAAEtP,UAAU,IAAA,EAAMjE;AAElC,QAAA,CAAK6hC,UAAUviC,WAAU28C,YAAY9wC,WAAWhF,IAAIsZ,GAAGI,GAAG+7B,UAAUC,QAAAA,GAAW;AAC9E,UAAG11C,GAAG40C,OAAM;AACX5vC,kBAAUlJ,MAAM+4C,YAAY,oCAAoC70C,GAAG40C,KAAAA;AAAAA,MACnE;AACD,UAAG50C,GAAGu1C,WAAU;AACfvwC,kBAAUlJ,MAAM+4C,YAAY,+BAA+B70C,GAAGu1C,SAAAA;AAAAA,MAC9D;AAED,aAAOvwC;AAAAA,IACT,OAAQ;AACNA,kBAAYoI,EAAEvT;AACd,UAAGmG,GAAG40C,OAAM;AACX5vC,kBAAUlJ,MAAM+4C,YAAY,oCAAoC70C,GAAG40C,KACnE;AAAA,MAAA;AACD,UAAG50C,GAAGu1C,WAAU;AACfvwC,kBAAUlJ,MAAM+4C,YAAY,+BAA+B70C,GAAGu1C,SAC9D;AAAA,MAAA;AAED,UAAIQ,aAAa;AACjBA,oBAAc,2CAA2CN,WAAW;AACpEM,oBAAc,2BAA2BL,WAAW;AAEpD,UAAIM,eAAe;AACnB,UAAIta,UAAU17B,GAAGi2C,iBAAiB;AACjCD,uBAAe,uBAAuBA;AAEvCD,oBAAc,iBAAiBC,eAAe,sBAAsBta,SAAS,sBAAsB,MAAM;AAEzG12B,gBAAUtL,YAAYq8C;AAAAA,IACtB;AAED,WAAO/wC;AAAAA,EACR;AACA7L,EAAAA,WAAU28C,cAAc,WACvB;AAAA,WAAO;AAAA,EACR;AACA38C,EAAAA,WAAUuR,gBAAgB,SAAS1R,KAAAA;AAClC,QAAIQ,KAAK4M,SAAS;AAAO,aAAO5M,KAAK+L,KAAK,cAAA,EAAgB,GAAG1L;AAC7D,WAAOL,KAAK+L,KAAK,gBAAgB,CAAG8F,EAAAA,WAAWrS;EAChD;AACAG,EAAAA,WAAU6M,oBAAoB,SAASrJ,MAAMu5C,MAC5C;AAAA,QAAIl9C,MAAM2R,KAAK8D,OAAOjV,KAAK0uB,eAAevrB,MAAM,KAAKnD,KAAKoM,cAAc,KAAK,KAAK,KAAK,IAEvF;AAAA,QAAIswC,QAAQ18C,KAAKmD,KAAK+sB,UAAU/sB,IAAO3D;AAAAA;AACvC,WAAOA;AAAAA,EACR;AAIAG,EAAAA,WAAUg9C,iBAAiB,SAAS3rC,OAAO4rC,WAAWC;AACrD,QAAI78C,CAAAA,KAAKosB;AACR,aAAOpb;AACR,QAAIhR,CAAAA,KAAKosB,YAAY0wB;AACpB98C,WAAKosB,YAAY0wB,eAAe9rC;AAAAA;AAEhCA,cAAQhR,KAAKosB,YAAY0wB;AAE1B,QAAIC,QAAQH,YAAY5rC;AACxB,WAAO+rC,QAAQH,YAAaC,YAAW;AACtC7rC;AACA+rC,eAASH;AAAAA,IACT;AACD5rC,YAAQG,KAAK5C,IAAIyC,OAAO,CAAA;AACxB,WAAOA;AAAAA,EACR;AAEArR,EAAAA,WAAUq2C,qBAAqB,SAASxvC,IAAAA;AACvC,QAAIoe,MAAM5kB,KAAK0B,OAAOkjB;AACtB,QAAIo4B,UAAUh9C,KAAKwtB;AACnB,QAAIzG,IAAIi2B,QAAQx2C,GAAGmvC,KAAAA;AACnB,QAAIO,KAAK8G,QAAQx2C,GAAGovC,KAAAA;AACpB,QAAIhxB,KAAK;AACRmC,UAAIi2B,QAAQA,QAAQrlB,UAAcqlB,IAAAA,QAAQx2C,GAAGovC,KAASoH,IAAAA,QAAQ;AAC9D9G,WAAK8G,QAAQA,QAAQrlB,UAAcqlB,IAAAA,QAAQx2C,GAAGmvC,KAAAA,IAASqH,QAAQ,CAC/D;AAAA,IAAA;AAED,QAAI9G,MAAMnvB;AAAGmvB,WAAK8G,QAAQx2C,GAAGovC,QAAQ,CAAA;AACrC,QAAIe,KAAK32C,KAAKsf,GAAG8F;AAEjB,QAAIpU,QAAQxK,GAAG+vC;AACf,QAAG/vC,GAAGzG,MAAMC,KAAKuK,UAAS;AACzB,UAAIysC,aAAagG,QAAQnvB,QAAQrnB,GAAGsvC,SAAS,CAAA,IAAKkH,QAAQnvB,QAAQrnB,GAAGsvC,UAAS91C,KAAKsf,GAAGuG;AACtF7U,cAAQrR,WAAUg9C,eAAe3rC,OAAO2lC,IAAIK,UAC5C;AAAA,IAAA;AACD,QAAIiG,iBAAkBjsC,QAAQ2lC;AAC9B,QAAI3vB,IAAIg2B,QAAQnvB,QAAQrnB,GAAGsvC,MAAWkH,KAAAA,QAAQlsC,SAAU9Q,KAAKsf,GAAGkG,qBAAqB,IAAK,KAAMy3B;AAChG,WAAO,EAACl2B,GAAKmvB,IAAOlvB;EACrB;AAEArnB,EAAAA,WAAUy2C,mBAAmB,SAAU5vC;AACtC,QAAIgH,SAASxN,KAAKq1C;AAClB,QAAI1oB,MAAM3sB,KAAKg2C,mBAAmBxvC,EAClC;AAAA,QAAIwgB,IAAI2F,IAAI3F;AACZ,QAAID,IAAI4F,IAAI5F;AACZ,QAAImvB,KAAKvpB,IAAIupB;AAEb,QAAIgH,gBAAgB;AAIpB,SAAKhH;AAAI;AAET,QAAIiH,YAAYx9C,WAAU+B,OAAOyuC,uBAAuBnwC,KAAK4M,SAAS,YAAA,CACnEpG,GAAG4D,UAAUzK,WAAU+B,OAAO0uC;AAEjC,QAAIx8B,IAAI/T,SAASC,cAAc,KAC/B;AAAA,QAAIs9C,aAAc52C,GAAGoI,eAAe,mBAAmBpI,GAAGyzC,cACzDoD,cAAe72C,GAAGoI,eAAe,aAAkBpI,KAAAA,GAAG0zC;AAEvD,QAAIoD,cAAcH,cAAc32C,GAAG4D,UAAUgzC;AAC7C,QAAIG,eAAeJ,cAAc32C,GAAG4D,UAAUizC;AAE9C,QAAIG,QAAQ;AACZ,QAAIrB,MAAK;AACT,SAAK31C,GAAG4D,UAAU+yC,WAAW;AAC5BK,cAAQ;AACRrB,MAAAA,MAAK;AAAA,IACL;AACD,QAAGiB,YAAW;AACbjB,MAAAA,OAAM;AAAA,IACN;AACD,QAAGkB,aAAY;AACdlB,MAAAA,OAAM;AAAA,IACN;AACD,QAAGmB,aAAY;AACdJ,uBAAiB;AAAA,IACjB;AACD,QAAGK,cAAa;AACfL,uBAAiB;AAAA,IACjB;AAED,QAAId,MAAMz8C,WAAU2zB,UAAUif,YAAY/rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA;AACtE,QAAI41C,KAAI;AACPD,MAAAA,OAAM,MAAMC;AAAAA,IACZ;AAED,QAAIqB,WAAYj3C,GAAG40C,QAAS,sCAAsC50C,GAAG40C,QAAQ,MAAO;AACpF,QAAIA,QAAS50C,GAAGu1C,YAAa,iCAAiCv1C,GAAGu1C,YAAY,MAAO;AAEpF,QAAI2B,aAAa,CAChB,qBACA,SAAS12B,IAAI,MACb,UAAUD,IAAI,MACd,YAAYmvB,KAAKnvB,KAAKy2B,QAAQ,IAAI,MAAM,MACxC,aAAax9C,KAAKsf,GAAG8F,aAAa,KAAK,MACvCg2B,OACAqC,UACCj3C,GAAGy0C,eAAe,EAAA,EAClBnrC,KAAK,GAAA;AAEP,QAAI5M,OAAO,oBAAoBsD,GAAGzG,KAAK,OAAOC,KAAK0B,OAAOwC,kBAAkB,OAAOsC,GAAGzG,KAAK,cAAao8C,MAAK,cAAYuB,aAAW,MAAI19C,KAAK4nB,SAAS0W,mBAAmB93B,EAAI,IAAA;AAC7K,QAAI22C,WAAW;AACdj6C,cAAQg6C;AAAAA,IACR;AACD,QAAGv9C,WAAUsG,SAAAA,EAAWxG,QAAQ,SAAQ;AACvC+G,WAAK7G,WAAUmG,SAASU,GAAGzG,EAAAA;AAAAA,IAC3B;AAED,QAAIyG,GAAG4D,QAAO;AACblH,cAAQ,0CAA0CvD,WAAU2zB,UAAUkf,eAAehsC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EACjH,CAAA;AAAA,IAAA;AAEDtD,YAAQ;AACRA,YAAQvD,WAAU2zB,UAAUmf,eAAejsC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAM;AAC7EtD,YAAQ;AACRA,YAAQ;AAER0Q,MAAE1T,YAAYgD;AAEdlD,SAAK2zC,UAAU9vC,KAAK+P,EAAEvT,UACtBmN;AAAAA,WAAOpN,YAAYwT,EAAEvT,UAAAA;AAAAA,EACtB;AAEAV,EAAAA,WAAUgpB,gBAAgB,SAAS7B,MAAAA;AAClC,QAAI/mB,MAAK;AACT,WAAO+mB,QAAS/mB,CAAAA,OAAM+mB,KAAKriB,cAAc;AACxC1E,MAAAA,MAAK+mB,KAAKriB,aAAazE,KAAK0B,OAAOwC;AACnC4iB,aAAOA,KAAKrZ;AAAAA,IACZ;AACD,WAAO1N;AAAAA,EACR;AAEAJ,EAAAA,WAAUwrB,OAAO,SAASprB;AACzB,QAAIC,KAAKkpB,YAAYnpB;AAAI;AACzBC,SAAK+oB,SAAS,OAAOhpB,GACrBC;AAAAA,SAAKkpB,WAAWnpB;AAChBC,SAAK4X,YAAY7X,GAClB;AAAA,EAAA;AACAJ,EAAAA,WAAUopB,WAAW,SAAStpB,MAAMM,KAAAA;AACnC,QAAIA,OAAMC,KAAKkpB,YAAYnpB;AAAI;AAC/B,QAAIyG,KAAKxG,KAAK8F,SAAS9F,KAAKkpB;AAC5B,QAAI1iB,IAAI;AACP,UAAI/G;AAAM+G,WAAGM,OAAO9G,KAAKw7C,QAAQn9B;AACjCre,WAAKkpB,WAAW;AAChBlpB,WAAKw7C,UAAU;AACfx7C,WAAK4X,YAAYpR,GAAGzG,EACpBC;AAAAA,WAAK29C,iBAAiBn3C,IAAI/G,IAAAA;AAAAA,IAC1B;AAAA,EACF;AACAE,EAAAA,WAAUg+C,mBAAmB,SAASn3C,IAAI/G,MACzC;AAAA,QAAIO,KAAKqpB,YAAY;AACpB,WAAK5pB,MAAM;AACV,YAAI+G;AACHxG,eAAKgrB,YAAYxkB,GAAGzG,IAAI,IAC5B;AAAA,MAAA,OAAS;AACNC,aAAK4K,UAAU,gBAAgB,CAACpE,GAAGzG,IAAIyG,EAAAA,CAAAA;AAAAA,MACvC;AACDxG,WAAKqpB,aAAa;AAAA,IACpB,OAAQ;AACN,UAAI5pB,MAAK;AACRO,aAAK4K,UAAU,kBAAkB,CAACpE,GAAGzG,IAAIyG,EACzC,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AAEA7G,EAAAA,WAAUo2C,YAAY,SAAS/gB,MAAMC,IACpC;AAAA,QAAIhc,SAAS,CACb;AAAA,aAASkD,KAAKnc,KAAKmzC,SAAS;AAC3B,UAAI3sC,KAAKxG,KAAKmzC,QAAQh3B,CACtB;AAAA,UAAI3V,OAAUwuB,CAAAA,QAAAA,CAASC,MAAQzuB,GAAGzD,aAAakyB,MAAMzuB,GAAGxD,WAAWgyB;AAClE/b,eAAOpV,KAAK2C,EACb;AAAA,IAAA;AACD,WAAOyS;AAAAA,EACR;AACAtZ,EAAAA,WAAUi+C,mBAAmB,SAAS79C;AACrC,QAAKA,CAAAA;AACJ;AACD,QAAI89C,kBAAkBl+C,WAAUg0C;AAChC,aAASxvC,IAAE,GAAGA,IAAE05C,gBAAgBz5C,QAAQD,KAAK;AAC5C,UAAI25C,iBAAiBD,gBAAgB15C,CACrC;AAAA,UAAI25C,eAAer5C,aAAa9E,WAAU+B,OAAOwC,eAAAA,KAAoBnE,KAAI;AACxE,eAAO+9C;AAAAA,MACP;AAAA,IACD;AACD,WAAO;AAAA,EACR;AACAn+C,EAAAA,WAAUo+C,YAAY,SAASh+C,KAAIN,MAAAA;AAClC,QAAI4G;AACJ,QAAGtG,cAAaA,QAAO,UAAS;AAC/BN,aAAOM,IAAGN;AACV4G,gBAAUtG,IAAGsG;AACbtG,MAAAA,MAAKA,IAAGsG;AAAAA,IACR;AACD,QAAIG,KAAAA,OAAazG,OAAM,YAAmBA,OAAAA,OAAM,WAAYJ,WAAUmG,SAAS/F,OAAMA;AACrFN,WAAOA,QAAME,WAAUiN;AAEvB,QAAKpG,CAAAA,MAAOxG,KAAK2K,WAAW,sBAAA,KAAA,CAA4B3K,KAAK4K,UAAU,wBAAwB,CAACpE,IAAI/G;AACnG;AAED,QAAIy4B,cAAcv4B,WAAU+B,OAAOw2B;AACnCv4B,IAAAA,WAAU+B,OAAOw2B,cAAc1xB,GAAGzD,WAAWsJ,SAC7C;AAAA,QAAI8nB,kBAAkBx0B,WAAU+B,OAAOyyB;AACvCx0B,IAAAA,WAAU+B,OAAOyyB,kBAAkB;AAEnC,QAAI6pB,iBAAiBx3C,GAAG40C;AACxB,QAAI6C,sBAAsBz3C,GAAGu1C;AAC7B,QAAIp8C,WAAU+B,OAAO2vC,2BAA2B;AAC/C7qC,SAAG40C,QAAQz7C,WAAU+B,OAAOmuC;AAC5BrpC,SAAGu1C,YAAYp8C,WAAU+B,OAAOouC;AAAAA,IAChC;AAEDnwC,IAAAA,WAAU8X,eAAe,IAAIjT,KAAKgC,GAAGzD,UAAatD,GAAAA,IAAAA;AAElD,aAASy+C,wBAAAA;AACR13C,SAAG40C,QAAQ4C;AACXx3C,SAAGu1C,YAAYkC;AAAAA,IACf;AAEDt+C,IAAAA,WAAU+B,OAAOw2B,cAAcA;AAC/Bv4B,IAAAA,WAAU+B,OAAOyyB,kBAAkBA;AAEnC,QAAIx0B,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAAA,GAAO;AAC/C,UAAIwb,WAAWtb,WAAUqC,QACzB;AAAA,UAAI8I,WAAWmQ,SAAS9Y;AAExB,UAAIX,SAAQ7B,WAAUmG,SAASU,GAAGzG;AAElC,UAAGyB,QAAM;AACR,YAAI6E,CAAAA,SAAQ;AACX,cAAIA,UAAU7E,OAAMsJ,QAAAA;AACpB,cAAGiD,MAAMkK,QAAQ5R,UAAS;AACzBA,sBAAUA,QAAQ,CAAA;AAAA,UAClB,WAAeA,OAAAA,YAAY,YAAY1G,WAAU+B,OAAO6D,qBAAqBc,QAAQ0L,QAAQpS,WAAU+B,OAAO6D,yBAAwB;AACtIc,sBAAUA,QAAQf,MAAM3F,WAAU+B,OAAO6D,iBAAAA,EAAmB,CAC5D;AAAA,UAAA;AAAA,QACD;AACD,YAAIhD,MAAM0Y,SAASkjC,cAAc93C,OAAAA;AACjC,YAAI7D,OAAOyY,SAASmjC,YAAY58C,OAAMuB;AACtC,YAAIyI,YAAY7L,WAAUqE,WAAWgb,cAAc;AACnDxc,eAAOA,QAAQgJ,UAAUwV,cAAc/F,SAASnG,MAAM;AACtDvS,cAAMA,MAAMiJ,UAAUsV,eAAe,IAAI7F,SAAS2S,KAAG;AAErD,YAAI3S,SAASojC,uBAAAA,GAA0B;AACtC,cAAIl8B,YAAYlH,SAASrV,YAAY,YAAY,WAChDs4C;AAAAA,kCAAAA;AACAjjC,qBAASiI,YAAYf,SAAAA;AAAAA,UAC1B;QACI;AAEDlH,iBAASqjC,SAAS,EACjB97C,MACAD;AAED,YAAK0Y,CAAAA,SAASojC,0BAA0B;AACvCH,gCAAAA;AAAAA,QACA;AAAA,MACD;AAAA,IACH,OAAM;AACJA,4BAAAA;AAAAA,IACA;AAEDv+C,IAAAA,WAAUiL,UAAU,uBAAuB,CAACpE,IAAI/G;EACjD;AAGA;AClxCe,SAASob,SAAOlb;AAG/BA,EAAAA,WAAU4+C,sBAAsB,SAASC,GACxC;AAAA,QAAGA,EAAE/wC;AAAY;AACjB,QAAIgxC,OAAO9+C,WAAUoM,KAAK,cAAA,EAAgB;AAE1C,QAAI2yC,QAAQD,KAAKE;AACjB,QAAI9tC,YAAYlR,WAAUmS,cAAc4sC,KACxC;AAAA,QAAG7tC,UAAUkB,QAAQ,kBAAA,IAAsB,KAAK2sC,MAAME,iBAAgB;AACrEF,cAAQA,MAAME;AAAAA,IACd;AAED/tC,gBAAYlR,WAAUmS,cAAc4sC;AACpC,QAAIA,SAAS7tC,UAAUkB,QAAQ,wBAAwB,GAAG;AACzD2sC,YAAMt+C,YAAYo+C,CAAAA;AAAAA,IAClB;AAAA,EACF;AAEA7+C,EAAAA,WAAUk/C,0BAA0B,SAASL,GAAGh9C,QAC/C;AAAA,QAAIwL,OAAOrN,WAAU26C,cAAc94C,QAAO,CAC1Cg9C;AAAAA,MAAEl8C,MAAMC,MAAMyK,KAAKzK,MAAM;AACzBi8C,MAAEl8C,MAAMwO,SAAS9D,KAAK8D,SAAS;AAAA,EAChC;AAEAnR,EAAAA,WAAUq8C,yBAAyB,SAASx6C,QAAAA;AAC3C,QAAIg9C,IAAI3+C,SAASC,cAAc,KAE/B0+C;AAAAA,MAAE1hC,aAAa,YAAYtb,OAAMzB,EACjCy+C;AAAAA,MAAE1hC,aAAa9c,KAAK0B,OAAOwC,iBAAiB1C,OAAMzB,EAAAA;AAClDC,SAAK2zC,UAAU9vC,KAAK26C,CACpBx+C;AAAAA,SAAK6+C,wBAAwBL,GAAGh9C,MAAAA;AAEhC,QAAIyB,MAAMjD,KAAKszB,UAAUqf,kBAAkBnxC,OAAMuB,YAAYvB,OAAMwB,UAAUxB,MAC7E;AAAA,QAAI0B,OAAOlD,KAAKszB,UAAUsf,oBAAoBpxC,OAAMuB,YAAYvB,OAAMwB,UAAUxB;AAChFg9C,MAAE3tC,YAAY;AACd,QAAG5N;AACFu7C,QAAE3tC,aAAa,MAAM5N;AACtB,QAAGC;AACFs7C,QAAEt+C,YAAYgD;AACflD,SAAKu+C,oBAAoBC,CAC1B;AAAA,EAAA;AAEA;AC3Ce,SAAS3jC,SAAOlb;AAG/BA,EAAAA,WAAUm/C,SAASpW,MAAM,EACxBqW,UAAU,SAASttC,MAAM+2B;AAExB,QAAGA,IAAIG,eAAeH,IAAIG,YAAYtoC,YAAW;AAChD,aAAO;AAAA,IACP;AAED;AACC,UAAIkqC,SAAS5qC,WAAUooC,KAAKE,MAAMO,IAAInsB,YACtC;AAAA,UAAI2iC,aAAar/C,WAAUooC,KAAKO,OAAO,QAAQiC;AAC/C,UAAGyU,cAAcA,WAAWhc,YAAY,QAAO;AAC9C,eAAO;AAAA,MACP;AAAA,IACD,SAAOn9B,GACP;AAAA,IAAA;AACD,WAAO;AAAA,EACP,GACDoiC,OAAO,SAASgX;AACf,QAAIvW;AAEJ,SAAKuW,OAAO1U,OAAO5B,aAAa;AAC/BsW,aAAO1U,OAAO5B,cAAchpC,WAAUooC,KAAKE,MAAMgX,OAAO1U,OAAOluB;IAC/D;AAEDqsB,UAAM/oC,WAAUooC,KAAKO,OAAO,QAAQ2W,OAAO1U;AAC3C,QAAI7B,IAAI1F,WAAW;AAAQ,aAAO;AAClC,QAAIkc,YAAYxW,IAAIjkC,aAAa;AACjC,QAAIy6C,WAAW;AACd,UAAIj+C,OAAO5B,QAAQ;AAClB4B,eAAO5B,OAAO8/C,eAAeD;AAAAA,MAC7B;AACDv/C,MAAAA,WAAUw/C,eAAeD;AAAAA,IACzB;AAED,QAAIzzB,OAAO9rB,WAAUooC,KAAKa,MAAM,kBAAkBqW,OAAO1U,MAAAA;AACzD,aAASpmC,IAAI,GAAGA,IAAIsnB,KAAKrnB,QAAQD,KAAK;AACrC,UAAI0e,OAAO4I,KAAKtnB,CAAGM,EAAAA,aAAa,KAChC;AAAA,UAAI26C,MAAMz/C,WAAUo6B,WAAWlX;AAC/B,UAAKu8B,CAAAA,KAAK;AACTz/C,QAAAA,WAAUo6B,WAAWlX,IAAQu8B,IAAAA,MAAM;MACnC;AACDA,UAAIhsC,OAAO,GAAGgsC,IAAIh7C;AAClB,UAAIi7C,OAAO1/C,WAAUooC,KAAKa,MAAM,WAAWnd,KAAKtnB;AAChD,eAASuvB,IAAI,GAAGA,IAAI2rB,KAAKj7C,QAAQsvB,KAAK;AACrC,YAAI4rB,MAAMD,KAAK3rB,CAAAA;AACf,YAAIkL,QAAQ0gB,IAAI/hB;AAChB,YAAI39B,MAAM,EAAEsV,KAAKmqC,KAAK3rB,CAAGjvB,EAAAA,aAAa,UAAUgjB,OAAO43B,KAAK3rB,CAAGjvB,EAAAA,aAAa;AAC5E,iBAASuK,IAAI,GAAGA,IAAI4vB,MAAMx6B,QAAQ4K,KAAK;AACtC,cAAIsuB,OAAOsB,MAAM5vB,CAAAA;AACjB,cAAIsuB,KAAKwG,YAAY,WAAWxG,KAAKwG,YAAY;AAChD;AACDlkC,cAAI09B,KAAKwG,QAAAA,IAAYxG,KAAKiiB;AAAAA,QAC1B;AACDH,YAAIv7C,KAAKjE,GAAAA;AAAAA,MACT;AAAA,IACD;AACD,QAAI6rB,KAAKrnB;AACRzE,MAAAA,WAAUiL,UAAU,iBAAiB;AAEtC,QAAI40C,KAAK7/C,WAAUooC,KAAKa,MAAM,cAAcqW,OAAO1U;AACnD,aAASpmC,IAAI,GAAGA,IAAIq7C,GAAGp7C,QAAQD,KAAK;AACnC,UAAIs7C,MAAM9/C,WAAU+/C,eAAeF,GAAGr7C,CACtCxE,CAAAA;AAAAA,MAAAA,WAAUggD,UAAUF,IAAIrlC,QAAQqlC,IAAI34C;AAAAA,IACpC;AAED,QAAI6C,MAAM;AACV++B,UAAM/oC,WAAUooC,KAAKa,MAAM,WAAWqW,OAAO1U,MAAAA;AAE7C,aAASpmC,IAAI,GAAGA,IAAIukC,IAAItkC,QAAQD,KAAK;AACpC,UAAIqC,KAAKmD,IAAIxF,CAAKxE,IAAAA,WAAU+/C,eAAehX,IAAIvkC,CAAAA,CAAAA;AAC/CxE,MAAAA,WAAUigD,YAAYp5C;IACtB;AACD,WAAOmD;AAAAA,EACP,EAGF;AAAA;AC/Ee,SAASkR,SAAOlb,YAAAA;AAG/BA,EAAAA,WAAUkgD,OAAOlgD,WAAUm/C,SAASe,OAAO,EAC1Cd,UAAU,SAASttC;AAClB,QAAGA,QAAAA,OAAeA,SAAS,UAAS;AACnC,aAAO;AAAA,IACV,WAAmBA,OAAAA,SAAS,UAAS;AAClC,UAAA;AACC,YAAIwH,SAASyL,KAAKujB,MAAMx2B,IAAAA;AACxB,eAAOwI,OAAO5B,UAAUC,SAASlC,KAAK6C,MAAAA,MAAY,qBAChDgB,OAAO5B,UAAUC,SAASlC,KAAK6C,YAAY;AAAA,MAC7C,SAAQ6mC,KACR;AAAA,eAAO;AAAA,MACP;AAAA,IACD;AACD,WAAO;AAAA,EACP,GACD7X,OAAO,SAASx2B;AACf,QAAIsuC,SAAS,CAEb;AAAA,QAAA,OAAWtuC,QAAQ,UAAU;AAC5BA,aAAOiT,KAAKujB,MAAMx2B;IAClB;AACD,QAAIwI,OAAO5B,UAAUC,SAASlC,KAAK3E,IAAAA,MAAU,kBAAkB;AAC9DsuC,eAAStuC;AAAAA,IACZ,OAAS;AACN,UAAGA,MAAK;AACP,YAAGA,KAAKsuC,QAAO;AACdA,mBAAStuC,KAAKsuC;AAAAA,QACnB,WAAatuC,KAAKA,MAAK;AAClBsuC,mBAAStuC,KAAKA;AAAAA,QACd;AAAA,MACD;AAAA,IACD;AACDsuC,aAASA,UAAU,CAAA;AAEnB,QAAItuC,KAAKuuC,cAAc;AACtB,UAAI/+C,OAAO5B,QAAQ;AAClB4B,eAAO5B,OAAO8/C,eAAe1tC,KAAKuuC;AAAAA,MAClC;AACDrgD,MAAAA,WAAUw/C,eAAe1tC,KAAKuuC;AAAAA,IAC9B;AAED,QAAIC,cAAexuC,QAAQA,KAAKwuC,cAAexuC,KAAKwuC,cAAc;AAClE,QAAIC,qBAAqB;AACzB,aAAShrC,OAAO+qC,aAAa;AAC5B,UAAIA,YAAYrxC,eAAesG,GAAM,GAAA;AACpCgrC,6BAAqB;AACrB,YAAIpmB,aAAammB,YAAY/qC;AAC7B,YAAIkqC,MAAMz/C,WAAUo6B,WAAW7kB,GAAAA;AAC/B,YAAKkqC,CAAAA,KAAK;AACTz/C,UAAAA,WAAUo6B,WAAW7kB,OAAOkqC,MAAM,CAAA;AAAA,QAClC;AACDA,YAAIhsC,OAAO,GAAGgsC,IAAIh7C;AAClB,iBAASsvB,IAAI,GAAGA,IAAIoG,WAAW11B,QAAQsvB,KAAK;AAC3C,cAAIysB,SAASrmB,WAAWpG,CAAAA;AACxB,cAAI9zB,MAAM,EAAEsV,KAAKirC,OAAO9hC,OAAOoJ,OAAO04B,OAAO14B;AAC7C,mBAAS24B,cAAcD,QAAQ;AAC9B,gBAAIA,OAAOvxC,eAAewxC,UAAa,GAAA;AACtC,kBAAIA,cAAc,WAAWA,cAAc;AAC1C;AACDxgD,kBAAIwgD,UAAcD,IAAAA,OAAOC,UACzB;AAAA,YAAA;AAAA,UACD;AACDhB,cAAIv7C,KAAKjE;QACT;AAAA,MACD;AAAA,IACD;AACD,QAAIsgD;AACHvgD,MAAAA,WAAUiL,UAAU,iBAAiB,CAEtC,CAAA;AAAA,QAAIjB,MAAM,CACV;AAAA,aAASxF,IAAI,GAAGA,IAAI47C,OAAO37C,QAAQD,KAAK;AACvC,UAAI3C,SAAQu+C,OAAO57C;AACnBxE,MAAAA,WAAUigD,YAAYp+C,MACtBmI;AAAAA,UAAI9F,KAAKrC,MACT;AAAA,IAAA;AACD,WAAOmI;AAAAA,EACP,EAAA;AAGF;AClFe,SAASkR,SAAOlb,YAG/BA;AAAAA,EAAAA,WAAU0gD,OAAO1gD,WAAUm/C,SAASuB,OAAO,EAC1CtB,UAAU,SAASttC,MAClB;AAAA,QAAA,OAAUA,SAAS,UAAS;AAC3B,aAAO,IAAIsrB,OAAO,kBAAoB2I,EAAAA,KAAKj0B;IAC3C;AAED,WAAO;AAAA,EACP,GACDw2B,OAAM,SAASlR,KAAAA;AACd,QAAItlB,OAAOslB,IAAIsT,MAAMtN,OAAO/8B,KAAKsgD,UAAQ,WAAStgD,KAAKugD,OAAM,EAAA,CAAA;AAC7D,SAAK9uC,KAAKrN;AAAQ;AAGlBqN,SAAK,CAAA,IAAGA,KAAK,CAAA,EAAGuY,QAAQ,aAAY,EAAA;AAGpCvY,SAAK,CAAGA,IAAAA,KAAK,GAAGuY,QAAQ,wBAAuB,GAE/CvY;AAAAA,SAAK,KAAGA,KAAK,CAAA,EAAGuY,QAAQ,gBAAe,GAAA;AAGvC,QAAIw2B,WAAS,CAAA;AACb,QAAInW;AACJ,QAAIoW,UAAU1jB,OAAO,QAAM/8B,KAAK0gD,UAAQ,kBAAgB1gD,KAAK2gD,QAAM,KAAI,GAAA;AACvE,YAAQtW,QAAMoW,QAAQG,KAAKnvC,IAAW,OAAA,MAAK;AAC1C,UAAI5L,IAAE,CAAA;AACN,UAAIg7C;AACJ,UAAIC,UAAU;AACd,cAAQD,QAAMC,QAAQF,KAAKvW,MAAM,CAAA,CAAA,OAAS;AACzCrqC,aAAK+gD,YAAYF,MAAMvoC,SAAWzS,GAAAA,CAAAA;AACnC,UAAIA,EAAE6I,OAAAA,CAAQ7I,EAAE9F;AAAI8F,UAAE9F,KAAK8F,EAAE6I;AAC7B8xC,eAAS38C,KAAKgC;IACd;AACD,WAAO26C;AAAAA,EACP,GACDO,aAAY,SAAShqB,KAAIn3B;AACxB,QAAIgU,IAAImjB,IAAIhlB,QAAQ,GAAA;AACnB,QAAI6B,KAAAA;AAAO;AAEZ,QAAIwG,OAAO2c,IAAIiqB,OAAO,GAAEptC,CAAG+O,EAAAA,YAAAA;AAC3B,QAAItE,QAAQ0Y,IAAIiqB,OAAOptC,IAAE,GAAGoW,QAAQ,QAAO,KAAKA,QAAQ,YAAW,EACnE;AAAA,QAAI5P,QAAM;AACTA,aAAK;AAAA,aACGA,QAAM,WAAU;AACxBA,aAAO;AACPiE,cAAQre,KAAKy5B,WAAWpb,OAAM,GAAE,CAChC;AAAA,IAAA,WACQjE,QAAM,SAAQ;AACtBA,aAAO;AACPiE,cAAQre,KAAKy5B,WAAWpb,OAAM,GAAE;IAChC;AACDze,QAAIwa,IAAMiE,IAAAA;AAAAA,EACV,GACDob,YAAW,SAASpb,OAAM4iC,IAAGC,IAAAA;AAC5B,QAAI/sC,IAAIkK,MAAM/Y,MAAM,GAAA;AAEpB,QAAI67C,UAAU;AACd,QAAIhtC,EAAE,CAAA,GAAG;AACR8sC,WAAG9sC,EAAE,CAAG6sC,EAAAA,OAAO,GAAE,CACjBE;AAAAA,WAAG/sC,EAAE,CAAG6sC,EAAAA,OAAO,GAAE,CACjBG;AAAAA,gBAAAA,CAAAA,EAAahtC,EAAE,CAAA,EAAG,MAAM;AAAA,IACxB;AACD,QAAIyZ,KAAKzZ,EAAE,GAAG6sC,OAAO,GAAE,CACvB;AAAA,QAAII,KAAKnrB,SAAS9hB,EAAE,GAAG6sC,OAAO,GAAE,IAAG,EAAI,IAAA;AACvC,QAAI1rB,KAAKnhB,EAAE,CAAG6sC,EAAAA,OAAO,GAAE,CAEvB;AAAA,QAAGrhD,WAAU+B,OAAOivC,cAAcwQ,SAAQ;AACzC,aAAO,IAAI38C,KAAKA,KAAKioC,IAAI7e,IAAGwzB,IAAG9rB,IAAG2rB,IAAGC,EACxC,CAAA;AAAA,IAAA,OAAO;AACJ,aAAO,IAAI18C,KAAKopB,IAAGwzB,IAAG9rB,IAAG2rB,IAAGC,EAAAA;AAAAA,IAC5B;AAAA,EACD,GACDZ,SAAQ,mBACRI,SAAQ,gBACRC,OAAM,cACNJ,OAAM,gBAGP;AAAA;ACjFe,SAAQc,gBAAC1hD;AACvB,UAAO,WAAA;AACN,QAAI4I,MAAM,CAAA;AACV,aAAS4T,KAAKnc,KAAKmzC,SAAQ;AAC1B,UAAI3sC,KAAKxG,KAAKmzC,QAAQh3B;AACtB,UAAI3V,GAAGzG,GAAGuY,SAAAA,EAAWvG,QAAQ,GAAS,KAAA,IAAE;AACvCxJ,YAAI/B,GAAGzG,MAAMyG;AAAAA,MACb;AAAA,IACD;AACD,WAAO+B;AAAAA,EACP,GAAEsa,KAAKljB;AACT;ACNe,SAASkb,SAAOlb,YAE/BA;AAAAA,EAAAA,WAAUyzC,UAAU,CAAA;AACpBzzC,EAAAA,WAAUszB,QAAQ,SAAS0U,MAAK3S,MAAAA;AAC/B2S,IAAAA,OAAMA,QAAO3nC,KAAKshD;AAElB,QAAA,CAAI3Z,MAAI;AAEP;AAAA,IACA;AAEDA,IAAAA,SAAQA,KAAI51B,QAAQ,GAAS,KAAA,KAAI,MAAM,OAAO,gBAAe,oBAAKvN,QAAQoqB;AAC1E,QAAI5uB,KAAK0B,OAAO6/C;AAAkB5Z,MAAAA,QAAO,UAAU3nC,KAAK0O;AACxD,QAAIumB;AACJD,WAAOA,QAAQh1B,KAAK6U;AACpB,aAAS2sC,aAAaC,UACrB9hD;AAAAA,MAAAA,WAAU+hD,QAAQD,QAClB9hD;AAAAA,MAAAA,WAAUiL,UAAU,aAAa,CAAA,CAAA;AAAA,IACjC;AACD,QAAI5K,KAAKgzB,YAAY;AACpB,UAAI2uB,KAAK3hD,KAAKszB,UAAU+e;AAExBrd,aAAOh1B,KAAKmD,KAAKnD,KAAKgzB,aAAa,QAAA,EAAU,IAAIxuB,KAAKwwB,KAAKjwB;AAC3D,aAAOiwB,OAAOh1B,KAAKoM;AAAW4oB,eAAOh1B,KAAKmD,KAAKC,IAAI4xB,MAAO,IAAGh1B,KAAKgzB,UAClEiC;AAAAA,WAAKD;AAEL,UAAI4sB,aAAa;AACjB,aAAO3sB,KAAKj1B,KAAKmM,WAAW;AAC3B8oB,aAAKj1B,KAAKmD,KAAKC,IAAI6xB,IAAI,GAAGj1B,KAAKgzB;AAC/B,YAAIhzB,KAAKozC,QAAQuO,GAAG3sB,IAAAA,CAAAA,KAAU4sB;AAC7B5sB,iBAAOh1B,KAAKmD,KAAKC,IAAI4xB,MAAM,GAAGh1B,KAAKgzB;;AAAkB4uB,uBAAa;AAAA,MACnE;AAED,UAAIC,UAAU5sB;AACd,SAAG;AACFA,aAAK4sB;AACLA,kBAAU7hD,KAAKmD,KAAKC,IAAI6xB,IAAK,IAAGj1B,KAAKgzB,UAAAA;AAAAA,MACxC,SAAW6uB,UAAU7sB,QAAQh1B,KAAKozC,QAAQuO,GAAGE;AAE3C,UAAI5sB,MAAMD;AACT,eAAO;AAERr1B,MAAAA,WAAUooC,KAAK0B,IAAI9B,OAAM,WAAWga,GAAG3sB,IAAQ,IAAA,SAAS2sB,GAAG1sB,EAAAA,GAAKusB;AAEhE,aAAOxsB,OAAOC,IAAI;AACjBj1B,aAAKozC,QAAQuO,GAAG3sB,IAAAA,CAAAA,IAAS;AACzBA,eAAOh1B,KAAKmD,KAAKC,IAAI4xB,MAAM,GAAGh1B,KAAKgzB;MACnC;AAAA,IACH,OAAQ;AACNrzB,MAAAA,WAAUooC,KAAK0B,IAAI9B,MAAK6Z;IACxB;AAGDxhD,SAAK4K,UAAU,SAAS,CAAA,CAAA;AACxB5K,SAAK4K,UAAU,eAAe,CAC9B,CAAA;AAAA,WAAO;AAAA,EACR;AAEAjL,EAAAA,WAAUm/C,WAAW,CAAA;AAGrBgD,WAAUniD,UAAAA;AACVoiD,WAAWpiD,UACXqiD;AAAAA,WAAWriD;AAEXA,EAAAA,WAAU+hD,UAAU,SAAUzC,QAC7Bj/C;AAAAA,SAAK4K,UAAU,iBAAiB;AAEhC,QAAIjB;AACJ,QAAI6M,QAAQ;AAEZ,QAAIyrC,cAAc;AAClB,aAAQ99C,KAAKnE,KAAK8+C,UAAS;AAC1B,UAAIoD,SAASliD,KAAK8+C,SAAS36C,CAAAA;AAC3B,UAAG+9C,OAAOnD,SAASE,OAAO1U,OAAOluB,cAAc4iC,OAAO1U,MAAAA,GAAQ;AAC7D,YACC;AAAA,cAAIsW,QAAQ5B,OAAO1U,OAAOluB;AAC1B,cAAGlY,MAAM,OAAM;AACd08C,oBAAQ5B;AAAAA,UACR;AACDt1C,gBAAMu4C,OAAOja,MAAM4Y,KAAAA;AACnB,eAAIl3C,KAAI;AACP6M,oBAAQ;AAAA,UACR;AAAA,QACD,SAAM3Q;AACN2Q,kBAAQ;AAAA,QACR;AACDyrC,sBAAc;AACd;AAAA,MACA;AAAA,IACD;AAED,QAAIA,CAAAA,aAAY;AACf,UAAGjiD,KAAKmiD,YAAYniD,KAAKA,KAAKmiD,WAAU;AACvC,YAAA;AACCx4C,gBAAM3J,KAAKA,KAAKmiD,QAAUla,EAAAA,MAAMgX,OAAO1U,OAAOluB,YAAAA;AAAAA,QAC9C,SAAOxW,GAAAA;AACP2Q,kBAAQ;AAAA,QACR;AAAA,MACJ,OAAO;AACJA,gBAAQ;AAAA,MACR;AAAA,IACD;AAED,QAAGA,SAAUyoC,OAAO1U,OAAO9B,UAAUwW,OAAO1U,OAAO9B,UAAU,KAAK;AACjEzoC,WAAK4K,UAAU,eAAe,CAACq0C,OAAO1U;AACtC5gC,YAAM,CAAA;AAAA,IACN;AAED3J,SAAKoiD,iBAAiBz4C;AAGtB3J,SAAK4K,UAAU,SAAS,CAAA,CAAA;AACxB5K,SAAK4K,UAAU,WAAW;EAC3B;AACAjL,EAAAA,WAAUyiD,mBAAmB,SAASz4C,KAAAA;AACrC3J,SAAKmsB,WAAW;AAChBnsB,SAAKi1C,cAAc;AACnB,aAAS9wC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,UAAA,CAAKnE,KAAK4K,UAAU,kBAAkB,CAACjB,IAAIxF,CAAAA,CAAAA,CAAAA;AAAM;AACjDnE,WAAKmH,SAASwC,IAAIxF,CAAAA,CAAAA;AAAAA,IAClB;AACDnE,SAAKi1C,cAAc;AACnB,QAAIj1C,KAAKkzB;AAAclzB,WAAK2X;AAE5B3X,SAAKmsB,WAAW;AAChB,QAAInsB,KAAKqiD;AAAariD,WAAKqiD,YAAAA;AAC3BriD,SAAKqiD,cAAc;AAAA,EACpB;AACA1iD,EAAAA,WAAUigD,cAAc,SAASp+C,QAAAA;AAChCA,IAAAA,OAAMsF,OAAQtF,OAAMsF,QAAQtF,OAAM8gD,aAAc;AAChD9gD,IAAAA,OAAMuB,aAAapD,WAAU4iD,WAAW/gD,OAAMuB,UAC9CvB;AAAAA,IAAAA,OAAMwB,WAAWrD,WAAU4iD,WAAW/gD,OAAMwB,QAAAA;AAAAA,EAC7C;AAEArD,EAAAA,WAAU4iD,aAAa,SAASp/C,MAC/B;AAAA,QAAA,CAAIA;AACH,aAAO;AACR,QAAWA,OAAAA,QAAQ,UAAU;AAC5B,aAAOxD,WAAU8xC,SAASC,UAAUvuC,IACpC;AAAA,IAAA;AACI,aAAO,IAAIqB,KAAKrB;EACtB;AAEA,QAAMq/C,sBAAsBC,gBAAmB9iD,UAAAA;AAC/CA,EAAAA,WAAUmoC,YAAY;AACrB,UAAM4a,UAAU;AAChB,UAAMC,YAAYH;AAClB,aAASrmC,KAAKwmC,WAAU;AAEvB,YAAMC,gBAAgB,CAAA;AACtB,UAAIp8C,KAAKm8C,UAAUxmC,CAAAA;AAEnB,eAAQjH,OAAO1O,IAAG;AACjB,YAAI0O,IAAIouB,OAAO,MAAM,OAAOpuB,IAAIouB,OAAO,CAAA,KAAM,KAAI;AAChD;AAAA,QACA;AAED,YAAIuf;AACJ,cAAMC,WAAWt8C,GAAG0O,GACpB;AAAA,YAAGvV,WAAU6Z,MAAMd,OAAOoqC,WAAU;AACnCD,wBAAcljD,WAAUkZ,QAAQlZ,WAAU2zB,UAAUue,UAAAA,IAAclyC,WAAU2zB,UAAUue,WAAWiR,YAAYnjD,WAAU2zB,UAAUgD,YAAYwsB,QACjJ;AAAA,QAAA,OAAQ;AACJD,wBAAcC;AAAAA,QACd;AAEDF,sBAAc1tC,OAAO2tC;AAAAA,MACrB;AAEDH,cAAQ7+C,KAAK++C,aAAAA;AAAAA,IACb;AACD,WAAOF;AAAAA,EACR;AAmEA/iD,EAAAA,WAAUsoC,QAAQ,SAASx2B,MAAMzK;AAChChH,SAAKmiD,WAAWn7C;AAChBhH,SAAK0hD,QAAQ,EAACnX,QAAQ,EAACluB,cAAc5K,KAAAA,EAAAA,CAAAA;AAAAA,EACtC;AACA9R,EAAAA,WAAUojD,OAAO,SAASpb,MAAKvxB;AAC9B,QAAWA,OAAAA,QAAQ,UAAU;AAC5BpW,WAAKmiD,WAAW/rC;AAChBA,aAAOnC,UAAU,CAAA;AAAA,IACjB;AAEDjU,SAAKshD,YAAY3Z;AACjB3nC,SAAKqiD,cAAcjsC;AACnBpW,SAAKizB,MAAM0U,MAAK3nC,KAAK6U;EACtB;AAEAlV,EAAAA,WAAUqjD,cAAc,SAASvjD,MAAAA;AAChC,QAAIA,QAAQ;AAAOA,aAAO;AAC1BO,SAAKgzB,aAAavzB;AAAAA,EACnB;AAEAE,EAAAA,WAAUo6B,aAAa,SAAS3f,MAAM6oC,OAAAA;AACrC,QAAIA,OAAO;AACVjjD,WAAK+5B,WAAW3f,QAAQ6oC,MAAMh1C,MAAM;AACpC,aAAOjO,KAAK+5B,WAAW3f,IAAAA;AAAAA,IACvB;AACDpa,SAAK+5B,WAAW3f,QAASpa,KAAK+5B,WAAW3f,SAAS,CAClD;AAAA,WAAOpa,KAAK+5B,WAAW3f;EACxB;AACAza,EAAAA,WAAUggD,YAAY,CAAA;AAEtBhgD,EAAAA,WAAU+/C,iBAAiB,SAAS54B,MACnC;AAAA,QAAI3S,IAAI,CAAA;AACR,aAAShQ,IAAI,GAAGA,IAAI2iB,KAAKyW,WAAWn5B,QAAQD;AAC3CgQ,QAAE2S,KAAKyW,WAAWp5B,CAAGiW,EAAAA,IAAAA,IAAQ0M,KAAKyW,WAAWp5B,CAAAA,EAAGka;AAEjD,aAASla,IAAI,GAAGA,IAAI2iB,KAAKjV,WAAWzN,QAAQD,KAAK;AAChD,UAAIiiC,QAAQtf,KAAKjV,WAAW1N,CAAAA;AAC5B,UAAIiiC,MAAMO,YAAY;AACrBxyB,UAAEiyB,MAAMpD,OAAWoD,IAAAA,MAAM/lC,aAAa+lC,MAAM/lC,WAAWk/C,YAAY;AAAA,IACpE;AAED,SAAKprC,EAAErN;AAAMqN,QAAErN,OAAOggB,KAAKzmB,aAAaymB,KAAKzmB,WAAWk/C,YAAY;AAEpE,WAAOprC;AAAAA,EACR;AACAxU,EAAAA,WAAUiG,YAAY,SAAS,WAC9B;AAAA,QAAI5F,KAAK0B,OAAOwhD,iBAAiB,MAAM;AACtC,UAAI/uC;AACJA,UAAInU,KAAK0B,OAAOwhD,eAAerjD,SAASC,cAAc,KAAA;AACtDqU,QAAEtD,YAAY;AACdsD,QAAE7R,MAAME,OAAO2O,KAAKI,OAAOvR,KAAKmmB,KAAK,OAAO,KAAK;AACjDhS,QAAE7R,MAAMC,MAAM4O,KAAKI,OAAOvR,KAAKmjD,KAAK,MAAM,CAAA,IAAK;AAC/CnjD,WAAKukB,KAAKnkB,YAAY+T,CAAAA;AAAAA,IACtB;AAAA,EACF,CACAxU;AAAAA,EAAAA,WAAUiG,YAAY,SAAS,WAAA;AAC9B,QAAIuO,IAAInU,KAAK0B,OAAOwhD;AACpB,QAAI/uC,KAAYA,OAAAA,KAAK,UAAU;AAC9B,UAAGA,EAAE1G,YAAY;AAChB0G,UAAE1G,WAAWC,YAAYyG,CACzB;AAAA,MAAA;AACDnU,WAAK0B,OAAOwhD,eAAe;AAAA,IAC3B;AAAA,EACF,CAAA;AAGA;ACtTe,SAASroC,SAAOlb,YAE/BA;AAAAA,EAAAA,WAAUyjD,qBAAqB,CAAA;AAC/BzjD,EAAAA,WAAU0jD,cAAc,SAASjpC,MAChC;AAAA,QAAI1Y,SAAS1B,KAAK0B,OAAOi4B,SAAS92B;AAClC,QAAIsB,IAAI;AACR,SAAKA,GAAGA,IAAIzC,OAAO0C,QAAQD,KAAK;AAC/B,UAAIzC,OAAOyC,GAAGiW,QAAQA,MAAM;AAC3B;AAAA,MACA;AAAA,IACD;AAED,QAAIjW,MAAMzC,OAAO0C,QAAQ;AAExB,aAAO;AAAA,IACP;AAED,QAAIiC,UAAU3E,OAAOyC,CAAAA;AACrB,SAAKxE,WAAU+mB,WAAW;AACzB/mB,MAAAA,WAAU2jD,YAAAA;AAAAA,IACV;AACD,QAAIx/B,SAASnkB,WAAU+mB,UAAU1H,cAAc,IAAI3Y,QAAQtG;AAC3D,QAAI+mB,OAAOhD,OAAOoiB;AAElB,QAAIjtB,SAAS,EACZ5S,SACAyd,QACAgD,MACAy8B,UAAS,SAAS/8C;AACjB,aAAO7G,WAAU6jD,YAAYn9C,QAAQW,IAAAA,EAAMy8C,UAAU38B,MAAOtgB,MAAI,IAAKH;IACrE,GACDq9C,UAAS,SAASrlC,OAAO7X,IAAAA;AACxB,aAAO7G,WAAU6jD,YAAYn9C,QAAQW,IAAAA,EAAM28C,UAAU78B,MAAMzI,OAAQ7X,MAAI,CAAE,GAAGH;IAC5E,EAGF;AAAA,QAAIwX,UAAUle,WAAUyjD,mBAAmB,SAAO/8C,QAAQW,OAAK,UAC/D;AAAA,WAAO6W,UAAQA,QAAQ5E,MAAAA,IAAQA;AAAAA,EAChC;AACAtZ,EAAAA,WAAUyjD,mBAAmBQ,uBAAuB,SAAS3qC,QAC5DA;AAAAA,WAAO4qC,UAAU5qC,OAAO6N;AACxB,WAAO7N;AAAAA,EACR;AACAtZ,EAAAA,WAAUyjD,mBAAmBU,qBAAqB,SAAS7qC,QAAAA;AAC1DA,WAAO4qC,UAAU5qC,OAAO6N,KAAKQ,qBAAqB,UAAU,CAC5D;AAAA,WAAOrO;AAAAA,EACR;AACAtZ,EAAAA,WAAUyjD,mBAAmBW,uBAAuB,SAAS9qC,QAC5DA;AAAAA,WAAO4qC,UAAU5qC,OAAO6N,KAAKQ,qBAAqB,UAAY,EAAA,CAAA;AAC9D,WAAOrO;AAAAA,EACR;AACAtZ,EAAAA,WAAUyjD,mBAAmBY,mBAAmB,SAAS/qC,QAAAA;AACxDA,WAAO4qC,UAAU5qC,OAAO6N,KAAKQ,qBAAqB,QAAA;AAClD,WAAOrO;AAAAA,EACR;AAEAtZ,EAAAA,WAAUyjD,mBAAmBa,WAAW,EACvCC,UAAU,EACTpzC,QAAO,GAAA,GAERozB,UAAU,EACTpzB,QAAQ,IAET8X,GAAAA,QAAQ,EACP9X,QAAQ,MAETqzC,MAAM,EACLrzC,QAAQ,GAAA,EAAA;AAKVnR,EAAAA,WAAU6jD,cAAY,EACrBU,UAAS,EACR98C,QAAQ,SAASg9C,KAChB;AAAA,WAAO;AAAA,EACP,GACDT,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG9E,QAAAA;AAChColB,SAAK5mB,YAAYme,SAAO;AAAA,EACxB,GACDolC,WAAU,SAAS38B,MAAKtgB,IAAG9E,QAC1B;AAAA,WAAOolB,KAAK5mB,aAAW;AAAA,EACvB,GACDo6B,OAAO,SAASxT,MACf;AAAA,EAAA,EAAA,GAEFod,UAAS,EACR98B,QAAO,SAASg9C,KACf;AAAA,UAAMC,cAAcD,IAAIC,cAAc,gBAAgBD,IAAIC,iBAAiB;AAC3E,WAAO,wCAAwCA,WAC/C;AAAA,EAAA,GACDV,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAAA;AAC7B7G,IAAAA,WAAU6jD,YAAYtf,SAASogB,WAAWx9B,IAAMzI,EAAAA,QAAMA,SAAO;AAAA,EAC7D,GACDolC,WAAU,SAAS38B,MAAKtgB,IACvB;AAAA,WAAO7G,WAAU6jD,YAAYtf,SAASogB,WAAWx9B,IAAAA,EAAMzI;AAAAA,EACvD,GACDic,OAAM,SAASxT,MACd;AAAA,QAAI3K,IAAIxc,WAAU6jD,YAAYtf,SAASogB,WAAWx9B;AAClDnnB,IAAAA,WAAU06B,OAAOle,GAAG,IACpB;AAAA,EAAA,GACDmoC,YAAY,SAASx9B,MAAAA;AACpB,WAAOA,KAAKQ,qBAAqB,UAAY,EAAA,CAAA;AAAA,EAC7C,KAEFsB,QAAO,EACNxhB,QAAO,SAASg9C,KAAAA;AAEf,QAAIlhD,OAAK;AACT,aAASiB,IAAE,GAAGA,IAAIigD,IAAIx8C,QAAQxD,QAAQD;AACrCjB,cAAM,oBAAkBkhD,IAAIx8C,QAAQzD,GAAG+Q,MAAI,OAAKkvC,IAAIx8C,QAAQzD,CAAAA,EAAGsjB,QAAM;AACtEvkB,YAAM;AACN,WAAOA;AAAAA,EACP,GACDygD,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG49C,KAAAA;AAChC,QAAIx7B,SAAS9B,KAAKzmB;AAClB,QAAKuoB,CAAAA,OAAO27B,iBAAiBH,IAAII,UAAU;AAC1C7kD,MAAAA,WAAU6B,MAAMonB,QAAQ,UAAUw7B,IAAII,QACtC57B;AAAAA,aAAO27B,gBAAgB;AAAA,IACvB;AACD,QAAWlmC,OAAAA,SAAS;AACnBA,eAASuK,OAAOhhB,QAAQ,CAAI,KAAA,CAAE,GAAEyW;AACjCuK,WAAOvK,QAAMA,SAAO;AAAA,EACpB,GACDolC,WAAU,SAAS38B,MAAKtgB,IAAAA;AACvB,WAAOsgB,KAAKzmB,WAAWge;AAAAA,EACvB,GACDic,OAAM,SAASxT,MAAAA;AACd,QAAI3K,IAAE2K,KAAKzmB;AAAYV,IAAAA,WAAU06B,OAAOle,GAAG,IAAA;AAAA,EAC3C,KAEFgoC,MAAK,EACJ/8C,QAAO,SAASg9C,KAAAA;AACf,SAAKA,IAAIK,aAAa;AAErBL,UAAIK,cAAc,CAAC,SAAS,MAAM,MAAM,IAAA;AAAA,IACxC;AAEDL,QAAIM,qBAAqB;AACzB,QAAID,cAAcL,IAAIK;AAEtB,QAAI7gD,MAAMjE,WAAU+B;AACpB,QAAIijD,KAAKhlD,WAAUwD,KAAKyF,UAAUjJ,WAAUsM;AAC5C,QAAI24C,OAAO,KAAG,IAAI5b,QAAQ;AAC1B,QAAGrpC,WAAU+B,OAAOmjD,mBAAkB;AACrCD,aAAO,KAAGhhD,IAAI2I,YAAU;AACxBy8B,cAAQ,KAAGplC,IAAI0I;AACfq4C,SAAGl6C,SAAS7G,IAAI0I,UAAAA;AAAAA,IAChB;AACD,QAAIpJ,OAAO;AAEX,aAASiH,IAAI,GAAGA,IAAIs6C,YAAYrgD,QAAQ+F,KAAK;AAC5C,UAAI42B,cAAc0jB,YAAYt6C;AAG9B,UAAIA,IAAI,GAAG;AACVjH,gBAAQ;AAAA,MACR;AACD,UAAI4hD,iBAAiB;AACrB,UAAIl9C,UAAU;AACd,cAAQm5B,aACP;AAAA,QAAA,KAAK;AACJ+jB,2BAAiB;AACjBV,cAAIM,mBAAmB,KAAKv6C;AAE5B,cAAI46C;AACJ,cAAIC;AACJ,cAAIC;AACJ,cAAGb,IAAIc,YAAW;AACjB,gBAAK99B,CAAAA,MAAMg9B,IAAIc,UAAa,GAAA;AAC3BH,cAAAA,SAAQX,IAAIc;AAAAA,YACpB,WAAkBd,IAAIc,WAAWrhD,MAAM;AAE/BmhD,2BAAaZ,IAAIc,WAAW,CAC5BD;AAAAA,yBAAWb,IAAIc,WAAW;YAC1B;AAAA,UACD;AAEDH,UAAAA,SAAQA,UAAS;AACjB,cAAI5xC,SAASA,UAAUhC,KAAK8D,MAAM8vC,SAAQ,CAC1CC;AAAAA,uBAAaA,cAAcL,GAAGhsC,YAAAA,IAAgBxF;AAC9C8xC,qBAAWA,YAAYD,aAAaD;AAEpC,mBAAS5gD,IAAI6gD,YAAY7gD,IAAI8gD,UAAU9gD;AACtCyD,uBAAW,oBAAiB,IAAS,OAAQ,IAAK;AACnD;AAAA,QACD,KAAK;AACJk9C,2BAAiB;AACjBV,cAAIM,mBAAmB,CAAKv6C,IAAAA;AAE5B,mBAAShG,IAAE,GAAGA,IAAI,IAAIA;AACrByD,uBAAS,oBAAkBzD,IAAE,OAAKnE,KAAK0nB,OAAOvkB,KAAK0oC,WAAW1nC,CAAG,IAAA;AAClE;AAAA,QACD,KAAK;AACJ2gD,2BAAiB;AACjBV,cAAIM,mBAAmB,CAAA,IAAKv6C;AAE5B,mBAAShG,IAAE,GAAGA,IAAI,IAAIA;AACrByD,uBAAS,oBAAkBzD,IAAE,OAAKA,IAAE;AACrC;AAAA,QACD,KAAK;AACJ2gD,2BAAiB;AACjBV,cAAIM,mBAAmB,CAAA,IAAKv6C;AAE5B,cAAIhG,IAAI6kC;AACR,cAAImc,QAAQR,GAAGv7C,QAAAA;AACfg7C,cAAIgB,eAAe,CAAA;AAEnB,iBAAMjhD,IAAEygD,MAAK;AACZ,gBAAIT,OAAKnkD,KAAKszB,UAAU6e,YAAYwS,EACpC/8C;AAAAA,uBAAS,oBAAkBzD,IAAE,OAAKggD,OAAK;AACvCC,gBAAIgB,aAAavhD,KAAKM;AACtBwgD,eAAGz4B,QAAQy4B,GAAG5/C,QAAU/E,IAAAA,KAAK0B,OAAOsqB,YAAU,KAAG,GACjD;AAAA,gBAAIgD,OAAQ21B,GAAGv7C,QAAAA,KAAW+7C,QAAO,IAAE;AACnChhD,gBAAE6qB,OAAK,KAAG,KAAG21B,GAAGt4C,aAAW,KAAGs4C,GAAGh3C;UACjC;AACD;AAAA,MAAA;AAGF,UAAG/F,SAAQ;AAEV,YAAIy9C,YAAY1lD,WAAUioB,SAASkZ,yBAAyBC;AAC5D,YAAInX,YAAWw6B,IAAIx6B,WAAW,wBAAwB;AACtD1mB,gBAAQ,oBAAkB4hD,iBAAe,OAAKl7B,YAAWy7B,YAAU,MAAIz9C,UAAQ;AAAA,MAC/E;AAAA,IACD;AAGD,WAAO,mCAAiC1E,OAAK,mHAAiHA,OAAK;AAAA,EACnK,GACDygD,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG9E;AAChC,QAAIkC,MAAMjE,WAAU+B;AACpB,QAAI+H,IAAEqd,KAAKQ,qBAAqB,QAChC;AAAA,QAAI7hB,MAAM/D,OAAOgjD;AACjB,QAAI3hD,YAAYC;AAEhB,QAAGY,IAAI0hD,UAAU;AAChB,UAAA,CAAKx+B,KAAKy+B,WAAU;AACnB,YAAIriD,OAAO,qFAAmFvD,WAAU+nB,OAAOC,OAAO29B,WAAS;AAC/H,aAAK3lD,WAAU+B,OAAOquC;AACrB7sC,iBAAO4jB,KAAK83B,gBAAgB1+C,YAAUgD;AACvC4jB,aAAK83B,gBAAgB1+C,YAAUgD;AAC/B4jB,aAAKy+B,YAAU;AAAA,MACf;AACD,UAAIthB,QAAMnd,KAAK83B,gBAAgBt3B,qBAAqB,SAAS,CAC7D2c;AAAAA,YAAMuhB,UAAW7lD,WAAUwD,KAAK+sB,UAAU1pB,GAAGzD,UAAAA,MAAc,KAAKpD,WAAUwD,KAAK+sB,UAAU1pB,GAAGxD,cAAY;AAExGyG,QAAEhE,IAAI,CAAIggD,CAAAA,EAAAA,WAASxhB,MAAMuhB;AACzB/7C,QAAGhE,IAAI,CAAA,IAAKgE,EAAErF,SAAO,CAAA,EAAIqhD,WAASxhB,MAAMuhB;AAExC,UAAIvhB,CAAAA,MAAMxmB,iBAAgB;AACzBwmB,cAAMxmB,kBAAkB;AAEvB9d,QAAAA,WAAU6B,MAAMyiC,OAAO,SAAS,WAChC;AAAA,cAAGA,MAAMuhB,SAAS;AACjB,gBAAI5lD,MAAM,CAAA;AACVD,YAAAA,WAAU6jD,YAAYW,KAAKV,UAAU38B,MAAKlnB,KAAI8B,MAAAA;AAE9CqB,yBAAapD,WAAUwD,KAAKyF,UAAUhJ,IAAImD,UAAAA;AAC1CC,uBAAWrD,WAAUwD,KAAKyF,UAAUhJ,IAAIoD;AAExC,gBAAKA,CAAAA,YAAAA,CAAaD,eAAgBC,YAAaD,CAAAA,eAAeyD,GAAGxD,SAASqJ,eAAe,KAAK7F,GAAGxD,SAAS2K,WAAiB,MAAA;AAC1H3K,yBAAWrD,WAAUwD,KAAKC,IAAIJ,UAAU,GAAG,KACnD;AAAA,UAAA,OAAW;AACJD,yBAAa;AACbC,uBAAW;AAAA,UACX;AAEDyG,YAAEhE,IAAI,IAAIggD,WAASxhB,MAAMuhB;AACzB/7C,YAAGhE,IAAI,KAAKgE,EAAErF,SAAO,CAAIqhD,EAAAA,WAASxhB,MAAMuhB;AAExCE,gCAAsBj8C,GAAE,GAAE1G,cAAYyD,GAAGzD,UACzC2iD;AAAAA,gCAAsBj8C,GAAE,GAAEzG,YAAUwD,GAAGxD,QAAAA;AAAAA,QAC7C,CACK;AAAA,MAAA;AAAA,IACD;AAED,QAAGY,IAAI+hD,iBAAiB/hD,IAAImoB,gBAAgB;AAC3C,UAAI65B,0BAA0B,WAE7B;AAAA,YAAA,EAAMhiD,IAAI+hD,iBAAiB/hD,IAAImoB,iBAAgB;AAE9C;AAAA,QACA;AACDhpB,qBAAa,IAAIyB,KAAKiF,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,OAAM5U,EAAEhE,IAAI,IAAI4Y,OAAM5U,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,OAAM,GAAE5U,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,KAAAA;AAClFrb,mBAAW,IAAIwB,KAAKzB,WAAW03B,QAAa96B,IAAAA,WAAU+B,OAAOqqB,iBAAiB,KAAK,GACnF25B;AAAAA,8BAAsBj8C,GAAG,GAAGzG,QAAAA;AAAAA,MACjC;AACI,eAAQmB,IAAE,GAAGA,IAAE,GAAGA,KAAK;AACtB,YAAIsF,CAAAA,EAAEtF,GAAGsZ,iBAAiB;AACzBhU,YAAEtF,CAAGsZ,EAAAA,kBAAkB;AACvB9d,UAAAA,WAAU6B,MAAMiI,EAAEtF,CAAAA,GAAI,UAAUyhD,uBAChC;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,aAASF,sBAAsBj8C,IAAEtF,IAAEyP,GAClC;AAAA,UAAIiyC,cAAcnkD,OAAO0jD;AACzB,UAAIU,eAAelyC,EAAEvH,SAAW,IAAA,KAAGuH,EAAEjG,WACrC;AAAA,UAAIo4C,cAAcD;AAClB,UAAIE,cAAc;AAClB,eAASh3C,IAAE,GAAGA,IAAE62C,YAAYzhD,QAAQ4K,KAAK;AACxC,YAAIi3C,MAAMJ,YAAY72C,CACtB;AAAA,YAAIi3C,QAAQH,cAAc;AACzBE,wBAAc;AACd;AAAA,QACA;AACD,YAAIC,MAAMH;AACTC,wBAAcE;AAAAA,MACf;AAEDx8C,MAAAA,GAAEtF,KAAEsB,IAAI,CAAA,CAAA,EAAI4Y,QAAM,cAAcynC,eAAaC;AAC7C,UAAA,EAAKC,eAAeD,cAAa;AAChCt8C,QAAAA,GAAEtF,KAAEsB,IAAI,IAAIygD,gBAAiB;AAAA,MAC7B;AACDz8C,MAAAA,GAAEtF,KAAEsB,IAAI,CAAA,CAAA,EAAI4Y,QAAMzK,EAAExK,QAAAA;AACpBK,MAAAA,GAAEtF,KAAEsB,IAAI,CAAI4Y,CAAAA,EAAAA,QAAMzK,EAAEgF,SACpBnP;AAAAA,MAAAA,GAAEtF,KAAEsB,IAAI,CAAA,CAAA,EAAI4Y,QAAMzK,EAAE+E,YAAAA;AAAAA,IACpB;AAED+sC,0BAAsBj8C,GAAE,GAAEjD,GAAGzD;AAC7B2iD,0BAAsBj8C,GAAE,GAAEjD,GAAGxD,QAAAA;AAAAA,EAC7B,GACDygD,WAAU,SAAS38B,MAAMtgB,IAAI9E;AAC5B,QAAI+H,IAAIqd,KAAKQ,qBAAqB,QAAA;AAClC,QAAI7hB,MAAM/D,OAAOgjD;AAEjBl+C,OAAGzD,aAAW,IAAIyB,KAAKiF,EAAEhE,IAAI,CAAA,CAAA,EAAI4Y,OAAM5U,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,OAAM5U,EAAEhE,IAAI,CAAA,CAAA,EAAI4Y,OAAM,GAAE5U,EAAEhE,IAAI,CAAA,CAAA,EAAI4Y;AACnF7X,OAAGxD,WAAS,IAAIwB,KAAKiF,EAAEhE,IAAI,CAAG,IAAA,CAAA,EAAG4Y,OAAM5U,EAAEhE,IAAI,CAAG,IAAA,CAAA,EAAG4Y,OAAM5U,EAAEhE,IAAI,KAAG,CAAG4Y,EAAAA,OAAM,GAAE5U,EAAEhE,IAAI,CAAG,IAAA,CAAA,EAAG4Y;AAEzF,QAAK5U,EAAAA,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,SAAS5U,EAAEhE,IAAI,KAAG,CAAG4Y,EAAAA,QAAO;AAE1C,UAAI8nC,WAAWxmD,WAAUmG,SAASnG,WAAUypB,YAC5C;AAAA,UAAG+8B,UAAS;AACX3/C,WAAGzD,aAAaojD,SAASpjD;AACzByD,WAAGxD,WAAWmjD,SAASnjD;AAAAA,MACvB;AAAA,IACD;AAED,QAAIwD,GAAGxD,YAAUwD,GAAGzD;AACnByD,SAAGxD,WAASrD,WAAUwD,KAAKC,IAAIoD,GAAGzD,YAAWpD,WAAU+B,OAAOsqB,WAAU,QAAA;AACzE,WAAO,EACNjpB,YAAY,IAAIyB,KAAKgC,GAAGzD,UACxBC,GAAAA,UAAU,IAAIwB,KAAKgC,GAAGxD;EAEvB,GACDs3B,OAAM,SAASxT,MAAAA;AACdnnB,IAAAA,WAAU06B,OAAOvT,KAAKQ,qBAAqB,QAAU,EAAA,CAAA,CAAA;AAAA,EACrD;AAOF,WAAS8+B,kBAAAA;AACR,UAAMC,iBAAiB1mD,WAAU+B,OAAOmrC,QAAQ;AAChD,UAAMyZ,wBAAAA,CAAAA,CAA0BrlD,OAAO,MAAaA,KAAAA,CAAAA,CAAAA,OAAO,IAASA,KAAAA,OAAO,WAAY,sBAAsBpB,SAASM;AACtH,QAAIkmD,kBAAkBC,uBAAuB;AAC5C,aAAO3mD,WAAUihB;AAAAA,IACpB,OAAS;AACN,aAAO/gB,SAASM;AAAAA,IAChB;AAAA,EACD;AAEFR,EAAAA,WAAUgnB,iBAAiB,SAASyb,KAAAA;AACnC,SAAIA,KAAI;AACP;AAAA,IACA;AAEDA,QAAI9/B,MAAMC,MAAM4O,KAAK5C,IAAI63C,gBAAAA,EAAkBtlC,eAAe,IAAIshB,IAAIthB,eAAa,GAAG,CAAA,IAAK;AACvFshB,QAAI9/B,MAAME,OAAO2O,KAAK5C,IAAI63C,gBAAkBplC,EAAAA,cAAc,IAAIohB,IAAIphB,cAAY,GAAG,CAAK,IAAA;AAAA,EAEvF;AAEArhB,EAAAA,WAAU4mD,YAAU,SAASnkB,KAAAA;AAC5B,QAAIA,KAAI;AACPA,UAAI9/B,MAAMod,UAAQ;AAElB1f,WAAK2mB,eAAeyb,GACpB;AAAA,IAAA;AACD,QAAGziC,WAAU+B,OAAO2uC,qBAAoB;AACvCxwC,eAASmgB,gBAAgBtD,UAAUtZ,IAAI,4BACvCgjD;AAAAA,sBAAAA,EAAkB1pC,UAAUtZ,IAAI,4BAAA;AAAA,IAChC;AACDpD,SAAKwmD,WAAAA;AACLxmD,SAAKymD,OAAOnkD,MAAMod,UAAU;AAAA,EAC7B;AACA/f,EAAAA,WAAU2rB,eAAa,SAASvrB,KAC/B;AAAA,QAAA,CAAKA;AAAI;AACT,SAAKC,KAAK4K,UAAU,oBAAmB,CAAC7K,GAAAA,CAAAA,GAAM;AAC7C,UAAIC,KAAKqpB;AACRrpB,aAAKqpB,aAAa;AACnB;AAAA,IACA;AACDrpB,SAAKumD,UAAUnkB;AACf,QAAIA,MAAMpiC,KAAKsjD,YAAAA;AACftjD,SAAK2mB,eAAeyb,GAAAA;AACpBpiC,SAAK0mD,eAAe3mD,KAAGqiC;AACvBpiC,SAAK4nB,SAASmY,oBAAoBqC,GAAAA;AAElCpiC,SAAK4K,UAAU,cAAa,CAAC7K,GAC9B,CAAA;AAAA,EAAA;AACAJ,EAAAA,WAAU+mD,iBAAiB,SAAS3mD,KAAIqiC,KAAAA;AACvC,QAAI57B,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,QAAI0J,IAAI24B,IAAI9a,qBAAqB,MACjC;AAAA,QAAIsZ,iBAAiB,CAErB;AAAA,QAAIjhC,WAAU2zB,UAAUqzB,iBAAiB;AACxC/lB,qBAAe/8B,KAAK,EACpB;AAAA,UAAI+iD,gBAAgBjnD,WAAU2zB,UAAUqzB,gBAAgBngD,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA;AACpFo6B,qBAAe/8B,KAAK+iD;AACpBn9C,QAAE,CAAA,EAAGvJ,YAAY;AACjBuJ,QAAE,GAAGvJ,YAAY0mD;AAAAA,IACnB,OAAQ;AACN,UAAIC,aAAa7mD,KAAKszB,UAAUgf,aAAa9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EACzE;AAAA,UAAIsgD,eAAe9mD,KAAKszB,UAAUmf,eAAejsC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,KAAO,IAAIw6C,OAAO,GAAG,EAElGpgB;AAAAA,qBAAe/8B,KAAKgjD,UACpBjmB;AAAAA,qBAAe/8B,KAAKijD,WACpBr9C;AAAAA,QAAE,CAAGvJ,EAAAA,YAAY2mD;AACjBp9C,QAAE,CAAA,EAAGvJ,YAAY4mD;AAAAA,IACjB;AAED9mD,SAAK4nB,SAASgZ,eAAewB,KAAMxB,eAAe9wB,KAAK,GAEvD,CAAA;AAAA,QAAIs0C,MAAMpkD,KAAK0B,OAAOi4B,SAAS92B;AAC/B,aAASsB,IAAI,GAAGA,IAAIigD,IAAIhgD,QAAQD,KAAK;AACpC,UAAI4iD,cAAc3C,IAAIjgD,CACtB;AAAA,UAAI2iB,OAAOnnB,WAAUqnD,2BAA2BD;AAChD,UAAI/2C,QAAQhQ,KAAKwjD,YAAYuD,YAAY//C,IACzC;AAAA,UAAIqX,QAAS7X,GAAGugD,YAAY3kD,YAAYiM,SAAa7H,GAAGugD,YAAY3kD,MAAU2kD,IAAAA,YAAYE;AAC1Fj3C,YAAM2zC,UAAUvtC,KAAKpW,MAAM8mB,MAAMzI,OAAO7X,IAAIugD;AAC5C,UAAI3C,IAAIjgD,CAAGm2B,EAAAA;AACVtqB,cAAMsqB,MAAMlkB,KAAKpW,MAAM8mB,IACxB;AAAA,IAAA;AAEDnnB,IAAAA,WAAUypB,eAAerpB;AAAAA,EAC1B;AAEAJ,EAAAA,WAAUqnD,6BAA6B,SAAS3gD,SAAAA;AAC/C,WAAO1G,WAAU+mB,UAAU1H,cAAc,IAAI3Y,QAAQtG,EAAMmmC,EAAAA,EAAAA;AAAAA,EAC5D;AAEAvmC,EAAAA,WAAUunD,gBAAc,SAAS1gD,IAChC;AAAA,QAAI49C,MAAMpkD,KAAK0B,OAAOi4B,SAAS92B;AAC/B,aAASsB,IAAE,GAAGA,IAAIigD,IAAIhgD,QAAQD,KAAK;AAClC,UAAI2iB,OAAOnnB,WAAU+mB,UAAU1H,cAAc,IAAIolC,IAAIjgD,CAAAA,EAAGpE;AACxD+mB,aAAMA,OAAKA,KAAKof,cAAYpf;AAC5B,UAAI9W,QAAMhQ,KAAKwjD,YAAYY,IAAIjgD,GAAG6C,IAClC;AAAA,UAAIuB,MAAIyH,MAAMyzC,UAAUrtC,KAAKpW,MAAK8mB,MAAKtgB,IAAI49C,IAAIjgD;AAC/C,UAAIigD,IAAIjgD,CAAG/B,EAAAA,UAAQ;AAClBoE,WAAG49C,IAAIjgD,GAAG/B,MAAQmG,IAAAA;AAAAA,IACnB;AACD,WAAO/B;AAAAA,EACR;AACA7G,EAAAA,WAAUwnD,kBAAgB,SAAS11C,MAAAA;AAClC,QAAI1R,MAAGJ,WAAUypB;AACjB,QAAI5iB,KAAGxG,KAAK8F,SAAS/F,GAGrBC;AAAAA,SAAK+O,WAAWvI,IAAIiL,IAAAA;AAEpBzR,SAAKyzC,SAASjtC,GAAGzG,IAAGyG,EAAAA;AACpBxG,SAAK29C,iBAAiBn3C,IAAG;AACzBxG,SAAK2X,iBAAAA;AAAAA,EACN;AACAhY,EAAAA,WAAUynD,gBAAc,SAASrnD,KAAAA;AAChCJ,IAAAA,WAAU0nD,YAAY,OAAOrnD,KAAKsjD,YACnC,CAAA;AAAA,EAAA;AAEA3jD,EAAAA,WAAUs6B,YAAU,SAASmI,KAC5B;AAAA,QAAIA;AAAKA,UAAI9/B,MAAMod,UAAQ;AAC3B1f,SAAKsnD;AACL,QAAG3nD,WAAU+B,OAAO2uC,qBAAoB;AACvCxwC,eAASmgB,gBAAgBtD,UAAU8X,OAAO,4BAAA;AAC1C4xB,wBAAkB1pC,UAAU8X,OAAO,4BACnC;AAAA,IAAA;AAAA,EACF;AACA70B,EAAAA,WAAU2nD,aAAW;AACpB,QAAItnD,KAAKymD;AACRzmD,WAAKymD,OAAOh5C,WAAWC,YAAY1N,KAAKymD,MACzCzmD;AAAAA,SAAKymD,SAAO;AAAA,EACb;AAEA9mD,EAAAA,WAAU6mD,aAAW,WAAA;AACpB,QAAGxmD,KAAKymD,QAAQ;AACf;AAAA,IACA;AAEDzmD,SAAKymD,SAAO5mD,SAASC,cAAc,KAAA;AACnCE,SAAKymD,OAAO51C,YAAU;AACtB7Q,SAAKymD,OAAOnkD,MAAMod,UAAU;AAE5B/f,IAAAA,WAAU6B,MAAMxB,KAAKymD,QAAQ,aAAa9mD,WAAU4nD,eAAAA;AACpD5nD,IAAAA,WAAU6B,MAAMxB,KAAKymD,QAAQ,WAAW9mD,WAAU6nD,WAElDpB;AAAAA,oBAAAA,EAAkBhmD,YAAYJ,KAAKymD,MAAAA;AAAAA,EACpC;AACA9mD,EAAAA,WAAU8nD,gBAAc;AACvB,QAAIh2C,OAAOzR,KAAKknD,cAAc,CAAE,GAAElnD,KAAK+O,WAAW/O,KAAK8F,SAAS9F,KAAKopB,YACrE,CAAA,CAAA;AAAA,QAAIppB,KAAK2K,WAAW,mBAAmB3K,KAAK4K,UAAU,eAAc,CAAC5K,KAAKopB,cAAc3X,MAAMzR,KAAKqpB,UAClG,CAAA;AAAA;AACDrpB,SAAKmnD,gBAAgB11C,IAAAA;AACrBzR,SAAKonD,cACN;AAAA,EAAA;AACAznD,EAAAA,WAAU+nD,gBAAgB,SAAS3nD,KAAIqiC,KAAAA;AACtCpiC,SAAKopB,eAAerpB;AACpBC,SAAK2nD,mBAAmB;AAExB3nD,SAAK4nD,iBAAiB5nD,KAAK0mB;AAC3B1mB,SAAK0mB,YAAY0b;AACjBpiC,SAAKumD,UAAUnkB,GAChB;AAAA,EAAA;AACAziC,EAAAA,WAAU0nD,cAAc,SAAS5nD,MAAM2iC,KAAAA;AACtC,QAAIA,MAAMA,OAAOziC,WAAU2jD,YAE3B;AAAA,QAAI9hD,SAAQ7B,WAAUmG,SAAS9F,KAAKopB,YAAAA;AACpC,QAAG5nB;AACFxB,WAAK29C,iBAAiBn8C,QAAO/B,IAAAA;AAC9B,QAAIA;AACHE,MAAAA,WAAUgY,iBACX3X;AAAAA,SAAKi6B,UAAUmI,GAEf;AAAA,QAAIpiC,KAAK2nD,kBAAiB;AACzB3nD,WAAK0mB,YAAY1mB,KAAK4nD;AACtB5nD,WAAK2nD,mBAAmB;AAAA,IACxB;AACD3nD,SAAK4nD,iBAAiB5nD,KAAKopB,eAAe;AAC1CppB,SAAK4nB,SAASkY,mBAAmBsC;AACjCpiC,SAAKg6B,cAAAA;AACLh6B,SAAK4K,UAAU,mBAAkB;EAClC;AACAjL,EAAAA,WAAUq6B,gBAAgB,WAAA;AACzB,QAAIr6B,WAAU+mB,aAAAA,CAAc/mB,WAAUgoD;AACrChoD,MAAAA,WAAU+mB,UAAUjZ,WAAWC,YAAY/N,WAAU+mB,SAAAA;AACtD/mB,IAAAA,WAAU+mB,YAAY;AAAA,EACvB;AACA/mB,EAAAA,WAAUkoD,kBAAgB;AACzB,QAAG7nD,KAAKopB,cAAa;AACpBppB,WAAK4K,UAAU,iBAAgB,CAAC5K,KAAKopB,cAAAA,CAAAA,CAAgBppB,KAAKqpB,UAC1D,CAAA;AAAA,IAAA;AAEDrpB,SAAKonD,cAAAA;AAAAA,EACN;AACAznD,EAAAA,WAAUmoD,eAAenoD,WAAUkoD;AAEnCloD,EAAAA,WAAUooD,wBAAsB,WAC/B;AAAA,QAAG/nD,KAAKsjD,YAAAA,EAAc7lC,iBAAgB;AACrC;AAAA,IACA;AACD,UAAMkc,WAAW35B,KAAKsjD,YACtB3pB;AAAAA,aAASlc,kBAAkB;AAE3B9d,IAAAA,WAAU6B,MAAMm4B,UAAU,SAAS,SAAS9zB,GAAAA;AAE3C,UAAGA,EAAEE,OAAOC,QAAQ,2BAAA,GAA6B;AAChDrG,QAAAA,WAAUkoD,gBAAAA;AAAAA,MACV;AAED,YAAMG,eAAeroD,WAAU8tB,YAAYznB,QAAQH,EAAEE,QAAQ;AAC7D,UAAIiiD,CAAAA,cAAc;AACjB,cAAMC,gBAAgBtoD,WAAU8tB,YAAYznB,QAAQH,EAAEE,QAAQ;AAC9D,YAAGkiD,eAAc;AAChB,gBAAM34C,QAAQwK,OAAOmuC,cAAcxjD,aAAa,oBAChD,CAAA;AAAA,gBAAMuL,QAAQrQ,WAAU6jD,YAAY7jD,WAAU+B,OAAOi4B,SAAS92B,SAASyM,KAAOtI,EAAAA,IAAAA;AAC9EgJ,gBAAMk4C,aAAavoD,WAAU8tB,YAAYznB,QAAQiiD,eAAe,mBAAsBA,GAAAA,eAAepiD;QACrG;AACD;AAAA,MACA;AAED,YAAMsiD,SAASH,eAAeA,aAAavjD,aAAa,aAAiB,IAAA;AAEzE,cAAO0jD,QACN;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AACJ,cAAGxoD,WAAU+B,OAAO0mD,iBAAgB;AACnC;AAAA,UACA;AACDzoD,UAAAA,WAAU8nD,cACV;AAAA;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJ,cAAG9nD,WAAU+B,OAAO0mD,iBAAgB;AACnC;AAAA,UACA;AACD,cAAI1+C,IAAE/J,WAAU+nB,OAAOC,OAAOiD;AAE9BjrB,UAAAA,WAAUkrB,gBAAgB,EAAChkB,SAAS6C,GAAGohB,OAAOnrB,WAAU+nB,OAAOC,OAAOoD,wBAAwB9jB,UAAU;AACvGtH,YAAAA,WAAUqrB,YAAYrrB,WAAUypB,YAAAA;AAChCzpB,YAAAA,WAAU0pB,aAAa;AACvB1pB,YAAAA,WAAUynD,cACV;AAAA,UAAA,GACD1lD,QAAQ,EAACupB,IAAItrB,WAAU+nB,OAAOC,OAAOuD,YAErC,EAAA,CAAA;AAAA;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJvrB,UAAAA,WAAUkoD,gBAAAA;AACV;AAAA,QAED;AACCloD,UAAAA,WAAUiL,UAAU,oBAAoB,CAACu9C,QAAQH,cAAcniD;;IAEnE,CACClG;AAAAA,IAAAA,WAAU6B,MAAMm4B,UAAU,WAAW,SAAS9zB,GAAAA;AAC7C,UAAIrE,SAAQqE,KAAK5E,OAAOO;AACxB,UAAIuE,SAASF,EAAEE,UAAUF,EAAEksB;AAC3B,UAAIi2B,eAAejiD,OAAOiZ,cAAc,cAExC;AAAA,UAAA,CAAIgpC,cAAa;AAChBA,uBAAejiD,OAAO0H,WAAWuR,cAAc,mCAC/C;AAAA,MAAA;AAED,eAAQnZ,KAAGrE,QAAOk6C,SACjB;AAAA,QAAA,KAAK,IAAG;AACP,eAAK71C,KAAGrE,QAAOi6C;AAAU;AACzB,cAAGuM,gBAAgBA,aAAaxqC,OAAM;AACrCwqC,yBAAaxqC,MAAAA;AAAAA,UACb;AACD;AAAA,QACA;AAAA,QACD,KAAK7d,WAAUomB,KAAKC;AACnB,eAAKngB,KAAGrE,QAAOi6C;AAAU;AACzB,cAAGuM,gBAAgBA,aAAaxqC,OAAM;AACrCwqC,yBAAaxqC,MAAAA;AAAAA,UAClB,OAAS;AACJ,gBAAG7d,WAAU+B,OAAO0mD,iBAAgB;AACnC;AAAA,YACA;AACDzoD,YAAAA,WAAU8nD,cAAAA;AAAAA,UACV;AACD;AAAA,QACD,KAAK9nD,WAAUomB,KAAKE;AACnBtmB,UAAAA,WAAUkoD,gBACV;AAAA;AAAA,MAAA;AAAA,IAKJ,CACA;AAAA,EAAA;AACAloD,EAAAA,WAAU0oD,kBAAgB,WAAA;AACzB;AAAA,EAUD;AAEA1oD,EAAAA,WAAU2oD,mBAAmB,WAC5B3oD;AAAAA,IAAAA,WAAU6B,MAAM4kD,gBAAAA,GAAmB,aAAazmD,WAAU4nD,eAAAA;AAC1D5nD,IAAAA,WAAU6B,MAAM4kD,gBAAAA,GAAmB,WAAWzmD,WAAU6nD,WAAAA;AACxD7nD,IAAAA,WAAU2oD,mBAAmB;;EAC9B;AACA3oD,EAAAA,WAAU4nD,kBAAkB,SAAS1hD;AACpC,QAAIlG,WAAU4oD,eAAc;AAC3B,WAAK1oD,SAAS2oD,kBAAiB;AAC9BpC,wBAAkB1pC,EAAAA,UAAUtZ,IAAI,kBAChCvD;AAAAA,iBAAS2oD,mBAAmB;AAAA,MAC5B;AACD,UAAIC,KAAK9oD,WAAU2jD,YACnB;AAAA,UAAIt3C,MAAM,CAACnG,EAAEmnB,OAAOnnB,EAAEonB;AACtBw7B,SAAGnmD,MAAMC,MAAM5C,WAAU+oD,UAAU,KAAG18C,IAAI,CAAA,IAAGrM,WAAU4oD,cAAc,KAAG;AACxEE,SAAGnmD,MAAME,OAAO7C,WAAU+oD,UAAU,CAAG18C,IAAAA,IAAI,CAAGrM,IAAAA,WAAU4oD,cAAc,CAAG,IAAA;AAAA,IACzE;AAAA,EACF;AACA5oD,EAAAA,WAAUgpD,gBAAgB,SAAS9iD,GAAAA;AAClC,QAAI4iD,KAAK9oD,WAAU2jD,YACnB3jD;AAAAA,IAAAA,WAAU+oD,YAAY,CAACD,GAAGjmB,YAAYimB,GAAGhiC,SAAAA;AACzC9mB,IAAAA,WAAU4oD,gBAAgB,CAAC1iD,EAAEmnB,OAAOnnB,EAAEonB,KACvC;AAAA,EAAA;AACAttB,EAAAA,WAAU6nD,cAAc,WAAA;AACvB,QAAI7nD,WAAU+oD,WAAU;AACvB/oD,MAAAA,WAAU+oD,YAAY/oD,WAAU4oD,gBAAgB;AAChDnC,sBAAkB1pC,EAAAA,UAAU8X,OAAO,kBAAA;AACnC30B,eAAS2oD,mBAAmB;AAAA,IAC5B;AAAA,EACF;AACA7oD,EAAAA,WAAU2jD,cAAY,WACrB;AAAA,QAAA,CAAKtjD,KAAK0mB,WAAU;AACnB,UAAI9S,IAAE/T,SAASC,cAAc,KAAA;AAC7B8T,QAAE/C,YAAU;AACZ,UAAIlR,WAAU+B,OAAOquC;AACpBn8B,UAAE/C,aAAW;AACd,UAAIlR,WAAU6jD,YAAYoF;AACzBh1C,UAAE/C,aAAW;AACd,UAAIlR,WAAU+B,OAAOkjB;AACpBhR,UAAE/C,aAAW;AACd,UAAIlR,WAAU+B,OAAO2uC;AACpBz8B,UAAE/C,aAAa;AAEhB+C,QAAEtR,MAAMm1B,aAAW;AACnB,UAAIv0B,OAAOlD,KAAK6oD;AAEhB,UAAI9+B,UAAU/pB,KAAK0B,OAAOyvC;AAG1BjuC,cAAQ;AACR,UAAI24C,WAAW;AACf,eAAS13C,IAAI,GAAGA,IAAI4lB,QAAQ3lB,QAAQD,KAAK;AACxC03C,mBAAW77C,KAAK4nB,SAAS4Y,yBAAyBzW,QAAQ5lB,CAC1DjB,CAAAA;AAAAA,gBAAQ,UAAQ24C,WAAS,mBAAkB9xB,QAAQ5lB,CAAAA,IAAG,+BAA6BxE,WAAU+B,OAAOkjB,MAAI,UAAQ,UAAQ,cAAcmF,QAAQ5lB,CAAAA,IAAK,qCAAqC4lB,QAAQ5lB,KAAK,kBAAkBxE,WAAU+nB,OAAOC,OAAOoC,QAAQ5lB,MAAM;AAAA,MAC7P;AAED4lB,gBAAU/pB,KAAK0B,OAAO0vC;AACtB,UAAIxsB,MAAMjlB,WAAU+B,OAAOkjB;AAC3B,eAASzgB,IAAI,GAAGA,IAAI4lB,QAAQ3lB,QAAQD,KAAK;AACxC03C,mBAAW77C,KAAK4nB,SAAS4Y,yBAAyBzW,QAAQ5lB,CAAAA,CAAAA;AAE1DjB,gBAAQ;AAERA,gBAAQ,UAAQ24C,WAAS,mBAAkB9xB,QAAQ5lB,CAAG,IAAA,+BAA6BygB,MAAI,SAAO,WAAS,cACpGmF,QAAQ5lB,KAAK,qCACb4lB,QAAQ5lB,KAAK,kBAAkBxE,WAAU+nB,OAAOC,OAAOoC,QAAQ5lB,CAAM,CAAA,IAAA;AAAA,MACxE;AACDjB,cAAQ;AACRA,cAAM;AACN0Q,QAAE1T,YAAUgD;AACZ,UAAIvD,WAAU+B,OAAOgvC,eAAc;AAClC/wC,QAAAA,WAAU6B,MAAMoS,EAAEvT,YAAY,aAAaV,WAAUgpD;AACrDhpD,QAAAA,WAAU6B,MAAMoS,EAAEvT,YAAY,eAAe,SAASwF,GACrDA;AAAAA,YAAEsiB,eACF;AAAA,iBAAO;AAAA,QACX,CACGvU;AAAAA,UAAEvT,WAAWiC,MAAM2uB,SAAS;AAC5BtxB,QAAAA,WAAU2oD,iBAAAA;AAAAA,MAEV;AAEDtoD,WAAK4nB,SAAS2Y,aAAa3sB,CAAAA;AAE3B5T,WAAKwmD,WACLxmD;AAAAA,WAAKymD,OAAOlgC,aAAa3S,GAAE5T,KAAKymD,OAAOpmD;AAEvCL,WAAK0mB,YAAU9S;AAEf,UAAIwwC,MAAIpkD,KAAK0B,OAAOi4B,SAAS92B;AAC7BK,aAAK;AACL,eAASiB,IAAE,GAAGA,IAAIigD,IAAIhgD,QAAQD,KAAK;AAClC,YAAI6L,QAAMhQ,KAAKwjD,YAAYY,IAAIjgD,CAAG6C,EAAAA,IAAAA;AAClC,aAAKgJ;AAAO;AACZo0C,YAAIjgD,CAAAA,EAAGpE,KAAG,UAAQC,KAAK0O;AACvB,YAAIyO,SAAS;AACb,YAAIinC,IAAIjgD,CAAGgZ,EAAAA,QAAO;AACjB,cAAI0+B,WAAWl8C,WAAUioB,SAASoY,gCAAgChgC,KAAK0nB,OAAOC,OAAO,YAAUy8B,IAAIjgD,GAAGgZ,MACtGA,CAAAA;AAAAA,mBAAS,UAAQ0+B,WAAS,oDAAkD13C,IAAE,cAAYA,IAAE,qCAAmCigD,IAAIjgD,GAAGgZ,SAAO,kBAAgBnd,KAAK0nB,OAAOC,OAAO,YAAUy8B,IAAIjgD,CAAAA,EAAGgZ,MAAQ,IAAA;AAAA,QACzM;AAED,YAAInd,KAAK0B,OAAOquC,WAAU;AACzB7sC,kBAAM;AAAA,QACN;AAED,YAAI4lD,aAAa9oD,KAAK0nB,OAAOC,OAAO,aAAWy8B,IAAIjgD,CAAAA,EAAGiW;AACtD,YAAU0uC,OAAAA,eAAe,UAAS;AACjCA,uBAAa1E,IAAIjgD,CAAAA,EAAGiW;AAAAA,QACpB;AACDlX,gBAAM,cAAYkhD,IAAIjgD,CAAAA,EAAGpE,KAAG,gDAA8CqkD,IAAIjgD,CAAGiW,EAAAA,OAAK,OAAK+C,SAAQ,YAAU2rC,aAAW,mBAAiB94C,MAAM5I,OAAOgP,KAAKpW,MAAKokD,IAAIjgD,CAAAA,CAAAA;AACpKjB,gBAAM;AAAA,MACN;AAED,UAAI6lD,KAAGn1C,EAAE0T,qBAAqB,KAAA;AAC9B,eAASnjB,IAAE,GAAGA,IAAE4kD,GAAG3kD,QAAQD,KAAK;AAC/B,YAAI6kD,OAAOD,GAAG5kD,CACd;AAAA,YAAI0M,YAAYlR,WAAUmS,cAAck3C;AACxC,YAAIn4C,aAAa,iBAAiB;AACjCm4C,eAAK9oD,YAAYgD;AACjB;AAAA,QACA;AAAA,MACD;AAGDvD,MAAAA,WAAUspD,oBAAoB7E,GAAAA;AAG9BpkD,WAAKqoD,gBAAAA;AAELroD,WAAK+nD,sBAAsB/nD,IAAAA;AAE3B4T,QAAEtR,MAAMm1B,aAAW;AAAA,IACnB;AAGD,WAAOz3B,KAAK0mB;AAAAA,EACb;AAEA/mB,EAAAA,WAAUspD,sBAAsB,SAASpmD,UAIxC;AAAA,aAAQsB,IAAI,GAAGA,IAAItB,SAASuB,QAAQD,KAAI;AACvC,UAAIkC,UAAUxD,SAASsB;AACvB,UAAIkC,CAAAA,QAAQtG,MAAOJ,CAAAA,WAAU+mB,UAAU1H,cAAc,IAAI3Y,QAAQtG,EAChE,EAAA;AAAA;AAED,UAAImpD,aAAavpD,WAAU+mB,UAAU1H,cAAc,IAAI3Y,QAAQtG,EAAAA,EAAAA;AAC/D,UAAI0nB,QAAQyhC,WAAWlqC,cAAc,OAErC;AAAA,UAAImqC,aAAaxpD,WAAUqnD,2BAA2B3gD,OACtD;AAAA,aAAM8iD,eAAeA,WAAWnqC,eAAc;AAC7CmqC,qBAAaA,WAAWjjB;AAAAA,MACxB;AAED,UAAIkjB,WAAW;AAEf,UAAGD,YAAY;AACd,YAAIllB,QAAQklB,WAAWnqC,cAAc,yBAAA;AACrC,YAAGilB,OAAM;AACR59B,kBAAQgjD,UAAUplB,MAAMlkC,MAAM,WAAWJ,WAAU+O,IACnD;AAAA,cAAA,CAAIu1B,MAAMlkC;AACTkkC,kBAAMlkC,KAAKsG,QAAQgjD;AACpB5hC,gBAAM3K,aAAa,OAAOzW,QAAQgjD,OAAAA;AAClCD,qBAAW;AAAA,QACX;AAAA,MACD;AAGD,UAAGA,UAAS;AACX,YAAIvF,UAAUlkD,WAAU6jD,YAAYn9C,QAAQW,IAC5C;AAAA,YAAG68C,QAAQvpB,OAAM;AAChB36B,UAAAA,WAAU6B,MAAMimB,OAAO,SAAS,SAAUphB;AACzC,mBAAO,WAAA;AAEN,kBAAI2J,QAAQrQ,WAAU6jD,YAAYn9C,SAAQW,IAAAA;AAC1C,kBAAI8f,OAAOnnB,WAAUqnD,2BAA2B3gD,QAAAA;AAEhD,kBAAG2J,SAASA,MAAMsqB;AACjBtqB,sBAAMsqB,MAAMlkB,KAAKzW,YAAWmnB;YACnC;AAAA,UACK,EAAEzgB,OACH,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACF;AAEA1G,EAAAA,WAAUiG,YAAY,mBAAmB,SAAS0jD,QAAQzV;AACzD,QAAG7zC,KAAKopB,gBAAgBkgC;AACvBtpD,WAAKopB,eAAeyqB;AAAAA,EACtB;AAEAl0C,EAAAA,WAAUkpD,qBAAoB;AAAA;AAAA;AAAA;AAAA;AAO9B;ACp1Be,SAAShuC,SAAOlb,YAG/BA;AAAAA,EAAAA,WAAUqlB,qBAAqB,WAAA;AAC9B,QAAIukC,SAASvpD,KAAK0B,OAAOkvC,WACpBjL,UAAUC,UAAU7zB,QAAQ,QAAA,KAAA,MAC9B4zB,UAAUC,UAAU7zB,QAAQ,MAAA,KAAA,MAC5B4zB,UAAUC,UAAU7zB,QAAQ,SAAa,KAAA,MACzC4zB,UAAUC,UAAU7zB,QAAQ,OAAW,KAAA,OAAA,CAAQ9Q,OAAOuoD,aACrD7jB,UAAU8jB,aAAa,cAAc9jB,UAAU+jB,iBAAiB;AAEpE,QAAGH,QAAO;AACTvpD,WAAKsf,GAAGgG,eAAe;AACvBtlB,WAAKyyB,UAAU;AAAA,IACf;AAED,QAAGzyB,KAAK0B,OAAOkvC,OAAM;AAEpB,UAAI+Y,uBAAuB;AAC3B,UAAA;AACC9pD,iBAAS+pD,YAAY;MACrB,SAAQ/jD;AACR8jD,+BAAuB;AAAA,MACvB;AAED,UAAIA,sBAAsB;AACzB3pD,aAAK6pD,cAAc,CAAC,aAAa,cAAc,UAAa,GAAA,SAAUrjD;AACrE,cAAIA,GAAGsjD,WAAWtjD,GAAGsjD,QAAQ1lD,SAAS;AAAG,mBAAO;AAChD,cAAIoC,GAAGsjD,QAAQ,CAAA;AACd,mBAAO,EACN/jD,QAAQS,GAAGT,QACXinB,OAAOxmB,GAAGsjD,QAAQ,GAAG98B,OACrBC,OAAOzmB,GAAGsjD,QAAQ,GAAG78B,OACrBC,SAAS1mB,GAAGsjD,QAAQ,CAAA,EAAG58B,SACvBG,SAAS7mB,GAAGsjD,QAAQ,CAAA,EAAGz8B;;AAGxB,mBAAO7mB;AAAAA,QACZ,GAAM,WACF;AAAA,iBAAO;AAAA,QACX,CACG;AAAA,MAAA,WAAUvF,OAAO8oD,gBAAgB9oD,OAAO0kC,UAAUqkB,gBAAgB;AAClEhqD,aAAK6pD,cAAc,CAAC,eAAe,eAAe,WAAA,GAAc,SAAUrjD,IACzE;AAAA,cAAIA,GAAGyjD,eAAe;AAAS,mBAAO;AACtC,iBAAOzjD;AAAAA,QACP,GAAE,SAAUA,IACZ;AAAA,iBAAA,CAASA,MAAOA,GAAGyjD,eAAe;AAAA,QACtC,CACA;AAAA,MAAA,WAAahpD,OAAO0kC,UAAUukB,kBAAkB;AAC7ClqD,aAAK6pD,cAAc,CAAC,iBAAiB,iBAAiB,aAAA,GAAgB,SAAUrjD,IAAAA;AAC/E,cAAIA,GAAGyjD,eAAezjD,GAAG2jD;AAAsB,mBAAO;AACtD,iBAAO3jD;AAAAA,QACP,GAAE,SAAUA;AACZ,iBAASA,CAAAA,MAAMA,GAAGyjD,eAAezjD,GAAG2jD;AAAAA,QACxC,CACG;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AAEAxqD,EAAAA,WAAUkqD,gBAAgB,SAASxlC,OAAO+lC,UAAU9xB,QAAAA;AAGnD,QAAI5e,QAAQ2wC,SAASrxC,OAAOyQ,WAAW6gC,aAAaC;AACpD,QAAIC,eAAe;AAEnB,aAASC,iBAAiB/kD,SAAS0U,MAAMnT,UAAAA;AAExCtH,MAAAA,WAAU6B,MAAMkE,SAAS0U,MAAM,SAASvU,GAAAA;AACvC,YAAGlG,WAAUq8B,kBAAAA,GAAoB;AAChC,iBAAO;AAAA,QACX,OAAQ;AACJ,cAAI1D,OAAOzyB,CAAAA;AAAI;AACf,iBAAOoB,SAASpB,CAChB;AAAA,QAAA;AAAA,MACJ,GAAK,EAAE6kD,SAAS;IACd;AAED,aAASC,sBAAsBC,MAAMC,MAAMzgC,MAAM0gC,QAAAA;AAChD,WAAKF,QAASC,CAAAA;AAAM,eAAO;AAE3B,UAAI12C,IAAIy2C,KAAK7kD;AACb,aAAMoO,KAAKA,KAAKxU,WAAU4kB,MAAK;AAC9BpQ,YAAIA,EAAE1G;AAAAA,MACN;AACD,UAAG0G,KAAKxU,WAAU4kB,MAAK;AAEtB,eAAO;AAAA,MACP;AAGD,UAAG5kB,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUsG,WAAWxG,IAAM,GAAA;AAClE,YAAIwb,WAAWtb,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG,IACrD;AAAA,YAAGwb,SAAS8vC,YAAW;AACtB,iBAAO;AAAA,QACP;AAAA,MACD;AAED,UAAIn9B,KAAKzc,KAAKie,IAAIw7B,KAAK39B,QAAQ49B,KAAK59B;AACpC,UAAInY,KAAK3D,KAAKie,IAAIw7B,KAAK59B,QAAQ69B,KAAK79B;AACpC,UAAIY,KAAKk9B,UAAUh2C,KAAGsV,SAAAA,CAAUwD,MAAO9Y,KAAG8Y,KAAK,IAAI;AAClD,YAAIg9B,KAAK59B,QAAQ69B,KAAK79B,OAAO;AAC5BrtB,UAAAA,WAAUsoB,OAAOiC,oBAAAA;AAAAA,QACrB,OAAS;AACLvqB,UAAAA,WAAUsoB,OAAOgC,oBAAAA;AAAAA,QACjB;AACD,eAAO;AAAA,MACP;AACD,aAAO;AAAA,IACP;AAED,aAAS+gC,YAAYnlD,GACpB;AAAA,UAAIyyB,OAAOzyB,CAAI;AAAA;AACf,UAAIolD,MAAMtrD,WAAUsG,SAAWwjB,EAAAA,WAC9BxO,WAAWtb,WAAU4L,SAAS5L,WAAU4L,OAAO5L,WAAUiN,SAAS;AAEnE,UAAIs+C,kBAAkBvrD,WAAUgY;AAChC,UAAGszC,OAAO,YAAYhwC,UAAS;AAE9Btb,QAAAA,WAAUgY,mBAAmB,WAAA;AAC5B,cAAI5X,MAAKJ,WAAUsG,SAAWujB,EAAAA;AAC9B,cAAIhjB,KAAK7G,WAAUmG,SAAS/F,GAC5B;AAAA,cAAI+K,WAAWmQ,SAAS9Y;AAExB,cAAIwH,MAAMhK,WAAUo2C,UAAUvvC,GAAGzD,YAAYyD,GAAGxD,QAAAA;AAChD,mBAAQmB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAI;AAClC,gBAAGwF,IAAIxF,CAAG2G,EAAAA,QAAAA,KAAatE,GAAGsE,QAAU,GAAA;AACnCnB,kBAAIyJ,OAAOjP,GAAG;AACdA;AAAAA,YACA;AAAA,UACD;AACDqC,aAAG+vC,UAAU5sC,IAAIvF,SAAS;AAC1BoC,aAAGqyC,SAASlvC,IAAIvF;AAEhBpE,eAAK0X,YAAY,CAAClR,KAAK7G,WAAUsG,SAAAA,EAAWxG;QAEhD;AAAA,MACG;AAEDE,MAAAA,WAAU0oB,eAAexiB,CAAAA;AAEzB,UAAGolD,OAAO,YAAYhwC,UAAS;AAC9Btb,QAAAA,WAAUgY,mBAAmBuzC;AAAAA,MAC7B;AAED,UAAIrlD,EAAEsiB;AACLtiB,UAAEsiB;AACHtiB,QAAE8jB,eAAe;AACjB,aAAO;AAAA,IACP;AAGD8gC,qBAAiB5qD,SAASM,MAAMkkB,MAAM,IAAI,SAASxe,GAAAA;AAClD,UAAIyyB,OAAOzyB,CAAAA;AAAI;AAEf,UAAIspB,MAAMi7B,SAASvkD,CAAAA;AACnB,WAAIspB;AAAK;AACT,UAAI1F,WAAU;AACbuhC,oBAAY77B,GAEZ;AAAA,YAAItpB,EAAEsiB;AACLtiB,YAAEsiB,eACHtiB;AAAAA,UAAE8jB,eAAe;AACjBhqB,QAAAA,WAAUwrD;AACV,eAAO;AAAA,MACP;AAKDd,gBAAUD,SAASvkD,CAEnB;AAAA,UAAA,CAAK0kD;AAAa;AAGlB,UAAA,CAAKF,SAAQ;AACZC,sBAAc;AACd;AAAA,MACA;AAID,UAAI5wC,OAAO3T,UAAUskD,QAAQtkD,UAAWoL,KAAKie,IAAI1V,OAAOsT,QAAQq9B,QAAQr9B,SAAS,KAAO7b,KAAKie,IAAI1V,OAAOuT,QAAQo9B,QAAQp9B,KAAS,IAAA,GAAG;AACnIq9B,sBAAc;AACdhxC,qBAAaN,KAAAA;AAAAA,MACb;AAAA,IAEH,CAGCyxC;AAAAA,qBAAiBzqD,KAAK+L,KAAK,cAAA,EAAgB,CAAI,GAAA,eAAeq/C;AAC9DX,qBAAiBzqD,KAAK+L,KAAK,cAAgB,EAAA,CAAA,GAAI,eAAe,SAASlG,GAAAA;AACtE,UAAIyyB,OAAOzyB;AAAI;AACf,UAAI0kD,aAAY;AACf,YAAI1kD,KAAKA,EAAEsiB;AACVtiB,YAAEsiB,eAAAA;AACHtiB,UAAE8jB,eAAe;AACjB,eAAO;AAAA,MACP;AAAA,IACH;AAGC8gC,qBAAiBzqD,KAAKukB,MAAMF,MAAM,IAAI,SAASxe,GAAAA;AAE9C,UAAGhG,YAAYA,SAASM,MAAK;AAC5BN,iBAASM,KAAKuc,UAAUtZ,IAAI,sBAC5B;AAAA,MAAA;AAED,UAAIk1B,OAAOzyB,CAAAA;AAAI;AACflG,MAAAA,WAAU0rD,iBAAiBxlD,EAAEylD;AAE7B,UAAIC;AACJ9hC,kBAAY6gC,cAAc;AAC1BC,oBAAc;AACdgB,mBAAalB,UAAUD,SAASvkD,CAAAA;AAEhC,WAAK0lD,YAAW;AACfjB,sBAAc;AACd;AAAA,MACA;AAGD,UAAIt+C,MAAM,oBAAIxH;AAEd,WAAK8lD,eAAgB7gC,CAAAA,aAAazd,MAAMw+C,eAAe,KAAI;AAC1D7qD,QAAAA,WAAUsoB,OAAOyB,aAAa6hC,UAAAA;AAC9BtqD,eAAOoY,WAAW,WAAA;AACjB,cAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,UACA;AAED9gB,UAAAA,WAAU8oB,cAAc8iC;QACxB,GAAE,EAAA;AAEH,YAAI1lD,EAAEsiB;AACLtiB,YAAEsiB,eACHtiB;AAAAA,UAAE8jB,eAAe;AACjBhqB,QAAAA,WAAU6rD,mBAAmB;AAC7B,eAAO;AAAA,MACP;AACDhB,qBAAex+C;AAIf,UAAIs+C,eAAe7gC,aAAAA,CAAc9pB,WAAU+B,OAAOovC;AACjD;AAED,UAAI2a,UAAU9rD,WAAUgpB,cAAc9oB,SAASilC,aAC/C;AAAA,UAAI4mB,WAAW/rD,WAAUgpB,cAAc4iC,WAAWxlD,MAClD;AAAA,UAAI4lD,aAAajyC,SAAQ/Z,WAAUgpB,cAAcjP,OAAO3T,UAAU;AAElE,UAAG0lD,WAAWC,YAAYD,WAAWC,YAAYD,WAAWE,YAC5D;AACC,YAAG9lD,EAAEsiB,gBAAgB;AACpBtiB,YAAEsiB,eACF;AAAA,QAAA;AACDtiB,UAAE8jB,eAAe;AACjBhqB,QAAAA,WAAU2oB,qBAAqB;AAC/B3oB,QAAAA,WAAUsoB,OAAOyB,aAAa6hC,UAC9B7xC;AAAAA,iBAAS6xC;AACT,eAAO;AAAA,MACP;AAEDvyC,cAAQK,WAAW,WAClB;AAAA,YAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,QACA;AACDgJ,oBAAY;AACZ,YAAI1jB,SAAS2T,OAAO3T;AACpB,YAAI8K,YAAYlR,WAAUmS,cAAc/L,MACxC;AAAA,YAAIA,UAAU8K,UAAUkB,QAAQ,UAAgB,KAAA;AAC/ChM,mBAASA,OAAO64C;AAEjBj/C,QAAAA,WAAU4oB,eAAe7O,QAAQ3T,MACjC;AAAA,YAAIpG,WAAU6K,cAAc7K,WAAU6K,cAAc,UAAS;AAC5D7K,UAAAA,WAAUkyB,aAAalyB,WAAU4K,UAAU,SAASuc,MAAM3iB,GACzD2iB;AAAAA,iBAAKxkB,MAAMod,UAAQ;AACnB/f,YAAAA,WAAUg0C,UAAUvgC,OAAOjP,GAAG,CAAA;AAAA,UACnC;QACI;AAED,YAAIxE,WAAU+B,OAAOmvC,WAAW;AAC/BlxC,UAAAA,WAAUisD,iBAAAA;AAAAA,QACV;AACDjsD,QAAAA,WAAUiY,YAAYjY,WAAU4K,QAAAA;AAAAA,MACnC,GAAI5K,WAAU+B,OAAOovC;AAEnBp3B,eAAS6xC;AAAAA,IACX,CACC;AAAA,aAASH,YAAYvlD,GACpB;AAAA,UAAIyyB,OAAOzyB,CAAI;AAAA;AACflG,MAAAA,WAAUksD,iBACV;AAAA,UAAIpiC,WAAU;AACb9pB,QAAAA,WAAU6oB,aAAc4hC,SAASvkD;AACjClG,QAAAA,WAAUyoB,oBAAoB;AAAA,MAC9B;AACDzoB,MAAAA,WAAU4K,WAAW;AACrB5K,MAAAA,WAAU6K,aAAW;AACrB7K,MAAAA,WAAU8uB,YAAU;AACpB9uB,MAAAA,WAAU0rD,iBAAiB;AAC3B/xC,mBAAaN,KAAAA;AACbyQ,kBAAY8gC,cAAc;AAC1BD,oBAAc;AAAA,IACd;AAGDG,qBAAiBzqD,KAAK+L,KAAK,cAAgB,EAAA,CAAA,GAAIsY,MAAM,CAAI,GAAA,SAASxe;AACjE,UAAGhG,YAAYA,SAASM,MAAK;AAC5BN,iBAASM,KAAKuc,UAAU8X,OAAO,sBAAA;AAAA,MAC/B;AAED,UAAI8D,OAAOzyB;AAAI;AAEf,UAAGlG,WAAU+B,OAAOqvC,mBAAkB;AACrC,YAAA,CAAKtnB,aAAakhC,sBAAsBjxC,QAAQ2wC,SAAS,KAAK,GAAA,GAAM;AACnE1qD,UAAAA,WAAU6rD,mBAAmB;AAAA,QAC7B;AAAA,MACD;AAED,UAAI/hC,WAAW;AACd9pB,QAAAA,WAAU2oB,qBAAqB;AAC/BjP,mBAAW;AACV1Z,UAAAA,WAAU2oB,qBAAqB;AAAA,QAC/B,GAAE,GAAA;AAAA,MACH;AAED8iC,kBAAYvlD,CAAAA;AACZ,UAAIlG,WAAU6rD,kBAAiB;AAC9B7rD,QAAAA,WAAU6rD,mBAAmB;AAC7B,YAAI3lD,EAAEsiB;AACLtiB,YAAEsiB,eACHtiB;AAAAA,UAAE8jB,eAAe;AACjB,eAAO;AAAA,MACP;AAAA,IACH;AAEChqB,IAAAA,WAAU6B,MAAM3B,SAASM,MAAMkkB,MAAM,CAAI+mC,GAAAA,WAAAA;AAAAA,EAC1C;AAEAzrD,EAAAA,WAAUisD,mBAAmB;AAC5BjsD,IAAAA,WAAUksD,iBAAAA;AAEV,QAAIC,SAASnsD,WAAUosD,cAAclsD,SAASC,cAAc,KAC5DgsD;AAAAA,WAAOj7C,YAAU;AAEjBlR,IAAAA,WAAUwrD,mBAAmB,CAAA;AAE7BtrD,aAASM,KAAKC,YAAY0rD;EAC3B;AACAnsD,EAAAA,WAAUwrD,qBAAqB,SAASrqD,MAAAA;AACvC,QAAIgrD,SAASnsD,WAAUosD;AACvB,QAAID,QAAO;AACV,UAAI3H,OAAO;AACX,UAAIxkD,WAAU4K,YAAAA,CAAazJ,MAAK;AAC/B,YAAI0F,KAAK7G,WAAUmG,SAASnG,WAAU4K,QACtC;AAAA,YAAI/D;AACH29C,iBAAO,WAAW39C,GAAG4D,SAASzK,WAAU2zB,UAAUgf,aAAa9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAI7G,WAAU2zB,UAAUoK,SAASl3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAO,KAAA;AAAA,MAChK;AAED,UAAI7G,WAAU6K,cAAc,YAAY7K,WAAU6K,cAAc;AAC/DshD,eAAO5rD,aAAaP,WAAU+nB,OAAOC,OAAOqkC,kBAAkB,oBAAkB7H;AAAAA;AAEhF2H,eAAO5rD,aAAaP,WAAU+nB,OAAOC,OAAOskC,gBAAgB,kBAAgB9H;AAAAA,IAC7E;AAAA,EACF;AACAxkD,EAAAA,WAAUksD,mBAAmB,WAC5B;AAAA,QAAIC,SAASnsD,WAAUosD;AACvB,QAAID,UAAUA,OAAOr+C,YAAW;AAC/Bq+C,aAAOr+C,WAAWC,YAAYo+C;AAC9BnsD,MAAAA,WAAUosD,cAAc;AAAA,IACxB;AAAA,EACF;AAGA;ACrXe,SAASlxC,SAAOlb,YAE/BA;AAAAA,EAAAA,WAAUusD,cAAc,WACvB;AAAA,WAAO,EACNzgD,MAAM,EACLrE,QAAQ,WAAA;AACP,aAAO,EACN+kD,KAAK,OACLnlD,MAAM,GACN43B,OAAO,EACNt8B,OAAO,0BAER8pD,GAAAA,OAAO,EACNC,WAAa,WAAA;AACZ1sD,QAAAA,WAAU8X,eACV;AAAA,MAAA,EAAA,GAEFtX,MAAM,CACL,EACCsjB,IAAIzjB,KAAKyjB,IACTzc,MAAM,EAAA,CAAA,EAAA;AAAA,IAIT,GACDlG,MAAM,WAAA;AACL,UAAI0K,YAAY3L,SAASC,cAAc,KAAA;AACvC0L,gBAAUzL,KAAK,eAAcJ,WAAU+O,IACvClD;AAAAA,gBAAUlJ,MAAMyO,QAAQ;AACxBvF,gBAAUlJ,MAAMwO,SAAS;AACzBtF,gBAAUkR,UAAUtZ,IAAI,mBAAA;AACxBoI,gBAAU8gD,MAAM;AAChB9gD,gBAAUtL,YAAY;AAatBP,MAAAA,WAAUmB,KAAK0K,SAEfxL;AAAAA,WAAKyjB,KAAKjY;AAAAA,IACV,KAEFxE,MAAM,EAAA;AAAA,EAER;AAEA;ACtDe,SAAS6T,SAAOlb,YAG/BA;AAAAA,EAAAA,WAAU4sD,iBAAiB,WAAA;AAC1B1sD,aAASmgB,gBAAgBlD,aAAa,wBAAwBnd,WAAU6sD,IAAAA;AAAAA,EACzE;AAEA7sD,EAAAA,WAAU8sD,iBAAiB,EAC1B1vC,kBAAkB,CAAC,GAAE,CAAA,GACrBkzB,uBAAuB,CAAC,GAAE,IAC1BF,WAAW,CAAC,GAAE,CAAA,GAEd1+B,cAAc,CAAC,IAAG,KAClBw+B,uBAAuB,CAAC,WAAW,QACnCC,GAAAA,4BAA4B,CAAC,WAAW;AAGzCnwC,EAAAA,WAAU+sD,WAAW,EACpBC,4BAA4B,CAAC,IAAG,EAChCptC,GAAAA,YAAY,CAAC,IAAG,KAChB6F,YAAY,CAAC,IAAG,EAOjBzlB,EAAAA;AAAAA,EAAAA,WAAU2mB,oBAAoB,WAC7B;AAAA,QAAA,CAAI3mB,WAAU6sD,MAAK;AAClB,aAAOI,oBAAAA;AAAAA,IACT,OAAM;AACJ,cAASjtD,WAAU6sD,OAAO,IAAIz6C,QAAQ,UAAA,IAAA;AAAA,IACtC;AAAA,EACF;AAEA,WAAS86C,oBACR;AAAA,QAAIC,QAAQjtD,SAASynB,qBAAqB,MAC1C;AAAA,aAASnjB,IAAI,GAAGA,IAAI2oD,MAAM1oD,QAAQD,KAAK;AACtC,UAAIoE,MAAMukD,MAAM3oD,GAAG4oD,KAAK1iB,MAAM;AAC9B,UAAI9hC,KAAI;AACP,eAAOA,IAAI,CACX;AAAA,MAAA;AAAA,IACD;AAAA,EACF;AAEA5I,EAAAA,WAAUqtD,mBAAmB,WAC5BC;AAAAA,uBAAAA;AACA,UAAMC,SAAS9rC,iBAAiBphB,KAAKgE,UAAAA;AACrC,UAAMmpD,WAAWD,OAAO7rC,iBAAiB,uBAEzC;AAAA,QAAI+rC,kBAAkBD;AACtB,QAAIE;AACJ,QAAIC,YAAY,CAAA;AAChB,QAAIC,mBAAmB;AAEvB,QAAGH,eAAc;AAChBC,kBAAYF;AACZ,eAAQhpD,KAAKxE,WAAU2f,IAAG;AACzBguC,kBAAUnpD,CAAAA,IAAK+oD,OAAO7rC,iBAAiB,sBAAsBld,CAC7D,EAAA;AAAA,MAAA;AAEDmpD,gBAAUj8C,eAAe67C,OAAO7rC,iBAAiB,qCACjDisC;AAAAA,gBAAUvd,YAAYmd,OAAO7rC,iBAAiB,kCAEhD;AAAA,IAAA,OAAM;AACJgsC,kBAAYR,kBAAAA;AACZU,yBAAmB5tD,WAAU2mB,kBAAAA;AAAAA,IAC7B;AAGD3mB,IAAAA,WAAU6tD,cAAc,EACvBC,OAAOJ,WACPK,aAAaN,eACbG,kBACA9vB,QAAQ6vB,UAGT;AAAA,QAAG3tD,WAAU6tD,YAAYE,aAAY;AACpC,YAAMC,iBAAiB3tD,KAAKwtD,YAAY/vB;AACxC,eAAQt5B,KAAKxE,WAAU2f,IAAG;AACzB,YAAI8H,CAAAA,MAAM6O,SAAS03B,eAAexpD,CAAAA,CAAAA,CAAAA,GAAK;AACtCxE,UAAAA,WAAU2f,GAAGnb,CAAK8xB,IAAAA,SAAS03B,eAAexpD,CAC1C,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACF;AAEA,MAAIypD;AACJ,WAAShB,sBACR;AAAA,QAAGgB,uBAAuBv/C,QAAU;AACnC,UAAIw/C,QAAQhuD,SAASC,cAAc,KAAA;AACnC+tD,YAAMvrD,MAAM2K,WAAW;AACvB4gD,YAAMvrD,MAAME,OAAO;AACnBqrD,YAAMvrD,MAAMC,MAAM;AAClBsrD,YAAM3tD,YAAY;AAIlBL,eAASM,KAAKC,YAAYytD,KAAAA;AAC1B,UAAIX,SAASjsD,OAAOmgB,iBAAiBysC,MAAM7uC,cAAc;AACzD,UAAI/R,WAAWigD,OAAO7rC,iBAAiB;AACvC,UAAGpU,aAAa,YAAW;AAE1B2gD,6BAAqB;AAAA,MACxB,OAAO;AACJA,6BAAqB;AAAA,MACrB;AAEDv0C,iBAAW,WAAA;AACVu0C,6BAAqB;AACrB,YAAGC,SAASA,MAAMpgD,YAAW;AAC5BogD,gBAAMpgD,WAAWC,YAAYmgD,KAAAA;AAAAA,QAC7B;AAAA,MACD,GAAE,GAAA;AAAA,IACH;AACD,WAAOD;AAAAA,EACR;AAEA,MAAIE;AACJ,WAASC,0BAAAA;AACR,QAAGpuD,WAAU2mB,kBAAAA,GAAoB;AAChC,aAAO;AAAA,IACT,OAAM;AACJ,UAAGwnC,yBAAyBz/C,QAAU;AACrC,YAAIw/C,QAAQhuD,SAASC,cAAc,KAAA;AACnC+tD,cAAMvrD,MAAM2K,WAAW;AACvB4gD,cAAMvrD,MAAME,OAAO;AACnBqrD,cAAMvrD,MAAMC,MAAM;AAClBsrD,cAAM3tD,YAAY;AAMlBL,iBAASM,KAAKC,YAAYytD,KAC1B;AAAA,YAAIX,SAASjsD,OAAOmgB,iBAAiBysC,MAAM7uC,cAAc,WAAA,CAAA;AACzD,YAAIgvC,YAAYd,OAAO7rC,iBAAiB,YAAA;AACxCxhB,iBAASM,KAAKuN,YAAYmgD;AAC1BC,+BAA0BE,CAAAA,EAAAA,cAAc;AAExC,YAAIF,CAAAA,sBAAqB;AACxBz0C,qBAAW;AACVy0C,mCAAuBz/C;AAAAA,UACvB,GAAE,GACH;AAAA,QAAA;AAAA,MACJ,OAAO;AACJ,eAAOy/C;AAAAA,MACP;AAAA,IACD;AAAA,EACF;AAEA,WAASG;AACR,QAAGtuD,WAAU2mB,uBAAuB3mB,WAAUuuD,mBAAAA,GAAqB;AAClE;AAAA,IACA;AAED,QAAIC,aAAaL;AACjBA,2BAAuBz/C;AACvBu/C,yBAAqBv/C;AACrB,QAAI+/C,aAAaL,wBAAAA;AAIjB,QAAGI,eAAeC,cAAczuD,WAAUqE,cAAcrE,WAAUsG,WAAWxG,MAAK;AACjFE,MAAAA,WAAU8X,eAAAA;AAAAA,IACV;AAAA,EACF;AACA9X,EAAAA,WAAU6B,MAAMP,QAAQ,oBAAoBgtD;AAC5CtuD,EAAAA,WAAU6B,MAAMP,QAAQ,QAAQgtD;AAEhCtuD,EAAAA,WAAUuuD,qBAAqB;AAC9B,WAAOH,wBAAAA;AAAAA,EACR;AAEApuD,EAAAA,WAAU0uD,aAAa,SAASplB,KAAKx3B,MAAM+6C,MAC1C;AAAA,aAASt3C,OAAOzD;AACf,iBAAWw3B,IAAI/zB,GAAAA,KAAQ;AACtB+zB,YAAI/zB,OAAOzD,KAAKyD,GAAAA,EAAKs3C;EACxB;AAEA7sD,EAAAA,WAAU2uD,UAAU,SAASjwC,OAAAA;AAC5Bre,SAAKwsD,OAAOnuC;AACZ1e,IAAAA,WAAU4sD,eAAAA;AACV,QAAG5sD,WAAUqE,YAAW;AACvBhE,WAAK6kB,WAAAA;AACL7kB,WAAKoH,OAAAA;AAAAA,IACL;AAAA,EAGF;AAEA,WAASmnD,kBAAkBprD,MAC1B;AAAA,QAAImL,MAAMnL,KAAKwK,WAAAA;AACfW,UAAMA,MAAM,KAAK,MAAIA,MAAMA;AAC3B,QAAIpL,OAAO,+BAA8BC,KAAKkJ,SAAAA,IAAY,4CACrBiC,MAAK;AAC1C,WAAOpL;AAAAA,EACR;AAEA,MAAIsrD,oBAAoB;AACxB,WAASvB,qBAAAA;AACR,UAAMzhD,YAAY7L,WAAUqE;AAE5ByqD,kBAAcD,iBAAAA;AACd,QAAGhjD,WAAU;AACZgjD,0BAAoBE,YAAY;AAC/B,cAAMC,WAAWvtC,iBAAiB5V,SAAW6V,EAAAA,iBAAiB;AAC9D,YAAGstC,YAAYA,aAAahvD,WAAU6sD,MAAK;AAC1C7sD,UAAAA,WAAU2uD,QAAQK,QAClB;AAAA,QAAA;AAAA,MAAA,GAEC;IACH;AAAA,EACF;AACAhvD,EAAAA,WAAUiG,YAAY,aAAa,WAClC6oD;AAAAA,kBAAcD;EACf,CAEA7uD;AAAAA,EAAAA,WAAUklB,aAAa,WACtB7kB;AAAAA,SAAKgtD,iBAEL;AAAA,QAAA,CAAKhtD,KAAKwsD,MAAK;AACdxsD,WAAKwsD,OAAOxsD,KAAKwtD,YAAYC;AAAAA,IAC7B;AACD9tD,IAAAA,WAAU4sD,eAAAA;AACV,QAAI5sD,WAAU6sD,SAAS,QAAO;AAE7B7sD,MAAAA,WAAU2zB,UAAU0E,aAAau2B;AAAAA,IACjC,WAAS5uD,WAAU2zB,UAAU0E,eAAeu2B,mBAAkB;AAC9D5uD,MAAAA,WAAU2zB,UAAU0E,aAAar4B,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOguC,SAAAA;AAAAA,IAC7E;AAKD/vC,IAAAA,WAAUiG,YAAY,oBAAoB,WAEzC;AAAA,UAAIkoC,cAAcnuC,WAAUwD,KAAK2qC,YAAY,IAAA;AAC7C,WAAInuC,WAAU2zB,UAAUs7B,gBAAe;AACtCjvD,QAAAA,WAAU2zB,UAAUs7B,iBAAiBjvD,WAAU2zB,UAAUgG;AAAAA,MACzD;AACD,UAAIu1B,gBAAgBlvD,WAAU2zB,UAAUs7B;AACxCjvD,MAAAA,WAAU2zB,UAAUgG,YAAY,SAASn2B,MAAAA;AACxC,YAAInD,KAAK4M,SAAS,SAAS;AAC1B,cAAI6a,QAAQqmB,YAAY3qC;AACxB,cAAIA,KAAKiG,aAAa,GAAG;AACxBqe,oBAAQ9nB,WAAU+nB,OAAOvkB,KAAK0oC,WAAW1oC,KAAKyV,SAAc,CAAA,IAAA,MAAM6O;AAAAA,UAClE;AACD,cAAA,CAAKtkB,SAASxD,WAAUwD,KAAKyF,UAAU5I,KAAKiM,iBAAiB;AAC5Dwb,oBAAQ9nB,WAAU+nB,OAAOC,OAAO2C,uBAAuB,MAAM7C;AAAAA,UAC7D;AACD,iBAAOA;AAAAA,QACX,OAAU;AACN,iBAAOonC,cAAcz4C,KAAKpW,MAAMmD,IAChC;AAAA,QAAA;AAAA,MACJ;AAGE,UAAGxD,WAAU+B,OAAOqb,kBAAiB;AACpC,cAAMrd,OAAOC,WAAUoM,KAAK,iBAAA,EAAmB,CAAG9H,EAAAA,iBAAiB;AACnEvE,aAAKiE,QAAS2wB;AACb,gBAAM7oB,OAAO6oB,IAAI7vB,aAAa,UAAA,KAAe6vB,IAAI7vB,aAAa;AAE9D,kBAAQgH,MAAAA;AAAAA,YACP,KAAK;AAAA,YACL,KAAK;AACJ6oB,kBAAI5X,UAAUtZ,IAAI,mBAAA;AAClBkxB,kBAAI5X,UAAUtZ,IAAI;AAClB;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AACJkxB,kBAAI5X,UAAUtZ,IAAI,uBAClB;AAAA;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AACJkxB,kBAAI5X,UAAUtZ,IAAI,kBAAA;AAClBkxB,kBAAI5X,UAAUtZ,IAAI;AAClB;AAAA,YACD;AACCkxB,kBAAI5X,UAAUtZ,IAAI,wBAClB;AAAA;AAAA,UAAA;AAAA,QACD;AAGF0rD,oBAAYnvD,WAAUoM,KAAK,iBAAmB,EAAA,CAAA,CAAA;AAAA,MAE9C;AAAA,IACH,GAAI,EAACqW,MAAM,KAAA,CAAA;AAEV,aAAS0sC,YAAYtjD,WAAAA;AAGpB,UAAG7L,WAAU+B,OAAOoiB,QAAO;AAC1B;AAAA,MAEA;AACD,YAAMpkB,OAAOqO,MAAMinB,KAAKxpB,UAAUvH,iBAAiB,cAAA,CAAA;AAGnD,YAAM+M,QAAQ,CAAC,OAAO,QAAQ;AAE9B,YAAM+9C,cAAc/9C,MAAMvL,IAAIupD,aAC7BtvD,KAAKuvD,KAAK36B,SAAOA,IAAI7vB,aAAa,gBAAgBuqD,OACjDna,CAAAA,EAAAA,OAAOvgB,SAAOA,QAAQjmB,MAAAA;AAExB,UAAI6gD,WAAWxvD,KAAK0E,SAAS,IAAI1E,KAAK,CAAK,IAAA;AAE3CqvD,kBAAYI,QAAUxrD,EAAAA,QAAQ2wB;AAC7B9oB,kBAAU+a,aAAa+N,KAAK46B,QAAAA;AAC5BA,mBAAW56B;AAAAA,MAAG,CAAA;AAAA,IAEf;AAAA,EAMF;AAIA;ACjUe,SAASzZ,SAAOlb,YAAAA;AAE/B,MAAIsB,OAAOmuD,QAAO;AAElB,KAAA,SAAWC;AACV,UAAIC,UAAU;AACd,UAAI15C,UAAU,CACdy5C;AAAAA,QAAEE,GAAGC,gBAAgB,SAAS9tD;AAC7B,YAAW,OAAA,WAAY,UAAU;AAChC,cAAIkU,QAAQlU,MAAAA,GAAU;AACrB,mBAAOkU,QAAQlU,QAAQ0M,MAAMpO,MAAM;UACvC,OAAS;AACLqvD,cAAE74C,MAAM,YAAa9U,SAAS,yCAAA;AAAA,UAC9B;AAAA,QACJ,OAAS;AACN,cAAIwiB,QAAQ,CAAA;AACZlkB,eAAKyvD,KAAK;AACT,gBAAIzvD,QAAQA,KAAKyE,cAAa;AAC7B,mBAAKzE,KAAKyE,aAAa,cAAgB,GAAA;AACtC,oBAAI2V,OAAO;AACX,oBAAIk1C,SAAQ;AACXl1C,yBAAO,eAAek1C,UAAQ;AAC9BruD,yBAAOmZ,QAAQs1C,UAAUC,qBAAAA;AAAAA,gBACzB;AACD,oBAAIC,OAAQ3uD,OAAOmZ,IAEnBpa;AAAAA,qBAAK8c,aAAa,gBAAgB1C;AAClC,yBAASlF,OAAOxT;AACf,sBAAIwT,OAAK;AACR06C,yBAAKluD,OAAOwT,GAAAA,IAAOxT,OAAOwT,GAE5B;AAAA,oBAAA,CAAKlV,KAAKsnB,qBAAqB,KAAA,EAAOljB,QAAO;AAC5CpE,uBAAKE,YAAY;AACjBF,uBAAK6Q,aAAa;AAAA,gBAClB;AACD++C,qBAAK9uD,KAAKd,MAAM4vD,KAAKluD,OAAOyB,MAAMysD,KAAKluD,OAAOjC,IAC9C;AAAA,oBAAIiC,OAAO+P;AACVm+C,uBAAK3nB,MAAMvmC,OAAO+P,IAAAA;AAEnByS,sBAAMrgB,KAAK+rD;AACXN;AAAAA,cACA;AACAprC,sBAAMrgB,KAAK5C,OAAOjB,KAAKyE,aAAa,cAAA,CAAA,CAAA;AAAA,YACrC;AAAA,UACL,CAAA;AAEG,cAAIyf,MAAM9f,WAAW;AAAG,mBAAO8f,MAAM;AACrC,iBAAOA;AAAAA,QACP;AAAA,MACH;AAAA,IAKC,GAAEjjB,OAAOmuD;EAEV;AAEA;ACxDe,SAASv0C,SAAOlb,YAAAA;AAAAA,GAE/B,WAEC;AAAA,QAAI8X,iBAAiB9X,WAAU8X,gBAC9B7W,aAAajB,WAAUiB;AACxB,QAAIivD,oBAAoB,MACvBC,kBAAkB;AAEnB,QAAIC,sBAAsB,SAAS5sD,MAAM1D,MACxC;AAAA,UAAIuwD,OAAOhwD;AACXkB,eAAOoY,aAAaw2C,eAAAA;AACpB5uD,eAAOoY,aAAau2C,iBAAAA;AAEpB,UAAII,UAAUD,KAAKn7C,OAClBq7C,UAAUF,KAAKpjD;AAChBujD,kBAAYnwD,MAAMmD,MAAM1D,IAAAA;AAExBqwD,wBAAkBz2C,WAAW,WAAA;AAE5B,YAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,QACA;AAED,YAAKuvC,CAAAA,KAAKplD,UAAU,sBAAsB,CAACslD,SAASD,SAASxwD,QAAQuwD,KAAKpjD,OAAOzJ,QAAQ6sD,KAAKn7C,KAAAA,CAAAA,GAAQ;AACrGs7C,sBAAYH,MAAMC,SAASC,OAC3B;AAAA;AAAA,QACA;AAEDtvD,mBAAWwV,KAAK45C,MAAM7sD,MAAM1D;AAC5BuwD,aAAKplD,UAAU,gBAAgB,CAAColD,KAAKpjD,OAAOojD,KAAKn7C;AAEjD3T,iBAAOoY,aAAau2C;AACpBC,0BAAkB;AAAA,MACrB,GAAKnwD,WAAU+B,OAAO4vC,YACtB;AAAA,IAAA;AACC,QAAI8e,kBAAkB,SAASjtD,MAAM1D,MACpC;AAAA,UAAIuwD,OAAOhwD,MACVqwD,MAAMp8C;AAEPk8C,kBAAYnwD,MAAMmD,MAAM1D,IAAAA;AAExByB,eAAOoY,aAAau2C,iBAAAA;AACpBA,0BAAoBx2C,WAAW,WAAA;AAC9B,YAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,QACA;AAED,YAAGqvC;AACF;AAEDlvD,mBAAWwN,MAAM4hD,MAAMK,GAAAA;AAAAA,MAC1B,GAAK1wD,WAAU+B,OAAO4vC;IACtB;AACC,aAAS6e,YAAYxwD,YAAWwD,MAAM1D,MACrC;AAAA,UAAG0D;AACFxD,QAAAA,WAAUkV,QAAQ1R;AACnB,UAAG1D;AACFE,QAAAA,WAAUiN,QAAQnN;AAAAA,IAEnB;AACDE,IAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzC,UAAGjG,WAAU+B,OAAO4vC,cAAa;AAChC3xC,QAAAA,WAAU8X,iBAAiBs4C;AAC3BpwD,QAAAA,WAAUiB,aAAawvD;AAAAA,MAC1B,OAAO;AACJzwD,QAAAA,WAAU8X,iBAAiBA;AAC3B9X,QAAAA,WAAUiB,aAAaA;AAAAA,MACvB;AAAA,IACH,CAEC;AAAA,EAAA;AAED;AC3Ee,SAAS0vD,oBAAoB3wD,YAAW4wD,IAAAA;AACtDvwD,OAAKwwD,aAAa7wD;AAClBK,OAAKywD,MAAMF;AACXvwD,OAAK0wD,yBAAyB;AAE9B1wD,OAAKkoB,SAAS,WACb;AAAA,QAAIqoC,MAAKvwD,KAAKywD;AACd,QAAI9wD,aAAYK,KAAKwwD;AAErBxwD,SAAK0wD,uBAAuB7sD,KAAKlE,WAAUiG,YAAY,gBAAgB,SAAS7F;AAC/E,UAAKC,CAAAA,KAAKmsB,YAAYnsB,KAAK2wD,SAAS5wD,GACpCwwD;AAAAA,QAAAA,IAAGK,WAAW7wD,KAAG,MAAK;IACtB,CAEDC,CAAAA;AAAAA,SAAK0wD,uBAAuB7sD,KAAKlE,WAAUiG,YAAY,gCAAgC,SAAS7F,KAC/F;AAAA,UAAA,CAAKC,KAAK2wD,SAAS5wD,GAAAA;AAAK;AACxB,UAAI8wD,IAAEN,IAAGtqD,SAASlG;AAElB,UAAI8wD,KAAG,cAAc7wD,KAAKqpB,YAAY;AAAEknC,QAAAA,IAAGK,WAAW7wD,KAAG;AAAQ,eAAO;AAAA,MAAO;AAC/E,UAAI8wD,KAAG;AAAW,eAAO;AACzB,UAAIA,KAAG;AAAgB,eAAO;AAE9BN,MAAAA,IAAGK,WAAW7wD,KAAG,MAAK,SACtB;AAAA,aAAO;AAAA,IACP,CAAA,CAAA;AAEDC,SAAK0wD,uBAAuB7sD,KAAKlE,WAAUiG,YAAY,kBAAkB,SAAS7F,KACjF;AAAA,UAAA,CAAKC,KAAKmsB,YAAYnsB,KAAK2wD,SAAS5wD,GAAAA;AACpCwwD,QAAAA,IAAGK,WAAW7wD,KAAG,MAAK,SACtB;AAAA,IAAA,CAAA,CAAA;AAEDC,SAAK0wD,uBAAuB7sD,KAAKlE,WAAUiG,YAAY,cAAc,WAEpE2qD;AAAAA,MAAAA,IAAGO,eAAa;AAChBP,MAAAA,IAAGQ,WAAS;AACZR,MAAAA,IAAGS,cAAc,CACjBT;AAAAA,MAAAA,IAAGU,YAAY;AAAA,IACf,CAAA,CAAA;AAEDV,IAAAA,IAAG3qD,YAAY,kBAAkBjG,WAAUuxD,gBAAAA;AAC3CX,IAAAA,IAAG3qD,YAAY,kBAAkBjG,WAAUuxD,gBAC3CX;AAAAA,IAAAA,IAAG3qD,YAAY,kBAAkB,SAASurD,KAAKpxD,KAAAA;AAC9C,UAAIJ,WAAUmG,SAAS/F,MAAI;AAC1BJ,QAAAA,WAAUyxD,YAAYrxD,KAAIC,KAAKqxD,cAAc,cAAA;AAC7C1xD,QAAAA,WAAUqrB,YAAYjrB,GAAAA;AAAAA,MAC1B,WAAcJ,WAAU2xD;AACpB3xD,QAAAA,WAAUuxD,iBAAiBC,KAAKpxD,GAAAA;AAAAA,IACpC;EACA;AAECC,OAAKw8B,SAAS,WACb;AAAA,aAAStnB,OAAOlV,KAAK0wD,wBAAwB;AAC5C,UAAI7yC,UAAU7d,KAAK0wD,uBAAuBx7C,GAC1ClV;AAAAA,WAAKwwD,WAAWttC,YAAYrF;IAC5B;AACD7d,SAAK0wD,yBAAyB,CAChC;AAAA,EAAA;AACA;AAEO,SAASa,gBAAgB5xD,YAAW4wD,IAAAA;AAC1C5wD,EAAAA,WAAUgxD,WAAS,SAAS5wD;AAC3B,QAAGC,KAAKwxD,mBAAkB;AACzB,aAAA,CAAQxxD,KAAKwxD,kBAAkBzxD;IAC/B;AACD,WAAO;AAAA,EACT;AACCJ,EAAAA,WAAUyxD,cAAY,SAASrxD,KAAGqa,MAAKiE,OAAAA;AACtC,QAAIte,KAAG;AACN,UAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,UAAGyG;AAAIA,WAAG4T,QAAMiE;AAAAA,IACnB,OAAO;AACJre,WAAK2/C,UAAUvlC,QAAMiE;AAAAA,IACrB;AAAA,EACH;AACC1e,EAAAA,WAAU8xD,cAAY,SAAS1xD,KAAGqa;AACjC,QAAIra,KAAG;AACN,UAAIyG,KAAKxG,KAAK8F,SAAS/F;AACvB,UAAGyG;AACF,eAAOA,GAAG4T,IAAAA;AAAAA;AAEV,eAAO;AAAA,IACX,OAAO;AACJ,aAAOpa,KAAK2/C,UAAUvlC,IAAAA;AAAAA,IACtB;AAAA,EACH;AACCza,EAAAA,WAAU+xD,wBAAsB,SAAS3xD,KAAGuC,OAC3C;AAAA,QAAA,CAAI3C,WAAUmG,SAAS/F,GAAAA;AACtB;AACDC,SAAK6xB,aAAa9xB,KAAG,SAAS+xB,GAAAA;AAC7BA,QAAExvB,MAAMi5C,WAAS,MAAIj5C;AAAAA,IACxB;AACE,QAAIkE,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvByG,OAAG,aAAA,IAAelE;AAClBtC,SAAKuzC,cAAc/sC;EACrB;AACC7G,EAAAA,WAAUuxD,mBAAmB,SAASC,KAAIpxD,KACzC;AAAA,QAAI0R,OAAO9R,WAAU+/C,eAAeyR,IAAI9wD,UAExC;AAAA,QAAIoR,KAAK7H,YAAY;AAAQ6H,WAAKkgD,cAAc;AAChDlgD,SAAK3K,OAAO2K,KAAK3K,QAAM2K,KAAK6wC;AAC5B7wC,SAAK1O,aAAapD,WAAU8xC,SAASC,UAAUjgC,KAAK1O,UAAAA;AACpD0O,SAAKzO,WAAWrD,WAAU8xC,SAASC,UAAUjgC,KAAKzO,QAClDrD;AAAAA,IAAAA,WAAUwH,SAASsK,IACnB;AAAA,QAAI9R,WAAU2xD;AACb3xD,MAAAA,WAAU8X;EACb;AACC9X,EAAAA,WAAUiyD,sBAAsB,SAAS7xD,KAAI8zC,QAC5C;AAAA,QAAA,CAAIl0C,WAAUmG,SAAS/F,GAAAA;AACtB;AACDJ,IAAAA,WAAUi0C,cAAc7zC,KAAI8zC,MAAAA;AAAAA,EAC9B;AACCl0C,EAAAA,WAAUkyD,kBAAkB,SAAS9xD,KAAI8zC,QAAAA;AACxC,SAAIl0C,WAAUmG,SAAS/F,GACtB;AAAA;AAED,QAAG8zC,UAAU9zC,OAAM8zC,QAAO;AACzB,UAAG7zC,KAAKyxD,YAAY1xD,KAAIwwD,GAAGc,YAAAA,KAAiB;AAC3CrxD,aAAKoxD,YAAYrxD,KAAIwwD,GAAGc,cAAc;AAEvCrxD,WAAK4zC,cAAc7zC,KAAI8zC,MAAAA;AAAAA,IACvB;AACD,WAAO7zC,KAAKgrB,YAAY6oB,QAAQ,IAAA;AAAA,EAClC;AAECl0C,EAAAA,WAAUmyD,QAAQ,WACjB9xD;AAAAA,SAAK+W,MAAMw5C;AAAAA,EACb;AACC5wD,EAAAA,WAAUmyD,MACX;AAAA;ACtHO,SAASC,cAAcC,oBAAAA;AAC7BhyD,OAAKiyD,kBAAkBD;AACvBhyD,OAAKqxD,eAAe;AAEpBrxD,OAAK6Z,SAAS;AACd7Z,OAAKgxD,cAAc,CAEnBhxD;AAAAA,OAAKkyD,aAAa;AAClBlyD,OAAKgX,aAAa;AAClBhX,OAAKmyD,SAAS;AACdnyD,OAAKoyD,WAAW;AAChBpyD,OAAKqyD,WAAW;AAChBryD,OAAKsyD,aAAa;AAElBtyD,OAAKixD,YAAY;AACjBjxD,OAAK8wD,eAAe;AACpB9wD,OAAK+wD,WAAW;AAChB/wD,OAAKuyD,WAAW,CAAA;AAEhBvyD,OAAKktD,SAAS,EACbsF,SAAS,qBACTC,UAAU,qBACVC,SAAS,mCACTC,SAAS,4BACTC,cAAc,gCACdp8C,OAAO,cACP+L,OAAO;AAERviB,OAAK6yD,kBAAkB;AACvBvvC,gBAAUtjB,IAAAA;AAEV,SAAOA;AACR;AACA+xD,cAAc15C,YAAY,EACzBy6C,oBAAoB,SAAUrzD,MAAMszD,OACnC;AAAA,MAAA,OAAWtzD,QAAQ,UAAU;AAC5BO,SAAKmyD,SAAS1yD,KAAKA,QAAQO,KAAKmyD;AAEhC,QAAI1yD,KAAKooC,YAAYx5B,QAAW;AAC/BrO,WAAKoyD,WAAW3yD,KAAKooC;AAAAA,IACrB;AAED,QAAIpoC,KAAKsiC,YAAY1zB,QAAW;AAC/BrO,WAAKqyD,WAAW5yD,KAAKsiC;AAAAA,IACrB;AACD/hC,SAAKgzD,WAAWD;AAAAA,EACnB,OAAS;AACN/yD,SAAKmyD,SAAS1yD;AACdO,SAAKgzD,SAASD;AAAAA,EACd;AAED,MAAI/yD,KAAKmyD,UAAU,QAAQ;AAC1BnyD,SAAKgzD,SAAS;AACdhzD,SAAKizD,SAAS;AAAA,EACd;AAED,MAAIjzD,KAAKmyD,WAAW,UAAUnyD,KAAKmyD,WAAW,aAAa;AAC1DnyD,SAAKgzD,SAAS;AACdhzD,SAAKizD,SAAS;AACdjzD,SAAKkzD,mBAAmB;AACxBlzD,SAAKoyD,WAAWpyD,KAAKoyD,YAAY,CAAA;AACjCpyD,SAAKoyD,SAAS,cAAA,IAAkB;AAAA,EACnC,OAAO;AACJ,QAAGpyD,KAAKoyD,YAAAA,CAAapyD,KAAKoyD,SAAS,cAAA,GAAgB;AAClDpyD,WAAKoyD,SAAS,cAAkB,IAAA;AAAA,IAChC;AAAA,EACD;AAED,MAAIpyD,KAAKmyD,WAAW,UAAU;AAC7BnyD,SAAKgzD,SAAS;AACdhzD,SAAKizD,SAAS;AACdjzD,SAAKmzD,UAAU1zD,KAAK2zD;AAAAA,EACpB;AACD,GACDC,QAAQ,SAAU5hD,MAAAA;AACjB,MAAIzR,KAAKszD;AACR,WAAO9rB,mBAAmB/1B,IAAAA;AAAAA;AAE1B,WAAO4hD,OAAO5hD;AACf,GAMDohD,mBAAmB,SAAUpzD,MAC5BO;AAAAA,OAAKszD,SAAS7zD;AACd,GAMD8zD,gBAAgB,SAAUrsC;AACzBlnB,OAAKwzD,WAAAA,OAAmBtsC,OAAO,WAAYA,IAAI5hB,MAAM,GAAO4hB,IAAAA;AAC5D,GAMDusC,cAAc;AACb,SAAQzzD,CAAAA,KAAKgxD,YAAY5sD;AACzB,GAMDsvD,iBAAiB,SAAUj0D,MAAAA;AAC1BO,OAAKizD,SAAAA,CAAAA,CAAWxzD;AAChB,GAMDk0D,uBAAuB,SAAUl0D,MAChCO;AAAAA,OAAKg0C,aAAav0C;AAClB,GAMDyX,eAAe,SAAUzX,MAAMwrD,KAC9BjrD;AAAAA,OAAKkyD,aAAczyD,QAAQ;AAC3BO,OAAKgX,aAAavX;AAClBO,OAAKirD,MAAMA;AACX,GACD3yB,QAAQ,SAAU6S,MAAMyoB,QAAAA;AACvB5zD,OAAK4hB,eAAe;AACpBupB,OAAK/0B,KAAKw9C,UAAU3yD,MACpBjB;AAAAA,OAAK4hB,eAAe;AACpB,GAQDgvC,YAAY,SAAUiD,OAAO93B,OAAOt8B,MAAAA;AACnC,MAAIO,KAAK4hB;AAAc;AACvB,MAAIyhB,MAAMrjC,KAAK8zD,QAAQD,KAAAA;AAEvBp0D,SAAOA,QAAQ;AACf,MAAIs0D,WAAW/zD,KAAKwwD,WAAWiB,YAAYoC,OAAO7zD,KAAKqxD,YAAAA;AACvD,MAAI0C,YAAYt0D,QAAQ;AAAWA,WAAOs0D;AAC1C,MAAIh4B,OAAO;AACV/7B,SAAKg0D,YAAYH,OAAO,KAAA;AACxB7zD,SAAKgxD,YAAY3tB,GAAAA,IAAOwwB;AACxB7zD,SAAKwwD,WAAWY,YAAYyC,OAAO7zD,KAAKqxD,cAAc5xD,IAAAA;AACtD,QAAIO,KAAK8wD,aAAa+C;AACrB7zD,WAAK8wD,aAAa+C,SAAS;AAAA,EAC/B,OAAS;AACN,QAAA,CAAK7zD,KAAKi0D,WAAWJ,KAAAA,GAAQ;AAC5B7zD,WAAKgxD,YAAY59C,OAAOiwB,KAAK,CAAA;AAC7BrjC,WAAKwwD,WAAWY,YAAYyC,OAAO7zD,KAAKqxD,cAAc,EAAA;AAAA,IACtD;AAAA,EACD;AAEDrxD,OAAKk0D,QAAQL,OAAO93B,OAAOt8B,IAC3B;AAAA,MAAIs8B,SAAS/7B,KAAKkyD;AAAYlyD,SAAK6X,SAASg8C,KAAAA;AAC5C,GAEDK,SAAS,SAAUn0D,KAAIg8B,OAAOt8B;AAC7B,MAAIs3B,MAAM;AACV,MAAI47B,UAAU3yD,KAAKi0D,WAAWl0D;AAC9B,MAAI4yD,SAAS;AACZ57B,UAAM/2B,KAAKktD,OAAOyF,OAClB52B;AAAAA,YAAQ;AAAA,EACR;AACD,MAAI/7B,KAAK4K,UAAU,aAAa,CAAC7K,KAAIg8B,OAAOt8B,MAAMkzD,OAAAA,CAAAA,GAAW;AAE5D57B,UAAM/2B,KAAKktD,OAAOnxB,QAAQt8B,OAAO,OAAWs3B,IAAAA;AAE5C/2B,SAAKwwD,WAAWxwD,KAAKm0D,SAAS,CAAA,CAAA,EAAIp0D,KAAIg3B,GAEtC;AAAA,QAAI47B,WAAWA,QAAQtnC,SAAS;AAC/B0L,aAAO/2B,KAAKktD,OAAOyF,UAAU;AAC7B,eAASxuD,IAAI,GAAGA,IAAIwuD,QAAQtnC,QAAQjnB,QAAQD;AAC3C,YAAIwuD,QAAQtnC,QAAQlnB,CAAAA;AACnBnE,eAAKwwD,WAAWxwD,KAAKm0D,SAAS,CAAIp0D,CAAAA,EAAAA,KAAIoE,GAAG4yB,GAAAA;AAAAA,IAC3C;AAAA,EACD;AACD,GACDq9B,kBAAkB,SAASr4B,OAAAA;AAC1B,MAAIA,UAAU,YAAY;AACzB,WAAO;AAAA,EACP;AACD,MAAIA,UAAU,WAAW;AACxB,WAAO;AAAA,EACP;AACD,MAAIA,UAAU,WAAW;AACxB,WAAO;AAAA,EACP;AACD,SAAO;AACP,GAED91B,UAAU,SAAUlG,KAAAA;AACnB,SAAOC,KAAKwwD,WAAWiB,YAAY1xD,KAAIC,KAAKqxD;AAC5C,GACD4C,YAAY,SAAUl0D,KAAAA;AACrB,SAAOC,KAAK+wD,SAAShxD;AACrB,GACDi0D,aAAa,SAAUj0D,KAAIN,MAAM4rB,SAChC;AAAA,MAAIA;AAAS5rB,WAAO,EACnB4e,OAAO5e,MAAM4rB,SAAkB/S,UAAU,WAAA;AACxC,aAAOtY,KAAKqe,MAAM/F,SAClB;AAAA,IAAA,EAAA;AAEFtY,OAAK+wD,SAAShxD,GAAAA,IAAMN;AACpB,GAMD40D,mBAAmB,SAAUR,OAAAA;AAC5B,SAAO;AACP,GAMDh8C,UAAU,SAAUg8C,OAAAA;AACnB,MAAI7zD,KAAKwwD,WAAWznC;AAAU/oB,SAAKwwD,WAAWznC,SAE9C;AAAA,MAAA,OAAW8qC,SAAS,eAAe7zD,KAAKgzD;AAAQ,WAAOhzD,KAAKs0D,YAC5D;AAAA,MAAIt0D,KAAK8wD,aAAa+C,KAAAA;AAAQ,WAAO;AAErC7zD,OAAKuyD,WAAW,CAChB;AAAA,MAAA,CAAKvyD,KAAKq0D,kBAAkBR,UAAU7zD,KAAK4K,UAAU,qBAAqB,CAACipD,OAAO7zD,KAAKuyD,QAAY,CAAA;AAAA,WAAO;AAC1GvyD,OAAKu0D,gBAAgBv0D,KAAKw0D,YAAYX,QAAQA,KAC9C;AAAA,GACDU,iBAAiB,SAAU9iD,MAAMoiD,OAChC;AAAA,MAAA,CAAK7zD,KAAK4K,UAAU,kBAAkB,CAACipD,OAAO7zD,KAAKiG,SAAS4tD,KAAQpiD,GAAAA,IAAAA,CAAAA;AAAQ,WAAO;AACnFzR,OAAKy0D,UAAUhjD,MAAMoiD;AACrB,GACD/rB,WAAW,SAAUr2B,MAAM1R,KAAAA;AAC1B,MAAIC,KAAKkzD,kBAAkB;AAC1B,WAAQlzD,KAAK00D,iBAAiBjjD,IAAAA;AAAAA,EAC9B;AAED,MAAWA,OAAAA,QAAQ;AAClB,WAAOA;AACR,MAAW1R,OAAAA,OAAM;AAChB,WAAOC,KAAK20D,cAAcljD,MAAM,EAAA;AAAA,OAC5B;AACJ,QAAIkjC,QAAQ,CACZ;AAAA,QAAI5uB,OAAO,CACX;AAAA,aAAS7Q,OAAOzD;AACf,UAAIA,KAAK7C,eAAesG,GAAM,GAAA;AAC7By/B,cAAM9wC,KAAK7D,KAAK20D,cAAcljD,KAAKyD,GAAAA,GAAMA,MAAMlV,KAAKsyD;AACpDvsC,aAAKliB,KAAKqR;MACV;AACFy/B,UAAM9wC,KAAK,SAAS7D,KAAKqzD,OAAOttC,KAAKjW,KAAK,GAC1C,CAAA,CAAA;AAAA,QAAI9P,KAAKwwD,WAAWrR;AACnBxK,YAAM9wC,KAAK,kBAAmB7D,KAAKwwD,WAAuB;AAC3D,WAAO7b,MAAM7kC,KAAK,GAClB;AAAA,EAAA;AACD,GACD6kD,eAAe,SAAUljD,MAAMmjD,MAAAA;AAC9B,aAAWnjD,QAAQ;AAClB,WAAOA;AACR,MAAIkjC,QAAQ,CACZ;AAAA,MAAIpN,aAAa;AACjB,WAASryB,OAAOzD;AACf,QAAIA,KAAK7C,eAAesG,GAAM,GAAA;AAC7B,WAAKA,OAAO,QAAQA,OAAOlV,KAAKqxD,iBAAiBrxD,KAAKmyD,UAAU;AAAQ;AACxE,UAAA,OAAW1gD,KAAKyD,GAAAA,MAAS,mBAAmBzD,KAAKyD,GAAAA,MAAS,UAAU;AACnEqyB,qBAAa91B,KAAKyD,GACvB;AAAA,MAAA,OAAW;AACNqyB,qBAAa7iB,KAAKC,UAAUlT,KAAKyD;MACjC;AACDy/B,YAAM9wC,KAAK7D,KAAKqzD,QAAQuB,QAAQ,MAAM1/C,OAAO,MAAMlV,KAAKqzD,OAAO9rB,UAC/D,CAAA;AAAA,IAAA;AACF,SAAOoN,MAAM7kC,KAAK,GAClB;AAAA,GACD+kD,eAAe,SAAUltB,MAAAA;AACxB,MAAII,OAAO/nC,KAAKwwD,WAAWzoB;AAC3B,MAAI/nC,KAAKqyD;AACR,aAASn9C,OAAOlV,KAAKqyD;AACpB1qB,MAAAA,OAAMA,OAAMI,KAAK8C,aAAalD,IAAO3nC,IAAAA,KAAKqzD,OAAOn+C,GAAO,IAAA,MAAMlV,KAAKqzD,OAAOrzD,KAAKqyD,SAASn9C,GAC1F,CAAA;AAAA,SAAOyyB;AACP,GACD8sB,WAAW,SAAUK,YAAYjB;AAChC,MAAKiB,CAAAA,YAAY;AAChB;AAAA,EACA;AACD,MAAK90D,CAAAA,KAAK4K,UAAU,uBAAuBipD,QAAQ,CAACA,OAAO7zD,KAAKiG,SAAS4tD,KAAQiB,GAAAA,UAAAA,IAAc,CAAC,MAAM,MAAMA,UAAc,CAAA,GAAA;AACzH,WAAO;AAAA,EACP;AAED,MAAIjB,OAAO;AACV7zD,SAAK8wD,aAAa+C,UAAS,oBAAKrvD,QAAQO;EACxC;AAED,MAAIirD,OAAOhwD;AACX,MAAI+nC,OAAO/nC,KAAKwwD,WAAWzoB;AAE3B,MAAI/nC,KAAKmyD,WAAW,UAAU;AAC7B,QAAIp2B,QAAQ/7B,KAAKiG,SAAS4tD;AAC1B,QAAI1L,SAASnoD,KAAKo0D,iBAAiBr4B,KAAAA;AACnC,QAAIg5B,0BAA0B,SAAU5I,KACvC;AAAA,UAAI6I,cAAcj5B;AAClB,UAAGowB,OAAOA,IAAI9vC,gBAAgB8vC,IAAIzhB,kBAAiB;AAClD,YAAGyhB,IAAI1jB,WAAW,KAAI;AACrBusB,wBAAc;AAAA,QACd;AACD;AACC7I,gBAAMznC,KAAKujB,MAAMkkB,IAAI9vC;QAC3B,SAAcxW;QAAI;AAAA,MACb;AAEDmvD,oBAAcA,eAAe;AAC7B,UAAIC,MAAMpB;AACV,UAAIqB,MAAMrB;AAEV,UAAI1H,KAAK;AACR6I,sBAAc7I,IAAIhE,UAAU6M;AAC5BC,cAAM9I,IAAI8I,OAAOA;AACjBC,cAAM/I,IAAIpsD,MAAMosD,IAAI+I,OAAOA;AAAAA,MAC3B;AACDlF,WAAKmF,oBAAoBF,KAAKC,KAAKF,aAAa7I,GAAAA;AAAAA,IACpD;AAEG,UAAMiJ,aAAa;AACnB,QAAIC;AACJ,QAAIr1D,KAAKmzD,mBAAmB/6C,UAAU;AACrCi9C,sBAAgBr1D,KAAKmzD,QAAQiC,YAAYjN,QAAQ2M,YAAYjB,KACjE;AAAA,IAAA,OAAU;AACN,cAAQ93B,OAAAA;AAAAA,QACP,KAAK;AACJs5B,0BAAgBr1D,KAAKmzD,QAAQiC,YAAYj7B,OAAO26B,UAAAA;AAChD;AAAA,QACD,KAAK;AACJO,0BAAgBr1D,KAAKmzD,QAAQiC,UAAYzqC,EAAAA,OAAOkpC;AAChD;AAAA,QACD;AACCwB,0BAAgBr1D,KAAKmzD,QAAQiC,YAAYE,OAAOR,YAAYjB,KAC5D;AAAA;AAAA,MAAA;AAAA,IAEF;AAED,QAAGwB,eAAc;AAEhB,UAAIA,CAAAA,cAAcE,SAChBF,cAAct1D,OAAOsO,UAAagnD,cAAcH,QAAQ7mD,UAAagnD,cAAclN,WAAW95C,SAAW;AAC1G,cAAM,IAAI4D,MAAM,2EAChB;AAAA,MAAA;AAED,UAAGojD,cAAcE,MAAK;AACrBF,sBAAcE,KAAKR,yBAAyBS,MAAM,SAASh/C,OAC1D;AAAA,cAAGA,SAASA,MAAM2xC,QAAO;AACxB4M,oCAAwBv+C,KAAAA;AAAAA,UAC/B,OAAW;AACJu+C,oCAAwB,EAAE5M,QAAQ,SAAS9pC,OAAO7H,MAAAA,CAAAA;AAAAA,UAClD;AAAA,QACP,CACA;AAAA,MAAA,OAAS;AAEJu+C,gCAAwBM,aAAAA;AAAAA,MACxB;AAAA,IACL,OAAQ;AACJN,8BAAwB,IAAA;AAAA,IACxB;AACD;AAAA,EACA;AAED,MAAIU,cAAc,EACjBxuD,UAAU,SAASyhC;AAClB,QAAI75B,MAAM;AAEV,QAAIglD,OAAO;AACVhlD,UAAIhL,KAAKgwD,KACT;AAAA,IAAA,WAAUiB,YAAY;AACtB,eAAS5/C,QAAO4/C,YAAY;AAC3BjmD,YAAIhL,KAAKqR,IAAAA;AAAAA,MACT;AAAA,IACD;AAED,WAAO86C,KAAK0F,YAAY1F,MAAMtnB,KAAK75B,GACnC;AAAA,EAAA,GACDg5B,SAASmoB,KAAKoC;AAGf,MAAIuD,YAAY31D,KAAKiyD,mBAAmBjyD,KAAK41D,QAAS7tB,KAAK8C,aAAa7qC,KAAKiyD,mBAAmB,CAAC,cAAcjyD,KAAK41D,OAAO,iBAAiB51D,KAAKwwD,WAAWiB,YAAY,GAAG,SAAA,CAAA,EAAY3hD,KAAK,GAAQ,IAAA;AACpM,MAAI63B,OAAM3nC,KAAK60D,cAAcc,SAC7B;AAAA,MAAIlkD;AAEJ,UAAQzR,KAAKmyD,QACZ;AAAA,IAAA,KAAK;AACJ1gD,aAAOzR,KAAK61D,4BAA4Bf,UACxCW;AAAAA,kBAAY9tB,MAAMA,OAAMI,KAAK8C,aAAalD,IAAAA,IAAO3nC,KAAK8nC,UAAUr2B,MAAMoiD;AACtE4B,kBAAYn7C,SAAS;AACrB;AAAA,IACD,KAAK;AACJ7I,aAAOzR,KAAK61D,4BAA4Bf,UAAAA;AACxCW,kBAAY9tB,MAAMA;AAClB8tB,kBAAYn7C,SAAS;AACrBm7C,kBAAYhkD,OAAOzR,KAAK8nC,UAAUr2B,MAAMoiD;AACxC;AAAA,IACD,KAAK;AACJpiD,aAAO,CAAA;AACP,UAAIqkD,mBAAmB91D,KAAK+1D,uBAAuBjB;AACnD,eAAS5/C,OAAO4gD,kBAAkB;AACjC,YAAI5gD,QAAQlV,KAAKqxD,gBAAgBn8C,QAAQ,QAAQA,QAAQ,SAAS;AACjE;AAAA,QACA;AACDzD,aAAKyD,GAAAA,IAAO4gD,iBAAiB5gD,GAC7B;AAAA,MAAA;AAEDugD,kBAAY9tB,MAAMA;AAClB8tB,kBAAYn7C,SAAS;AACrBm7C,kBAAYhkD,OAAOiT,KAAKC,UAAU,EACjC5kB,IAAI8zD,OACJ1L,QAAQ2M,WAAW90D,KAAKqxD,eACxB5/C,KAAMA,CAAAA;AAEP;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJk2B,MAAAA,OAAMguB,UAAU3rC,QAAQ,sBAAsB,EAC9CvY;AAAAA,aAAO;AAEP,cAAQzR,KAAKiG,SAAS4tD,KACrB,GAAA;AAAA,QAAA,KAAK;AACJ4B,sBAAYn7C,SAAS;AACrBm7C,sBAAYhkD,OAAOzR,KAAK8nC,UAAUgtB,YAAYjB,KAC9C;AAAA;AAAA,QACD,KAAK;AACJ4B,sBAAYn7C,SAAS;AACrBqtB,UAAAA,OAAMA,QAAOA,KAAI15B,QAAc,MAAA,MAAM,KAAK,OAAO4lD;AACjD;AAAA,QACD;AACC4B,sBAAYn7C,SAAS;AACrBm7C,sBAAYhkD,OAAOzR,KAAK8nC,UAAUgtB,YAAYjB;AAC9ClsB,UAAAA,OAAMA,QAAOA,KAAI15B,MAAO,EAAA,MAAO,MAAM,KAAK,OAAO4lD;AACjD;AAAA,MAAA;AAEF4B,kBAAY9tB,MAAM3nC,KAAK60D,cAAcltB,IACrC;AAAA;AAAA,EAAA;AAGF3nC,OAAKixD;AACL,SAAOlpB,KAAKwB,MAAMksB;AAClB,GACDnB,aAAa;AACZ,MAAKt0D,CAAAA,KAAKgxD,YAAY5sD,UAAUpE,KAAKgX,eAAe,OAAO;AAC1D;AAAA,EACA;AAEDhX,OAAKuyD,WAAW,CAAA;AAChB,MAAIyD,QAAQ;AAEZh2D,OAAKi2D,mBAAmB,SAASpC,OAChCmC;AAAAA,YAAQA,SAASh2D,KAAKq0D,kBAAkBR;EAC3C,CAEE;AAAA,MAAA,CAAKmC,SAAUh2D,CAAAA,KAAK4K,UAAU,qBAAqB,CAAC,IAAI5K,KAAKuyD,QAAAA,CAAAA,GAAY;AACxE,WAAO;AAAA,EACP;AAED,MAAIvyD,KAAKgzD,QAAQ;AAChBhzD,SAAKy0D,UAAUz0D,KAAKk2D;EACvB,OAAS;AACNl2D,SAAKi2D,mBAAmB,SAASpC,OAChC;AAAA,UAAA,CAAK7zD,KAAK8wD,aAAa+C,KAAAA,GAAQ;AAC9B,YAAI7zD,KAAKi0D,WAAWJ,KAAAA,GAAQ;AAC3B;AAAA,QACA;AACD7zD,aAAKu0D,gBAAgBv0D,KAAKw0D,YAAYX,KAAQA,GAAAA,KAAAA;AAAAA,MAC9C;AAAA,IACL,CAAA;AAAA,EACG;AACD,GAEDqC,aAAa,SAAUrC,OACtB;AAAA,MAAIta,MAAM,CAAA;AACV,MAAI4c,UAAU;AACdn2D,OAAKi2D,mBAAmB,SAASl2D,KAChC;AAAA,QAAIC,KAAK8wD,aAAa/wD,GAAAA,KAAOC,KAAKi0D,WAAWl0D,MAAI;AAChD;AAAA,IACA;AACD,QAAI8c,MAAM7c,KAAKw0D,YAAYz0D,GAAAA;AAC3B,QAAKC,CAAAA,KAAK4K,UAAU,kBAAkB,CAAC7K,KAAIC,KAAKiG,SAASlG,MAAK8c,GAAO,CAAA,GAAA;AACpE;AAAA,IACA;AACD08B,QAAIx5C,GAAM8c,IAAAA;AACVs5C,cAAU;AACVn2D,SAAK8wD,aAAa/wD,GAAM,KAAA,oBAAKyE,QAAQO,QAAAA;AAAAA,EACxC;AACE,SAAOoxD,UAAU5c,MAAM;AACvB,GAEDua,SAAS,SAAUsC,SAAAA;AAClB,MAAIjyD,IAAI;AACR,OAAKA,IAAI,GAAGA,IAAInE,KAAKgxD,YAAY5sD,QAAQD;AACxC,QAAIiyD,WAAWp2D,KAAKgxD,YAAY7sD,CAAAA;AAAI;AACrC,SAAOA;AACP,GAQDkyD,cAAc,SAAUj8C,MAAMyD,SAAAA;AAC7B,OAAK7d,KAAKs2D;AAAWt2D,SAAKs2D,YAAY,CAAA;AACtCt2D,OAAKs2D,UAAUl8C,IAAQyD,IAAAA;AACvB,GAUDs3C,qBAAqB,SAAUF,KAAKC,KAAK/M,QAAQoO;AAChD,MAAIv2D,CAAAA,KAAKwwD,YAAW;AAEnB;AAAA,EACA;AAED,MAAIgG,UAASvB;AACb,MAAIwB,UAAWtO,WAAW,WAAWA,WAAW;AAChD,OAAKsO,SAAS;AACbz2D,SAAKg0D,YAAYiB,KAAK9M;EACtB;AACD,MAAKnoD,KAAc,aAAMA,KAAKs2D,UAAUnO,MAAAA,KAAAA,CAAcnoD,KAAKs2D,UAAUnO,MAAAA,EAAQoO,OAAQ;AACpF,WAAA,OAAev2D,KAAK8wD,aAAa0F;EACjC;AAED,MAAIx2D,KAAK8wD,aAAa0F,OAAAA,MAAY,QAAQ;AACzCx2D,SAAK4wD,WAAWqE,KAAK;EACrB;AAED,MAAIyB,cAAczB;AAElB,UAAQ9M;IACP,KAAK;AAAA,IACL,KAAK;AACJ,UAAI+M,OAAOD,KAAK;AACfj1D,aAAK4wD,WAAWqE,KAAK,KACrBj1D;AAAAA,aAAKwwD,WAAWxwD,KAAKm0D,SAAS,CAAIc,CAAAA,EAAAA,KAAKC;AACvCD,cAAMC;AAAAA,MACN;AACD;AAAA,IACD,KAAK;AAAA,IACL,KAAK;AACJl1D,WAAKwwD,WAAWY,YAAY6D,KAAKj1D,KAAKqxD,cAAc,cACpDrxD;AAAAA,WAAKwwD,WAAWxwD,KAAKm0D,SAAS,CAAIc,CAAAA,EAAAA,KAAKC;aAChCl1D,KAAK8wD,aAAa0F;AACzB,aAAOx2D,KAAK4K,UAAU,iBAAiB,CAACqqD,KAAK9M,QAAQ+M,KAAKqB,IAG5D,CAAA;AAAA,EAAA;AAAA,MAAIv2D,KAAK8wD,aAAa0F,OAAAA,MAAY,QAAQ;AACzC,QAAIC,SAAS;AACZz2D,WAAKwwD,WAAWY,YAAY6D,KAAKj1D,KAAKqxD,cAAc,EACpD;AAAA,IAAA;AAAA,WACMrxD,KAAK8wD,aAAa0F,OAAAA;AAAAA,EAC5B,OAAS;AACCx2D,WAAAA,KAAK8wD,aAAa0F,OACzBx2D;AAAAA,SAAK4wD,WAAWsE,KAAK,MAAMl1D,KAAKwwD,WAAWiB,YAAYwD,KAAKj1D,KAAKqxD;EACjE;AAEDrxD,OAAK4K,UAAU,iBAAiB,CAAC8rD,aAAavO,QAAQ+M,KAAKqB,IAC3D,CAAA;AAAA,GAEDI,gBAAgB,SAAUjuB,KAAK3oC,KAC9B;AAAA,MAAGC,KAAKwwD,cAAcxwD,KAAKwwD,WAAW5lD,WAAU;AAC/C5K,SAAKwwD,WAAW5lD,UAAU,eAAe,CAAC7K,KAAI2oC,IAAI6B,MAAAA,CAAAA;AAAAA,EAClD;AACD,SAAOvqC,KAAK42D,YAAY72D,GACxB;AAAA,GAED82D,4BAA4B,WAAA;AAC3B,MAAI72D,KAAKiyD,iBAAiB;AACzBjyD,SAAK8yD,mBAAmB,QAAQ,IAChC9yD;AAAAA,SAAKiyD,oBAAoBjyD,KAAKiyD,gBAAgBlgD,QAAQ,GAAA,MAAA,KAAc,MAAM,OAAO;AACjF/R,SAAK82D,mBAAmB92D,KAAKiyD;AAAAA,EAC7B;AACD,GAODyD,aAAa,SAAUqB,MAAMruB,KAAK3oC;AACjC,MAAIgoC,OAAO/nC,KAAKwwD,WAAWzoB;AAE3B,MAAIW,IAAI6B,OAAO9B,WAAW,KAAI;AAC7BzoC,SAAK22D,eAAejuB,KAAK3oC,GAAAA;AACzB;AAAA,EACA;AAGD,MAAIosD;AACJ,MACCA;AAAAA,UAAMznC,KAAKujB,MAAMS,IAAI6B,OAAOluB,YAAAA;AAAAA,EAC5B,SAAQxW,GAAAA;AAER,SAAK6iC,IAAI6B,OAAOluB,aAAajY,QAAQ;AACpC+nD,YAAM,CAAA;AAAA,IACN;AAAA,EACD;AAED,MAAIA,KAAK;AACR,QAAIhE,SAASgE,IAAIhE,UAAUnoD,KAAKiG,SAASlG,GAAO,KAAA;AAChD,QAAIk1D,MAAM9I,IAAI8I,OAAOl1D,IAAG,CAAA;AACxB,QAAIm1D,MAAM/I,IAAI+I,OAAOn1D,IAAG;AACxBg3D,SAAK5B,oBAAoBF,KAAKC,KAAK/M,QAAQgE,GAC3C4K;AAAAA,SAAKC;AACL;AAAA,EACA;AAGD,MAAIz0D,MAAMwlC,KAAKO,OAAO,QAAQI,IAAI6B,MAClC;AAAA,MAAA,CAAKhoC,KAAK;AACT,WAAOvC,KAAK22D,eAAejuB,KAAK3oC;EAChC;AACD,MAAIk3D,OAAOlvB,KAAKa,MAAM,iBAAiBrmC,GAAAA;AACvC,OAAK00D,KAAK7yD,QAAQ;AACjB,WAAOpE,KAAK22D,eAAejuB,KAAK3oC;EAChC;AAED,WAASoE,IAAI,GAAGA,IAAI8yD,KAAK7yD,QAAQD,KAAK;AACrC,QAAIoyD,OAAOU,KAAK9yD,CAChB;AAAA,QAAIgkD,SAASoO,KAAK9xD,aAAa,MAC/B;AAAA,QAAIwwD,MAAMsB,KAAK9xD,aAAa;AAC5B,QAAIywD,MAAMqB,KAAK9xD,aAAa,KAAA;AAE5BsyD,SAAK5B,oBAAoBF,KAAKC,KAAK/M,QAAQoO;EAC3C;AACDQ,OAAKC;AACL,GACDJ,aAAa,SAAU72D,KAAAA;AACtB,MAAIA;AACH,aAASoE,IAAI,GAAGA,IAAIpE,IAAGqE,QAAQD;AACvBnE,aAAAA,KAAK8wD,aAAa/wD,IAAGoE,CAAAA,CAAAA;AAC9B,GACD6yD,gBAAgB,WAAA;AACf,MAAIh3D,KAAKixD;AAAWjxD,SAAKixD;AAEzBjxD,OAAK4K,UAAU,uBAAuB;AACtC,MAAK5K,CAAAA,KAAKgxD,YAAY5sD;AACrBpE,SAAK4K,UAAU,cAAc;AAC9B,GAOD9J,MAAM,SAAUnB,YACf;AAAA,MAAIK,KAAKk3D,cAAc;AACtB;AAAA,EACA;AACDl3D,OAAKwwD,aAAa7wD;AAClB,MAAIK,KAAKwwD,WAAW2G,UAAU;AAC7Bn3D,SAAKwwD,WAAW2G,SAASn3D;EACzB;AAEDA,OAAK62D;AAEL72D,OAAKm0D,WAASn0D,KAAKm0D,YAAU,CAAC,yBAAwB,IAAG,uBAAsB,iBAC/E5C;AAAAA,kBAAgBvxD,KAAKwwD,YAAYxwD,IAAAA;AACjC,MAAIo3D,sBAAsB,IAAI9G,oBAAoBtwD,KAAKwwD,YAAYxwD,IACnEo3D;AAAAA,sBAAoBlvC;AACpBloB,OAAK4F,YAAY,aAAa,WACtB5F;AAAAA,WAAAA,KAAKw0D;AAELx0D,WAAAA,KAAKwwD,WAAWz5C;AAChB/W,WAAAA,KAAKwwD,WAAW6G;AAChBr3D,WAAAA,KAAKwwD,WAAWkB;AAChB1xD,WAAAA,KAAKwwD,WAAWoB;AAAAA,WAChB5xD,KAAKwwD,WAAWqB;AAAAA,WAChB7xD,KAAKwwD;AACZ4G,wBAAoB56B;EACvB,CACEx8B;AAAAA,OAAKwwD,WAAW5lD,UAAU,wBAAwB,CAAC5K,IAAAA,CAAAA;AACnDA,OAAKk3D,eAAe;AAEpBv3D,EAAAA,WAAU03D,iBAAer3D;AACzB,GAEDs3D,kBAAkB,SAAU9wD,IAC3BxG;AAAAA,OAAK4F,YAAY,iBAAiBY,EAAAA;AAClC,GACD+wD,0BAA0B,SAAU36B,MACnC58B;AAAAA,OAAK4F,YAAY,uBAAuBg3B,IAAAA;AACxC,GAKD46B,eAAe,SAAUC,UAAUC,MAClCD;AAAAA,aAAWA,YAAY;AAEvBz3D,OAAK41D,QAAQ8B,SAAQ,oBAAKlzD,QAAQO,QAAAA;AAClC/E,OAAK23D,eAAe;AAEpB33D,OAAK43D,eAAe;AAEpB53D,OAAK4F,YAAY,iBAAiB,SAAUqvD,KAAK9M,QAAQ+M,KAAK2C,UAAAA;AAC7D73D,SAAK83D,gBAAgB7C,KAAK9M,QAAQ+M,KAAK2C;EAC1C,CACE73D;AAAAA,OAAK4F,YAAY,cAAc,WAAA;AAC9B5F,SAAK+3D,SAAAA;AAAAA,EACR;AAEE,MAAI/H,OAAOhwD;AACX,MAAIg4D,aAAa92D,SAAOwtD,YAAY,WAAA;AACnCsB,SAAKiI,WAAAA;AAAAA,EACL,GAAER,QACHz3D;AAAAA,OAAK4F,YAAY,aAAa,WAAA;AAC7B6oD,kBAAcuJ,UACjB;AAAA,EAAA,CAAA;AACE,GAMDF,iBAAiB,SAAU7C,KAAK9M,QAAQ+M,KAAK2C,UAC5C;AAAA,MAAI1P,UAAU,aAAa;AAC1BnoD,SAAK23D,eAAe;AACpB,WAAO;AAAA,EACV,OAAS;AACN,WAAO;AAAA,EACP;AACD,GAKDI,UAAU,WAAA;AACT,MAAI/3D,KAAK23D,cAAc;AACtB33D,SAAK23D,eAAe;AACpB33D,SAAKi4D,WAAAA;AAAAA,EACL;AACD,SAAO;AACP,GAIDC,YAAY,SAAUvwB,MAAK1gC,UAAAA;AAC1B,MAAI8gC,OAAO/nC,KAAKwwD,WAAWzoB;AAC3B,MAAI/nC,KAAK43D;AACR,WAAO;AAAA;AAEP53D,SAAK43D,eAAe;AAErB7vB,OAAK0B,IAAI9B,MAAK1gC;AACd,GAMDkxD,kBAAkB,SAASrxC,MAC1B;AAAA,MAAIA,KAAKzmB,YAAY;AACpB,WAAOymB,KAAKzmB,WAAWk/C;AAAAA,EACvB;AACD,SAAO;AACP,GAID0Y,YAAY,WACX;AAAA,MAAIjI,OAAOhwD;AACX,MAAI+nC,OAAO/nC,KAAKwwD,WAAWzoB;AAC3B,MAAIqwB,UAAUp4D,KAAKwwD,WAAWiB,YAAY,GAAG;AAC7C,MAAI9pB,OAAM3nC,KAAKiyD,kBAAkBlqB,KAAK8C,aAAa7qC,KAAKiyD,eAAAA,IAAmB,CAAC,cAAcjyD,KAAK41D,OAAO,iBAAiBwC,SAAStoD,KAAK,GAAA;AACrI63B,EAAAA,OAAMA,KAAI3d,QAAQ,iBAAiB,EAAA;AACnChqB,OAAKk4D,WAAWvwB,MAAK,SAAUe,KAC9B;AAAA,QAAI2vB,OAAOtwB,KAAKa,MAAM,cAAcF,GAAAA;AACpCsnB,SAAKQ,WAAWY,YAAY,GAAG,WAAWpB,KAAKmI,iBAAiBE,KAAK,CAAA,CAAA,CAAA;AAErE,QAAIC,UAAUvwB,KAAKa,MAAM,YAAYF;AACrC,QAAI4vB,QAAQl0D,QAAQ;AACnB4rD,WAAKpuC,eAAe;AAEpB,eAASzd,IAAI,GAAGA,IAAIm0D,QAAQl0D,QAAQD,KAAK;AACxC,YAAIskC,SAAS6vB,QAAQn0D,CAAGM,EAAAA,aAAa;AACrC,YAAI1E,MAAKu4D,QAAQn0D,CAAGM,EAAAA,aAAa,IACjC;AAAA,YAAI+I,SAAS8qD,QAAQn0D,CAAAA,EAAGM,aAAa,QACrC;AAAA,gBAAQgkC;UACP,KAAK;AACJzoC,iBAAK4K,UAAU,kBAAkB,CAAC0tD,QAAQn0D,IAAIpE,KAAIyN,MAAAA,CAAAA;AAClD;AAAA,UACD,KAAK;AACJxN,iBAAK4K,UAAU,kBAAkB,CAAC0tD,QAAQn0D,IAAIpE,KAAIyN,MAAAA,CAAAA;AAClD;AAAA,UACD,KAAK;AACJxN,iBAAK4K,UAAU,kBAAkB,CAAC0tD,QAAQn0D,IAAIpE,KAAIyN,MAAAA,CAAAA;AAClD;AAAA;MAEF;AACDwiD,WAAKpuC,eAAe;AAAA,IACpB;AACDouC,SAAK4H,eAAe;AACpB5H,WAAO;AAAA,EACV;AACE,GAEDnvD,YAAY,WACXb;AAAAA,OAAK4K,UAAU,aAAa,CAAA,CAAA;AAC5B5K,OAAKqjB,gBAELrjB;AAAAA,OAAKgxD,cAAc,CACnBhxD;AAAAA,OAAK8wD,eAAe;AACpB9wD,OAAK+wD,WAAW;AAChB/wD,OAAKoyD,WAAW;AAChBpyD,OAAKqyD,WAAW;AAAA,SACTryD,KAAKk3D;AACZ,GAEDvvB,KAAK,SAASA,MAAAA;AACb3nC,OAAKiyD,kBAAkBjyD,KAAK82D,mBAAmBnvB;AAC/C,GAED+sB,kBAAkB,SAASjjD;AAC1B,MAAWA,OAAAA,SAAS,UAAU;AAC7B,WAAOA;AAAAA,EACP;AAED,MAAI/K,QAAO1G,KAAKwwD,WAAWh3C,MAAM9S,KAAK+K;AACtC,MAAIzR,KAAKmyD,WAAW,aAAa;WACzBzrD,MAAK3G;AAAAA,WACL2G,MAAK1G,KAAKqxD,YAAAA;AAAAA,EACjB;AAED,SAAO3sC,KAAKC,UAAUje,KAAAA;AACtB,GAIDmvD,6BAA6B,SAASf;AACrC,MAAIyD;AACJ,MAAGzD,WAAW90D,KAAKqxD,YAAkBhjD,MAAAA,QAAU;AAC9CkqD,oBAAgB,CAAA;AAChB,aAAQp0D,KAAK2wD,YAAY;AACxByD,oBAAcp0D,CAAAA,IAAKnE,KAAK61D,4BAA4Bf,WAAW3wD;IAC/D;AAAA,EACJ,OAAS;AACNo0D,oBAAgBv4D,KAAK+1D,uBAAuBjB,UAAAA;AAAAA,EAC5C;AACD,SAAOyD;AACP,GACDxC,wBAAwB,SAASyC;AAChC,MAAIC,SAAS;AACb,MAAGD,aAAY;AACd,QAAGA,YAAYx4D,KAAKqxD,YAAAA,MAAkB,WAAU;AAC/CoH,eAAS,CAAA;AACTA,aAAO14D,KAAKy4D,YAAYz4D;AACxB04D,aAAOz4D,KAAKqxD,gBAAgBmH,YAAYx4D,KAAKqxD,YACjD;AAAA,IAAA,OAAQ;AACJoH,eAASD;AAAAA,IACT;AAAA,EACD;AACD,SAAOC;AACP,GAEDxC,oBAAoB,SAAS9qB,MAAAA;AAC5B,MAAI6lB,cAAchxD,KAAKgxD,YAAY/iD,MACnC;AAAA,WAAS9J,IAAI,GAAGA,IAAI6sD,YAAY5sD,QAAQD,KAAK;AAC5C,QAAI0vD,QAAQ7C,YAAY7sD;AACxB,QAAInE,KAAKwwD,WAAWiB,YAAYoC,OAAO7zD,KAAKqxD,YAAAA,GAAe;AAC1DlmB,WAAK/0B,KAAKpW,MAAM6zD,KAChB;AAAA,IAAA;AAAA,EACD;AACD,GACD,oBAAoB6E,MAAAA;AACnB,QAAMC,gBAAgB,CAAA;AACtB,QAAMh5D,aAAYK,KAAKwwD;AACvB,QAAM9pD,QAAO/G,WAAU6Z,MAAM9S,KAAKgyD,IAAAA;AAClC,WAASv0D,KAAKuC,OAAM;AACnB,QAAIkyD,OAAOlyD,MAAKvC;AAChB,QAAIA,EAAE4N,QAAQ,GAAS,MAAA,GAAG;AACzB;AAAA,IACA,WAAU6mD,MAAK;AACf,UAAGA,KAAKptB,gBAAe;AACtBmtB,sBAAcx0D,CAAKxE,IAAAA,WAAU8xC,SAASG,WAAWgnB,IAAAA;AAAAA,MACtD,WAAqBA,OAAAA,QAAQ,UAAU;AAClCD,sBAAcx0D,CAAKnE,IAAAA,KAAK64D,oBAAoBD,IACjD;AAAA,MAAA,OAAW;AACND,sBAAcx0D,CAAAA,IAAKy0D;AAAAA,MACnB;AAAA,IACL,WAAcA,SAASvqD,QAAU;AAC7BsqD,oBAAcx0D,KAAKy0D;AAAAA,IACnB;AAAA,EACD;AACDD,gBAAc34D,KAAKqxD,YAAgB1xD,IAAAA,WAAU8xD,YAAYiH,KAAK34D,IAAIC,KAAKqxD,YAAAA;AACvE,SAAOsH;AACP,GACD,oBAAoBD;AACnB,QAAMC,gBAAgB,CAAA;AACtB,QAAMh5D,aAAYK,KAAKwwD;AACvB,QAAM9pD,QAAO/G,WAAU6Z,MAAM9S,KAAKgyD;AAClC,WAASv0D,KAAKuC,OAAM;AACnB,QAAIkyD,OAAOlyD,MAAKvC,CAChB;AAAA,QAAIA,EAAE4N,QAAQ,GAAA,MAAS,GAAG;AACzB;AAAA,IACA,WAAU6mD,MAAM;AAChB,UAAGA,KAAKptB,gBAAe;AACtBmtB,sBAAcx0D,CAAKxE,IAAAA,WAAU8xC,SAASG,WAAWgnB;MACtD,WAAW,OAAUA,QAAQ,UAAU;AAClCD,sBAAcx0D,CAAKnE,IAAAA,KAAK84D,oBAAoBF,IAAAA;AAAAA,MACjD,OAAW;AACND,sBAAcx0D,KAAKy0D;AAAAA,MACnB;AAAA,IACL,OAAU;AACND,oBAAcx0D,CAAK,IAAA;AAAA,IACnB;AAAA,EACD;AACDw0D,gBAAc34D,KAAKqxD,YAAgB1xD,IAAAA,WAAU8xD,YAAYiH,KAAK34D,IAAIC,KAAKqxD,YAAAA;AACvE,SAAOsH;AACP,GACDI,kBAAkB,SAASL,MAAAA;AAC1B,MAAG14D,KAAKkzD,kBAAiB;AACxB,WAAOlzD,KAAK64D,oBAAoBH,IAAAA;AAAAA,EACnC,OAAQ;AACL,WAAO14D,KAAK84D,oBAAoBJ,IAAAA;AAAAA,EAChC;AACD,GACDlE,aAAa,SAASz0D,KAAAA;AACrB,MAAIi5D,WAAWh5D,KAAKwwD,WAAW1qD,SAAS/F,GAAAA;AACxC,MAAKi5D,CAAAA,UAAU;AACdA,eAAW,EAAEj5D,IAAIA,IACjB;AAAA,EAAA;AACD,SAAOC,KAAK+4D,iBAAiBC,QAC7B;AAAA,EAAA;AAIa,SAASn+C,OAAOlb,YAAAA;AAE/BA,EAAAA,WAAUs5D,sBAAsB,SAASv3D;AACxC,QAAI0xD;AACJ,QAAI8F;AACJ,QAAIx3D,kBAAkB0W,UAAU;AAC/Bg7C,eAAS1xD;AAAAA,IACT,WAAUA,OAAOkN,eAAe,QAAA,GAAW;AAC3CwkD,eAAS1xD,OAAO0xD;AAAAA,IAChB,WAAS1xD,OAAOkN,eAAe,OAAA,GAAS;AACxCwkD,eAAS1xD;AAAAA,IACT;AAED,QAAI0xD,QAAQ;AACX8F,cAAQ;AAAA,IACV,OAAQ;AACNA,cAAQx3D,OAAOjC,QAAQ;AAAA,IACvB;AAED,QAAI8wD,KAAK,IAAIwB,cAAcrwD,OAAOimC,GAAAA;AAClC4oB,OAAGzvD,KAAKnB;AACR4wD,OAAGuC,mBAAmB,EACrBrzD,MAAMy5D,OACN9F,OACE1xD,GAAAA,OAAOkV,WACV;AAAA,WAAO25C;AAAAA,EACR;AAEA5wD,EAAAA,WAAUoyD,gBAAgBA;AAE1B;ACn9Be,SAAQlrD,QAAClH,YAAAA;AAEvB,MAAIw5D,eAAe;AAEnB,MAAIC,eAAe;AAEnB,WAASnyD,SAASvF,QAAQuX,QACzB;AAAA,QAAIogD,WAAW33D,OAAOuF;AACtBqyD,aAASztD,KAAKnK,OAAO0gC,GAErBg3B;AAAAA,mBAAe13D,OAAO0gC,MAAM;AAC7B,QAAIi3B;AACFA,eAASpgD,MACV;AAAA,EAAA;AAED,WAASsgD,UAAU/3D,QAAAA;AAClB,QAAI43D,cAAc;AAEjB,UAAIjuB,OAAO3pC,OAAMg4D,SAASh4D,OAAMk6C;AAChC,UAAIvzB,iBAAiB;AAErB,UAAIsxC,WAAWC,UAAU;AACxB,YAAIvuB,QAAQ,MAAMA,QAAQ,IAAI;AAG7B,cAAIplC,SAASvE,OAAMuE,UAAUvE,OAAMuwB;AACnC,cAAI4nC,YAAW/2B,aAAa78B,MAAQgM,EAAAA,QAAQ,kCAAkChM,OAAOyX,OAAO;AAC3FzX,mBAAOyX,MACb;AAAA,UAAA,OAAY;AACNvW,qBAASmyD,cAAc;AACvBjxC,6BAAiB;AAAA,UACjB;AAAA,QACD;AAED,YAAIgjB,QAAQ,IAAI;AACflkC,mBAASmyD,cAAc;AACvBjxC,2BAAiB;AAAA,QACjB;AAAA,MACD;AAED,UAAIA,gBAAgB;AACnB,YAAI3mB,OAAM2mB,gBAAe;AACxB3mB,UAAAA,OAAM2mB,eAAAA;AAAAA,QACN;AACD,eAAA,EAAS3mB,OAAMmoB,eAAe;AAAA,MAC9B;AACD;AAAA,IACA;AAAA,EACD;AAEDhqB,EAAAA,WAAU6B,MAAM3B,UAAU,WAAW05D,WAAW,IAEhD;AAAA,WAASK,SAASn6D,MACjB;AAAA,QAAA,CAAKm6D,SAASC,OAAO;AACpBD,eAASC,QAAQh6D,SAASC,cAAc,KAAA;AAExCH,MAAAA,WAAU6B,MAAMo4D,SAASC,OAAO,WAAWN,SAAAA;AAC3CK,eAASC,MAAMhpD,YAAY;AAC3BhR,eAASM,KAAKC,YAAYw5D,SAASC;IACnC;AAEDD,aAASC,MAAMv3D,MAAMod,UAAUjgB,OAAO,iBAAiB;AAAA,EACvD;AAED,WAAS0d,OAAOrW,MAAMgzD,YAAY7gD,QACjC;AAAA,QAAI8gD,kBAAkBp6D,WAAUioB,SAASuZ,wBAAwBr6B,IACjE;AAAA,QAAIsT,QAAQ0/C,cAAc,IAAIn3C,YAAcqH,EAAAA,QAAQ,MAAM,GAC1D;AAAA,QAAIgwC,YAAY,aAAa5/C,IAAAA,kBAAsBA;AACnD,WAAO,QAAQ2/C,eAAqEC,sDAAAA,SAAAA,kBAA2B/gD,mBAAmBA,MAAiBnS,WAAAA,IAAAA;AAAAA,EACnJ;AAED,WAASmzD,KAAKnzD;AACb,QAAK2yD,CAAAA,WAAWxpD,MAAM;AACrBwpD,iBAAWxpD,OAAOpQ,SAASC,cAAc,KACzC25D;AAAAA,iBAAWxpD,KAAKY,YAAY;AAC5B4oD,iBAAWxpD,KAAK3N,MAAMm3D,WAAWxsD,QAAAA,IAAY;AAC7CpN,eAASM,KAAKC,YAAYq5D,WAAWxpD,IAAAA;AAAAA,IACrC;AAEDwpD,eAAW5tD,KAAK/E,KAAK/G,EAAAA;AACrB,QAAI8G,WAAUhH,SAASC,cAAc,KACrC+G;AAAAA,IAAAA,SAAQ3G,YAAY,UAAU4G,KAAKA,OAAO;AAC1CD,IAAAA,SAAQgK,YAAY,0CAA0C/J,KAAKE,OAAO,aAAaF,KAAKE;AAC5FrH,IAAAA,WAAU6B,MAAMqF,UAAS,SAAQ,SAAUhB,GAAAA;AACjC,UAAGiB,KAAKG,UAAU;AACdH,aAAKG,SAASmP,KAAKpW,MAAM6F;MAC5B;AACV4zD,iBAAW5tD,KAAK/E,KAAK/G,EAAAA;AACrB+G,aAAO;AAAA,IACV;AAEEnH,IAAAA,WAAUioB,SAASyZ,gBAAgBx6B,QAEnC;AAAA,QAAI4yD,WAAWxsD,YAAY,YAAYwsD,WAAWxpD,KAAK5P;AACtDo5D,iBAAWxpD,KAAKsW,aAAa1f,UAAS4yD,WAAWxpD,KAAK5P,UAEtDo5D;AAAAA;AAAAA,iBAAWxpD,KAAK7P,YAAYyG;AAE7B,QAAIC,KAAKC,SAAS;AACjB0yD,iBAAWS,OAAOpzD,KAAK/G,EAAAA,IAAMkB,OAAOoY,WAAW;AAE9C,YAAIogD;AAAYA,qBAAW5tD,KAAK/E,KAAK/G;MACzC,GAAM+G,KAAKC,MAET0yD;AAAAA,eAAWU,KAAKrzD,KAAK/G,EAAAA,IAAM8G;AAC3BA,IAAAA,WAAU;AAEV,WAAOC,KAAK/G;AAAAA,EACZ;AAED,WAASq6D;AACR,QAAI38B,SAAS,GAAGxvB,MAAMG,MAAM6F,WAAW,CAAC,CAAA,CAAA;AAExC,aAAS9P,IAAI,GAAGA,IAAIs5B,OAAOr5B,QAAQD,KAAK;AACvC,UAAIs5B,OAAOt5B,CAAI,GAAA;AACd,eAAOs5B,OAAOt5B,CAAAA;AAAAA,MACd;AAAA,IACD;AAAA,EAED;AAED,WAASk2D,cAAc34D,QAAQupB,IAAIO,QAAAA;AAClC,QAAI4W,MAAMviC,SAASC,cAAc,KAEjC;AAAA,QAAIw6D,YAAY9gD,MAAM9K,IAAAA;AACtB/O,IAAAA,WAAUioB,SAAS0Z,iBAAiBc,KAAKk4B,SAAAA;AAGzCl4B,QAAIvxB,YAAY,qDAAqDnP,OAAOsF,OAAO,aAAatF,OAAOsF;AACvGo7B,QAAItlB,aAAaq8C,cAAc;AAE/B,QAAIoB,QAAQ;AAEZ,QAAI74D,OAAOqP;AACVqxB,UAAI9/B,MAAMyO,QAAQrP,OAAOqP;AAC1B,QAAIrP,OAAOoP;AACVsxB,UAAI9/B,MAAMwO,SAASpP,OAAOoP;AAC3B,QAAIpP,OAAOopB;AACVyvC,eAAS,2DAA2D74D,OAAOopB,QAAQ;AACpFyvC,aAAS,6DAA6DD,YAAY,cAAc54D,OAAOq2B,UAAU,KAAKr2B,OAAOoF,QAAQ;AACrI,QAAImkB;AACHsvC,eAASp9C,OAAOi9C,gBAAgB14D,OAAOupB,IAAItrB,WAAU+nB,OAAOC,OAAO6yC,YAAY,IAAA,GAAO,MAAM,IAAA;AAC7F,QAAIhvC;AACH+uC,eAASp9C,OAAOi9C,gBAAgB14D,OAAO8pB,QAAQ7rB,WAAU+nB,OAAOC,OAAO8yC,gBAAgB,WAAW,UAAU,KAAA;AAE7G,QAAI/4D,OAAOqoB,SAAS;AACnB,eAAS5lB,IAAI,GAAGA,IAAIzC,OAAOqoB,QAAQ3lB,QAAQD,KAAK;AAC/C,YAAIu2D,MAAMh5D,OAAOqoB,QAAQ5lB,CAAAA;AACzB,mBAAWu2D,OAAO,UAAU;AAE3B,cAAIjzC,QAAQizC,IAAIjzC;AAChB,cAAIxkB,MAAMy3D,IAAIz3D,OAAQ,eAAey3D,IAAIjzC,MAAM9E,YAAgB,IAAA,oBAAoB+3C,IAAIjzC,MAAM9E,YAAAA,IAAgB;AAC7G,cAAItE,QAAQq8C,IAAIr8C,SAASla;AACzBo2D,mBAASp9C,OAAOsK,OAAOxkB,KAAKob,KAAAA;AAAAA,QACjC,OAAW;AACNk8C,mBAASp9C,OAAOu9C,KAAKA,KAAKv2D,CAC1B;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAEDo2D,aAAS;AACTn4B,QAAIliC,YAAYq6D;AAEhB,QAAI74D,OAAOq2B,SAAS;AACnB,UAAIjR,OAAOplB,OAAOq2B;AAClB,iBAAWjR,QAAQ;AAClBA,eAAOjnB,SAAS2kB,eAAesC;AAChC,UAAIA,KAAKxkB,MAAMod,WAAW;AACzBoH,aAAKxkB,MAAMod,UAAU;AACtB0iB,UAAIvwB,WAAWnQ,OAAOopB,QAAQ,IAAI,CAAA,EAAG1qB,YAAY0mB,IACjD;AAAA,IAAA;AAEDnnB,IAAAA,WAAU6B,MAAM4gC,KAAK,SAAS,SAAU5gC,QAAAA;AACvC,UAAIkY,SAASlY,OAAMuE,UAAUvE,OAAMuwB;AACnC,UAAKrY,CAAAA,OAAO7I;AAAW6I,iBAASA,OAAOjM;AACvC,UAAIksD,YAAW3zD,QAAQ0T,QAAQ,4BAA4B;AAC1D,YAAIT,SAASS,OAAOjV,aAAa,aACjCwU;AAAAA,iBAAUA,UAAU,WAAYA,UAAU,UAAU,QAAQA;AAC5DhS,iBAASvF,QAAQuX,MAAAA;AAAAA,MACjB;AAAA,IACJ,CAAA;AACEvX,WAAO0gC,MAAMA;AACb,QAAInX,MAAMO;AACT4tC,qBAAe13D;AAEhB,WAAO0gC;AAAAA,EACP;AAED,WAASu4B,WAAWj5D,QAAQupB,IAAIO,QAC/B;AAAA,QAAI4W,MAAM1gC,OAAOshC,UAAUthC,SAAS24D,cAAc34D,QAAQupB,IAAIO,MAAAA;AAE9D,SAAK9pB,OAAOk5D;AACXhB,eAAS,IACV/5D;AAAAA,aAASM,KAAKC,YAAYgiC;AAC1B,QAAIrb,IAAI5V,KAAKie,IAAIje,KAAK8D,QAAQhU,OAAO8e,cAAclgB,SAASmgB,gBAAgBgB,eAAeohB,IAAIphB,eAAe;AAC9G,QAAIgG,IAAI7V,KAAKie,IAAIje,KAAK8D,QAAQhU,OAAOkf,eAAetgB,SAASmgB,gBAAgBc,gBAAgBshB,IAAIthB,gBAAgB;AACjH,QAAIpf,OAAOuL,YAAY;AACtBm1B,UAAI9/B,MAAMC,MAAM;AAAA;AAEhB6/B,UAAI9/B,MAAMC,MAAMykB,IAAI;AACrBob,QAAI9/B,MAAME,OAAOukB,IAAI;AAErBpnB,IAAAA,WAAU6B,MAAM4gC,KAAK,WAAWm3B,SAEhCD;AAAAA,aAASh/B,MAAM8H,GAAAA;AAEf,QAAI1gC,OAAOk5D;AACVtB,eAASztD,KAAKu2B,GAAAA;AAEfziC,IAAAA,WAAUiL,UAAU,kBAAkB,CAACw3B,GAAAA,CAAAA;AACvC,WAAOA;AAAAA,EACP;AAED,WAASy4B,WAAWn5D,QAAAA;AACnB,WAAOi5D,WAAWj5D,QAAQ,MAAM,KAAA;AAAA,EAChC;AAED,WAASo5D,aAAap5D;AACrB,WAAOi5D,WAAWj5D,QAAQ,MAAM,IAAA;AAAA,EAChC;AAED,WAASq5D,SAASr5D,QACjB;AAAA,WAAOi5D,WAAWj5D,MAClB;AAAA,EAAA;AAED,WAASs5D,WAAWl0D,MAAME,MAAMC,WAAAA;AAC/B,eAAWH,QAAQ,UAAU;AAC5B,UAAWE,OAAAA,QAAQ,YAAY;AAC9BC,QAAAA,YAAWD;AACXA,eAAO;AAAA,MACP;AACDF,aAAO,EAACA,MAAYE,MAAYC,UAAUA,UAC1C;AAAA,IAAA;AACD,WAAOH;AAAAA,EACP;AAED,WAASm0D,OAAOn0D,MAAME,MAAMD,QAAQhH,KAAIkH,WACvC;AAAA,QAAA,OAAWH,QAAQ;AAClBA,aAAO,EAACA,MAAYE,MAAYD,QAAgBhH,IAAIA,KAAIkH,UAAUA,UAAAA;AACnEH,SAAK/G,KAAK+G,KAAK/G,MAAMyZ,MAAM9K,IAAAA;AAC3B5H,SAAKC,SAASD,KAAKC,UAAU0yD,WAAW1yD;AACxC,WAAOD;AAAAA,EACP;AAED,MAAIo0D,WAAW,WACd;AAAA,QAAIp0D,OAAOk0D,WAAW5sD,MAAMpO,MAAMiU,SAClCnN;AAAAA,SAAKE,OAAOF,KAAKE,QAAQ;AACzB,WAAO6zD,WAAW/zD,IACpB;AAAA,EAAA;AACC,MAAIq0D,aAAa,WAAA;AAChB,QAAIr0D,OAAOk0D,WAAW5sD,MAAMpO,MAAMiU;AAClCnN,SAAKE,OAAOF,KAAKE,QAAQ;AACzB,WAAO8zD,aAAah0D,IAAAA;AAAAA,EACtB;AACC,MAAIwyD,WAAW,WACd;AAAA,QAAIxyD,OAAOk0D,WAAW5sD,MAAMpO,MAAMiU,SAClCnN;AAAAA,SAAKE,OAAOF,KAAKE,QAAQ;AACzB,WAAO+zD,SAASj0D,IAClB;AAAA,EAAA;AACCwyD,WAASztD,OAAO,SAAUib,MACzB;AAAA,WAAOA,QAAQA,KAAKriB,gBAAAA,CAAiBqiB,KAAKriB,aAAa00D,YAAAA;AACtDryC,aAAOA,KAAKrZ;AACb,QAAIqZ,MAAM;AACTA,WAAKrZ,WAAWC,YAAYoZ,IAC5B8yC;AAAAA,eAAS;AAETj6D,MAAAA,WAAUiL,UAAU,uBAAuB,CAACkc;IAC5C;AAAA,EACH;AAECwyC,WAASh/B,QAAQ,SAAUxT;AAC1BzN,eAAW,WAAA;AACV,UAAI+hD,YAAYzB,YAAWv1B,kBAAkBtd,IAAAA;AAC7C,UAAIs0C,UAAUh3D,QAAQ;AACrB,YAAIg3D,UAAU,CAAG9gC,EAAAA;AAAO8gC,oBAAU,CAAG9gC,EAAAA,MAAAA;AAAAA,MACrC;AAAA,IACD,GAAE,CAAA;AAAA,EACL;AAEC,MAAIm/B,aAAa,SAAU3yD,MAAME,MAAMD,QAAQhH,KAAAA;AAC9C+G,WAAOm0D,OAAO7sD,MAAMpO,MAAMiU,SAC1BnN;AAAAA,SAAKE,OAAOF,KAAKE,QAAQ;AAEzB,QAAIq0D,UAAUv0D,KAAKE,KAAK1B,MAAM,GAAK,EAAA,CAAA;AACnC,YAAQ+1D,SAAAA;AAAAA,MACP,KAAK;AACJ,eAAOR,WAAW/zD,IACnB;AAAA,MAAA,KAAK;AACJ,eAAOg0D,aAAah0D,IACrB;AAAA,MAAA,KAAK;AACJ,eAAOi0D,SAASj0D;MACjB;AACC,eAAOmzD,KAAKnzD,IAEhB;AAAA,IAAA;AAAA,EAAA;AAEC2yD,aAAW6B,QAAO,oBAAK92D,QAAQO,QAAAA;AAC/B00D,aAAW/qD,MAAM8K,MAAM9K;AACvB+qD,aAAW1yD,SAAS;AACpB0yD,aAAWC,WAAW;AACtBD,aAAWxsD,WAAW;AACtBwsD,aAAWU,OAAO;AAClBV,aAAWS,SAAS;AAEpBT,aAAW8B,UAAU,WACpB;AAAA,aAASrmD,OAAOukD,WAAWU;AAC1BV,iBAAW5tD,KAAKqJ,GACnB;AAAA,EAAA;AACCukD,aAAW5tD,OAAO,SAAU9L;AAC3B,QAAIH,MAAM65D,WAAWU,KAAKp6D;AAC1B,QAAIH,OAAOA,IAAI6N,YAAY;AAC1BxM,aAAOoY,WAAW,WAAA;AACjBzZ,YAAI6N,WAAWC,YAAY9N,GAC3BA;AAAAA,cAAM;AAAA,MACN,GAAE,GAAA;AACHA,UAAIiR,aAAa;AAEjB,UAAI4oD,WAAWS,OAAOn6D,GACrBkB;AAAAA,eAAOqY,aAAamgD,WAAWS,OAAOn6D;aAChC05D,WAAWU,KAAKp6D,GACvB;AAAA,IAAA;AAAA,EACH;AAEC,MAAIy7D,SAAS;AACb77D,EAAAA,WAAUiG,YAAY,kBAAkB,SAASw8B,KAAAA;AAChDo5B,WAAO33D,KAAKu+B;EACd,CACCziC;AAAAA,EAAAA,WAAUiG,YAAY,uBAAuB,SAASw8B;AACrD,aAAQj+B,IAAI,GAAGA,IAAIq3D,OAAOp3D,QAAQD,KAAI;AACrC,UAAGq3D,OAAOr3D,CAAOi+B,MAAAA,KAAI;AACpBo5B,eAAOpoD,OAAOjP,GAAG,CAAA;AACjBA;AAAAA,MACA;AAAA,IACD;AAAA,EACH;AAECxE,EAAAA,WAAUiG,YAAY,aAAa,WAAA;AAClC,QAAGg0D,SAASC,SAASD,SAASC,MAAMpsD,YAAW;AAC9CmsD,eAASC,MAAMpsD,WAAWC,YAAYksD,SAASC,KAC/C;AAAA,IAAA;AAED,aAAQ11D,IAAI,GAAGA,IAAIq3D,OAAOp3D,QAAQD,KAAI;AACrC,UAAGq3D,OAAOr3D,GAAGsJ,YAAW;AACvB+tD,eAAOr3D,CAAGsJ,EAAAA,WAAWC,YAAY8tD,OAAOr3D;MACxC;AAAA,IACD;AACDq3D,aAAS;AAET,QAAG/B,WAAWxpD,QAAQwpD,WAAWxpD,KAAKxC,YAAW;AAChDgsD,iBAAWxpD,KAAKxC,WAAWC,YAAY+rD,WAAWxpD;IAClD;AACDwpD,iBAAa;AAAA,EACf,CAAA;AAEC,SAAO,EACNl9C,OAAO2+C,UACPxvC,SAASyvC,YACTt0D,SAAS4yD,YACTgC,UAAUnC,SAEZ;AAAA;AC5WA,MAAeoC,KAAA,EACdv4D,MAAM,EACL0oC,YAAY,CAAC,gBAAgB,QAAQ,QAAQ,SAAS,QAAQ,UAAU,QAAQ,MAAM,SAAS,eAAe,gBAAgB,aAC9HD,GAAAA,aAAa,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,QAAA,GACnHD,UAAU,CAAC,SAAS,WAAW,YAAY,YAAY,UAAU,UAAU,OAAA,GAC3EF,WAAW,CAAC,OAAO,SAAS,UAAU,UAAU,QAAQ,QAAQ,UAEjE9jB,QAAQ,EACP2C,sBAAsB,SACtBqxC,SAAS,OACTC,UAAU,SACVC,WAAW,OACXj1D,WAAW,YACXk1D,WAAW,QACXC,aAAa,SACbj9B,cAAc,UACdhL,WAAW,SACX5I,aAAa,OACboD,iBAAiB,qCACjB1D,kBAAkB,2CAClBoxC,qBAAqB,SACrBC,cAAc,kBACd3W,UAAU,cAEV4W,mBAAmB,mDACnBC,mBAAmB,eACnBC,kBAAkB,SAClBC,uBAAuB,SACvBC,oBAAoB,eACpBC,wBAAwB,cAGxBC,UAAU,QAGVxQ,gBAAgB,kBAChBC,cAAc,gBAGduO,YAAY,MACZC,gBAAgB,UAGhB57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAM,QACNC,QAAQ,UAGRu7B,kBAAkB,QAClBC,mBAAmB,UACnBC,oBAAoB,QACpBC,mBAAmB,QACnBC,uBAAuB,MACvBC,uBAAuB,OACvBC,wBAAwB,cACxBC,aAAa,aACbC,wBAAwB,4BACxBC,yBAAyB,SACzBC,0BAA0B,MAC1BC,uBAAuB,UACvBC,yBAAyB,OACzBC,iCAAiC,MACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,qBAClBC,8BAA8B,WAC9BC,mBAAmB,OACnBC,mBAAmB,YAEnBC,cAAc,SACdC,cAAc,UACdC,iBAAiB,cACjBC,eAAe,YACfC,gBAAgB,UAChBC,eAAe,UACfC,eAAe,SACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,cAChBC,aAAa,SAEbC,qBAAqB,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,QAC3HC,GAAAA,mBAAmB,CAAC,SAAS,WAAW,YAAY,YAAY,UAAU,UAAU,OAAA,EAAA,EAAA;ACxFtF,MAAeC,KAAA,EACd57D,MAAM,EACL0oC,YAAY,CAAC,YAAY,QAAQ,WAAW,YAAY,OAAO,WAAW,UAAU,WAAW,YAAY,cAAc,YAAY,SAAA,GACrID,aAAa,CAAC,SAAS,OAAO,OAAO,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ,QAAQ,MAAA,GACjGD,UAAU,CAAE,WAAW,cAAc,WAAW,UAAU,UAAU,WAAW,WAC/EF,WAAW,CAAC,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,IAEnD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,SACtBqxC,SAAS,SACTC,UAAU,WACVC,WAAW,SACXj1D,WAAW,gBACXk1D,WAAW,YACXC,aAAa,YACbj9B,cAAc,UACdhL,WAAW,WACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,iDAClBoxC,qBAAqB,YACrBC,cAAc,eACd3W,UAAU,eAEV4W,mBAAmB,oDACnBC,mBAAmB,cACnBC,kBAAkB,aAClBC,uBAAuB,YACvBC,oBAAoB,oBACpBC,wBAAwB,sBAGxByC,YAAY,QACZ77D,MAAM,QACN87D,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,QAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,SAClBC,mBAAmB,WACnBC,oBAAoB,SACpBC,mBAAmB,OACnBC,uBAAuB,SACvBC,uBAAuB,SACvBC,wBAAwB,wBACxBC,aAAa,oBACbC,wBAAwB,WACxBC,yBAAyB,aACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,UACzBC,iCAAiC,UACjCC,gCAAgC,SAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,uBAClBC,8BAA8B,YAC9BC,mBAAmB,IACnBC,mBAAmB,OAEnBC,cAAc,UACdC,cAAc,eACdC,iBAAiB,wBACjBC,eAAe,iBACfC,gBAAgB,eAChBC,eAAe,aACfC,eAAe,gBACfC,iBAAiB,SACjBC,kBAAkB,WAClBC,mBAAmB,SACnBC,kBAAkB,OAClBC,gBAAgB,WAChBC,aAAa,gBAEbC,qBAAqB,CAAC,YAAY,UAAU,YAAY,aAAa,OAAO,WAAW,UAAU,UAAU,WAAW,eAAe,aAAa,WAClJC,mBAAmB,CAAC,WAAW,cAAc,WAAW,UAAU,UAAU,WAAW,QCtGzF,EAAA,EAAA;AAAA,MAAeM,KAAA,EACdj8D,MAAM,EACL0oC,YAAY,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,UACvHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa,UAAA,GAChFF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,OACtBqxC,SAAS,OACTC,UAAU,WACVC,WAAW,OACXj1D,WAAW,oBACXk1D,WAAW,WACXC,aAAa,cACbj9B,cAAc,WACdhL,WAAW,UACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,0DAClBoxC,qBAAqB,cACrBC,cAAc,oBACd3W,UAAU,cAEV4W,mBAAmB,2DACnBC,mBAAmB,6BACnBC,kBAAkB,WAClBC,uBAAuB,UACvBC,oBAAoB,cACpBC,wBAAwB,mBAGxByC,YAAY,UACZ77D,MAAM,QACN87D,aAAa,cAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,SAGVxQ,gBAAgB,kBAChBC,cAAc,gBAGduO,YAAY,MACZC,gBAAgB,UAGhB57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAM,QACNC,QAAQ,UAGRu7B,kBAAkB,SAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,sBACxBC,aAAa,iBACbC,wBAAwB,8BACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,8BAClBC,8BAA8B,eAC9BC,mBAAmB,WACnBC,mBAAmB,iBAEnBC,cAAc,OACdC,cAAc,YACdC,iBAAiB,sBACjBC,eAAe,gBACfC,gBAAgB,YAChBC,eAAe,YACfC,eAAe,iBACfC,iBAAiB,OACjBC,kBAAkB,WAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,cAChBC,aAAa,aAEbC,qBAAqB,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,UAAA,GAChIC,mBAAmB,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa;AClG3F,MAAeO,KAAA,EACdl8D,MAAM,EACL0oC,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,QAChFD,aAAa,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,QAClFD,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KACrDF,GAAAA,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,EAAA,GAE3C9jB,QAAQ,EACP2C,sBAAsB,MACtBqxC,SAAS,KACTC,UAAU,KACVC,WAAW,KACXj1D,WAAW,QACXk1D,WAAW,MACXC,aAAa,MACbj9B,cAAc,MACdhL,WAAW,MACX5I,aAAa,MACboD,iBAAiB,cACjB1D,kBAAkB,WAClBoxC,qBAAqB,MACrBC,cAAc,QACd3W,UAAU,MAEV4W,mBAAkB,mBAClBC,mBAAkB,QAClBC,kBAAiB,MACjBC,uBAAsB,MACtBC,oBAAoB,QACpBC,wBAAwB,QAGxByC,YAAW,MACX77D,MAAK,MACL87D,aAAY,MAGZC,UAAS,MAGTC,iBAAiB,MAGjB3C,UAAS,MAGTxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,MAClBC,mBAAmB,MACnBC,oBAAoB,MACpBC,mBAAmB,MACnBC,uBAAuB,KACvBC,uBAAuB,KACvBC,wBAAwB,SACxBC,aAAa,SACbC,wBAAwB,QACxBC,yBAAyB,MACzBC,0BAA0B,KAC1BC,uBAAuB,OACvBC,yBAAyB,KACzBC,iCAAiC,KACjCC,gCAAgC,KAChCC,mBAAmB,KACnBC,kBAAkB,KAClBC,sBAAsB,KACtBC,mBAAmB,KACnBC,kBAAkB,SAClBC,8BAA8B,OAC9BC,mBAAmB,MACnBC,mBAAmB,OAEnBC,cAAc,MACdC,cAAc,MACdC,iBAAiB,SACjBC,eAAe,MACfC,gBAAgB,MAChBC,eAAe,MACfC,eAAe,OACfC,iBAAiB,KACjBC,kBAAkB,KAClBC,mBAAmB,KACnBC,kBAAkB,KAClBC,gBAAgB,OAChBC,aAAa,MAEbC,qBAAqB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,KAAA,GACzFC,mBAAmB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,EAAA;AC7GhE,MAAe3iB,KAAA,EACdh5C,MAAM,EACL0oC,YAAY,CAAC,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,YAAY,SAAS,QAAQ,SAAS,YAAY,UAAA,GACvHD,aAAa,CAAC,OAAO,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ,KAAA,GAC5FD,UAAU,CAAC,UAAU,WAAW,SAAS,UAAU,WAAW,SAAS,WACvEF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACXj1D,WAAW,gBACXk1D,WAAW,UACXC,aAAa,QACbj9B,cAAc,UACdhL,WAAW,UACX5I,aAAa,UACboD,iBAAiB,IACjB1D,kBAAkB,yCAClBoxC,qBAAqB,YACrBC,cAAc,kBAGdC,mBAAmB,uDACnBC,mBAAmB,sBACnBC,kBAAkB,WAClBC,uBAAuB,WACvBC,oBAAoB,eACpBC,wBAAwB,oBAGxByC,YAAY,WACZ77D,MAAM,SACN87D,aAAa,YAGbC,UAAU,OACV5Z,UAAU,YAGV6Z,iBAAiB,WAGjB3C,UAAU,UAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,SAClBC,mBAAmB,SACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,gBACxBC,aAAa,mBACbC,wBAAwB,aACxBC,yBAAyB,aACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,SACzBC,iCAAiC,SACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,qBAClBC,8BAA8B,YAC9BC,mBAAmB,MACnBC,mBAAmB,SAEnBC,cAAc,SACdC,cAAc,aACdC,iBAAiB,sBACjBC,eAAe,eACfC,gBAAgB,eAChBC,eAAe,aACfC,eAAe,WACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,OAClBC,gBAAgB,YAChBC,aAAa,SAEbC,qBAAqB,CAAC,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,YAAY,SAAS,QAAQ,SAAS,YAAY,aAChIC,mBAAmB,CAAC,WAAW,WAAW,SAAS,UAAU,WAAW,SAAS,QCvGnF,EAAA,EAAA;AAAA,MAAeQ,KAAA,EACdn8D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACzHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,GACzEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACXj1D,WAAW,iBACXk1D,WAAW,OACXC,aAAa,WACbj9B,cAAc,YACdhL,WAAW,UACX5I,aAAa,QACboD,iBAAiB,8CACjB1D,kBAAkB,2DAClBoxC,qBAAqB,eACrBC,cAAc,eAGdC,mBAAmB,yDACnBC,mBAAmB,qBACnBC,kBAAkB,aAClBC,uBAAuB,aACvBC,oBAAoB,kBACpBC,wBAAwB,mBAGxByC,YAAY,aACZ77D,MAAM,QACN87D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,aAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,WACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,sBACxBC,aAAa,sBACbC,wBAAwB,yBACxBC,yBAAyB,YACzBC,0BAA0B,OAC1BC,uBAAuB,WACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,OACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,kBAClBC,8BAA8B,cAC9BC,mBAAmB,SACnBC,mBAAmB,QAEnBC,cAAc,UACdC,cAAc,YACdC,iBAAiB,gBACjBC,eAAe,YACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,mBACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACjIC,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU;ACtGpF,MAAeS,KAAA,EACdp8D,MAAM,EACL0oC,YAAY,CAAC,WAAW,YAAY,UAAU,UAAU,QAAQ,SAAS,SAAS,WAAW,eAAe,YAAY,cAAc,cACtID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAE,WAAW,UAAU,YAAY,aAAa,eAAe,WAAW,SACpFF,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD9jB,QAAQ,EACP2C,sBAAsB,SACtBqxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACXj1D,WAAW,iBACXk1D,WAAW,aACXC,aAAa,aACbj9B,cAAc,WACdhL,WAAW,UACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,6BAClBoxC,qBAAqB,gBACrBC,cAAc,cACd3W,UAAU,cAEV4W,mBAAmB,0EACnBC,mBAAmB,gBACnBC,kBAAkB,OAClBC,uBAAuB,MACvBC,oBAAoB,4BACpBC,wBAAwB,6BAGxByC,YAAY,UACZ77D,MAAM,SACN87D,aAAa,gBAGbC,UAAU,SAGVC,iBAAiB,UAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,WAClBC,mBAAmB,eACnBC,oBAAoB,aACpBC,mBAAmB,YACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,uBACxBC,aAAa,yBACbC,wBAAwB,aACxBC,yBAAyB,YACzBC,0BAA0B,MAC1BC,uBAAuB,mBACvBC,yBAAyB,UACzBC,iCAAiC,SACjCC,gCAAgC,UAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,UACtBC,mBAAmB,IACnBC,kBAAkB,iBAClBC,8BAA8B,eAC9BE,mBAAmB,UACnBD,mBAAmB,QAEnBE,cAAc,OACdC,cAAc,aACdC,iBAAiB,iBACjBC,eAAe,cACfC,gBAAgB,eAChBC,eAAe,cACfC,eAAe,qBACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,YAChBC,aAAa,SAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACjIC,mBAAmB,CAAC,WAAW,UAAU,YAAY,YAAY,cAAc,WAAW,SAAA,EAAA,EAAA;ACtG5F,MAAer7C,KAAA,EACdtgB,MAAM,EACL0oC,YAAY,CAAC,cAAc,eAAe,WAAW,YAAY,SAAS,WAAW,WAAW,aAAa,eAAe,aAAa,aAAa,YAAA,GACtJD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,KAAA,GAC7FD,UAAU,CAAC,WAAW,WAAW,SAAS,WAAW,UAAU,aAAa,YAC5EF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,UACtBqxC,SAAS,SACTC,UAAU,YACVC,WAAW,SACXj1D,WAAW,YACXk1D,WAAW,cACXC,aAAa,SACbj9B,cAAc,gBACdhL,WAAW,eACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,wDAClBoxC,qBAAqB,aACrBC,cAAc,oBACd3W,UAAU,gBAGV4W,mBAAmB,4EACnBC,mBAAmB,yBACnBC,kBAAkB,YAClBC,uBAAuB,UACvBC,oBAAoB,2BACpBC,wBAAwB,6BAGxByC,YAAY,oBACZ77D,MAAM,cACN87D,aAAa,aAGbC,UAAU,QAGVC,iBAAiB,oBAGjB3C,UAAU,UAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,aAClBC,mBAAmB,gBACnBC,oBAAoB,YACpBC,mBAAmB,WACnBC,uBAAuB,QACvBC,uBAAuB,SACvBC,wBAAwB,iBACxBC,aAAa,mBACbC,wBAAwB,iCACxBC,yBAAyB,aACzBC,0BAA0B,OAC1BC,uBAAuB,cACvBC,yBAAyB,QACzBC,iCAAiC,QACjCC,gCAAgC,QAChCC,mBAAmB,OACnBC,kBAAkB,OAClBC,sBAAsB,SACtBC,mBAAmB,QACnBC,kBAAkB,2BAClBC,8BAA8B,eAC9BE,mBAAmB,aACnBD,mBAAmB,YAEnBE,cAAc,QACdC,cAAc,aACdC,iBAAiB,sBACjBC,eAAe,iBACfC,gBAAgB,aAChBC,eAAe,cACfC,eAAe,iBACfC,iBAAiB,SACjBC,kBAAkB,YAClBC,mBAAmB,SACnBC,kBAAkB,UAClBC,gBAAgB,iBAChBC,aAAa,SAEbC,qBAAqB,CAAC,cAAc,eAAe,WAAW,YAAY,SAAS,WAAW,WAAW,aAAa,eAAe,aAAa,aAAa,eAC/JC,mBAAmB,CAAC,WAAW,WAAW,SAAS,WAAW,UAAU,aAAa,SCvGvF,EAAA,EAAA;AAAA,MAAeU,KAAA,EACdr8D,MAAK,EACJ0oC,YAAW,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAC1HD,GAAAA,aAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC1FD,GAAAA,UAAS,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAA,GAC5EF,WAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEtD9jB,QAAO,EACN2C,sBAAqB,SACrBqxC,SAAQ,OACRC,UAAS,QACTC,WAAU,SACVj1D,WAAU,aACVk1D,WAAU,QACVC,aAAY,UACZj9B,cAAa,WACbhL,WAAU,QACV5I,aAAY,UACZoD,iBAAgB,IAChB1D,kBAAiB,oDACjBoxC,qBAAoB,eACpBC,cAAa,eACb3W,UAAS,YAGT4W,mBAAkB,yDAClBC,mBAAkB,gBAClBC,kBAAiB,YACjBC,uBAAsB,WACtBC,oBAAoB,eACpBC,wBAAwB,mBAGxByC,YAAW,UACX77D,MAAK,QACL87D,aAAY,eAGZC,UAAS,QAGTC,iBAAiB,UAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,SAClBC,mBAAmB,UACnBC,oBAAoB,WACpBC,mBAAmB,UACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,iBACxBC,aAAa,iBACbC,wBAAwB,mBACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,SACzBC,iCAAiC,SACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,eAClBC,8BAA8B,eAC9BC,mBAAmB,SACnBC,mBAAmB,UAEnBC,cAAc,SACdC,cAAc,aACdC,iBAAiB,iBACjBC,eAAe,cACfC,gBAAgB,eAChBC,eAAe,cACfC,eAAe,UACfC,iBAAiB,OACjBC,kBAAkB,QAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,WAChBC,aAAa,QAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACpIC,GAAAA,mBAAmB,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAA,EAAA,EAAA;ACpGxF,MAAeW,KAAA,EACdt8D,MAAM,EACL0oC,YAAY,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,cAAc,WAAW,aAAa,WAAA,GAC7HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,WAAW,SAAS,UAAU,aAAa,UAAU,WAAW,WAC3EF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,OACtBqxC,SAAS,OACTC,UAAU,UACVC,WAAW,OACXj1D,WAAW,gBACXk1D,WAAW,WACXC,aAAa,YACbj9B,cAAc,YACdhL,WAAW,UACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,qDAClBoxC,qBAAqB,eACrBC,cAAc,WACd3W,UAAU,eAEV4W,mBAAmB,sDACnBC,mBAAmB,oBACnBC,kBAAkB,YAClBC,uBAAuB,aACvBC,oBAAoB,mBACpBC,wBAAwB,sBAGxByC,YAAY,OACZ77D,MAAM,SACN87D,aAAa,eAGbC,UAAU,OAGVC,iBAAiB,OAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,eAClBC,mBAAmB,gBACnBC,oBAAoB,gBACpBC,mBAAmB,cACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,2BACxBC,aAAa,iBACbC,wBAAwB,WACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,6BAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,cAEnBE,cAAc,SACdC,cAAc,YACdC,iBAAiB,sBACjBC,eAAe,eACfC,gBAAgB,YAChBC,eAAe,YACfC,eAAe,iBACfC,iBAAiB,OACjBC,kBAAkB,UAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,eAChBC,aAAa,WAEbC,qBAAqB,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,aAAa,WAAW,aAAa,WACrIC,GAAAA,mBAAmB,CAAC,WAAW,SAAS,UAAU,aAAa,UAAU,WAAW,QAAA,EAAA,EAAA;ACzGtF,MAAeY,KAAA,EACdv8D,MAAM,EACL0oC,YAAY,CAAC,YAAY,YAAY,aAAa,YAAY,YAAY,gBAAgB,iBAAiB,UAAU,WAAW,WAAW,aAAa,UACxJD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,aAAa,aAAa,WAAW,eAAe,WAAW,aAAa,UAAA,GACvFF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,UACtBqxC,SAAS,SACTC,UAAU,UACVC,WAAW,YACXj1D,WAAW,kBACXk1D,WAAW,YACXC,aAAa,QACbj9B,cAAc,UACdhL,WAAW,WACX5I,aAAa,UACboD,iBAAiB,IACjB1D,kBAAkB,yCAClBoxC,qBAAqB,UACrBC,cAAc,aACd3W,UAAU,cAEV4W,mBAAmB,mEACnBC,mBAAmB,oBACnBC,kBAAkB,8BAClBC,uBAAuB,2BACvBC,oBAAoB,iBACpBC,wBAAwB,iBAGxByC,YAAY,eACZ77D,MAAM,cACN87D,aAAa,UAGbC,UAAU,UAGVC,iBAAiB,eAGjB3C,UAAU,UAGVxQ,gBAAe,sBACfC,cAAa,oBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,wBAClBC,mBAAmB,eACnBC,oBAAoB,iBACpBC,mBAAmB,cACnBC,uBAAuB,QACvBC,uBAAuB,mBACvBC,wBAAwB,4BACxBC,aAAa,eACbC,wBAAwB,6CACxBC,yBAAyB,UACzBC,0BAA0B,IAC1BC,uBAAuB,+BACvBC,yBAAyB,YACzBC,iCAAiC,QACjCC,gCAAgC,YAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,mBACtBC,mBAAmB,YACnBC,kBAAkB,oBAClBC,8BAA8B,wBAC9BE,mBAAmB,UACnBD,mBAAmB,IAEnBE,cAAc,cACdC,cAAc,cACdC,iBAAiB,kBACjBC,eAAe,eACfC,gBAAgB,iBAChBC,eAAe,cACfC,eAAe,cACfC,iBAAiB,SACjBC,kBAAkB,UAClBC,mBAAmB,YACnBC,kBAAkB,SAClBC,gBAAgB,oBAChBC,aAAa,WAEbC,qBAAqB,CAAC,YAAY,YAAY,aAAa,YAAY,YAAY,gBAAgB,iBAAiB,UAAU,WAAW,WAAW,aAAa,UAAA,GACjKC,mBAAmB,CAAC,aAAa,aAAa,WAAW,eAAe,WAAW,aAAa;ACtGlG,MAAea,KAAA,EACdx8D,MAAM,EACL0oC,YAAY,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,aAC1HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,QAC7FD,UAAU,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,QAC1EF,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,eACtBqxC,SAAS,QACTC,UAAU,WACVC,WAAW,QACXj1D,WAAW,oBACXk1D,WAAW,eACXC,aAAa,WACbj9B,cAAc,WACdhL,WAAW,YACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,uDAClBoxC,qBAAqB,eACrBC,cAAc,WACd3W,UAAU,oBAEV4W,mBAAmB,4DACnBC,mBAAmB,eACnBC,kBAAkB,aAClBC,uBAAuB,UACvBC,oBAAoB,qBACpBC,wBAAwB,sBAGxByC,YAAY,QACZ77D,MAAM,QACN87D,aAAa,eAGbC,UAAU,SAGVC,iBAAiB,QAGjB3C,UAAU,UAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,eAClBC,mBAAmB,gBACnBC,oBAAoB,aACpBC,mBAAmB,YACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,6BACxBC,aAAa,uBACbC,wBAAwB,YACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,QACzBC,iCAAiC,UACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,QACtBC,mBAAmB,QACnBC,kBAAkB,iCAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,SAEnBE,cAAc,UACdC,cAAc,eACdC,iBAAiB,wBACjBC,eAAe,kBACfC,gBAAgB,eAChBC,eAAe,gBACfC,eAAe,gBACfC,iBAAiB,QACjBC,kBAAkB,WAClBC,mBAAmB,QACnBC,kBAAkB,SAClBC,gBAAgB,aAChBC,aAAa,cAEbC,qBAAqB,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UACnIC,GAAAA,mBAAmB,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,QCtGrF,EAAA,EAAA;AAAA,MAAec,KAAA,EACdz8D,MAAM,EACL0oC,YAAY,CAAC,SAAS,UAAU,OAAO,SAAS,OAAO,QAAQ,QAAQ,UAAU,UAAU,WAAW,UAAU,OAChHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,KAAA,GAC9DF,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,QAE3C9jB,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,QACVC,WAAW,QACXj1D,WAAW,YACXk1D,WAAW,QACXC,aAAa,OACbj9B,cAAc,SACdhL,WAAW,QACX5I,aAAa,OACboD,iBAAiB,IACjB1D,kBAAkB,2BAClBoxC,qBAAqB,SACrBC,cAAc,SAEdC,mBAAmB,4CACnBC,mBAAmB,eACnBC,kBAAkB,WAClBC,uBAAuB,QACvB/W,UAAU,WACVgX,oBAAoB,iBACpBC,wBAAwB,cAGxByC,YAAY,WACZ77D,MAAM,SACN87D,aAAa,SAGbC,UAAU,QAGVC,iBAAiB,WAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,kBAGbuO,YAAW,MACXC,gBAAe,OAGf57C,MAAM,OACN8U,MAAM,SACNxY,MAAM,OACN6lB,OAAO,QACPxhC,KAAK,OACLyhC,MAAK,OACLC,QAAQ,OAGRu7B,kBAAkB,QAClBC,mBAAmB,SACnBC,oBAAoB,SACpBC,mBAAmB,QACnBC,uBAAuB,WACvBC,uBAAuB,QACvBC,wBAAwB,qBACxBC,aAAa,YACbC,wBAAwB,kBACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,WACvBC,yBAAyB,UACzBC,iCAAiC,WACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,SAClBC,sBAAsB,QACtBC,mBAAmB,QACnBC,kBAAkB,mBAClBC,8BAA8B,WAC9BE,mBAAmB,YACnBD,mBAAmB,QAEnBE,cAAc,UACdC,cAAc,UACdC,iBAAiB,gBACjBC,eAAe,WACfC,gBAAgB,WAChBC,eAAe,UACfC,eAAe,eACfC,iBAAiB,OACjBC,kBAAkB,QAClBC,mBAAmB,QACnBC,kBAAkB,OAClBC,gBAAgB,UAChBC,aAAa,UAEbC,qBAAqB,CAAC,SAAS,UAAU,OAAO,SAAS,OAAO,QAAQ,QAAQ,UAAU,UAAU,WAAW,UAAU,OAAA,GACzHC,mBAAmB,CAAC,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ;ACtGzE,MAAee,KAAA,EACd18D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,WAAW,WAAW,SAAS,UAAU,UAAU,aAAa,cAAc,WAAW,YAAY,UACvID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,YAAY,SAAS,QAAQ,UAAU,aAAa,UAAU,SAAA,GACzEF,WAAW,CAAC,MAAM,MAAM,MAAM,OAAO,OAAO,MAAM,KAAA,EAAA,GAEnD9jB,QAAQ,EACP2C,sBAAsB,MACtBqxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACXj1D,WAAW,cACXk1D,WAAW,UACXC,aAAa,SACbj9B,cAAc,aACdhL,WAAW,eACX5I,aAAa,UACboD,iBAAiB,IACjB1D,kBAAkB,gDAClBoxC,qBAAqB,UACrBC,cAAc,WACd3W,UAAU,eAGV4W,mBAAmB,yEACnBC,mBAAmB,qBACnBC,kBAAkB,UAClBC,uBAAuB,gBACvBC,oBAAoB,eACpBC,wBAAwB,uBAGxByC,YAAY,YACZ77D,MAAM,SACN87D,aAAa,UAGbC,UAAU,MAGVlT,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,QAClBC,mBAAmB,QACnBC,oBAAoB,QACpBC,mBAAmB,QACnBC,uBAAuB,UACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,yBACbC,wBAAwB,8BACxBC,yBAAyB,YACzBC,0BAA0B,SAC1BC,uBAAuB,cACvBC,yBAAyB,YACzBC,iCAAiC,UACjCC,gCAAgC,YAChCC,mBAAmB,SACnBC,kBAAkB,WAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,0BAClBC,8BAA8B,WAC9BC,mBAAmB,QACnBC,mBAAmB,kBAEnBC,cAAc,QACdC,cAAc,cACdC,iBAAiB,mBACjBC,eAAe,gBACfC,gBAAgB,mBAChBC,eAAe,gBACfC,eAAe,UACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,iBAChBC,aAAa,eAEbC,qBAAqB,CAAC,UAAU,WAAW,WAAW,WAAW,SAAS,UAAU,UAAU,aAAa,cAAc,WAAW,YAAY,aAChJC,mBAAmB,CAAC,YAAY,SAAS,QAAQ,UAAU,aAAa,UAAU,SCjGpF,EAAA,EAAA;AAAA,MAAe/+D,KAAA,EACdoD,MAAM,EACL0oC,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAC5HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,SAAS,UAAU,QAAQ,SAAS,SAAS,OAAA,GAClEF,WAAW,CAAC,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAExD9jB,QAAQ,EACP2C,sBAAsB,YACtBqxC,SAAS,QACTC,UAAU,UACVC,WAAW,SACXj1D,WAAW,cACXk1D,WAAW,UACXC,aAAa,SACbj9B,cAAc,UACdhL,WAAW,QACX5I,aAAa,SACboD,iBAAiB,IACjB1D,kBAAkB,sBAClBoxC,qBAAqB,cACrBC,cAAc,WACd3W,UAAU,cAGV4W,mBAAmB,mCACnBC,mBAAmB,eACnBC,kBAAkB,qBAClBC,uBAAuB,eACvBC,oBAAoB,iBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ77D,MAAM,WACN87D,aAAa,cAGbC,UAAU,SAGVC,iBAAiB,UAGjB3C,UAAU,SAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,WACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,qBACxBC,aAAa,kBACbC,wBAAwB,6BACxBC,yBAAyB,UACzBC,0BAA0B,QAC1BC,uBAAuB,eACvBC,yBAAyB,SACzBC,iCAAiC,UACjCC,gCAAgC,SAChCC,mBAAmB,QACnBC,kBAAkB,QAClBC,sBAAsB,QACtBC,mBAAmB,SACnBC,kBAAkB,uBAClBC,8BAA8B,YAC9BC,mBAAmB,WACnBC,mBAAmB,iBAEnBC,cAAc,gBACdC,cAAc,eACdC,iBAAiB,qBACjBC,eAAe,iBACfC,gBAAgB,gBAChBC,eAAe,gBACfC,eAAe,UACfC,iBAAiB,QACjBC,kBAAkB,UAClBC,mBAAmB,SACnBC,kBAAkB,SAClBC,gBAAgB,gBAChBC,aAAa,YAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UACrIC,GAAAA,mBAAmB,CAAC,UAAU,SAAS,UAAU,QAAQ,SAAS,SAAS,OAAA,EAAA,EAAA;ACvG7E,MAAegB,KAAA,EACd38D,MAAM,EACL0oC,YAAY,CAAC,WAAW,YAAY,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,YAAY,UAAA,GACnID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,YAAY,UAAU,WAAW,aAAa,WAAW,WAAW,WAC/EF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,UACTC,UAAU,aACVC,WAAW,QACXj1D,WAAW,gBACXk1D,WAAW,SACXC,aAAa,UACbj9B,cAAc,YACdhL,WAAW,YACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,0CAClBoxC,qBAAqB,eACrBC,cAAc,oBACd3W,UAAU,mBAEV4W,mBAAmB,6CACnBC,mBAAmB,qBACnBC,kBAAkB,eAClBC,uBAAuB,YACvBC,oBAAoB,uBACpBC,wBAAwB,wBAGxByC,YAAY,UACZ77D,MAAM,QACN87D,aAAa,eAGbC,UAAU,QAGVC,iBAAiB,UAGjB3C,UAAU,WAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,cAClBC,mBAAmB,eACnBC,oBAAoB,WACpBC,mBAAmB,WACnBC,uBAAuB,QACvBC,uBAAuB,UACvBC,wBAAwB,4BACxBC,aAAa,kBACbC,wBAAwB,cACxBC,yBAAyB,YACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,QACzBC,iCAAiC,QACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,UACtBC,mBAAmB,QACnBC,kBAAkB,qBAClBC,8BAA8B,aAC9BE,mBAAmB,QACnBD,mBAAmB,QAEnBE,cAAc,OACdC,cAAc,eACdC,iBAAiB,uBACjBC,eAAe,kBACfC,gBAAgB,aAChBC,eAAe,aACfC,eAAe,kBACfC,iBAAiB,UACjBC,kBAAkB,aAClBC,mBAAmB,QACnBC,kBAAkB,QAClBC,gBAAgB,aAChBC,aAAa,WAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,YAAY,aAC5IC,mBAAmB,CAAC,YAAY,UAAU,WAAW,aAAa,UAAU,WAAW,QCnGzF,EAAA,EAAA;AAAA,MAAeiB,KAAA,EACd58D,MAAM,EACL0oC,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,QACjFD,aAAa,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KACnFD,GAAAA,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GACrDF,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,QAE3C9jB,QAAQ,EACP2C,sBAAsB,MACtBqxC,SAAS,KACTC,UAAU,KACVC,WAAW,KACXj1D,WAAW,SACXk1D,WAAW,MACXC,aAAa,SACbj9B,cAAc,MACdhL,WAAW,MACX5I,aAAa,MACboD,iBAAiB,IACjB1D,kBAAkB,yBAClBoxC,qBAAqB,YACrBC,cAAc,MACdC,mBAAmB,0BACnBC,mBAAmB,aACnBC,kBAAkB,MAClBC,uBAAuB,MACvB/W,UAAU,MACVgX,oBAAoB,cACpBC,wBAAwB,UAGxByC,YAAY,OACZ77D,MAAM,MACN87D,aAAa,MAGbC,UAAU,MAGVC,iBAAiB,OAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,MAClBC,mBAAmB,MACnBC,oBAAoB,MACpBC,mBAAmB,MACnBC,uBAAuB,KACvBC,uBAAuB,KACvBC,wBAAwB,QACxBC,aAAa,UACbC,wBAAwB,UACxBC,yBAAyB,QACzBC,0BAA0B,MAC1BC,uBAAuB,MACvBC,yBAAyB,KACzBC,iCAAiC,KACjCC,gCAAgC,KAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,KACtBC,mBAAmB,KACnBC,kBAAkB,SAClBC,8BAA8B,MAC9BC,mBAAmB,KACnBC,mBAAmB,SAEnBC,cAAc,OACdC,cAAc,MACdC,iBAAiB,QACjBC,eAAe,MACfC,gBAAgB,MAChBC,eAAe,MACfC,eAAe,QACfC,iBAAiB,KACjBC,kBAAkB,KAClBC,mBAAmB,KACnBC,kBAAkB,KAClBC,gBAAgB,OAChBC,aAAa,MAEbC,qBAAqB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KAAA,GAC1FC,mBAAmB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO;ACxGjD,MAAMkB,cAAAA;AAAAA,EACpB,YAAYt+D,QAAAA;AACX1B,SAAKigE,WAAW;AAChB,eAAU97D,KAAKzC,QAAO;AACrB1B,WAAKigE,SAAS97D,CAAKzC,IAAAA,OAAOyC;IAC1B;AAAA,EACD;AAAA,EAED,UAAUiW,MAAMsN;AACf1nB,SAAKigE,SAAS7lD,IAAQsN,IAAAA;AAAAA,EACtB;AAAA,EAED,UAAUtN;AACT,WAAOpa,KAAKigE,SAAS7lD,IACrB;AAAA,EAAA;AAAA;ACdF,MAAe8lD,KAAA,EACd/8D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACxHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,WACzEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,SACtBqxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACXj1D,WAAW,eACXk1D,WAAW,SACXC,aAAa,UACbj9B,cAAc,YACdhL,WAAW,WACX5I,aAAa,SACboD,iBAAiB,IACjB1D,kBAAkB,sDAClBoxC,qBAAqB,eACrBC,cAAc,eAGdC,mBAAmB,+DACnBC,mBAAmB,qBACnBC,kBAAkB,MAClBC,uBAAuB,MACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ77D,MAAM,QACN87D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,UAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,kBACxBC,aAAa,iBACbC,wBAAwB,WACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,mBAClBC,8BAA8B,aAC9BE,mBAAmB,YACnBD,mBAAmB,SAEnBE,cAAc,SACdC,cAAc,YACdC,iBAAiB,eACjBC,eAAe,YACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,aACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACjIC,GAAAA,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,EAAA,EAAA;ACtGpF,MAAeqB,KAAA,EACdh9D,MAAM,EACL0oC,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,YAAY,aAAa,WAAW,YAAY,UAC7HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,WAAW,WAAW,YAAY,aAAa,WAAW,UAAA,GAC/EF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,WACtBqxC,SAAS,OACTC,UAAU,QACVC,WAAW,SACXj1D,WAAW,cACXk1D,WAAW,WACXC,aAAa,aACbj9B,cAAc,WACdhL,WAAW,YACX5I,aAAa,eACboD,iBAAiB,IACjB1D,kBAAkB,mDAClBoxC,qBAAqB,gBACrBC,cAAc,gBACd3W,UAAU,YAEV4W,mBAAmB,6CACnBC,mBAAmB,iBACnBC,kBAAkB,OAClBC,uBAAuB,OACvBC,oBAAoB,mBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ77D,MAAM,SACN87D,aAAa,gBAGbC,UAAU,QAGVC,iBAAiB,UAGjB3C,UAAU,SAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,aAClBC,mBAAmB,aACnBC,oBAAoB,eACpBC,mBAAmB,aACnBC,uBAAuB,QACvBC,uBAAuB,WACvBC,wBAAwB,gBACxBC,aAAa,iBACbC,wBAAwB,8BACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,cACvBC,yBAAyB,WACzBC,iCAAiC,UACjCC,gCAAgC,WAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,SAC9BE,mBAAmB,eACnBD,mBAAmB,MAEnBE,cAAc,SACdC,cAAc,YACdC,iBAAiB,gBACjBC,eAAe,aACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,aACfC,iBAAiB,OACjBC,kBAAkB,QAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,YAChBC,aAAa,WAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,YAAY,aAAa,WAAW,YAAY,UAAA,GACtIC,mBAAmB,CAAC,UAAU,WAAW,WAAW,YAAY,aAAa,WAAW;ACtG1F,MAAesB,KAAA,EACdj9D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,aACxHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,GACzEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEvD9jB,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACXj1D,WAAW,MACXk1D,WAAW,SACXC,aAAa,UACbj9B,cAAc,YACdhL,WAAW,SACX5I,aAAa,SACboD,iBAAiB,6CACjB1D,kBAAkB,8CAClBoxC,qBAAqB,eACrBC,cAAc,eACd3W,UAAU,YAGV4W,mBAAmB,yDACnBC,mBAAmB,yBACnBC,kBAAkB,cAClBC,uBAAuB,SACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ77D,MAAM,QACN87D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,UAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,gBACbC,wBAAwB,oBACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,eAC9BC,mBAAmB,SACnBC,mBAAmB,eAEnBC,cAAc,SACdC,cAAc,YACdC,iBAAiB,eACjBC,eAAe,YACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,aACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACjIC,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,EAAA,EAAA;ACvGpF,MAAeuB,KAAA,EACdl9D,MAAM,EACL0oC,YAAY,CAAC,WAAW,QAAQ,UAAU,YAAY,OAAO,YAAY,UAAU,YAAY,YAAY,eAAe,YAAY,UAAA,GACtID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,aAAa,gBAAgB,UAAU,SAAS,YAAY,UAAU,WACjFF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,SACTC,UAAU,WACVC,WAAW,WACXj1D,WAAW,kBACXk1D,WAAW,UACXC,aAAa,UACbj9B,cAAc,aACdhL,WAAW,UACX5I,aAAa,QACboD,iBAAiB,IACjB1D,kBAAkB,uDAClBoxC,qBAAqB,QACrBC,cAAc,eACd3W,UAAU,cAGV4W,mBAAmB,8DACnBC,mBAAmB,qBACnBC,kBAAkB,cAClBC,uBAAuB,WACvBC,oBAAoB,gBACpBC,wBAAwB,gBAGxByC,YAAY,UACZ77D,MAAM,QACN87D,aAAa,QAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,UAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,cAClBC,mBAAmB,aACnBC,oBAAoB,aACpBC,mBAAmB,UACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,yBACxBC,aAAa,qBACbC,wBAAwB,mBACxBC,yBAAyB,UACzBC,0BAA0B,KAC1BC,uBAAuB,eACvBC,yBAAyB,WACzBC,iCAAiC,UACjCC,gCAAgC,WAChCC,mBAAmB,KACnBC,kBAAkB,WAClBC,sBAAsB,gBACtBC,mBAAmB,IACnBC,kBAAkB,oBAClBC,8BAA8B,kBAC9BE,mBAAmB,YACnBD,mBAAmB,MAEnBE,cAAc,SACdC,cAAc,cACdC,iBAAiB,uBACjBC,eAAe,cACfC,gBAAgB,cAChBC,eAAe,UACfC,eAAe,kBACfC,iBAAiB,SACjBC,kBAAkB,WAClBC,mBAAmB,WACnBC,kBAAkB,OAClBC,gBAAgB,UAChBC,aAAa,cAEbC,qBAAqB,CAAC,YAAY,UAAU,SAAS,YAAY,QAAQ,WAAW,SAAS,YAAY,WAAW,cAAc,aAAa,YAC/IC,mBAAmB,CAAC,aAAa,eAAe,UAAU,QAAQ,YAAY,SAAS,QC7FzF,EAAA,EAAA;AAAA,MAAewB,KAAA,EACdn9D,MAAM,EACL0oC,YAAY,CAAC,WAAW,aAAa,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,YAAY,WAAW,YAAY,UAC9HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,WAAW,WAAW,SAAS,UAAU,UAAU,SAAS,QAAA,GACvEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,UACVC,WAAW,OACXj1D,WAAW,eACXk1D,WAAW,UACXC,aAAa,YACbj9B,cAAc,YACdhL,WAAW,UACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,mCAClBoxC,qBAAqB,aACrBC,cAAc,oBACd3W,UAAU,eAEV4W,mBAAmB,gDACnBC,mBAAmB,kBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxByC,YAAY,OACZ77D,MAAM,QACN87D,aAAa,aAGbC,UAAU,OAGVC,iBAAiB,OAGjB3C,UAAU,SAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,WACnBC,oBAAoB,UACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,UACvBC,wBAAwB,wBACxBC,aAAa,gBACbC,wBAAwB,WACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,kBAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,UAEnBE,cAAc,SACdC,cAAc,iBACdC,iBAAiB,uBACjBC,eAAe,eACfC,gBAAgB,YAChBC,eAAe,YACfC,eAAe,iBACfC,iBAAiB,OACjBC,kBAAkB,UAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,WAAW,aAAa,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,YAAY,WAAW,YAAY,UACvIC,GAAAA,mBAAmB,CAAC,WAAW,WAAW,SAAS,UAAU,UAAU,SAAS,QAAA,EAAA,EAAA;AC5GlF,MAAeyB,KAAA,EACdp9D,MAAK,EACJ0oC,YAAW,CAAC,YAAY,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS,UAAU,cAAc,aAAa,YAAY,UAAA,GACpID,aAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC1FD,UAAS,CAAC,YAAY,QAAQ,SAAS,YAAY,OAAO,UAAU,YACpEF,WAAU,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEhD9jB,EAAAA,GAAAA,QAAO,EACN2C,sBAAqB,UACrBqxC,SAAQ,MACRC,UAAS,aACTC,WAAU,QACVj1D,WAAU,iBACVk1D,WAAU,YACVC,aAAY,YACZj9B,cAAa,WACbhL,WAAU,YACV5I,aAAY,UACZoD,iBAAgB,8CAChB1D,kBAAiB,kDACjBoxC,qBAAoB,aACpBC,cAAa,YACb3W,UAAS,cAGT4W,mBAAkB,uDAClBC,mBAAkB,YAClBC,kBAAiB,eACjBC,uBAAsB,YACtBC,oBAAoB,kBACpBC,wBAAwB,yBAGxByC,YAAW,UACX77D,MAAK,QACL87D,aAAY,aAGZC,UAAS,MAGTC,iBAAiB,UAGjB3C,UAAU,SAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,cACnBC,oBAAoB,SACpBC,mBAAmB,SACnBC,uBAAuB,cACvBC,uBAAuB,UACvBC,wBAAwB,yBACxBC,aAAa,sBACbC,wBAAwB,kCACxBC,yBAAyB,aACzBC,0BAA0B,QAC1BC,uBAAuB,iBACvBC,yBAAyB,QACzBC,iCAAiC,cACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,WAClBC,sBAAsB,cACtBC,mBAAmB,IACnBC,kBAAkB,wBAClBC,8BAA8B,cAC9BE,mBAAmB,WACnBD,mBAAmB,QAEnBE,cAAc,aACdC,cAAc,iBACdC,iBAAiB,4BACjBC,eAAe,wBACfC,gBAAgB,mBAChBC,eAAe,iBACfC,eAAe,gBACfC,iBAAiB,MACjBC,kBAAkB,aAClBC,mBAAmB,QACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,cAEbC,qBAAqB,CAAC,YAAY,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS,UAAU,cAAc,aAAa,aAAa,WAC/IC,GAAAA,mBAAmB,CAAC,YAAY,QAAQ,SAAS,YAAY,OAAO,UAAU,SAAA,EAAA,EAAA;AC3GhF,MAAe0B,KAAA,EACdr9D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,QAAQ,UAAU,OAAO,QAAQ,QAAQ,UAAU,YAAY,WAAW,UAAU,SACtHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAE,eAAe,eAAe,WAAW,SAAS,WAAW,WAAW,SAAA,GACpFF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,WACtBqxC,SAAS,QACTC,UAAU,UACVC,WAAW,SACXj1D,WAAW,iBACXk1D,WAAW,aACXC,aAAa,YACbj9B,cAAc,UACdhL,WAAW,YACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,mDAClBoxC,qBAAqB,YACrBC,cAAc,kBACd3W,UAAU,aAEV4W,mBAAmB,uDACnBC,mBAAmB,cACnBC,kBAAkB,aAClBC,uBAAuB,YACvBC,oBAAoB,uBACpBC,wBAAwB,2BAGxByC,YAAY,UACZ77D,MAAM,QACN87D,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,WAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,QAClBC,mBAAmB,UACnBC,oBAAoB,SACpBC,mBAAmB,OACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,uBACxBC,aAAa,qBACbC,wBAAwB,eACxBC,yBAAyB,aACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,SACzBC,iCAAiC,WACjCC,gCAAgC,SAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,QACtBC,mBAAmB,IACnBC,kBAAkB,sBAClBC,8BAA8B,cAC9BE,mBAAmB,OACnBD,mBAAmB,IAEnBE,cAAc,WACdC,cAAc,eACdC,iBAAiB,sBACjBC,eAAe,iBACfC,gBAAgB,gBAChBC,eAAe,cACfC,eAAe,aACfC,iBAAiB,QACjBC,kBAAkB,UAClBC,mBAAmB,SACnBC,kBAAkB,OAClBC,gBAAgB,UAChBC,aAAa,iBAEbC,qBAAqB,CAAC,UAAU,WAAW,SAAS,UAAU,OAAO,QAAQ,QAAQ,WAAW,YAAY,WAAW,UAAU,SAAA,GACjIC,mBAAmB,CAAC,eAAe,eAAe,WAAW,SAAS,WAAW,WAAW;ACtG9F,MAAe2B,KAAA,EACdt9D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,SAAS,SAAS,UAAU,aAAa,WAAW,YAAY,aAC3HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,WAAW,cAAc,SAAS,SAAS,WAAW,SAAS,QAC1EF,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,SACtBqxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACXj1D,WAAW,eACXk1D,WAAW,UACXC,aAAa,YACbj9B,cAAc,eACdhL,WAAW,SACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,4CAClBoxC,qBAAqB,QACrBC,cAAc,iBACd3W,UAAU,WAGV4W,mBAAmB,sDACnBC,mBAAmB,kBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,eACpBC,wBAAwB,mBAGxByC,YAAY,UACZ77D,MAAM,SACN87D,aAAa,QAGbC,UAAU,QAGVC,iBAAiB,UAGjB3C,UAAU,QAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,oBACxBC,aAAa,mBACbC,wBAAwB,2BACxBC,yBAAyB,aACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,wBAClBC,8BAA8B,aAC9BC,mBAAmB,MACnBC,mBAAmB,aAEnBC,cAAc,UACdC,cAAc,YACdC,iBAAiB,oBACjBC,eAAe,cACfC,gBAAgB,cAChBC,eAAe,cACfC,eAAe,WACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,YAChBC,aAAa,YAEbC,qBAAqB,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,SAAS,SAAS,UAAU,aAAa,WAAW,YAAY,UACpIC,GAAAA,mBAAmB,CAAC,WAAW,cAAc,SAAS,SAAS,WAAW,SAAS,QCvGrF,EAAA,EAAA;AAAA,MAAe4B,KAAA,EACdv9D,MAAM,EACL0oC,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,OAAO,OAAO,UAAU,aAAa,WAAW,YAAY,UACvHD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,KAC5FD,GAAAA,UAAU,CAAC,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU,QAAA,GAC1EF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,UACVC,WAAW,UACXj1D,WAAW,gBACXk1D,WAAW,UACXC,aAAa,QACbj9B,cAAc,UACdhL,WAAW,UACX5I,aAAa,UACboD,iBAAiB,wCACjB1D,kBAAkB,6CAClBoxC,qBAAqB,YACrBC,cAAc,kBAGdC,mBAAmB,sDACnBC,mBAAmB,uBACnBC,kBAAkB,WAClBC,uBAAuB,WACvBC,oBAAoB,sBACpBC,wBAAwB,qBAGxByC,YAAY,WACZ77D,MAAM,SACN87D,aAAa,YAGbC,UAAU,OACV5Z,UAAU,YAGV6Z,iBAAiB,WAGjB3C,UAAU,WAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,SAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,iBACbC,wBAAwB,mBACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,UACzBC,iCAAiC,SACjCC,gCAAgC,UAChCC,mBAAmB,MACnBC,kBAAkB,SAClBC,sBAAsB,OACtBC,mBAAmB,UACnBC,kBAAkB,wBAClBC,8BAA8B,eAC9BE,mBAAmB,UACnBD,mBAAmB,MAEnBE,cAAc,SACdC,cAAc,aACdC,iBAAiB,sBACjBC,eAAe,gBACfC,gBAAgB,gBAChBC,eAAe,aACfC,eAAe,WACfC,iBAAiB,OACjBC,kBAAkB,UAClBC,mBAAmB,UACnBC,kBAAkB,OAClBC,gBAAgB,YAChBC,aAAa,UAEbC,qBAAqB,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,OAAO,OAAO,UAAU,aAAa,WAAW,YAAY,aAChIC,mBAAmB,CAAC,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU,QCvGrF,EAAA,EAAA;AAAA,MAAe6B,KAAA,EACdx9D,MAAM,EACL0oC,YAAY,CAAC,WAAW,YAAY,QAAQ,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAC3HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU,QAAA,GACxEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,QACtBqxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACXj1D,WAAW,eACXk1D,WAAW,SACXC,aAAa,SACbj9B,cAAc,YACdhL,WAAW,SACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,2DAClBoxC,qBAAqB,eACrBC,cAAc,OACd3W,UAAU,cAGV4W,mBAAmB,2DACnBC,mBAAmB,oBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,mBACpBC,wBAAwB,qBAGxByC,YAAY,cACZ77D,MAAM,SACN87D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,cAGjB3C,UAAU,UAGVxQ,gBAAe,wBACfC,cAAa,sBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,YAClBC,mBAAmB,YACnBC,oBAAoB,aACpBC,mBAAmB,WACnBC,uBAAuB,OACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,gBACbC,wBAAwB,sBACxBC,yBAAyB,WACzBC,0BAA0B,OAC1BC,uBAAuB,aACvBC,yBAAyB,SACzBC,iCAAiC,OACjCC,gCAAgC,SAChCC,mBAAmB,OACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,gBAC9BE,mBAAmB,eACnBD,mBAAmB,SAEnBE,cAAc,UACdC,cAAc,aACdC,iBAAiB,gBACjBC,eAAe,eACfC,gBAAgB,eAChBC,eAAe,YACfC,eAAe,YACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,YAChBC,aAAa,UAEbC,qBAAqB,CAAC,WAAW,YAAY,QAAQ,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UACpIC,GAAAA,mBAAmB,CAAC,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU,QAAA,EAAA,EAAA;ACvGnF,MAAe8B,KAAA,EACdz9D,MAAM,EACL0oC,YAAY,CAAC,QAAQ,SAAS,QAAQ,SAAS,SAAS,WAAW,UAAU,WAAW,SAAS,QAAQ,SAAS,QAAA,GAClHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,SAAS,aAAa,QAAQ,YAAY,YAAY,QAAQ,cACzEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,SACtBqxC,SAAS,OACTC,UAAU,SACVC,WAAW,MACXj1D,WAAW,SACXk1D,WAAW,UACXC,aAAa,SACbj9B,cAAc,YACdhL,WAAW,WACX5I,aAAa,OACboD,iBAAiB,IACjB1D,kBAAkB,8BAClBoxC,qBAAqB,YACrBC,cAAc,iBACd3W,UAAU,WAGV4W,mBAAmB,iDACnBC,mBAAmB,sBACnBC,kBAAkB,SAClBC,uBAAuB,SACvBC,oBAAoB,kBACpBC,wBAAwB,4BAGxByC,YAAY,UACZ77D,MAAM,SACN87D,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,UAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,SACpBC,mBAAmB,UACnBC,uBAAuB,OACvBC,uBAAuB,OACvBC,wBAAwB,eACxBC,aAAa,eACbC,wBAAwB,sBACxBC,yBAAyB,aACzBC,0BAA0B,aAC1BC,uBAAuB,WACvBC,yBAAyB,MACzBC,iCAAiC,OACjCC,gCAAgC,MAChCC,mBAAmB,aACnBC,kBAAkB,QAClBC,sBAAsB,QACtBC,mBAAmB,MACnBC,kBAAkB,oBAClBC,8BAA8B,QAC9BC,mBAAmB,SACnBC,mBAAmB,mBAEnBC,cAAc,QACdC,cAAc,WACdC,iBAAiB,eACjBC,eAAe,aACfC,gBAAgB,UAChBC,eAAe,WACfC,eAAe,QACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,MACnBC,kBAAkB,OAClBC,gBAAgB,aAChBC,aAAa,SAEbC,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,SAAS,SAAS,WAAW,UAAU,WAAW,SAAS,QAAQ,SAAS,WAC3HC,mBAAmB,CAAC,SAAS,aAAa,QAAQ,YAAY,YAAY,QAAQ,WCvGpF,EAAA,EAAA;AAAA,MAAe+B,KAAA,EACd19D,MAAM,EACL0oC,YAAY,CAAC,UAAU,SAAS,YAAY,WAAW,WAAW,WAAW,UAAU,WAAW,YAAY,WAAW,YAAY,YACrID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,aAAa,YAAY,UAAU,UAAU,YAAY,QAC9EF,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,YACtBqxC,SAAS,QACTC,UAAU,WACVC,WAAW,UACXj1D,WAAW,cACXk1D,WAAW,YACXC,aAAa,WACbj9B,cAAc,UACdhL,WAAW,cACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,2CAClBoxC,qBAAqB,QACrBC,cAAc,oBACd3W,UAAU,aAGV4W,mBAAmB,sDACnBC,mBAAmB,qBACnBC,kBAAkB,cAClBC,uBAAuB,YACvBC,oBAAoB,oBACpBC,wBAAwB,wBAGxByC,YAAY,WACZ77D,MAAM,QACN87D,aAAa,QAGbC,UAAU,OAGVC,iBAAiB,WAGjB3C,UAAU,WAGVxQ,gBAAe,kBACfC,cAAa,gBAGbuO,YAAW,MACXC,gBAAe,UAGf57C,MAAM,QACN8U,MAAM,YACNxY,MAAM,QACN6lB,OAAO,SACPxhC,KAAK,OACLyhC,MAAK,QACLC,QAAQ,UAGRu7B,kBAAkB,QAClBC,mBAAmB,WACnBC,oBAAoB,UACpBC,mBAAmB,OACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,uBACxBC,aAAa,sBACbC,wBAAwB,iBACxBC,yBAAyB,eACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,UACzBC,iCAAiC,UACjCC,gCAAgC,UAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,QACtBC,mBAAmB,IACnBC,kBAAkB,uBAClBC,8BAA8B,aAC9BE,mBAAmB,OACnBD,mBAAmB,IAEnBE,cAAc,UACdC,cAAc,SACdC,iBAAiB,sBACjBC,eAAe,WACfC,gBAAgB,YAChBC,eAAe,UACfC,eAAe,eACfC,iBAAiB,QACjBC,kBAAkB,WAClBC,mBAAmB,UACnBC,kBAAkB,OAClBC,gBAAgB,WAChBC,aAAa,gBAEbC,qBAAqB,CAAC,SAAS,UAAU,WAAW,UAAU,UAAU,UAAU,SAAS,UAAU,WAAW,UAAU,aAAa,QAAA,GACvIC,mBAAmB,CAAC,WAAW,cAAc,aAAa,WAAW,aAAa,aAAa;ACtElF,SAAAgC,cAAAA;AACd,SAAO,IAAId,cAAc,EACxBR,IACA9D,IACAqD,IACAK,IACAC,IACAljB,IACAmjB,IACAC,IACA97C,IACAg8C,IACAC,IACAC,IACAC,IACAC,IACA9/D,IACA+/D,IACAC,IACAG,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,GAAAA,CAAAA;AAEF;AC/DO,MAAME,WAAAA;AAAAA,EACZ,YAAYphE,YAAW6L,WAAWuwB,QAAQ,CAAA,GACzC/7B;AAAAA,SAAK+7B,QAAQ,EACZ54B,MAAM,oBAAIqB,QACVw8D,OAAO,CAAC,QAAQ,UAAU,OAC1BC,GAAAA,cAAc,IACdC,YAAY,CAAA,GACZC,kBAAkB,GAAA,GACfplC;AAEJ/7B,SAAKwL,YAAY;AACjBxL,SAAK0F,UAAU;AACf1F,SAAKohE,wBAAwB,CAC7BphE;AAAAA,SAAKL,YAAYA;AACjBK,SAAKqhE,aAAa1hE,WAAUooB,qBAAAA;AAC5B/nB,SAAK+7B,QAAQ/7B,KAAKiG,SAClBqd;AAAAA,kBAAUtjB;AACV,QAAGwL,WAAU;AAEZxL,WAAKwL,YAAYA;AACjBxL,WAAKoH,OAAOpH,KAAKwL,SAAAA;AAAAA,IACjB;AAEDxL,SAAKshE,cAAc,CAACC,UAAUC,aAAAA;AAC7BxhE,WAAK4K,UAAU,iBAAiB,CAAC42D,UAAUD;IAAU,CAEtD;AAAA,EAAA;AAAA,EAED,WACC;AAAA,WAAO,KACHvhE,KAAK+7B,OACRt8B,MAAMO,KAAK+7B,MAAMilC,MAAMhhE,KAAK+7B,MAAMolC,gBAEnC,EAAA;AAAA,EAAA;AAAA,EAED,SAASK,UAAAA;AACR,UAAMD,WAAW,KAAKvhE,KAAK+7B,MAAAA;AAC3B,QAAGylC,SAAS/hE,MAAK;AAChB+hE,eAASL,mBAAmBnhE,KAAK+7B,MAAMilC,MAAMjvD,QAAQyvD,SAAS/hE;IAC9D;AACDO,SAAK+7B,QAAQ,EAAK/7B,GAAAA,KAAK+7B,OAAUylC,GAAAA,SAAAA;AAEjCxhE,SAAKyhE,mBAAmBF,UAAUvhE,KAAK+7B,KAEvC;AAAA,QAAI/7B,KAAKwL,WAAW;AACnBxL,WAAKoH,OAAOpH,KAAKwL,SACjB;AAAA,IAAA;AAAA,EACD;AAAA,EAED,cAAcqS;AACb7d,SAAKohE,sBAAsBv9D,KAAKga,OAAAA;AAGhC,WAAO,MACN;AAAA,YAAMvO,QAAQtP,KAAKohE,sBAAsBrvD,QAAQ8L,OACjD;AAAA,UAAIvO,UAAW,IAAG;AACjBtP,aAAKohE,sBAAsBhuD,OAAO9D,OAAO,CAAA;AAAA,MACzC;AAAA;EAEF;AAAA,EAED,mBAAmBiyD,UAAUC;AAC5BxhE,SAAKohE,sBAAsBz9D,QAAQka,aAAWA,QAAQ0jD,UAAUC,QAChE,CAAA;AAAA,EAAA;AAAA,EAED,YAAYn6C;AAEX,UAAM5nB,EAAAA,MAAK0D,KAAEA,IAAQnD,KAAKiG,SAC1B;AAAA,UAAMy7D,UAAU,IAAIl9D,KAAKrB,IACzB;AAAA,QAAI1D,SAAS,QAAQ;AACpBiiE,cAAQr0B,SAASlqC,KAAKyV,SAAayO,IAAAA,SAAAA;AAAAA,IACtC,WAAa5nB,SAAS,UAAU;AAC7BiiE,cAAQC,YAAYx+D,KAAKwV,YAAAA,IAAgB0O,SAC5C;AAAA,IAAA,OAAS;AACNq6C,cAAQC,YAAYx+D,KAAKwV,YAAgB0O,IAAAA,YAAY;IACrD;AACDrnB,SAAK4hE,SAAS,EAAEz+D,MAAMu+D,QACtB,CAAA;AAAA,EAAA;AAAA,EAED,cACC;AAAA,UAAMG,YAAY7hE,KAAK+7B,MAAMolC,mBAAmB,KAAKnhE,KAAK+7B,MAAMilC,MAAM58D;AACtEpE,SAAK4hE,SAAS,EAAET,kBAAkBU,SAAAA,CAAAA;AAAAA,EAClC;AAAA,EAED,sBAAsBr2D,WACrB;AAAA,UAAA,EAAM/L,MAAK0D,SAAUnD,KAAKiG,SAAAA;AAE1B,UAAM6d,SAASjkB,SAASC,cAAc,KAAA;AACtCgkB,WAAOpH,UAAUtZ,IAAI;AAErB,UAAM0+D,gBAAgBjiE,SAASC,cAAc;AAE7CgiE,kBAAcplD,UAAUtZ,IAAI,4BAA4B,kBAAkB;AAC1E0gB,WAAO1jB,YAAY0hE,aAEnB;AAAA,UAAMC,aAAaliE,SAASC,cAAc;AAC1CiiE,eAAWrlD,UAAUtZ,IAAI,0BAEzB;AAAA,QAAI3D,SAAS,QAAQ;AACpBsiE,iBAAWC,YAAY7+D,KAAK8+D,eAAe,WAAW,EAAEjhC,OAAO,OAAA,CAAA,IAAY,MAAM79B,KAAKwV;IACzF,WAAalZ,SAAS,UAAU;AAC7BsiE,iBAAWC,YAAY7+D,KAAKwV,YAC/B;AAAA,IAAA,OAAS;AACN,YAAMupD,YAAY/wD,KAAK8D,MAAM9R,KAAKwV,gBAAgB,EAAM,IAAA;AACxDopD,iBAAWC,YAAY,GAAGE,SAAeA,MAAAA,YAAY;IACrD;AAEDliE,SAAKqhE,WAAWn5C,OAAO65C,YAAY,SAAS/hE,KAAKmiE,YAAYt/C,KAAK7iB,IAAAA,CAAAA;AAClE8jB,WAAO1jB,YAAY2hE,UAAAA;AAEnB,UAAMK,eAAeviE,SAASC,cAAc,QAAA;AAE5CsiE,iBAAa1lD,UAAUtZ,IAAI,4BAA4B,kBAAkB,aAAA;AACzE0gB,WAAO1jB,YAAYgiE,YAAAA;AAEnB52D,cAAUpL,YAAY0jB;AAEtB9jB,SAAKqhE,WAAWn5C,OAAO45C,eAAe,SAAS9hE,KAAKqiE,YAAYx/C,KAAK7iB,MAAO,EAAA,CAAA;AAC5EA,SAAKqhE,WAAWn5C,OAAOk6C,cAAc,SAASpiE,KAAKqiE,YAAYx/C,KAAK7iB,MAAM,CAC1E,CAAA;AAAA,EAAA;AAAA,EAED,OAAOwL,WAAAA;AACNxL,SAAKqhE,WAAWr5C,UAAAA;AAChBhoB,SAAKwL,YAAYA,aAAaxL,KAAKwL;AACnCxL,SAAKwL,UAAUtL,YAAY;AAE3B,QAAIF,CAAAA,KAAK0F,SAAQ;AAChB1F,WAAK0F,UAAU7F,SAASC,cAAc,KACtCE;AAAAA,WAAK0F,QAAQgX,UAAUtZ,IAAI;IAC3B;AACDpD,SAAK0F,QAAQxF,YAAY;AACzBF,SAAKwL,UAAUpL,YAAYJ,KAAK0F,OAAAA;AAEhC1F,SAAKsiE,sBAAsBtiE,KAAK0F,OAChC;AAAA,UAAM68D,gBAAgB1iE,SAASC,cAAc;AAC7CyiE,kBAAc7lD,UAAUtZ,IAAI,yBAC5BpD;AAAAA,SAAK0F,QAAQtF,YAAYmiE;AAEzB,UAAM9iE,EAAAA,SAASO,KAAKiG,SAAAA;AACpB,QAAIxG,SAAS,QAAQ;AACpBO,WAAKwiE,eAAeD,aACvB;AAAA,IAAA,WAAa9iE,SAAS,UAAU;AAC7BO,WAAKyiE,iBAAiBF,aACzB;AAAA,IAAA,OAAS;AACNviE,WAAK0iE,gBAAgBH;IACrB;AAAA,EACD;AAAA,EAED,qBAAqBI,qBAAAA;AACpB,UAAMx/D,EAAAA,SAASnD,KAAKiG,SAAAA;AACpB,UAAMtG,aAAYK,KAAKL;AAEvB,QAAIijE,cAAcjjE,WAAUwD,KAAK6B,WAAW,IAAIR,KAAKrB;AACrD,UAAM4tB,UAAUpxB,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK6B,WAAW,IAAIR,KAAKrB,QAAQ,GAAG,MAAA;AAEjFw/D,wBAAoBjmD,UAAUtZ,IAAI,yBAElC;AAAA,UAAMy/D,cAAcljE,WAAUwD,KAAK2qC,YAAY,IAE/C;AAAA,WAAO80B,YAAY79D,QAAYgsB,IAAAA,QAAQhsB,QAAW,GAAA;AACjD,YAAM0iB,QAAQo7C,YAAYD;AAE1B,YAAME,aAAajjE,SAASC,cAAc,KAAA;AAC1CgjE,iBAAWhmD,aAAa,YAAY8lD,YAAY75D,OAAAA,CAAAA;AAChD+5D,iBAAWpmD,UAAUtZ,IAAI;AACzB0/D,iBAAWd,YAAYv6C;AACvBk7C,0BAAoBviE,YAAY0iE,UAEhCF;AAAAA,oBAAcjjE,WAAUwD,KAAKC,IAAIw/D,aAAa,GAAG,KAAA;AAAA,IACjD;AAAA,EAED;AAAA,EAED,cAAct0D,KAAKC;AAClB,UAAM5O,aAAYK,KAAKL;AACvB,QAAI65C,QAAQ;AACZ,QAAIupB,WAAW,IAAIv+D,KAAK8J,GACxB;AAAA,WAAMy0D,SAASh+D,QAAYwJ,IAAAA,IAAIxJ,QAAU,GAAA;AACxCy0C,eAAS;AACTupB,iBAAWpjE,WAAUwD,KAAK6B,WAAWrF,WAAUwD,KAAKC,IAAI2/D,UAAU,GAAG;IACrE;AACD,WAAOvpB;AAAAA,EACP;AAAA,EAED,eAAehuC,WAAAA;AACd,UAAMrI,EAAAA,MAAK89D,cAAcC,YAAY8B,aAAchjE,KAAKiG,SAAAA;AAExD,QAAIg9D,mBAAmBhC,aAAa,CACpC;AAAA,QAAIiC,mBAAmBjC,aAAa,CAAA;AAEpC,UAAMkC,iBAAiBjC,WAAWkC,OAAO,CAACj0C,KAAKhsB,UAC9C;AAAA,YAAMkgE,WAAWrjE,KAAKL,UAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKrB,KAAAA,CAAAA;AACxDgsB,UAAIk0C,SAASt+D,QAAAA,CAAAA,IAAa;AAC1B,aAAOoqB;AAAAA,IAAG,GACR,CAAE,CAAA;AAIL,UAAMwzC,sBAAsB9iE,SAASC,cAAc,KAAA;AACnDE,SAAKsjE,qBAAqBX,mBAAAA;AAC1Bn3D,cAAUpL,YAAYuiE,mBAAAA;AAEtB,UAAMhjE,aAAYK,KAAKL;AACvB,UAAM4jE,YAAY5jE,WAAUwD,KAAK6B,WAAWrF,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKrB,IAChF,CAAA,CAAA;AAAA,UAAMqgE,aAAa7jE,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKrB,IACvD,CAAA;AAAA,UAAMsgE,WAAW9jE,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKrB,IAAQ,CAAA,GAAA,GAAG;AACnF,QAAIugE,WAAW/jE,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKrB,QAAQ,GAAG,OAAA;AACjF,UAAMwgE,iBAAiBhkE,WAAUwD,KAAKyF,UAAUjJ,WAAUsM,aAC1D,CAAA;AAAA,QAAGy3D,SAAS36D,OAAa,MAAA,GAAE;AAC1B26D,iBAAW/jE,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK6B,WAAW0+D,WAAW,GAAG,MAAA;AAAA,IACtE;AAED,QAAIlqB,QAAQx5C,KAAK4jE,cAAcL,WAAWG,QAC1C;AAAA,QAAGV,YAAYxpB,QAAQwpB,UAAS;AAC/BU,iBAAW/jE,WAAUwD,KAAKC,IAAIsgE,UAAWV,WAAWxpB,OAAQ;IAC5D;AAED,QAAI10C,WAAWy+D;AAEf,UAAMM,mBAAmBhkE,SAASC,cAAc,KAChD+jE;AAAAA,qBAAiBnnD,UAAUtZ,IAAI,yBAAA;AAE/BpD,SAAKqhE,WAAWn5C,OAAO27C,kBAAkB,SAAUriE,CAAAA,WAAAA;AAClD,YAAMsiE,WAAWtiE,OAAMuE,OAAOC,QAAQ;AACtC,YAAM7C,QAAO,IAAIqB,KAAKs/D,SAASr/D,aAAa,gBAAA,CAAA;AAC5CzE,WAAK4K,UAAU,eAAe,CAACzH,OAAM3B,MAAAA,CAAAA;AAAAA,IAAO;AAG7C,WAAMsD,SAASC,QAAY2+D,IAAAA,SAAS3+D,WAAU;AAC7C,YAAM+9D,aAAajjE,SAASC,cAAc;AAC1CgjE,iBAAWhmD,aAAa,kBAAkBnd,WAAU2zB,UAAUgD,YAAYxxB,QAAAA,CAAAA;AAC1Eg+D,iBAAWhmD,aAAa,YAAYhY,SAASiE,OAC7C+5D,CAAAA;AAAAA,iBAAW5iE,YAAY4E,SAASsE;AAEhC,UAAGtE,SAASC,YAAYy+D,WAAWz+D,QAAAA,GAAU;AAC5C+9D,mBAAWpmD,UAAUtZ,IAAI,YAAA;AAAA,MACzB,WAAQ0B,SAASC,aAAa0+D,SAAS1+D,QAAAA,GAAU;AACjD+9D,mBAAWpmD,UAAUtZ,IAAI,WAAA;AAAA,MACzB;AAED,UAAG0B,SAASiE,aAAa,KAAKjE,SAASiE,aAAa,GAAE;AACrD+5D,mBAAWpmD,UAAUtZ,IAAI,4BACzB;AAAA,MAAA;AAED,UAAG0B,SAASC,QAAAA,KAAa4+D,eAAe5+D,QAAU,GAAA;AACjD+9D,mBAAWpmD,UAAUtZ,IAAI,SACzB;AAAA,MAAA;AAED,UAAG6/D,oBAAoBC,kBAAiB;AACvC,YAAGp+D,SAASC,QAAak+D,KAAAA,iBAAiBl+D,aAAaD,SAASC,QAAAA,IAAYm+D,iBAAiBn+D,QAAU,GAAA;AACtG+9D,qBAAWpmD,UAAUtZ,IAAI,4BACzB;AAAA,QAAA;AAAA,MACD;AAED,UAAG+/D,eAAer+D,SAASC,QAAW,CAAA,GAAA;AACrC+9D,mBAAWpmD,UAAUtZ,IAAI,0BACzB;AAAA,MAAA;AAED0/D,iBAAWpmD,UAAUtZ,IAAI;AAEzBygE,uBAAiBzjE,YAAY0iE;AAC7Bh+D,iBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,KAAA;AAAA,IAC3C;AAED0G,cAAUpL,YAAYyjE;EAEtB;AAAA,EAED,iBAAiBr4D,WAAAA;AAChB,YAAMrI,KAACA,IAAQnD,KAAKiG,SAEpB;AAAA,UAAM89D,UAAUlkE,SAASC,cAAc,KACvCikE;AAAAA,YAAQrnD,UAAUtZ,IAAI,2BAAA;AAEtB,UAAM4gE,SAAS,CAAA;AACf,aAAQ7/D,IAAI,GAAGA,IAAI,IAAIA,KAAI;AAC1B6/D,aAAOngE,KAAK,IAAIW,KAAKrB,KAAKwV,YAAAA,GAAexU,GAAG,CAAA,CAAA;AAAA,IAC5C;AAED,UAAM8/D,cAAcjkE,KAAKL,UAAUwD,KAAK2qC,YAAY,IACpDk2B;AAAAA,WAAOrgE,QAAQq9B,WAAAA;AACd,YAAMkjC,eAAerkE,SAASC,cAAc,KAC5CokE;AAAAA,mBAAaxnD,UAAUtZ,IAAI,0BAAA;AAC3B,UAAGD,KAAKyV,eAAeooB,MAAMpoB,SAAAA,GAAW;AACvCsrD,qBAAaxnD,UAAUtZ,IAAI,4BAC3B;AAAA,MAAA;AACD8gE,mBAAapnD,aAAa,cAAckkB,MAAMpoB,SAAAA,CAAAA;AAC9CsrD,mBAAahkE,YAAY+jE,YAAYjjC;AACrChhC,WAAKqhE,WAAWn5C,OAAOg8C,cAAc,SAAS,MAC7C;AAAA,cAAMxC,UAAU,IAAIl9D,KAAKw8B;AACzBhhC,aAAK4hE,SAAS,EACbz+D,MAAMu+D,SACNjiE,MAAM,OAAA,CAAA;AAAA,MACL;AAEHskE,cAAQ3jE,YAAY8jE;IAAa,CAElC14D;AAAAA,cAAUpL,YAAY2jE,OAAAA;AAEtB,UAAMI,WAAWtkE,SAASC,cAAc,KACxCqkE;AAAAA,aAASznD,UAAUtZ,IAAI,yBAAA;AACvB,UAAMghE,UAAUvkE,SAASC,cAAc,QAAA;AACvCskE,YAAQpC,YAAY;AACpBoC,YAAQ1nD,UAAUtZ,IAAI,6BACtBpD;AAAAA,SAAKqhE,WAAWn5C,OAAOk8C,SAAS,SAAS,MACxCpkE;AAAAA,WAAK4hE,SAAS,EACbniE,MAAM,OACL,CAAA;AAAA,IAAA,CAAA;AAEH0kE,aAAS/jE,YAAYgkE,OAAAA;AACrB54D,cAAUpL,YAAY+jE,QAAAA;AAAAA,EACtB;AAAA,EAED,gBAAgB34D,WACf;AAAA,UAAA,EAAMrI,KAASnD,IAAAA,KAAKiG;AACpB,UAAMi8D,YAAY/wD,KAAK8D,MAAM9R,KAAKwV,YAAgB,IAAA,EAAA,IAAM;AAExD,UAAMorD,UAAUlkE,SAASC,cAAc,KAAA;AACvCikE,YAAQrnD,UAAUtZ,IAAI,0BACtB;AAAA,aAASe,IAAI+9D,YAAY,GAAG/9D,KAAK+9D,YAAY,IAAI/9D,KAAK;AACrD,YAAMkgE,cAAcxkE,SAASC,cAAc,KAAA;AAC3CukE,kBAAYrC,YAAY79D;AACxBkgE,kBAAY3nD,UAAUtZ,IAAI,yBAC1BihE;AAAAA,kBAAYvnD,aAAa,aAAa3Y,CAAAA;AACtC,UAAGhB,KAAKwV,YAAAA,MAAkBxU,GAAE;AAC3BkgE,oBAAY3nD,UAAUtZ,IAAI;MAC1B;AACDpD,WAAKqhE,WAAWn5C,OAAOm8C,aAAa,SAAS,MAC5CrkE;AAAAA,aAAK4hE,SAAS,EACbz+D,MAAM,IAAIqB,KAAKL,GAAGhB,KAAKyV,SAAAA,GAAY,IACnCnZ,MAAM,SAAA,CAAA;AAAA,MACL,CAEHskE;AAAAA,cAAQ3jE,YAAYikE,WAEpB;AAAA,IAAA;AACD74D,cAAUpL,YAAY2jE,OAAAA;AAEtB,UAAMI,WAAWtkE,SAASC,cAAc,KAAA;AACxCqkE,aAASznD,UAAUtZ,IAAI;AACvB,UAAMghE,UAAUvkE,SAASC,cAAc,QAAA;AACvCskE,YAAQpC,YAAY;AACpBoC,YAAQ1nD,UAAUtZ,IAAI,6BACtBpD;AAAAA,SAAKqhE,WAAWn5C,OAAOk8C,SAAS,SAAS,MAAA;AACxCpkE,WAAK4hE,SAAS,EACbniE,MAAM,SACL,CAAA;AAAA,IAAA,CAAA;AAEH0kE,aAAS/jE,YAAYgkE,OAAAA;AACrB54D,cAAUpL,YAAY+jE;EACtB;AAAA,EAED;AACCnkE,SAAKohE,wBAAwB;AAC7B,QAAGphE,KAAK0F,SAAQ;AACf1F,WAAK0F,QAAQxF,YAAY;AACzBF,WAAK0F,QAAQ8uB;IACb;AAEDx0B,SAAKqhE,WAAWr5C,UAAAA;AAChBhoB,SAAK4K,UAAU,aAAa;AAC5B5K,SAAKqjB,gBAAAA;AAELrjB,SAAKL,YAAY;AAAA,EACjB;ACnUa;AAAA,SAAQ2kE,cAACC,kBAEvB;AAAA,QAAM5kE,aAAY,EAAEy4D,SAAS;AAE7Bz4D,EAAAA,WAAU8W,iBAAiB+tD,aAE3B7kE;AAAAA,EAAAA,WAAUsG,WAAWtG,WAAU8W,eAAexQ;AAC9Cw+D,WAAc9kE,UAAAA;AACd2U,WAAO3U,UACP+kE;AAAAA,WAAc/kE,UACdglE;AAAAA,WAAShlE;AAGTA,EAAAA,WAAU6Z,QAAQA;AAClB7Z,EAAAA,WAAU8tB,cAAc4X;AACxB1lC,EAAAA,WAAU6Z,MAAMorD,MAAMv/B;AACtB1lC,EAAAA,WAAU+O,MAAM8K,MAAM9K;AACtB/O,EAAAA,WAAU8Z,QAAQD,MAAMC;AACxB9Z,EAAAA,WAAUkZ,UAAUW,MAAMX;AAC1BlZ,EAAAA,WAAU8a,SAASA,OAAO9a,UAC1BA;AAAAA,EAAAA,WAAU+G,OAAO8S,MAAM9S;AAEvB/G,EAAAA,WAAUklE,oBAAoB,SAASr5D,WAAW9J,QAAAA;AACjD,WAAO,IAAIq/D,WAAWphE,YAAW6L,WAAW9J,MAAAA;AAAAA,EAC9C;AAMC/B,EAAAA,WAAUmlE,qBAAqBz/B,YAAYjB;AAC3CzkC,EAAAA,WAAUmS,gBAAgBuzB,YAAYzC;AACtCjjC,EAAAA,WAAUolE,cAAc1/B,YAAYlC;AAEpC,QAAM6hC,aAAan+D,QAAQlH;AAC3BA,EAAAA,WAAU6Z,MAAMC,MAAM9Z,YAAWqlE,UAAAA;AAEjCrlE,EAAAA,WAAUknC,MAAMlnC,WAAUmtB,OAAO+Z;AACjClnC,EAAAA,WAAU8nC,UAAUxmC,OAAOwmC;AAC3B5mC,WAAWlB,UACXooC;AAAAA,WAAKpoC;AAELgsB,WAAKhsB,UAAAA;AACL+B,WAAO/B,UACP6B;AAAAA,WAAM7B;AACNslE,WAAgBtlE,UAAAA;AAChBojD,WAAKpjD,UAAAA;AACLg6B,WAASh6B,UACTixC;AAAAA,WAAMjxC;AACNulE,WAAmBvlE,UAAAA;AAEnBwlE,WAAMxlE,UACNylE;AAAAA,WAAAA;AACA9zB,WAAa3xC,UAAAA;AACb0lE,SAAoB1lE,UAEpB2lE;AAAAA,WAAU3lE;AACV,QAAM4lE,OAAOzE;AACbnhE,EAAAA,WAAU4lE,OAAO,EAChBC,WAAWD,KAAKC,WAChBC,WAAW,SAAS/9C,QACnB;AAAA,QAAA,OAAUA,WAAW,UAAS;AAC7B,UAAIg+C,eAAeH,KAAKI,UAAUj+C,MAAAA;AAClC,WAAIg+C,cAAa;AAChBA,uBAAeH,KAAKI,UAAU,IAC9B;AAAA,MAAA;AAEDhmE,MAAAA,WAAU+nB,SAASg+C;AAAAA,IACnB,WAAQh+C,QAAO;AACf,UAAI/nB,CAAAA,WAAU+nB,QAAO;AACpB/nB,QAAAA,WAAU+nB,SAASA;AAAAA,MACxB,OAAS;AACJ,iBAAQvjB,KAAKujB,QAAO;AACnB,cAAGA,OAAOvjB,CAAaujB,KAAAA,OAAAA,OAAOvjB,OAAO,UAAS;AAC7C,iBAAIxE,WAAU+nB,OAAOvjB,CAAG,GAAA;AACvBxE,cAAAA,WAAU+nB,OAAOvjB,CAAAA,IAAK;YACtB;AAEDxE,YAAAA,WAAU8Z,MAAM9Z,WAAU+nB,OAAOvjB,CAAAA,GAAIujB,OAAOvjB,CAAI,GAAA,IAAA;AAAA,UACvD,OAAW;AACJxE,YAAAA,WAAU+nB,OAAOvjB,CAAKujB,IAAAA,OAAOvjB,CAC7B;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED,QAAIwjB,SAAShoB,WAAU+nB,OAAOC;AAC9BA,WAAOi+C,eAAgBj+C,OAAOm0C;AAC9Bn0C,WAAOk+C,iBAAkBl+C,OAAOo0C;AAChCp0C,WAAOm+C,iBAAkBn+C,OAAOuD;AAEhC,QAAGvrB,WAAUqE,YAAW;AACvBrE,MAAAA,WAAUwS;IACV;AAAA,EAED,GACDwzD,WAAWJ,KAAKI,UAAAA;AAEjBhmE,EAAAA,WAAU4lE,KAAKE,UAAU,IACzBM;AAAAA,cAAWpmE;AACXA,EAAAA,WAAUqmE,MAAM;AAEhB,QAAMC,gBAAgB,CAAA;AACtBtmE,EAAAA,WAAUumE,UAAU,SAASxkE,QAC5B;AAAA,UAAMykE,gBAAgBC,iBAAiB1kE,QAAQ,EAC7C2kE,cAAc,CAAC,UACfC,GAAAA,aAAa,CAAC,UACdC,GAAAA,WAAW,CAAC,QACV,EAAA,GAAA,EACFC,QAAQ,GACRzuD,OAAO,GACPkD,UAAU,GACVqrD,aAAa,GACbD,cAAc,GACdE,WAAU,EAGZJ,CAAAA;AAAAA,kBAAcxiE,QAAQ,SAASyW,MAAAA;AAC9B,WAAI6rD,cAAc7rD,IAAAA,GAAM;AACvB,cAAMqsD,SAASlC,iBAAiBmC,aAAatsD;AAC7C,YAAGqsD,QAAO;AACTA,iBAAO9mE,UAAAA;AACPsmE,wBAAc7rD,IAAQ,IAAA;AAAA,QAC3B,OAAS;AACJ,gBAAM,IAAInI,MAAM,oBAAoBmI,IACpC;AAAA,QAAA;AAAA,MACD;AAAA,IACJ,CACA;AAAA,EAAA;AAEC,WAASgsD,iBAAiB1kE,QAAQilE,cAAcC,YAAAA;AAC/C,UAAM3tD,SAAS,CAAA;AAEf,eAAU9U,KAAKzC,QAAO;AACrB,UAAGA,OAAOyC,CAAAA,GAAG;AACZ,cAAM0iE,YAAY1iE,EAAEwe,YACpB;AAAA,YAAGgkD,aAAaE,SAAAA,GAAW;AAC1BF,uBAAaE,SAAAA,EAAWljE,QAAQ,SAASmjE,KAAAA;AACxC,kBAAMC,iBAAiBD,IAAInkD,YAC3B;AAAA,gBAAA,CAAIjhB,OAAOqlE,cAAgB,GAAA;AAC1B9tD,qBAAOpV,KAAKkjE,cAAAA;AAAAA,YACZ;AAAA,UACP,CACK;AAAA,QAAA;AACD9tD,eAAOpV,KAAKgjE;MACZ;AAAA,IACD;AAED5tD,WAAOurB,KAAK,SAASroB,GAAGC,GACvB;AAAA,YAAM4qD,SAASJ,WAAWzqD,MAAM;AAChC,YAAM8qD,SAASL,WAAWxqD,CAAAA,KAAM;AAChC,UAAG4qD,SAASC,QAAO;AAClB,eAAO;AAAA,MACX,WAAYD,SAASC,QAAO;AACxB,eAAQ;AAAA,MACZ,OAAQ;AACJ,eAAO;AAAA,MACP;AAAA,IACJ;AAEE,WAAOhuD;AAAAA,EACP;AAED,SAAOtZ;AAER;AChNe,MAAMunE;EACpB,YAAYxlE;AACX1B,SAAKmnE,cAAc;AACnB,eAAUhjE,KAAKzC,QAAO;AACrB1B,WAAKmnE,YAAYhjE,CAAKzC,IAAAA,OAAOyC;IAC7B;AAAA,EACD;AAAA,EAED,aAAaiW,MAAM4rD,KAClBhmE;AAAAA,SAAKmnE,YAAY/sD,IAAQ4rD,IAAAA;AAAAA,EACzB;AAAA,EAED,aAAa5rD,MACZ;AAAA,WAAOpa,KAAKmnE,YAAY/sD,IAAAA;AAAAA,EACxB;;ACVFhb,WAOA;AAAA,MAAMgoE;EAEL,YAAaC,YACZrnE;AAAAA,SAAKsnE,QAAQ;AACbtnE,SAAKunE,oBAAoB,CACzBvnE;AAAAA,SAAKwnE,qBAAqBH;AAC1BrnE,SAAKynE,qBAAqB,IAAIP,kBAAkBG,UAChD;AAAA,EAAA;AAAA,EAED,OAAOl8B,MAAAA;AACNnrC,SAAKunE,kBAAkB1jE,KAAKsnC,IAE5B;AAAA,QAAGjqC,SAAOvB,WAAU;AACnBwrC,WAAKjqC,SAAOvB,SAAAA;AAAAA,IACZ;AAAA,EACD;AAAA,EAED,qBAAqB+nE,YAAAA;AACpB,QAAI/nE,aAAY2kE,cAActkE,KAAKynE,kBAEnC;AAAA,aAAStjE,IAAI,GAAGA,IAAInE,KAAKunE,kBAAkBnjE,QAAQD,KAAK;AACvDnE,WAAKunE,kBAAkBpjE,GAAGxE,UAC1B;AAAA,IAAA;AACDA,IAAAA,WAAUgoE,eAAe3nE,KAAKsnE;AAE9B,QAAItnE,KAAK4nE,cAAa;AACrB5nE,WAAK4nE,aAAajoE,UAAAA;AAAAA,IAClB;AAED,QAAG+nE,YAAW;AACb1nE,WAAK6nE,gBAAgBloE,YAAW+nE,UAAAA;AAAAA,IAChC;AAED,WAAO/nE;AAAAA,EACP;AAAA,EAED,gBAAgBA,YAAW+nE,YAAAA;AAC1B,QAAGA,WAAWxB,SAAQ;AACrBvmE,MAAAA,WAAUumE,QAAQwB,WAAWxB,OAAAA;AAAAA,IAC7B;AAED,QAAGwB,WAAWhmE,QAAO;AACpB/B,MAAAA,WAAU8Z,MAAM9Z,WAAU+B,QAAQgmE,WAAWhmE,QAAQ;IACrD;AAED,QAAGgmE,WAAWp0C,WAAU;AACvB3zB,MAAAA,WAAUiG,YAAY,oBAAoB,WACzCjG;AAAAA,QAAAA,WAAU8Z,MAAM9Z,WAAU2zB,WAAWo0C,WAAWp0C,WAAW,IAAA;AAAA,MAC/D,GAAM,EAAClR,MAAM,KACV,CAAA;AAAA,IAAA;AAED,QAAGslD,WAAW3nB,QAAO;AACpB,iBAAUv+C,UAASkmE,WAAW3nB,QAAO;AACpCpgD,QAAAA,WAAUiG,YAAYpE,QAAOkmE,WAAW3nB,OAAOv+C,MAC/C,CAAA;AAAA,MAAA;AAAA,IACD;AAED,QAAGkmE,WAAWhgD,QAAO;AACpB/nB,MAAAA,WAAU4lE,KAAKE,UAAUiC,WAAWhgD,MACpC;AAAA,IAAA;AAED,QAAG3Z,MAAMkK,QAAQyvD,WAAWI,SAAAA,GAAW;AACtCJ,iBAAWI,UAAUnkE,QAAQ,SAASma,UAAAA;AACrCne,QAAAA,WAAUooE,YAAYjqD,QAAAA;AAAAA,MAC1B,CACG;AAAA,IAAA;AAED,QAAG4pD,WAAWl8D,WAAU;AACvB7L,MAAAA,WAAUmB,KAAK4mE,WAAWl8D,SAC7B;AAAA,IAAA,OAAS;AACN7L,MAAAA,WAAUmB;IACV;AAED,QAAG4mE,WAAWj2D,MAAK;AAClB,iBAAUi2D,WAAWj2D,SAAS,UAAS;AACtC9R,QAAAA,WAAUojD,KAAK2kB,WAAWj2D;MAC9B,OAAQ;AACJ9R,QAAAA,WAAUsoC,MAAMy/B,WAAWj2D,IAC3B;AAAA,MAAA;AAAA,IACD;AAAA,EACD;AC3Fa;AAAA,SAAQu2D,aAACroE,YAExBA;AAAAA,EAAAA,WAAU+B,OAAOumE,mBAAmB;AACpCtoE,EAAAA,WAAUuoE,qBAAqB,SAASriE,GACvC;AAAA,QAAI0J,QAAQ1J,EAAEE;AACd,QAAIkvB,KAAK1lB,MAAM9K,aAAa,gBAAA;AAC5B,QAAI0jE,MAAMxoE,WAAUwD,KAAK4qC,YAAYpuC,WAAU+B,OAAOkuC,UAAU,OAAO,IACvE;AAAA,QAAI3a,IAAI;AACPt1B,MAAAA,WAAU8X,eAAe0wD,IAAIlzC,EAAAA,GAAKt1B,WAAU+B,OAAOumE,gBAAAA;AACnD,UAAIpiE,KAAKA,EAAEsiB;AACVtiB,UAAEsiB;AACH,aAAO;AAAA,IACP;AAAA,EACF;AACAxoB,EAAAA,WAAUiG,YAAY,oBAAoB;AACzC,QAAIwiE,aAAa,SAASlzD,MAAKmzD,UAAAA;AAC9BA,iBAAWA,YAAanzD,OAAI;AAE5B,UAAA,CAAIvV,WAAU2zB,UAAU,uBAAsB+0C,WAAU;AACvD1oE,QAAAA,WAAU2zB,UAAU,uBAAsB+0C,QAAAA,IAAY1oE,WAAU2zB,UAAU+0C;MAC1E;AACD,UAAIC,SAAS3oE,WAAU2zB,UAAU,uBAAsB+0C,QACvD;AAAA,UAAIE,MAAM5oE,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOkuC,QACtDjwC;AAAAA,MAAAA,WAAU2zB,UAAU+0C,QAAY,IAAA,SAASllE,MACxC;AAAA,eAAO,wBAAwBolE,IAAIplE,IAAAA,IAAQ,gBAAgBmlE,OAAOnlE,IAAAA,IAAQ;AAAA,MAC7E;AAAA,IACA;AAECilE,eAAW,MAAA;AACXA,eAAW,IAAI,WAAA;AACf,QAAIpoE,KAAKuL,QAAO;AACf,eAAS2J,OAAOlV,KAAKuL;AACpB68D,mBAAWlzD,GAAAA;AAAAA,IACZ;AAEDlV,SAAKwjB,gBAAgBxjB,KAAKukB,MAAM,SAAS5kB,WAAUuoE,kBAAAA;AACnDvoE,IAAAA,WAAU6B,MAAMxB,KAAKukB,MAAM,SAAS5kB,WAAUuoE;EAC/C,CAEA;AAAA;ACvCe,SAAQM,cAAC7oE;AAExBA,EAAAA,WAAUwD,KAAKslE,oBAAoB,SAAStlE;AAC3C,WAAOxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,MAAA;AAAA,EACpC;AAEAxD,EAAAA,WAAU2zB,UAAUo1C,qBAAqB,SAASn5D,OAAMC,KAAIhJ,IAAAA;AAC3D,QAAIA,GAAG4D;AACN,aAAOpK,KAAK09B,SAASl3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAI,MAAIxG,KAAKoyC,WAAW7iC;;AAEzE,aAAO5P,WAAU2zB,UAAUoK,SAASnuB,KAAAA,IAAO,cAAY5P,WAAU2zB,UAAUoK,SAASluB,GAAAA;AAAAA,EACtF;AACA7P,EAAAA,WAAU2zB,UAAUq1C,qBAAqB,SAASp5D,OAAMC,KAAIhO,QAAAA;AAC3D,WAAOA,OAAMsF;AAAAA,EACd;AACAnH,EAAAA,WAAU2zB,UAAUs1C,qBAAqB,WAAY;AAAA,WAAO;AAAA,EAAG;AAE/DjpE,EAAAA,WAAUwD,KAAK0lE,sBAAoB;AAAY,WAAOlpE,WAAUwD,KAAKyF,UAAUjJ,WAAUsM,aAAgB,CAAA;AAAA,EAAA;AAEzGtM,EAAAA,WAAUiG,YAAY,oBAAmB;AACxC,QAAIkjE,4BAA4BnpE,WAAUopE;AAC1CppE,IAAAA,WAAUopE,wBAAwB,WAAA;AACjC,UAAI/oE,KAAK4M,SAAS,iBAAiB;AAClC,YAAA,CAAK5M,KAAK0B,OAAOkoB,YAAY5pB,KAAK0B,OAAO+T;AACxCzV,eAAK0V,YAAAA;AAAAA,MACT,OAAS;AACN,YAAIozD;AACH,iBAAOA,0BAA0B16D,MAAMpO,MAAMiU;MAC9C;AAAA,IACH;AAGC,QAAI64B,MAAMntC,WAAU+X;AACpB/X,IAAAA,WAAU+X,cAAY,SAAS/N,KAAAA;AAC9B,UAAI3J,KAAK4M,SAAS;AACjBo8D,wBAEA;AAAA;AAAA,eAAOl8B,IAAI1+B,MAAMpO,MAAKiU,SACzB;AAAA,IAAA;AAEC,QAAIg1D,uBAAuBtpE,WAAUgY;AACrChY,IAAAA,WAAUgY,mBAAmB;AAC5B,UAAG3X,KAAK4M,SAAS,iBAAiB;AACjCjN,QAAAA,WAAUupE,mBAAmBvpE,WAAUoM,KAAK,cAAA,EAAgB,GAAG8F,WAAW,CAAA,EAAGyb;AAC7E3tB,QAAAA,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG8F,WAAW,CAAGyb,EAAAA,YAAY;AAAA,MAC5D;AACD,aAAO27C,qBAAqB76D,MAAMpO,MAAKiU,SACzC;AAAA,IAAA;AAIC,aAASk1D,cAAc1pE,MAAAA;AACtB,UAAIA,MAAK;AACR,YAAI2pE,IAAIzpE,WAAU+nB,OAAOC;AAEzB,YAAI0hD,UAAU1pE,WAAUioB,SAAS2W,qBACjC;AAAA,YAAI+qC,aAAa3pE,WAAUioB,SAAS4W,qBAAqB4qC,EAAEjmE;AAC3D,YAAIomE,oBAAoB5pE,WAAUioB,SAAS6W,4BAA4B2qC,EAAEnK,WAAAA;AAEzEt/D,QAAAA,WAAUoM,KAAK,gBAAA,EAAkB,GAAG7L,YAAU,UAAQmpE,UAAQ,0DACrDC,aAAW,MAAIF,EAAEjmE,OAAK,wEACkComE,oBAAkB,MAAIH,EAAEnK,cAAY;AAErGt/D,QAAAA,WAAUgN,cAAY;AACtBhN,QAAAA,WAAUslB;MACV;AAAA,IACD;AAED,aAAS+jD,kBAGR;AAAA,UAAIjpB,SAASpgD,WAAU80C;AACvBsL,aAAOvb,KAAK,SAASroB,GAAEC,GAAAA;AAAI,eAAOD,EAAEpZ,aAAWqZ,EAAErZ,aAAW;MAAK,CAAA;AAEjE,UAAIymE,YAAY7pE,WAAUioB,SAAS8W,qBACnC;AAAA,UAAIC;AAEJ,UAAIz7B,OAAK,kCAAgCsmE,YAAU;AACnD,eAASrlE,IAAE,GAAGA,IAAE47C,OAAO37C,QAAQD,KAAI;AAClC,YAAIqC,KAAKu5C,OAAO57C,CAAAA;AAChB,YAAIs5C,WAAYj3C,GAAG40C,QAAO,sCAAoC50C,GAAG40C,QAAM,MAAK;AAC5E,YAAIA,QAAS50C,GAAGu1C,YAAW,iCAA+Bv1C,GAAGu1C,YAAU,MAAK;AAC5E,YAAI0tB,WAAW9pE,WAAU2zB,UAAUif,YAAY/rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD;AAE3Em4B,gCAAwBh/B,WAAUioB,SAAS+W,sBAAsBn4B,EAAAA;AACjE,YAAIkjE,0BAA0B/pE,WAAUioB,SAASiX,uBAAAA;AAEjD37B,gBAAM,UAAQy7B,wBAAsB,6BAA2B8qC,WAAS,MAAIA,WAAS,MACnF,iBAAejjE,GAAGzG,KAAG,OAAKJ,WAAU+B,OAAOwC,kBAAgB,OAAKsC,GAAGzG,KAAG,cAAYq7C,QAASqC,YAC1Fj3C,GAAGy0C,eAAa,MAAI,2CACpBt7C,WAAU+B,OAAOkjB,MAAMjlB,WAAU2zB,UAAUq2C,YAAYnjE,GAAGxD,UAASwD,GAAGzD,YAAYyD,EAAI7G,IAAAA,WAAU2zB,UAAUq2C,YAAYnjE,GAAGzD,YAAYyD,GAAGxD,UAASwD,EAClJ,KAAA;AACFtD,gBAAM,QAAQwmE,uBAAAA;AAAAA;AAAAA;AAGdxmE,gBAAM,WAASvD,WAAU2zB,UAAUs2C,YAAYpjE,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAI,IAAA;AAAA,MAC/E;AACDtD,cAAM;AAGNvD,MAAAA,WAAUoM,KAAK,gBAAgB,CAAG7L,EAAAA,YAAYgD;AAC9CvD,MAAAA,WAAUoM,KAAK,gBAAgB,CAAG8F,EAAAA,WAAW,CAAGyb,EAAAA,YAAY3tB,WAAUupE,oBAAkB;AAGxF,UAAIW,cAAclqE,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG8F,WAAW,CAAA;AAC/D,UAAIi4D,WAAWD,YAAYh4D,WAAWg4D,YAAYh4D,WAAWzN,SAAO,CACpE0lE;AAAAA,eAASxnE,MAAMwO,SAAU+4D,YAAY/oD,eAAenhB,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG+U,eAAgB,SAAU+oD,YAAY/oD,eAAa;AAEzI,UAAI3M,IAAExU,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG1L,WAAWwR;AAEnD,UAAIk4D,cAAcpqE,WAAUm3B;AAC5B,UAAGizC,aAAY;AACdA,oBAAY7pE,YAAUP,WAAU2zB,UAAU02C,YAAYrqE,WAAUyM,WAAWzM,WAAUwM,WAAWxM,WAAUiN;MAC1G;AAEDjN,MAAAA,WAAUg0C,YAAU,CACpB;AAAA,eAASxvC,IAAE,GAAGA,IAAIgQ,EAAE/P,SAAO,GAAGD;AAC7BxE,QAAAA,WAAUg0C,UAAUxvC,CAAAA,IAAGgQ,EAAEhQ,CAAAA;AAAAA,IAE1B;AAEDxE,IAAAA,WAAUsqE,qBAAmB,SAASxqE,MACrCE;AAAAA,MAAAA,WAAUyM,YAAYzM,WAAU+B,OAAOwoE,gBAAcvqE,WAAUwD,KAAK0lE,oBAAoBlpE,WAAUkV;AAClGlV,MAAAA,WAAUwM,YAAYxM,WAAU+B,OAAOyoE,cAAYxqE,WAAUwD,KAAKslE,kBAAkB9oE,WAAUyM,WAAW;AAEzG+8D,oBAAc1pE,IAAAA;AACd,UAAIA,MAAK;AACRE,QAAAA,WAAU+Q,QAAQ;AAClB/Q,QAAAA,WAAU6tB,SAAS;AACnB7tB,QAAAA,WAAUgN,cAAc;AAExBq8D,wBACH;AAAA,MAAA,OAAS;AACNrpE,QAAAA,WAAUgN,cAAc;AAAA,MAExB;AAAA,IACH;AAAA,EACA,CAGA;AAAA;AC5Ie,SAAQy9D,YAACzqE,YAAAA;AAEvBA,EAAAA,WAAUwD,KAAKknE,aAAa,SAASlnE,MAAMoqC;AAC1C,WAAO5tC,WAAUwD,KAAKC,IAAID,MAAM,IAAEoqC,KAAK;EACzC;AAEC5tC,EAAAA,WAAU2zB,UAAUq2C,cAAc,SAASp6D,OAAMC,KAAIhJ,IAAAA;AACpD,QAAIA,GAAG4D,QAAO;AACb,aAAO,GAAGpK,KAAKoyC,WAAW7iC,YAAYvP,KAAKoyC,WAAW5iC,GACzD,CAAA;AAAA,IAAA,OAAO;AACJ,aAAO7P,WAAU+nB,OAAOC,OAAO29B;AAAAA,IAC/B;AAAA,EACH;AACC3lD,EAAAA,WAAU2zB,UAAUs2C,cAAc,SAASr6D,OAAMC,KAAIhJ;AACpD,WAAOA,GAAGM;AAAAA,EACZ;AAEC,QAAMwjE,eAAe3qE,WAAUwD,KAAK2qC,YAAY,OAAA;AAChD,QAAMy8B,cAAc5qE,WAAUwD,KAAK2qC,YAAY,IAAA;AAE/CnuC,EAAAA,WAAU2zB,UAAUk3C,aAAa,SAASrnE,MAAAA;AACzC,WAAO,oCAAoCmnE,aAAannE;oCACtBonE,YAAYpnE,IAAAA,CAAAA;AAAAA,EAChD;AACCxD,EAAAA,WAAU2zB,UAAU02C,cAAc,SAASz6D,OAAOC,KACjD;AAAA,WAAO7P,WAAU2zB,UAAUic,WAAW5vC,WAAUsG,SAAAA,EAAW9C;EAC7D;AAECxD,EAAAA,WAAUwD,KAAK+mE,eAAa,SAAS/mE;AACpC,WAAOxD,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKrB,IAAAA,CAAAA;AAAAA,EAC7C;AAEC,MAAImqB,YAAY;AAEhB3tB,EAAAA,WAAUiG,YAAY,oBAAmB,WAAA;AACxC,QAAIkjE,4BAA4BnpE,WAAUopE;AAC1CppE,IAAAA,WAAUopE,wBAAwB;AACjC,UAAI/oE,KAAK4M,SAAS,UAAU;AAC3B,YAAK5M,CAAAA,KAAK0B,OAAOkoB,YAAY5pB,KAAK0B,OAAO+T;AACxCzV,eAAK0V,YACV;AAAA,MAAA,OAAU;AACN,YAAIozD;AACH,iBAAOA,0BAA0B16D,MAAMpO,MAAMiU,SAC9C;AAAA,MAAA;AAAA,IACJ;AAGE,QAAI64B,MAAMntC,WAAU+X;AACpB/X,IAAAA,WAAU+X,cAAY,SAAS/N;AAC9B,UAAI3J,KAAK4M,SAAS;AACjBo8D;;AAEA,eAAOl8B,IAAI1+B,MAAMpO,MAAKiU,SAAAA;AAAAA,IAC1B;AAEE,QAAIg1D,uBAAuBtpE,WAAUgY;AACrChY,IAAAA,WAAUgY,mBAAmB,WAAA;AAC5B,UAAG3X,KAAK4M,SAAS,UAAU;AAC1B0gB,oBAAY3tB,WAAUoM,KAAK,gBAAgB,CAAGuhB,EAAAA;AAC9C3tB,QAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAGuhB,YAAY;AAAA,MAC9C;AACD,aAAO27C,qBAAqB76D,MAAMpO,MAAKiU,SAC1C;AAAA,IAAA;AAEE,aAAS+0D,kBACR;AAAA,YAAMjpB,SAASpgD,WAAU80C;AACzBsL,aAAOvb,KAAK,SAASroB,GAAEC,GAAAA;AAAI,eAAOD,EAAEpZ,aAAWqZ,EAAErZ,aAAW;MAAK,CAAA;AAEjE,YAAM0nE,eAAe,CAAA;AACrB,UAAI3lE,WAAWnF,WAAUsG,SAAAA,EAAWkK;AACpC,YAAM4gB,UAAUpxB,WAAUsG,SAAWmK,EAAAA;AACrC,aAAMtL,SAASC,QAAAA,IAAYgsB,QAAQhsB,QAAAA,GAAU;AAC5C0lE,qBAAa3lE,SAASC,aAAa,CACnCD;AAAAA,mBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG;MAC3C;AAED,UAAI4lE,YAAY;AAEhB3qB,aAAOp8C,QAAS6C,QACf;AAAA,YAAIyC,aAAatJ,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKgC,GAAGzD,UAAAA,CAAAA;AACtD,eAAOkG,WAAWlE,QAAAA,IAAYyB,GAAGxD,SAAS+B,WAAW;AACpD,cAAI0lE,aAAaxhE,WAAWlE,QAAAA,CAAAA,GAAY;AACvC0lE,yBAAaxhE,WAAWlE,QAAWlB,CAAAA,EAAAA,KAAK2C;AACxCkkE,wBAAY;AAAA,UACZ;AACDzhE,uBAAatJ,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAI6F,YAAY,GAAG,KAAA,CAAA;AAAA,QACxE;AAAA;AAGF,UAAIyhE,CAAAA,WAAU;AACb/qE,QAAAA,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG7L,YAAYyqE,gBAClD;AAAA,MAAA,OAAQ;AACJ,YAAIznE,OAAO;AACX,iBAAQ1D,OAAOirE,cAAa;AAC3BvnE,kBAAQ0nE,UAAU,IAAIpmE,KAAKhF,MAAI,IAAIirE,aAAajrE,GAAAA,CAAAA;AAAAA,QAChD;AAEDG,QAAAA,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG7L,YAAYgD;AAAAA,MAC9C;AAEDvD,MAAAA,WAAUoM,KAAK,cAAA,EAAgB,CAAGuhB,EAAAA,YAAYA;AAE9C,UAAInZ,IAAIxU,WAAUoM,KAAK,cAAA,EAAgB,GAAG9H,iBAAiB,4BAAA;AAC3DtE,MAAAA,WAAUg0C,YAAY;AACtB,eAASxvC,IAAI,GAAGA,IAAIgQ,EAAE/P,SAAS,GAAGD,KAAK;AACtCxE,QAAAA,WAAUg0C,UAAUxvC,CAAAA,IAAKgQ,EAAEhQ,CAC3B;AAAA,MAAA;AAAA,IACD;AAID,aAASwmE,kBAAAA;AACR,aAAO,yCAAyChrE,WAAU+nB,OAAOC,OAAOq3C;IACxE;AAED,aAAS4L,UAAUprE,KAAKugD,QAAAA;AACvB,UAAIA,CAAAA,OAAO37C,QAAO;AACjB,eAAO;AAAA,MACP;AACD,UAAIlB,OAAO;AAAA;AAAA,0CAE4BvD,WAAU2zB,UAAUk3C,WAAWhrE;;;AAItEugD,aAAOp8C,QAASknE;AACf3nE,gBAAQ4nE,eAAetrE,KAAKqrE,aAAc;AAAA,MAAA,CAAA;AAG3C3nE,cAAQ;AACR,aAAOA;AAAAA,IACP;AAED,aAAS4nE,eAAetrE,KAAKqrE;AAC5B,YAAMlmE,QAAQhF,WAAU2zB,UAAUq2C,YAAYkB,cAAc9nE,YAAY8nE,cAAc7nE,UAAU6nE,aAAAA;AAChG,YAAME,aAAaprE,WAAUsG,SAAWqjB,EAAAA;AACxC,YAAM6M,MAAMx2B,WAAU2zB,UAAUif,YAAYs4B,cAAc9nE,YAAY8nE,cAAc7nE,UAAU6nE,aAC9F;AAAA,YAAM5L,cAAct/D,WAAU2zB,UAAUs2C,YAAYiB,cAAc9nE,YAAY8nE,cAAc7nE,UAAU6nE,aAAAA;AAEtG,UAAIvoE,QAAQ;AACZ,UAAGuoE,cAAczvB,SAASyvB,cAAc9uB,WAAU;AACjD,cAAMivB,KAAMH,cAAczvB,QAAS,sCAAsCyvB,cAAczvB,QAAQ,MAAO;AACtG,cAAMA,QAASyvB,cAAc9uB,YAAa,iCAAiC8uB,cAAc9uB,YAAY,MAAO;AAC5Gz5C,gBAAQ,WAAW0oE,EAAAA,GAAK5vB;MACxB;AAED,aAAO,yCAAyCjlB,OAAK,MAAM00C,cAAc9qE,MAAMgrE,aAAa,uCAAuC,EAAA,KAAOzoE,SAAS3C,WAAU+B,OAAOwC,eAAoB2mE,KAAAA,cAAc9qE;;+CAE1J4E,KACAs6D;AAAAA,+CAAAA,WAAAA;AAAAA;AAAAA,IAE5C;AAEDt/D,IAAAA,WAAUyqE,cAAY,SAAS3qE,MAC9B;AAAA,UAAIA,MAAK;AACRE,QAAAA,WAAUyM,YAAYzM,WAAU+B,OAAOwoE,gBAAgBvqE,WAAUwD,KAAK+mE,aAAavqE,WAAUkV,KAC7FlV;AAAAA,QAAAA,WAAUwM,YAAYxM,WAAU+B,OAAOyoE,cAAcxqE,WAAUwD,KAAKknE,WAAW1qE,WAAUyM,WAAW,CACpGzM;AAAAA,QAAAA,WAAU+Q,QAAQ;AAClB/Q,QAAAA,WAAU6tB,SAAS;AACnB7tB,QAAAA,WAAUgN,cAAc;AAExB,cAAM28D,aAAa3pE,WAAUm3B;AAC7BwyC,mBAAWppE,YAAYP,WAAU2zB,UAAU02C,YAAYrqE,WAAUkV,KAEjEm0D;AAAAA,wBAAAA;AAAAA,MACJ,OAAU;AACNrpE,QAAAA,WAAUgN,cAAc;AAAA,MAExB;AAAA,IACJ;AAAA,EACA,CAAA;AAeA;ACzLe,SAAQ2kB,UAAC3xB,YAEvBA;AAAAA,EAAAA,WAAU+B,OAAO4vB,YAAY;AAC7B3xB,EAAAA,WAAU+B,OAAOupE,kBAAkB;AAEnC,MAAIC,iBAAiB,SAAU1kE,IAAAA;AAC9B,WAAMA,GAAGxD,WAAWwD,GAAGzD,eAAa,MAAK,KAAG,OAAO,KAAI;AACtD,aAAO;AAAA,IACP;AAGD,QAAGpD,WAAU6K,cAAc,YAAY7K,WAAU4K,YAAY/D,GAAGzG,IAAG;AAClE,aAAO;AAAA,IACP;AACD,WAAQ;AAAA,EACV;AAICJ,EAAAA,WAAUwrE,aAAa,SAAS3pE,QAC/B;AAAA,QAAI4pE,QAAQ,MACX1kE,QAAO/G,WAAUm5C,YAAYt3C,MAAAA;AAC9B,QAAGA,OAAM6pE,WAAU;AAClBD,cAAQzrE,WAAUmG,SAAStE,OAAM6pE;IACjC;AAED,QAAID,SAASA,MAAME,cAAc9pE,MAAQ,GAAA;AAAA,aACjCkF,MAAK6kE;AACL7kE,aAAAA,MAAK2kE;aACL3kE,MAAKirD;AAAAA,aACLjrD,MAAKkD;AAAAA,IACZ;AAED,WAAOlD;AAAAA,EACT;AAEC,MAAI8kE,4BAA4B7rE,WAAUk3C;AAC1C,MAAI40B,6BAA6B9rE,WAAUm3C;AAE3C,MAAI40B,mBAAmB,SAAU/hE,KAAKorC,MAAAA;AACrC,SAAK/0C,KAAK2M,aAAa;AACtB,aAAO6+D,0BAA0Bp1D,KAAKpW,MAAM2J,KAAKorC,IACjD;AAAA,IAAA;AAED,WAAO02B,2BAA2Br1D,KAAKpW,MAAM2J,KAAKorC,IAAAA;AAAAA,EACpD;AAECp1C,EAAAA,WAAUk3C,0BAA0Bl3C,WAAUm3C,2BAA2B,SAASntC,KAAKorC,MAAAA;AACtF,SAAK/0C,KAAK0B,OAAO4vB,aACftxB,KAAK2M,eAAe3M,KAAK4M,SAAS,WAClC5M,KAAK4M,SAAS,YAAY5M,KAAK0B,OAAOupE;AACvC,aAAOS,iBAAiBt1D,KAAKpW,MAAM2J,KAAKorC,IAEzC;AAAA,aAAS5wC,IAAE,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AAClC,UAAIqC,KAAGmD,IAAIxF;AAEX,UAAIqC,GAAG4D;AACN;AAED,UAAIpK,KAAK0B,OAAO4vB,aAAa,SAAS;AACrC,aAAK45C,eAAe1kE,EAAAA,GAAK;AACxB,cAAIxG,KAAK4M,SAAS,SAAS;AAC1BjD,gBAAIyJ,OAAOjP,KAAK,CAChB;AAAA,UAAA;AACD;AAAA,QACA;AAAA,MACD;AAED,UAAIwnE,KAAK3rE,KAAKmrE,WAAW3kE,EAAAA;AACzB,WAAIA,GAAGolE,UAAS;AACfD,WAAG1xB,eAAe;AAAA,MACtB,OAAQ;AACJ0xB,WAAG1xB,eAAe;AAAA,MAClB;AACD0xB,SAAGlvB,eAAe;AAClBkvB,SAAGC,WAAW;AACdD,SAAG5oE,aAAa,IAAIyB,KAAKmnE,GAAG5oE,UAAAA;AAE5B,UAAK8oE,CAAAA,iBAAiBrlE,KAAK;AAC1BmlE,WAAG3oE,WAAW,IAAIwB,KAAKgC,GAAGxD,QAC1B;AAAA,MAAA,OACI;AACJ2oE,WAAG3oE,WAAW8oE,WAAWH,GAAG5oE;AAC5B,YAAI/C,KAAK0B,OAAO6K,aAAa,IAAI;AAChCo/D,aAAG3oE,WAAW+oE,YAAYJ,GAAG5oE,YAAY/C,KAAK0B,OAAO6K;QACrD;AAAA,MACD;AAED,UAAIy/D,gBAAgB;AACpB,UAAIL,GAAG5oE,aAAa/C,KAAKmM,aAAaw/D,GAAG3oE,WAAWhD,KAAKoM,aAAau/D,GAAG5oE,aAAa4oE,GAAG3oE,UAAU;AAClG2G,YAAIxF,CAAAA,IAAKwnE;AACTK,wBAAgB;AAAA,MAChB;AAKD,UAAIC,KAAKjsE,KAAKmrE,WAAW3kE;AACzBylE,SAAGL,WAAW;AACdK,SAAGjpE,WAAW,IAAIwB,KAAKynE,GAAGjpE,QAC1B;AAAA,UAAIipE,GAAGlpE,aAAa/C,KAAKoM;AACxB6/D,WAAGlpE,aAAagpE,YAAY/rE,KAAKoM,WAAWpM,KAAK0B,OAAO4K;;AAExD2/D,WAAGlpE,aAAagpE,YAAYD,WAAWtlE,GAAGzD,UAAa/C,GAAAA,KAAK0B,OAAO4K,UAEpE;AAAA,UAAI2/D,GAAGlpE,aAAa/C,KAAKmM,aAAa8/D,GAAGlpE,aAAakpE,GAAGjpE,UAAU;AAClE,YAAIgpE,eAAc;AACjBriE,cAAIyJ,OAAOjP,IAAE,GAAE,GAAE8nE,EACtB;AAAA,QAAA,OAAU;AACLtiE,cAAIxF,GAAAA,IAAO8nE;AACX;AAAA,QACA;AACDA,WAAG/xB,cAAc;AAAA,MACrB,OAAQ;AACJyxB,WAAGzxB,cAAc;AACjByxB,WAAGlvB,eAAe;AAAA,MAClB;AAAA,IAED;AAGD,QAAIyvB,SAAUlsE,KAAKwK,cAAc,SAAQ,QAAMuqC;AAC/C,WAAO22B,iBAAiBt1D,KAAKpW,MAAM2J,KAAKuiE,MAAAA;AAGxC,aAASL,iBAAiBrlE,KAAAA;AACzB,UAAI2lE,WAAWL,WAAWtlE,IAAGzD,UAC7B;AAAA,aAAA,CAASyD,IAAGxD,WAAAA,CAAYmpE;AAAAA,IACxB;AACD,aAASL,WAAW3oE,MACnB;AAAA,UAAIgpE,WAAWxsE,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KAC3CgpE;AAAAA,iBAAWxsE,WAAUwD,KAAKyF,UAAUujE;AACpC,aAAOA;AAAAA,IACP;AACD,aAASJ,YAAY5oE,MAAMwqC,OAAAA;AAC1B,UAAIzmB,MAAMvnB,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKrB,IAAAA,CAAAA;AAC5C+jB,UAAIzc,SAASkjC,KAAAA;AACb,aAAOzmB;AAAAA,IACP;AAAA,EACH;AACC,MAAIklD,yBAAyBzsE,WAAU80C;AACvC90C,EAAAA,WAAU80C,qBAAqB,SAASC;AACvC,QAAM10C,EAAAA,KAAK0B,OAAO4vB,aAAatxB,KAAK0B,OAAO61B;AAC1C,aAAO60C,uBAAuBh2D,KAAKpW,MAAM00C,UAC1C;AAAA,WAAO03B,uBAAuBh2D,KAAKpW,MAAM,KAC3C;AAAA,EAAA;AACCL,EAAAA,WAAUiG,YAAY,sBAAsB,SAAUymE,UAAUC,UAAU7sE,MAAM0D,MAC/ExD;AAAAA,IAAAA,WAAU8xB,aAAchyB,QAAQ,SAASA,QAAQ,UAAUE,WAAUqC,QAAQvC,IAAAA;AAC7E,WAAO;AAAA,EACT,CAAA;AAECE,EAAAA,WAAUm1C,sBAAsB,SAAStuC,IACxC;AAAA,WAAA,CAAA,EAAUA,GAAG4D,UAAUpK,KAAK0B,OAAO4vB,cAAc,QAAStxB,KAAK0B,OAAO4vB,aAAa,WAAW45C,eAAe1kE;EAC/G;AAEC,MAAI+lE,YAAY5sE,WAAUiY;AAC1BjY,EAAAA,WAAUiY,cAAc,SAAS7X,KAIhC;AAAA,QAAIyG,KAAK7G,WAAUmG,SAAS/F;AAC5B,QAAIysE;AACJ,QAAIj6C;AACJ,QAAG/rB,IAAI;AACNgmE,yBAAoB7sE,WAAU+B,OAAO4vB,eAAe3xB,WAAU0K,cAAc1K,WAAUwzC,QAAQpzC,SAAQJ,WAAUsG,SAAAA,EAAWujB;AAC3H,UAAIgjD,kBAAkB;AACrBj6C,kBAAU5yB,WAAU+B,OAAOgwB;AAC3B/xB,QAAAA,WAAU+B,OAAOgwB,gBAAgB;AAAA,MACjC;AAAA,IACD;AACD66C,cAAUn+D,MAAMzO,YAAWsU,SAE3B;AAAA,QAAGzN,IAAI;AACN,UAAIgmE,kBAAkB;AACrB7sE,QAAAA,WAAU+B,OAAOgwB,gBAAgBa;AAAAA,MACjC;AAAA,IACD;AAAA,EACH;AAEA;ACnLe,SAAQk6C,UAAC9sE,YAExB;AAAA,MAAI+sE;AACJ,MAAIC;AAEJhtE,EAAAA,WAAU+B,OAAOkrE,kBAAkB;AAEnC,WAASC,gBAAgBC,UACxB;AAAA,QAAIC,eAAeptE,WAAU4xB,kBAAAA;AAC7B,QAAGw7C,gBAAgBD,UAAS;AAC3BJ,qBAAe/sE,WAAUmG,SAASgnE,QAAAA,EAAUntE,WAAUk8B,sBACtD,CAAA;AAAA,IAAA;AAAA,EACF;AAEAl8B,EAAAA,WAAUiG,YAAY,gBAAe,SAAS7F;AAC7C8sE,oBAAgB9sE,GAAAA;AAChB,WAAO;AAAA,EACR,CAAA;AACAJ,EAAAA,WAAUiG,YAAY,oBAAmB,SAAS7F,KAAAA;AACjD,QAAIyG,KAAK7G,WAAUmG,SAAS/F,GAC5B4sE;AAAAA,aAAS,CAACnmE,GAAGzD,YAAYyD,GAAGxD,QAAAA;AAC5B6pE,oBAAgB9sE,GAChB;AAAA,WAAO;AAAA,EACR,CACAJ;AAAAA,EAAAA,WAAUiG,YAAY,kBAAiB,SAAS7F,KAC/C;AAAA,QAAA,CAAKA,QAAOJ,WAAUmG,SAAS/F;AAAK,aAAO;AAC3C,QAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,SAAKJ,WAAUqtE,eAAexmE,KAAI;AACjC,UAAA,CAAKmmE;AAAQ,eAAO;AACpBnmE,SAAGzD,aAAa4pE,OAAO,CACvBnmE;AAAAA,SAAGxD,WAAW2pE,OAAO,CAAA;AACrBnmE,SAAG4D,SAAOpK,KAAKqK,cAAc7D,EAAAA;AAAAA,IAC7B;AACD,WAAO;AAAA,EACR;AACA7G,EAAAA,WAAUiG,YAAY,wBAAuB,SAASY,IAAGX,GAAE+sB,QAAAA;AAC1D,WAAOjzB,WAAUqtE,eAAexmE;EACjC,CACA7G;AAAAA,EAAAA,WAAUiG,YAAY,gBAAe,SAAS7F,KAAGyG,IAAAA;AAChD,QAAIyS,SAAStZ,WAAUqtE,eAAexmE,EACtC;AAAA,QAAA,CAAKyS;AACJtZ,MAAAA,WAAUqrB,YAAYjrB,GACxB;AAAA,EAAA,CAAA;AACAJ,EAAAA,WAAUiG,YAAY,eAAc,SAAS7F,KAAIktE,WAAWr6C,QAC3Dq6C;AAAAA,gBAAYttE,WAAUwO,YAAY8+D,SAAAA;AAClCA,cAAUltE,KAAKA;AAGf,UAAKktE,UAAUlqE,cAAckqE,UAAUjqE,WAAU;AAChD,UAAIwD,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5BktE,gBAAUlqE,aAAa,IAAIyB,KAAKgC,GAAGzD;AACnCkqE,gBAAUjqE,WAAW,IAAIwB,KAAKgC,GAAGxD;IACjC;AAED,QAAGiqE,UAAUrjE,UAAS;AACrBjK,MAAAA,WAAUutE,iBAAiBD;IAC3B;AACD,WAAOttE,WAAUqtE,eAAeC,SAAAA;AAAAA,EACjC,CAEAttE;AAAAA,EAAAA,WAAUwtE,4BAA4B,SAASnkC,OAAOokC;AACrD,QAAIhrE,SAASzC,WAAUk8B,sBACvB;AAAA,QAAImN,MAAM5mC,MAAAA,KAAWgrE,OAAOhrE,MAAW4mC,KAAAA,MAAMjpC,MAAMqtE,OAAOrtE;AACzD,aAAO;AACR,WAAO;AAAA,EACR;AAEAJ,EAAAA,WAAUqtE,iBAAiB,SAASxmE;AACnC,QAAImD,MAAM;AACV,QAAIijE,kBAAkBjtE,WAAU+B,OAAOkrE;AAEvC,QAAIpmE,GAAGoD,UAAU;AAChB,UAAIyjE,YAAY1tE,WAAU2tE,YAAY9mE,EACtC;AAAA,eAAQwI,IAAE,GAAGA,IAAEq+D,UAAUjpE,QAAQ4K,KAAK;AACrC,YAAIu+D,OAAO5tE,WAAUo2C,UAAUs3B,UAAUr+D,CAAAA,EAAGjM,YAAYsqE,UAAUr+D,CAAAA,EAAGhM;AACrE,iBAAQ0wB,IAAE,GAAGA,IAAE65C,KAAKnpE,QAAQsvB,KAAK;AAChC,eAAK65C,KAAK75C,CAAG23C,EAAAA,aAAakC,KAAK75C,CAAAA,EAAG3zB,OAAOyG,GAAGzG;AAC3C4J,gBAAI9F,KAAK0pE,KAAK75C;QACf;AAAA,MACD;AAAA,IACH,OAAQ;AACN/pB,YAAMhK,WAAUo2C,UAAUvvC,GAAGzD,YAAYyD,GAAGxD;AAC5C,eAASmB,IAAE,GAAGA,IAAEwF,IAAIvF,QAAQD,KAAK;AAChC,YAAIqpE,aAAa7jE,IAAIxF,CAAAA;AAErB,YAAIqpE,WAAWztE,MAAMyG,GAAGzG,MAAOytE,WAAWjC,gBAAgB,CAACiC,WAAWnC,WAAWmC,WAAWjC,YAAcz7D,EAAAA,KAAK,QAAQtJ,GAAGzG,IAAK;AAC9H4J,cAAIyJ,OAAOjP,GAAE,CACb;AAAA;AAAA,QACA;AAAA,MACD;AAAA,IACD;AAED,QAAI4oE,eAAeptE,WAAU4xB,kBAC7B;AAAA,QAAInvB,SAASzC,WAAUk8B,sBAAAA;AAEvB,QAAI4xC,SAAS;AACb,QAAIV,cAAc;AACjB,UAAI73C,QAAQ;AAEZ,eAAS/wB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAI;AACnC,YAAIwF,IAAIxF,CAAGpE,EAAAA,MAAMyG,GAAGzG,MAAMC,KAAKmtE,0BAA0BxjE,IAAIxF,IAAIqC,EAChE0uB;AAAAA;AAAAA,MACD;AAED,UAAIA,SAAS03C,iBAAiB;AAE7Ba,iBAAS;AAAA,MACT;AAAA,IACD,OACI;AACJ,UAAK9jE,IAAIvF,UAAUwoE;AAClBa,iBAAS;AAAA,IACV;AACD,QAAKA,CAAAA,QAAQ;AACZ,UAAIllE,MAAAA,CAAO5I,WAAUiL,UAAU,oBAAmB,CAACpE,IAAGmD;AACtD,UAAKpB,CAAAA,KAAK;AACT/B,WAAGpE,MAAAA,IAAUsqE,gBAAclmE,GAAGpE,MAAAA;AAAAA,MAC9B;AACD,aAAOmG;AAAAA,IACP;AACD,WAAOklE;AAAAA,EAER;AAEA;AC5He,SAAQC,qBAAC/tE,YAAAA;AAEvBA,EAAAA,WAAU+B,OAAOgsE,uBAAuB;AACxC/tE,EAAAA,WAAU+B,OAAOisE,uBAAuB;AACxChuE,EAAAA,WAAU+B,OAAOksE,gBAAgB;AACjCjuE,EAAAA,WAAU+B,OAAOmsE,eAAe;AAEhC,MAAIC,uBAAuBnuE,WAAUw2C;AAGrC,MAAI43B,SAAS;AACb,MAAIC,eAAe;AACnB,MAAIC,kBAAkB;AAEtBtuE,EAAAA,WAAUw2C,qBAAqB,SAASxsC,KAAKorC,MAC5C;AAAA,QAAA,EAAMp1C,WAAU+B,OAAOgsE,wBAAwBK,SAAS;AACvD,aAAOD,qBAAqB1/D,MAAMpO,MAAMiU,SACxC;AAAA,IAAA;AAED,QAAI0iC,KAAK32C,KAAKsf,GAAG8F;AACjB,QAAIwxB,QAAQ52C,KAAKwtB,OAAOK;AACxB,QAAI3N,IAAIlgB,KAAKwtB,OAAOK,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACjD,QAAIpc,OAAOzR,KAAK+L,KAAK,cAAA,EAAgB;AAErC,QAAK/L,CAAAA,KAAK2M;AACThD,YAAM3J,KAAK62C,wBAAwBltC,KAAKorC;;AAExCprC,YAAM3J,KAAK82C,yBAAyBntC,KAAKorC,IAAAA;AAE1C,QAAI/0C,KAAK2M,aAAa;AACrB,UAAIooC,MAAK;AACR/0C,aAAKwtB,OAAOK,UAAU+oB;AAAAA,MAC1B,OAAU;AACN,YAAIs3B,MAAMz8D,KAAKpR;AACf,cAAM6d,OAAOgwD,IAAIjqE,iBAAiB,oBAAA;AAClC,YAAIia,QAAQA,KAAK9Z,QAAQ;AACxB,mBAASD,IAAI,GAAGA,IAAI+Z,KAAK9Z,QAAQD,KAAK;AACrC+b,cAAE/b;AAEF,gBAAK+b,EAAE/b,KAAMwyC,KAAK32C,KAAKwtB,OAAO1c,SAAS9Q,KAAKsf,GAAGuG,mBAAmB;AAEjE,kBAAI5gB,QAAQiZ,KAAK/Z,CAAGF,EAAAA,iBAAiB,qBAErC;AAAA,kBAAIgzC,UAAUj3C,KAAKwtB,OAAO1c,SAAS9Q,KAAKsf,GAAGuG;AAC3C,kBAAG7lB,KAAK0B,OAAO40C,mBAAiB,MAAMt2C,KAAK0B,OAAO40C,oBAAoBp2B,EAAE/b,CAAAA,KAAMnE,KAAK0B,OAAO40C,kBAAiB;AAC1GW,0BAAU/2B,EAAE/b,CAAKwyC,IAAAA;AAAAA,cACjB,YAAU32C,KAAK0B,OAAO40C,mBAAmB,KAAKK,KAAK32C,KAAKwtB,OAAO1c,SAAS9Q,KAAKsf,GAAGuG,mBAAkB;AAClGoxB,2BAAWj3C,KAAK0B,OAAO40C,mBAAmB,KAAKK;AAAAA,cAC/C;AAEDz4B,mBAAK/Z,GAAG7B,MAAMwO,SAAUmmC,UAAUj3C,KAAKsf,GAAGuG,oBAAqB;AAG/D,uBAAS6N,IAAI,GAAGA,IAAIzuB,MAAMb,QAAQsvB,KAAK;AACtCzuB,sBAAMyuB,CAAAA,EAAG7hB,WAAW,CAAGvP,EAAAA,MAAMwO,SAASmmC,UAAU;AAAA,cAChD;AACD/2B,gBAAE/b,CAAAA,KAAM+b,EAAE/b,IAAI,MAAM,KAAKc,MAAM,GAAG6b;AAAAA,YAClC;AAEDZ,cAAE/b,CAAM+b,KAAAA,EAAE/b,IAAI,CAAA,KAAM,KAAK+Z,KAAK/Z,CAAAA,EAAGF,iBAAiB,qBAAuB,EAAA,CAAA,EAAG6c;AAAAA,UAC5E;AACDZ,YAAEg3B,QAAQ,CAAA;AACV,cAAIg3B,IAAIzgE,WAAWqT,eAAeotD,IAAIzgE,WAAW0pC,iBAAiB+2B,IAAIC;AAAAA;AAAAA,QAK3E,OAAW;AACN,eAAKxkE,IAAIvF,UAAUpE,KAAK+L,KAAK,eAAA,EAAiB,GAAGzJ,MAAMm1B,cAAc;AACpEvX,cAAE;AACH,cAAIvW,IAAIvF,UAAU8b,EAAE,UAAU;AAG7B,gBAAI+gC,MAAO/gC,EAAE,CAAK,IAAA,KAAKy2B,KAAK;AAC5B,gBAAGs3B,mBAAmBhtB,KAAK,GAAG;AAC7BjhD,mBAAKukB,KAAKjiB,MAAMwO,SAAUk9D,eAAeC,kBAAkBhtB,KAAK,IAAK;AAAA,YACrE;AACDA,kBAAM;AACN,kBAAMmtB,YAAYpuE,KAAK+L,KAAK,iBAAmB,EAAA,CAAA,EAAG+U;AAClD,kBAAMutD,eAAgBruE,KAAK+L,KAAK,kBAAkB,CAAG+U,EAAAA;AACrDrP,iBAAKnP,MAAMwO,SAAU9Q,KAAKukB,KAAKzD,eAAestD,YAAYC,gBAAgBruE,KAAKsf,GAAGoG,cAAc,KAAM;AACtG,gBAAIk/B,OAAO5kD,KAAK+L,KAAK,eAAiB,EAAA,CAAA;AACtC64C,iBAAKtiD,MAAMwO,SAASmwC;AACpB2D,iBAAKtiD,MAAMm1B,aAAcvX,EAAE,CAAA,KAAA,KAAW,WAAW;AACjD0kC,iBAAKtiD,MAAMod,UAAWQ,EAAE,CAAA,KAAA,KAAW,SAAS;AAC5C0kC,mBAAO5kD,KAAK+L,KAAK,eAAiB,EAAA,CAAA;AAClC64C,iBAAKtiD,MAAMwO,SAASmwC;AACpB2D,iBAAKtiD,MAAMm1B,aAAcvX,EAAE,WAAW,WAAW;AACjD0kC,iBAAKtiD,MAAMod,UAAWQ,EAAE,CAAA,KAAA,KAAW,SAAS;AAE5C0kC,iBAAK/zC,YAAYqP,EAAE,CAAK,IAAA,uBAAuB;AAC/ClgB,iBAAKq0B,aAAanU,EAAE,CAAA,IAAK,KAAKy2B;AAC9Bz2B,cAAE,KAAK;AAAA,UACP;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED,WAAOvW;AAAAA,EACT;AAEC,MAAI2kE,eAAe,CAAC,mBAAmB,kBAAkB,iBAAiB,cAC1E;AAAA,MAAIC,yBAAyB,SAASC;AACrCR,mBAAe;AACf,aAAS7pE,IAAI,GAAGA,IAAImqE,aAAalqE,QAAQD,KAAK;AAE7C,UAAI0M,YAAYy9D,aAAanqE,CAC7B;AAAA,UAAIsqE,cAAe9uE,WAAUoM,KAAK8E,SAAclR,IAAAA,WAAUoM,KAAK8E,SAAW,EAAA,CAAA,IAAK;AAC/E,UAAIC,SAAS;AACb,cAAQD,WAAAA;AAAAA,QACP,KAAK;AAAA,QACL,KAAK;AACJC,mBAAS29D,YAAY3tD;AACrB;AAAA,QACD,KAAK;AACJhQ,mBAAS,cAAgB29D,YAAY3tD,eAAe,IAAI;AACxDmtD,4BAAkBn9D;AAClB;AAAA,QACD,KAAK;AACJ,cAAIrR,OAAOE,WAAUsG,WAAWxG;AAEhC,cAAGgvE,YAAY58D,WAAW,CAAA,KAAMpS,QAAQ,SAAS;AAChD,gBAAIivE,YAAY;AAChB,qBAAQvqE,KAAI,GAAGA,KAAIsqE,YAAY58D,WAAWzN,QAAQD,MAAI;AACrD,kBAAGsqE,YAAY58D,WAAW1N,IAAG2c,eAAe4tD,WAAU;AACrDA,4BAAYD,YAAY58D,WAAW1N,EAAAA,EAAG2c;AAAAA,cACtC;AAAA,YACD;AACDhQ,qBAAS49D;AAAAA,UACT,OACI;AACJ59D,qBAASK,KAAK5C,IAAIkgE,YAAY3tD,eAAe,GAAG2tD,YAAYt3B;UAC5D;AACD,cAAI13C,QAAQ,SAAS;AACpB,gBAAIE,WAAU+B,OAAOisE,wBAAyBa,CAAAA,YAAY;AACzD,kBAAIG,cAAcF,YAAYxqE,iBAAiB,oBAAA,EAAsBG;AACrE0M,uBAAS69D,cAAchvE,WAAU+B,OAAOisE;AAAAA,YACxC;AACD,gBAAIa,YAAY;AACfC,0BAAYnsE,MAAMwO,SAASA,SAAS;AAAA,YACpC;AAAA,UACD,WACQrR,QAAQ,QAAO;AACvBqR,qBAAS,MAAMnR,WAAU+B,OAAOktE;AAAAA,UAChC,WACOnvE,QAAQ,UAAS;AACxBqR,qBAAS;AACT,gBAAG29D,YAAY58D,cAAc48D,YAAY58D,WAAWzN,QAAO;AAC1D,uBAAQsvB,IAAI,GAAGA,IAAI+6C,YAAY58D,WAAWzN,QAAQsvB,KAAI;AACrD5iB,0BAAU29D,YAAY58D,WAAW6hB,CAAG5S,EAAAA;AAAAA,cACpC;AAAA,YACD;AAED,gBAAGhQ,SAAS,IAAInR,WAAU+B,OAAOksE,eAAc;AAC9C98D,uBAASnR,WAAU+B,OAAOksE;AAAAA,YAC1B,OACG;AACH98D,wBAAU;AAAA,YACV;AAAA,UACD,WACQrR,QAAQ,eAAc;AAC9B,gBAAI86C,aAAa56C,WAAU2f,GAAGuvD,2BAA2BlvE,WAAU+B,OAAOksE,eACzEkB;AAED,gBAAIriD;AACJ,qBAAQzd,IAAI,GAAGA,IAAIy/D,YAAY58D,WAAWzN,QAAQ4K,KAAI;AACrDyd,uBAASgiD,YAAY58D,WAAW7C,CAChC;AAAA,uBAAQ0kB,IAAI,GAAGA,IAAIjH,OAAO5a,WAAWzN,QAAQsvB,KAAK;AACjD,oBAAIvT,cAAc,GACjB4uD,kBAAkBtiD,OAAO5a,WAAW6hB,CAAG7hB,EAAAA,WAAW,CAEnD;AAAA,yBAAQm9D,IAAG,GAAGA,IAAID,gBAAgBl9D,WAAWzN,QAAQ4qE,KAAI;AACxD7uD,iCAAe4uD,gBAAgBl9D,WAAWm9D,CAAGluD,EAAAA;AAAAA,gBAC7C;AAEDguD,6BAAa3uD,cAAcxgB,WAAU2f,GAAGuvD;AACxCC,6BAAc9/D,KAAK,MAAM0kB,KAAK,KAAKA,KAAK,KAAMo7C,aAAa,IAAIA;AAE/D,oBAAIA,aAAav0B,YAAY;AAC5BA,+BAAau0B;AAAAA,gBACb;AAAA,cACD;AAAA,YACD;AAEDh+D,qBAASypC,aAAa;AAAA,UACtB,WACO96C,QAAQ,OAAO;AACtBqR,qBAAS;AACT,gBAAInH,MAAM8kE,YAAYxqE,iBAAiB,eAEvC;AAAA,qBAASyvB,IAAI,GAAGA,IAAI/pB,IAAIvF,QAAQsvB,KAAK;AACpC5iB,wBAAUnH,IAAI+pB,CAAAA,EAAG5S;AAAAA,YACjB;AAED,gBAAIhQ,SAAS,IAAInR,WAAU+B,OAAOmsE,cAAc;AAC/C/8D,uBAASnR,WAAU+B,OAAOmsE;AAAAA,YAC1B,OACI;AACJ/8D,wBAAU;AAAA,YACV;AAAA,UACD,WACOnR,WAAUsvE,WAAW;AAC5Bn+D,qBAAS;AAET,gBAAI29D,YAAY58D,WAAW,GAAGA,WAAW,CAAA,EAAGA,cAAc48D,YAAY58D,WAAW,CAAGA,EAAAA,WAAW,GAAGA,WAAWzN,QAAQ;AACpH,kBAAIuF,MAAM8kE,YAAY58D,WAAW,GAAGA,WAAW,CAAA,EAAGA,WAAW,CAAGA,EAAAA;AAEhE,uBAAS6hB,IAAI,GAAGA,IAAI/pB,IAAIvF,QAAQsvB,KAAK;AACpC5iB,0BAAUnH,IAAI+pB,GAAG5S;AAAAA,cACjB;AAEDhQ,wBAAU;AAEV,kBAAGA,SAASnR,WAAU+B,OAAOksE,eAAc;AAC1C98D,yBAASnR,WAAU+B,OAAOksE;AAAAA,cAC1B;AAAA,YACD,OACG;AACH98D,uBAASnR,WAAU+B,OAAOksE;AAAAA,YAC1B;AAAA,UACD;AAED,cAAIjuE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAAA,GAAO;AAC/C,gBAAI+uE,YAAY;AACf19D,wBAAU;AACV29D,0BAAYnsE,MAAMwO,SAASA,SAAS;AAAA,YAC3C,OAAa;AACNA,uBAAS;AACT,kBAAIlN,MAAMjE,WAAU4L,OAAO9L,IAC3B;AAAA,kBAAIye,OAAOta,IAAIsrE;AACf,uBAAQp9C,IAAE,GAAGA,IAAI5T,KAAK9Z,QAAQ0tB,KAAI;AACjChhB,0BAAUlN,IAAIurE,iBAAiBjxD,KAAK4T,CAAAA,EAAG5c,GACvC;AAAA,cAAA;AAED,kBAAGvV,WAAUqE,WAAWic,eAAetgB,WAAUqE,WAAWorE,aAAY;AACvEt+D,0BAAUu+D,cACV;AAAA,cAAA;AAAA,YACD;AACDv+D,sBAAU;AAAA,UACV;AACD,cAAIrR,QAAQ,SAASA,QAAQ,UAAWE,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAAA,GAAQ;AACpFqR,sBAAU;AAAA,UACV;AACD;AAAA,MAEFA;AAAAA,gBAAU;AACVk9D,sBAAgBl9D;AAAAA,IAChB;AACDnR,IAAAA,WAAU4kB,KAAKjiB,MAAMwO,SAAS,eAAiB;AAE/C,QAAA,CAAK09D;AACJ7uE,MAAAA,WAAUiB;EACb;AAEC,WAAS0uE;AACRvB,aAAS;AACTpuE,IAAAA,WAAUiL,UAAU,0BAA0B,CAC9CmjE,CAAAA;AAAAA,aAAS;AAAA,EACT;AAED,MAAIwB,mCAAmC,WACtC;AAAA,QAAA,EAAK5vE,WAAU+B,OAAOgsE,wBAAwBK;AAC7C,aAAO;AAER,QAAItuE,OAAOE,WAAUsG,SAAWxG,EAAAA;AAEhC,SAAIA,MAAM;AACT,aAAO;AAAA,IACP;AAED,QAAI+vE,eAAevuE,OAAOwuE,yBAAyBxuE,OAAOoY;AAC1D,QAAIiU,YAAYztB,SAASmgB,gBAAgBsN;AAEzCkiD,iBAAa,WAAA;AACZ,UAAG7vE,WAAU8gB,cAAAA,CAAe9gB,WAAUulB,cAAa;AAClD;AAAA,MACA;AACDqpD;IACH,CAEE;AAAA,QAAM5uE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAUA,KAAAA,QAAQ,SAAS;AACrE+vE,mBAAa,WACZ;AAAA,YAAG7vE,WAAU8gB,cAAe9gB,CAAAA,WAAUulB,cAAa;AAClD;AAAA,QACA;AACDqpD,+BAAuB;AACvB1uE,iBAASmgB,gBAAgBsN,YAAYA;AACrCgiD,mBAAAA;AAAAA,MACA,GAAE,CACN;AAAA,IAAA,OAAO;AACJA,iBAAAA;AAAAA,IACA;AAAA,EACH;AAEC3vE,EAAAA,WAAUiG,YAAY,sBAAsB,WAAA;AAC3C,QAAI8pE,kBAAkB/vE,WAAU+B,OAAOgsE;AACvC,SAAI/tE,WAAU2f,GAAGqwD,wBAAuB;AACvChwE,MAAAA,WAAU2f,GAAGqwD,yBAAyBhwE,WAAU2f,GAAGgG;AAAAA,IACnD;AAED3lB,IAAAA,WAAU2f,GAAGgG,eAAeoqD,kBAAkB,IAAI/vE,WAAU2f,GAAGqwD;AAE/D,QAAGhwE,WAAU4L,QAAO;AACnB,eAAQpH,KAAKxE,WAAU4L,QAAO;AAC7B,YAAI0P,WAAWtb,WAAU4L,OAAOpH,CAChC;AAAA,YAAA,CAAI8W,SAAS20D,8BAA6B;AACzC30D,mBAAS20D,+BAA+B30D,SAAS40D;AAAAA,QACjD;AACD,YAAGH,iBAAgB;AAClBz0D,mBAAS40D,qBAAqB;AAAA,QACnC,OAAS;AACJ50D,mBAAS40D,qBAAqB50D,SAAS20D;AAAAA,QACvC;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACT;AAECjwE,EAAAA,WAAUiG,YAAY,gBAAgB2pE,gCAAAA;AACtC5vE,EAAAA,WAAUiG,YAAY,SAAS2pE;AAC/B5vE,EAAAA,WAAUiG,YAAY,kBAAkB2pE,gCACxC5vE;AAAAA,EAAAA,WAAUiG,YAAY,kBAAkB2pE;AACxC5vE,EAAAA,WAAUiG,YAAY,gBAAgB2pE,gCACtC5vE;AAAAA,EAAAA,WAAUiG,YAAY,kBAAkB2pE,gCAAAA;AACxC5vE,EAAAA,WAAUiG,YAAY,0BAA0B2pE,gCAChD5vE;AAAAA,EAAAA,WAAUiG,YAAY,cAAc2pE,gCAAAA;AAGpC5vE,EAAAA,WAAUiG,YAAY,kBAAkB,WACvCmoE;AAAAA,aAAS;AACT,WAAO;AAAA,EACT;AAECpuE,EAAAA,WAAUiG,YAAY,oBAAoB,WACzCmoE;AAAAA,aAAS;AACT,WAAO;AAAA,EACT,CAEC;AAAA,WAASsB;AACR,QAAI9hE,MAAM1N,SAASC,cAAc,KAAA;AACjCyN,QAAIjL,MAAMi5C,UAAU;AAEpB17C,aAASM,KAAKC,YAAYmN,GAAAA;AAC1B,QAAIP,OAAOO,IAAIyT,cAAczT,IAAI0S;AACjCpgB,aAASM,KAAKuN,YAAYH,GAC1B;AAAA,WAAOP;AAAAA,EACP;AAGF;AC7Ve,SAAQ8iE,OAACnwE;AACvB,WAASowE,UAAU31D,MAAK41D,cAAa3xD,OAAAA;AACpC,QAAI0Y,MAAM3c,OAAO,MAAMiE,SAAU2xD,eAAc,OAAKA,eAAc;AAClEnwE,aAASiwE,SAAS/4C;AAAAA,EAClB;AACD,WAASk5C,UAAU71D,MAAAA;AAClB,QAAIsQ,SAAStQ,OAAO;AACpB,QAAIva,SAASiwE,OAAO1rE,SAAS,GAAG;AAC/B,UAAI+O,SAAStT,SAASiwE,OAAO/9D,QAAQ2Y,MAAAA;AACrC,UAAIvX,UAAW,IAAG;AACjBA,kBAAUuX,OAAOtmB;AACjB,YAAIoL,MAAM3P,SAASiwE,OAAO/9D,QAAQ,KAAKoB,MAAAA;AACvC,YAAI3D,OAAAA;AACHA,gBAAM3P,SAASiwE,OAAO1rE;AACvB,eAAOvE,SAASiwE,OAAOrlD,UAAUtX,QAAQ3D,GAAAA;AAAAA,MACzC;AAAA,IACD;AACD,WAAO;AAAA,EACP;AAED,WAAS0gE,cAAcvwE,YACtB;AAAA,YAAQA,WAAU4kB,KAAKxkB,MAAM,eAAe;AAAA,EAC5C;AAED,MAAIipC,QAAQ;AACZrpC,EAAAA,WAAUiG,YAAY,sBAAqB,SAASsqD,SAAQD,SAAQxwD,MAAK0D;AAExE,QAAI6lC,SAASrpC,WAAUwwE,cAAa;AACnC,UAAIC,sBAAsBzwE,WAAUwwE,aACpC;AAAA,UAAGC,oBAAoBjtE,QAAQitE,oBAAoB3wE,QAAQ2wE,oBAAoB5uE,OAAM;AACpFwnC,gBAAQ;AAAA,MACR;AAAA,IACD;AAED,QAAI8mC,UAASI,cAAcvwE;AAE3B,QAAIqpC,OAAM;AACTA,cAAQ;AACR,UAAIqnC,kBAAkBJ,UAAUH,OAChC;AAAA,UAAIO,iBAAgB;AAEnB,YAAA,CAAI1wE,WAAUyM,WAAU;AAGvBzM,UAAAA,WAAUyM,YAAYjJ;AAAAA,QACtB;AAEDktE,0BAAkBC,SAASD,eAAiB/qE,EAAAA,MAAM,GAClD+qE;AAAAA,wBAAgB,KAAKrwE,KAAKyxC,SAASC,UAAU2+B,gBAAgB,CAAA,CAAA;AAC7D,YAAI5kE,OAAOzL,KAAKqzB,aAAag9C,gBAAgB,MAAMA,gBAAgB,CAAA,IAAK5wE,MACvE0D,OAAQikB,CAAAA,MAAAA,CAAOipD,gBAAgB,CAAMA,CAAAA,IAAAA,gBAAgB,CAAKltE,IAAAA;AAE3DlC,eAAOoY,WAAW,WAAA;AACjB,cAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,UACA;AACD9gB,UAAAA,WAAU8X,eAAetU,MAAKsI,IAC9B;AAAA,QAAA,GAAC;AACF,eAAO;AAAA,MACP;AAAA,IACD;AACD,WAAO;AAAA,EACT,CAAA;AAEC9L,EAAAA,WAAUiG,YAAY,gBAAgB,SAAU2qE,SAAU7O,SAAAA;AACzD,QAAIoO,UAASI,cAAcvwE,UAC3B;AAAA,QAAImH,OAAOusD,OAAOrzD,KAAKyxC,SAASG,WAAW8vB,OAAAA,IAAS,aACpDqO;AAAAA,cAAUD,SAAO,yCAAwChpE;EAC3D,CAGC;AAAA,MAAI0pE,WAAW7wE,WAAUszB;AACzBtzB,EAAAA,WAAUszB,QAAQ,WAAA;AACjB,QAAI7Z,OAAOnF;AAEX,QAAKtU,CAAAA,WAAUkV,OAAO;AACrB,UAAIkiD,OAAO/2D;AACXiB,aAAOoY,WAAW,WAAA;AACjBm3D,iBAASpiE,MAAM2oD,MAAM39C;MACrB,GAAC,CAAA;AAAA,IACL,OAAS;AACNo3D,eAASpiE,MAAMpO,MAAMoZ;IACrB;AAAA,EACH;AACA;ACpFA,MAAeq3D,iBAAA,EACdl0D,OAAO,CAACsqD,WAAWpsD,YAAAA;AAClBA,EAAAA,QAAO,OAAO,OAAOosD;;;AAE+H,ECFvI;AAAA,SAAQ6J,uBAAC/wE,YACvB8wE;AAAAA,iBAAel0D,MAAM,gBAAgB5c,WAAU8a,MAChD;AAAA;ACFe,SAAQk2D,wBAAChxE,YAAAA;AACvB8wE,iBAAel0D,MAAM,gBAAgB5c,WAAU8a,MAAAA;AAChD;ACJe,SAAQm2D,QAACjxE;AAExBA,EAAAA,WAAU6jD,YAAY,WAAS,EAC9Bp8C,QAAO,SAASg9C,KAAAA;AACf,SAAKA,IAAIysB;AACRzsB,UAAIysB,iBAAiB;AACtB,QAAItoE,MAAM;AACVA,WAAO,iBAAe67C,IAAIp9C,OAAK;AAC/B,WAAOuB;AAAAA,EACP,GACDo7C,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG9E,QAChC;AAAA,KAAA,WAAA;AACCovE;AACA,UAAI/wE,MAAKJ,WAAUiG,YAAY,mBAAkB,WAEhDkrE;AAAAA,mBAAAA;AACAnxE,QAAAA,WAAUujB,YAAYnjB,GAAAA;AAAAA,MAC1B;AACG,eAAS+wE,aAAAA;AACR,YAAGhqD,KAAKiqD,UAAUjqD,KAAKiqD,OAAOC,WAAW;AACxC,cAAIC,SAAQnqD,KAAKiqD;AACjB,cAAGE,OAAMC,QAAO;AACfD,YAAAA,OAAMC;UACZ,WAAcD,OAAMpwE,YAAW;AACzBowE,YAAAA,OAAMpwE,WACN;AAAA,UAAA;AAEDowE,UAAAA,OAAMD,YAAYC,OAAME,UAAU;AAAA,QAClC;AAAA,MACD;AAAA,IACD;AACDlwE,WAAOmwE,oBAAoB1vE,OAAO2vE,cAAY;AAC9CvqD,SAAKiqD,SAAS,IAAIO,YAAYxqD,MAAMplB,OAAO0Y,MAAM0M,KAAK9F,cAAY,CAAA;AAClE,QAAItf,OAAO8iD;AACV19B,WAAKiqD,OAAOnrE,YAAY,YAAYlE,OAAO8iD,QAAAA;AAE5C,QAAI9iD,OAAO6vE;AACVzqD,WAAKiqD,OAAOS,gBAAgB9vE,OAAO6vE;AACpC,QAAIN,QAAQnqD,KAAKiqD;AACjBE,UAAMQ,oBAAoB/vE,OAAOgwE,WAAWhwE,OAAOiwE,eAAa,QAAQjwE,OAAOw4B,KAAAA;AAE/E,QAAKx4B,CAAAA,OAAOiwE,aAAa;AACxB,UAAIC,cAAc,CAClB;AAAA,eAASztE,IAAI,GAAGA,IAAIzC,OAAOkG,QAAQxD,QAAQD,KAAK;AAC/C,YAAIg8C,SAASz+C,OAAOkG,QAAQzD,CAAAA;AAC5B,YAAI0tE,gBAAgB,CACnB1xB,OAAOjrC,KACPirC,OAAO14B,OACP04B,OAAOl9C;AAER2uE,oBAAY/tE,KAAKguE,aACjB;AAAA,MAAA;AACDZ,YAAMa,UAAUF,WAAAA;AAChB,UAAIprE,GAAG9E,OAAOU,SAAS;AACtB,YAAIkN,QAAQ2hE,MAAMc,gBAAgBvrE,GAAG9E,OAAOU;AAC5C6uE,cAAMe,aAAa1iE;MACnB;AAAA,IACJ,OAAS;AACN,UAAI2iE,cAAczrE,GAAG9E,OAAOU;AAC5B,UAAI6vE,aAAa;AAChB,YAAIvwE,OAAOmvE,eAAeoB,WAAAA,GAAc;AACvChB,gBAAMa,UAAUG,aAAavwE,OAAOmvE,eAAeoB;AACnDhB,gBAAMiB,QAAQ,CACdjB;AAAAA,gBAAMe,aAAa,CACnBf;AAAAA,gBAAMiB,QAAQ,CACnB;AAAA,QAAA,OAAW;AACNvyE,UAAAA,WAAUooC,KAAK0B,IAAI/nC,OAAOiwE,cAAY,SAAOM,cAAY,UAAQtyE,WAAU+O,IAAAA,GAAO,SAASuK,QAC1F;AAAA,gBAAIoD,eAAepD,OAAOsxB,OAAOluB;AACjC,gBAAIoL;AACJ,gBACC;AAAA,kBAAIlf,MAAMmc,KAAKujB,MAAM5rB,YACrBoL;AAAAA,sBAAQlf,IAAIX,QAAQ,CAAA,EAAGd;AAAAA,YACvB,SAAMjB;AACN,kBAAIs6C,UAASxgD,WAAUooC,KAAKa,MAAM,YAAY3vB,OAAOsxB,QAAQ,CAC7D9iB;AAAAA,sBAAQ04B,QAAOtuC,WAAW,CAAA,EAAG0tC;AAAAA,YAC7B;AACD79C,mBAAOmvE,eAAeoB,WAAAA,IAAexqD;AACrCwpD,kBAAMa,UAAUG,aAAaxqD,KAC7BwpD;AAAAA,kBAAMiB,QAAQ,CAAA;AACdjB,kBAAMe,aAAa,CAAA;AACnBf,kBAAMiB,QAAQ,CAAA;AAAA,UACpB;QACK;AAAA,MACL,OAAU;AACNjB,cAAMkB,cAAc,EACpB;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GACD1uB,WAAU,SAAS38B,MAAKtgB,IAAG9E,QAC1B;AAAA,QAAIuwE,cAAcnrD,KAAKiqD,OAAOqB;AAC9B,QAAI1wE,OAAOiwE,aAAa;AACvBjwE,aAAOmvE,eAAeoB,WAAAA,IAAenrD,KAAKiqD,OAAOsB,gBAAAA;AAAAA,IACjD;AACD,WAAOJ;AAAAA,EACP,GACD33C,OAAM,SAASxT,MACd;AAAA,EAAA,EAAA;AAGFnnB,EAAAA,WAAU6jD,YAAY,OAAA,IAAS,EAC9Bp8C,QAAO,SAASg9C;AACf,QAAI77C,MAAM;AACVA,WAAO,2CAA2C67C,IAAIkuB,WAAW,2BAA0B,EAAyBluB,uBAAAA,IAAItzC;AACxH,aAAS3M,IAAE,GAAGA,IAAEigD,IAAIx8C,QAAQxD,QAAQD,KAAK;AACxC,UAAIpE,MAAKJ,WAAU+O,IACnBnG;AAAAA,aAAO,4CAA0CxI,MAAG,kBAAgBA,MAAG,0BAAwBqkD,IAAIhqC,OAAK,cAAYgqC,IAAIx8C,QAAQzD,CAAAA,EAAG+Q,MAAI,cAAekvC,IAAIx8C,QAAQzD,CAAAA,EAAGsjB,QAAM;AAAA,IAC3K;AACDlf,WAAO;AAEP,WAAOA;AAAAA,EACP,GACDo7C,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG9E,QAAAA;AAChC,QAAI6wE,eAAezrD,KAAKQ,qBAAqB,OAAA;AAC7C,aAASnjB,IAAI,GAAGA,IAAIouE,aAAanuE,QAAQD,KAAK;AAC7CouE,mBAAapuE,CAAAA,EAAGqhD,UAAU;AAC1B,UAAIgtB,gBAAgBhsE,GAAG9E,OAAOU,MAASic,KAAAA;AACvC,UAAIk0D,aAAapuE,CAAAA,EAAGka,SAASm0D,eAAe;AAC3CD,qBAAapuE,CAAGqhD,EAAAA,UAAU;AAAA,MAC1B;AAAA,IACD;AAAA,EACD,GACD/B,WAAU,SAAS38B,MAAKtgB,IAAG9E;AAC1B,QAAI6wE,eAAezrD,KAAKQ,qBAAqB;AAC7C,aAAQnjB,IAAE,GAAGA,IAAEouE,aAAanuE,QAAQD,KAAK;AACxC,UAAGouE,aAAapuE,CAAGqhD,EAAAA,SAAS;AAC3B,eAAO+sB,aAAapuE,GAAGka;AAAAA,MACvB;AAAA,IACD;AAAA,EACD,GACDic,OAAM,SAASxT,MAAAA;AAAAA,EACd;AAGFnnB,EAAAA,WAAU6jD,YAAY,cAAY,EACjCp8C,QAAO,SAASg9C,KAAAA;AACf,QAAIzkD,WAAU+B,OAAOquC;AACpB,aAAO;AAAA;AAEP,aAAO;AAAA,EACR,GACD4T,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG9E;AAChColB,WAAKnnB,WAAU+mB,UAAU1H,cAAc,IAAItd,OAAO3B,EAAAA,EAAAA;AAClD,QAAIA,MAAKJ,WAAU+O;AACnB,QAAI+jE,YAAAA,OAAoB/wE,OAAO8wE,iBAAiB,cAAen0D,SAAS3c,OAAO8wE,kBAAkBn0D;AACjGyI,SAAKjW,aAAa;AAClB,QAAI6hE,aAAa,gBAAc3yE,MAAG,0CAAwC2B,OAAO0Y,OAAK,OAAK,YAAY,mBAAiB,MAAI;AAC5H,QAAIu4D,aAAa,iBAAe5yE,MAAG,QAAMJ,WAAU+nB,OAAOC,OAAO,aAAWjmB,OAAO0Y,IAAAA,KAAO1Y,OAAO0Y,QAAM;AACvG,QAAIza,WAAU+B,OAAOquC,WAAU;AAC9BjpB,WAAK5mB,YAAYyyE;AACjB7rD,WAAKof,YAAYhmC,YAAUwyE;AAAAA,IAC3B;AACA5rD,WAAK5mB,YAAUwyE,aAAWC;AAE3B,QAAIjxE,OAAOmc,SAAS;AACnB,UAAI+0D,WAAW9rD,KAAKQ,qBAAqB,OAAS,EAAA,CAAA;AAClD,UAAGsrD,SAASn1D,iBAAgB;AAC3B;AAAA,MACA;AACDm1D,eAASn1D,kBAAkB;AAC3B9d,MAAAA,WAAU6B,MAAMoxE,UAAU,SAASlxE,OAAOmc;IAE1C;AAAA,EACD,GACD4lC,WAAU,SAAS38B,MAAKtgB,IAAG9E,QAAAA;AAC1BolB,WAAKnnB,WAAU+mB,UAAU1H,cAAc,IAAItd,OAAO3B,EAClD,EAAA;AAAA,QAAI6yE,WAAW9rD,KAAKQ,qBAAqB,SAAS,CAClD;AAAA,QAAA,CAAKsrD;AACJA,iBAAW9rD,KAAKof,YAAY5e,qBAAqB,SAAS,CAC3D;AAAA,WAAQsrD,SAAgB,UAAGlxE,OAAO8wE,iBAAe,OAAO9wE,OAAOmxE,mBAAiB;AAAA,EAChF,GACDv4C,OAAM,SAASxT;EACd,EAIF;AAAA;AC/Ke,SAAQgsD,OAACnzE,YAAAA;AAExBA,EAAAA,WAAUqmE,IAAI+M,aAAa,EAC1BC,YAAY;AAGbrzE,EAAAA,WAAUmzE,SAAS;AAClB,QAAInzE,CAAAA,WAAUiL,UAAU,kBAAkB;AACzC;AACD,QAAIuJ,IAAIxU,WAAU4kB;AAClB,OAAG;AACFpQ,QAAE8+D,YAAY9+D,EAAE7R,MAAM2K,YAAY;AAClCkH,QAAE7R,MAAM2K,WAAW;AAAA,IACnB,UAASkH,IAAIA,EAAE1G,eAAe0G,EAAE7R;AACjC6R,QAAIxU,WAAU4kB;AACdpQ,MAAE7R,MAAM2K,WAAW;AACnBkH,MAAE++D,SAAS/+D,EAAE7R,MAAMyO;AACnBoD,MAAEg/D,UAAUh/D,EAAE7R,MAAMwO;AACpBqD,MAAE7R,MAAMyO,QAAQoD,EAAE7R,MAAMwO,SAAS;AACjCqD,MAAE7R,MAAMC,MAAM4R,EAAE7R,MAAME,OAAO;AAE7B,QAAID,MAAM1C,SAASM;AACnBoC,QAAI+qB,YAAY;AAEhB/qB,UAAMA,IAAIkL;AACV,QAAIlL;AACHA,UAAI+qB,YAAY;AACjBztB,aAASM,KAAKizE,YAAYvzE,SAASM,KAAKmC,MAAM+wE,YAAY;AAC1DxzE,aAASM,KAAKmC,MAAM+wE,WAAW;AAC/B1zE,IAAAA,WAAU2zE,UACV3zE;AAAAA,IAAAA,WAAUiL,UAAU,YAAY;EACjC;AACAjL,EAAAA,WAAU4zE,WAAW,WACpB;AAAA,QAAA,CAAI5zE,WAAUiL,UAAU,oBAAoB,CAC3C,CAAA;AAAA;AACD,QAAIuJ,IAAIxU,WAAU4kB;AAClB,OAAG;AACFpQ,QAAE7R,MAAM2K,WAAWkH,EAAE8+D;AAAAA,IACrB,UAAS9+D,IAAIA,EAAE1G,eAAe0G,EAAE7R;AACjC6R,QAAIxU,WAAU4kB;AACdpQ,MAAE7R,MAAMyO,QAAQoD,EAAE++D;AAClB/+D,MAAE7R,MAAMwO,SAASqD,EAAEg/D;AACnBtzE,aAASM,KAAKmC,MAAM+wE,WAAWxzE,SAASM,KAAKizE;AAC7CzzE,IAAAA,WAAU2zE,UAAAA;AACV3zE,IAAAA,WAAUiL,UAAU,cAAc,CACnC,CAAA;AAAA,EAAA;AACAjL,EAAAA,WAAUiG,YAAY,oBAAoB;AACzC,QAAIuO,IAAItU,SAASC,cAAc,KAAA;AAC/BqU,MAAEtD,YAAY;AACdlR,IAAAA,WAAUqmE,IAAI+M,WAAWC,aAAa7+D;AACtCA,MAAEjU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAadP,IAAAA,WAAU4kB,KAAKnkB,YAAY+T,CAC3BxU;AAAAA,IAAAA,WAAU6B,MAAM2S,GAAG,SAAU;AAC5B,UAAKxU,CAAAA,WAAU4pB;AACd5pB,QAAAA,WAAUmzE;;AACVnzE,QAAAA,WAAU4zE,SAAAA;AAAAA,IACb;EACA,CACA5zE;AAAAA,EAAAA,WAAU2zE,YAAY,WACrBtzE;AAAAA,SAAKupB,WAAYvpB,CAAAA,KAAKupB;AACtB,QAAGvpB,KAAKupB,UAAS;AAChBvpB,WAAKgmE,IAAI+M,WAAWC,WAAWt2D,UAAUtZ,IAAI,2BAE/C;AAAA,IAAA,OAAM;AACJpD,WAAKgmE,IAAI+M,WAAWC,WAAWt2D,UAAU8X,OAAO,2BAAA;AAAA,IAChD;AAID,QAAIg/C,aAAa,CAAC,QAAQ,KAAA;AAC1B,aAASrvE,IAAI,GAAGA,IAAIqvE,WAAWpvE,QAAQD,KAAK;AAE3C,UAAIsvE,cAAc9zE,WAAU,kBAAkB6zE,WAAWrvE,CACzD,CAAA;AAAA,UAAIxE,WAAU2f,GAAG,YAAYk0D,WAAWrvE,CAAK,CAAA,GAAA;AAC5CxE,QAAAA,WAAU,kBAAkB6zE,WAAWrvE,CAAMxE,CAAAA,IAAAA,WAAU2f,GAAG,YAAYk0D,WAAWrvE;AACjFxE,QAAAA,WAAU2f,GAAG,YAAYk0D,WAAWrvE,CAAAA,CAAAA,IAAM;AAAA,MAC7C,OAAS;AACN,YAAIsvE,aAAa;AAChB9zE,UAAAA,WAAU2f,GAAG,YAAYk0D,WAAWrvE,CAAAA,CAAAA,IAAMxE,WAAU,kBAAkB6zE,WAAWrvE,CAC1ExE,CAAAA;AAAAA,iBAAAA,WAAU,kBAAkB6zE,WAAWrvE,CAAAA,CAAAA;AAAAA,QAC9C;AAAA,MACD;AAAA,IACD;AAEDxE,IAAAA,WAAU8X,eAAAA;AAAAA,EACX;AAGA;AClGe,SAAQi8D,UAAC/zE,YACvB8wE;AAAAA,iBAAel0D,MAAM,QAAQ5c,WAAU8a,MACxC;AAAA;ACJe,SAAQk5D,eAACh0E,YAAAA;AAExBA,EAAAA,WAAUiG,YAAY,oBAAmB;AACxC,QAAI0H,MAAMzN,SAASM,KAAKmnB,qBAAqB,KAC7C;AAAA,aAASnjB,IAAE,GAAGA,IAAImJ,IAAIlJ,QAAQD,KAAK;AAClC,UAAIg4C,MAAK7uC,IAAInJ,GAAG0M,aAAW;AAC3BsrC,MAAAA,MAAKA,IAAG72C,MAAM,GACd;AAAA,UAAI62C,IAAG/3C,UAAU,KAAK+3C,IAAG,CAAM,KAAA,YAAW;AACzC,YAAIhR,OAAO,cAAa79B,IAAInJ,GAAGjE,aAAW,IAAI8pB,QAAQ,OAAO,MAAA,EAAQA,QAAQ,MAAK,KAAA,EAAQA,QAAQ,YAAW,MAAI;AACjHmhB,eAAOmlC,SAASnlC,IAAMnhB,EAAAA,QAAQ,wBAAuB,SAAS4pD,KAAI9pD,MACjE;AAAA,iBAAO,UAAQA,OAAK;AAAA,QACxB;AACGnqB,QAAAA,WAAU2zB,UAAU6oB,IAAG,CAAI/jC,CAAAA,IAAAA,SAAS,SAAQ,OAAM,MAAK+yB,IACvD79B;AAAAA,YAAInJ,GAAG7B,MAAMod,UAAQ;AAAA,MACrB;AAAA,IACD;AAAA,EACF,CAEA;AAAA;AClBe,SAAQm0D,mBAACl0E,YAAAA;AAExBA,EAAAA,WAAUm0E,oBAAoBC,YAAY,EACzCC,eAAe,WAAA;AACd,WAAO,EACNC,WAAU,EACT/iD,OAAS,OACTgjD,KAAO,OACPC,MAAQ,OACRC,MAAQ,MAET14B,GAAAA,SAAS;EAEV,GACDzT,OAAO,SAASosC,UACf;AAAA,QAAIC,WAAW,CAEf;AAAA,QAAIC,OAAOv0E,KAAKw0E,eAAex0E,KAAK68B,KAAKw3C;AACzC,aAAQlwE,IAAI,GAAGA,IAAIowE,KAAKnwE,QAAQD,KAAI;AACnC,UAAIswE,QAAQz0E,KAAK00E,SAASH,KAAKpwE,CAE/B,CAAA;AAAA,UAAIwwE,UAAU30E,KAAKg0E;AAEnB,eAAQtgD,IAAI,GAAGA,IAAI+gD,MAAMrwE,QAAQsvB,KAAI;AACpC,YAAG1zB,KAAK40E,YAAYH,MAAM/gD,KAAI;AAC7BihD,kBAAQV,UAAUQ,MAAM/gD,CAAAA,CAAAA,IAAM;AAAA,QAC9B,WAAQ1zB,KAAK60E,YAAYJ,MAAM/gD,CAAI,CAAA,GAAA;AACnCihD,kBAAQj5B,UAAU17C,KAAK60E,YAAYJ,MAAM/gD;QAC9C,OAAS;AACJihD,kBAAQj5B,UAAU+4B,MAAM/gD,GAAGohD,WAAW,CAAA;AAAA,QACtC;AAAA,MACD;AAEDR,eAASzwE,KAAK8wE,OAAAA;AAAAA,IACd;AACD,WAAOL;AAAAA,EACP,GAEDS,qBAAqB,SAASC,UAC7B;AAAA,QAAIL,UAAU30E,KAAKg0E,cAAAA;AACnBW,YAAQV,UAAU/iD,QAAAA,CAAAA,CAAU8jD,SAASv5B;AACrCk5B,YAAQV,UAAUC,MAAAA,CAAAA,CAAQc,SAASC;AACnCN,YAAQV,UAAUE,OAASa,CAAAA,CAAAA,SAASE;AACpCP,YAAQV,UAAUG,OAASY,CAAAA,CAAAA,SAASG;AACpCR,YAAQj5B,UAAUs5B,SAASxb,SAASwb,SAASt5B;AAE7C,QAAGi5B,QAAQj5B,WAAW,MAAMi5B,QAAQj5B,WAAW,KAAI;AAElDi5B,cAAQj5B,WAAW;AAAA,IACnB;AAED,QAAI05B,eAAe/vE,OAAOgwE,aAAaV,QAAQj5B,OAAAA;AAC/C,QAAG05B,cAAa;AACfT,cAAQj5B,UAAU05B,aAAazyD,YAAcmyD,EAAAA,WAAW;IACxD;AACD,WAAOH;AAAAA,EACP,GAEDW,kBAAkB,SAASN,UAC1B;AAAA,WAAOh1E,KAAKu1E,QAAQv1E,KAAK+0E,oBAAoBC,QAAAA,CAAAA;AAAAA,EAC7C,GAEDO,SAAS,SAASZ;AACjB,QAAIa,QAAQ,CACZ;AAAA,aAAQrxE,KAAKwwE,QAAQV,WAAU;AAC9B,UAAGU,QAAQV,UAAU9vE,CAAAA,GAAG;AACvBqxE,cAAM3xE,KAAKM,CACX;AAAA,MAAA;AAAA,IACD;AACDqxE,UAAM3xE,KAAK8wE,QAAQj5B,OAEnB;AAAA,WAAO85B,MAAM1lE,KAAK9P,KAAKy1E,YACvB;AAAA,EAAA,GAEDjB,gBAAgB,SAASH,UAAAA;AACxB,WAAOA,SAAS/uE,MAAMtF,KAAKy1E,YAAAA;AAAAA,EAC3B,GACDf,UAAU,SAASgB;AAClB,WAAOA,KAAKpwE,MAAMtF,KAAK21E,eAAAA;AAAAA,EACvB,GACD94C,MAAM,SAASw3C,UACd;AAAA,WAAOA,SAASrqD,QAAQ,OAAO;EAC/B,GACDyrD,cAAa,KACbE,iBAAgB,KAChBf,aAAY,EACX1jD,OAAS,IACTgjD,KAAO,IACPC,MAAQ,IACRC,MAAQ,KAAA,GAETS,aAAY,EACXe,WAAa,GACbthD,KAAO,GACPuhD,OAAS,IACTC,KAAO,IACPC,OAAS,IACTC,IAAM,IACNC,MAAQ,IACRzzE,MAAQ,IACRqkB,OAAS,IACTqvD,MAAQ,IACR1mE,KAAO,IACP2mE,QAAU,IACVC,UAAY,IACZzrD,QAAU,IACV0rD,QAAU,IACVC,MAAO,KACPC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,KAAO,KACPC,KAAO,KACPC,KAAO,IAAA,EAAA;AAIT;AC3He,SAAQC,aAACx3E;AAExBA,EAAAA,WAAUm0E,oBAAoBsD,eAAe,EAC5CC,WAAW,MACXC,aAAa,SAAS3C,SACrB;AAAA,QAAA,CAAI30E,KAAKq3E;AAAWr3E,WAAKq3E,YAAY,CAAA;AACrC,QAAItD,YAAYp0E,WAAUm0E,oBAAoBC;AAC9C,QAAIrgC,OAAOqgC,UAAUwB,QAAQZ,OAAAA;AAE7B,WAAO30E,KAAKq3E,UAAU3jC;EACtB,GAED6jC,UAAU,SAAS5C,SAAS9uE,GAAAA;AAC3B,QAAIgY,UAAU7d,KAAKs3E,YAAY3C,OAAAA;AAC/B,QAAG92D,SAAQ;AACVA,cAAQzH,KAAKpW,MAAM6F,CAEnB;AAAA,UAAIA,EAAEsiB;AAAgBtiB,UAAEsiB;;AACnBtiB,UAAE6iB,cAAc;AAAA,IAErB;AAAA,EACD,GACD7F,MAAM,SAASwxD,UAAUx2D,SACxB;AAAA,QAAA,CAAI7d,KAAKq3E;AAAWr3E,WAAKq3E,YAAY,CAAA;AAErC,QAAItD,YAAYp0E,WAAUm0E,oBAAoBC;AAE9C,QAAIO,WAAWP,UAAU9rC,MAAMosC,QAC/B;AAAA,aAAQlwE,IAAI,GAAGA,IAAImwE,SAASlwE,QAAQD,KAAI;AACvCnE,WAAKq3E,UAAUtD,UAAUwB,QAAQjB,SAASnwE,OAAO0Z;AAAAA,IACjD;AAAA,EACD,GACD25D,QAAQ,SAASnD;AAChB,QAAIN,YAAYp0E,WAAUm0E,oBAAoBC;AAE9C,QAAIO,WAAWP,UAAU9rC,MAAMosC,QAAAA;AAC/B,aAAQlwE,IAAI,GAAGA,IAAImwE,SAASlwE,QAAQD,KAAI;AACvC,UAAGnE,KAAKq3E,UAAUtD,UAAUwB,QAAQjB,SAASnwE,CAAAA,CAAAA,CAAAA,GAAK;eAC1CnE,KAAKq3E,UAAUtD,UAAUwB,QAAQjB,SAASnwE;MACjD;AAAA,IACD;AAAA,EACD,GAEDszE,SAAS,SAAShyE,KACjB;AAAA,aAAQtB,KAAKsB,KAAI;AAChBzF,WAAK6iB,KAAK1e,GAAGsB,IAAItB;IACjB;AAAA,EACD,GACDuzE,UAAU,WACT;AAAA,QAAA,CAAI13E,KAAKq3E;AACRr3E,WAAKq3E,YAAY;AAClB,QAAGr3E,KAAK+lB,MAAK;AACZ/lB,WAAKy3E,QAAQz3E,KAAK+lB,IAAAA;AAAAA,IAClB;AAAA,EACD,EAAA;AAGF;ACzDe,SAAQ4xD,iBAACh4E;GAExB,WACCA;AAAAA,IAAAA,WAAUm0E,oBAAoB1vC,oBAAoBzkC,WAAUmlE;AAE5DnlE,IAAAA,WAAUm0E,oBAAoB8D,YAAY,SAASA,UAAUh4D,MAAM/Z,GAAAA;AAClE,UAAGA,EAAE61C,WAAW;AAAG,eAAO;AAE1B,UAAI0f,YAAYz7D,WAAUm0E,oBAAoB1vC,kBAAkBxkB;AAChE,UAAIi4D,eAAeh4E,SAASilC;AAC5B,UAAIgzC,eAAgB;AACpB,eAAQ3zE,IAAI,GAAGA,IAAIi3D,UAAUh3D,QAAQD,KAAI;AACxC,YAAGi3D,UAAUj3D,CAAM0zE,KAAAA,cAAa;AAC/BC,yBAAe3zE;AACf;AAAA,QACA;AAAA,MACD;AAED,UAAI4zE,WAAWC;AACf,UAAGnyE,EAAE41C,UAAS;AAIbs8B,oBAAaD,gBAAgB,IAAM1c,UAAUh3D,SAAS,IAAM0zE,eAAe;AAE3EE,mBAAW5c,UAAU2c,SACrB;AAAA,YAAGC,UAAS;AACXA,mBAAS19C,MACTz0B;AAAAA,YAAEsiB;AACF,iBAAO;AAAA,QACP;AAAA,MAEJ,OAAO;AAGJ4vD,oBAAaD,gBAAgB1c,UAAUh3D,SAAS,IAAK,IAAK0zE,eAAe;AACzEE,mBAAW5c,UAAU2c,SAAAA;AACrB,YAAGC,UAAS;AACXA,mBAAS19C,MAAAA;AACTz0B,YAAEsiB,eACF;AAAA,iBAAO;AAAA,QACP;AAAA,MAED;AAED,aAAO;AAAA,IACT;AAAA,EACC,GA7CD;AA+CA;ACjDe,SAAQquC,OAAC72D;AAExBA,EAAAA,WAAUm0E,oBAAoBtd,SAAS,EACtCj0C,OAAO,WACN;AAAA,QAAI7Q,OAAO/R,WAAUqE,WAAWC,iBAAiB,iBACjD;AAAA,aAAQE,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCuN,WAAKvN,CAAGsJ,EAAAA,WAAWC,YAAYgE,KAAKvN;IACpC;AAAA,EACD,GACDrE,eAAe,WACd;AAAA,QAAI4F,UAAU7F,SAASC,cAAc,KACrC4F;AAAAA,YAAQoX,aAAa,YAAa,EAAA;AAClCpX,YAAQmL,YAAY;AACpB,WAAOnL;AAAAA,EACP,GAEDuyE,gBAAgB,SAAS1oE,OAAOC,KAAK8K,QAAAA;AACpC,QAAI5I,OAAO,CAAA;AACX,QAAIwmE,eAAe,IAAI1zE,KAAK+K,KAAAA;AAC5B,QAAI4oE,aAAa,IAAI3zE,KAAK2M,KAAK7C,IAAIkB,IAAIzK,QAAWpF,GAAAA,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAK+K,KAAAA,CAAAA,GAAS,GAAG,KAAOxK,EAAAA,QAAAA,CAAAA,CAAAA;AAC1H,WAAMmzE,aAAanzE,YAAYyK,IAAIzK,QAAAA,GAAU;AAE5C2M,aAAOA,KAAKtG,OAAOkP,OAAOlE,KAAKpW,MAAMk4E,cAAc,IAAI1zE,KAAK2M,KAAK7C,IAAI6pE,WAAWpzE,QAAAA,GAAWyK,IAAIzK,QAC/FmzE,CAAAA,CAAAA,CAAAA,CAAAA;AAAAA,qBAAev4E,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAI80E,cAAc,GAAG;AAE5EC,mBAAax4E,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAI80E,cAAc,GAAG,KAAA,CAAA;AAC1EC,mBAAa,IAAI3zE,KAAK2M,KAAK7C,IAAI6pE,WAAWpzE,QAAWyK,GAAAA,IAAIzK;IACzD;AAED,WAAO2M;AAAAA,EACP,GAGDtK,QAAQ,SAASmI,OAAOC,KAAKnJ,SAC5BrG;AAAAA,SAAKuiB;AACL,QAAI7Q,OAAO;AAEX,QAAIsvD,QAAQrhE,WAAUm0E,oBAAoBsE,SAAS//D,UAAUggE;AAC7D,QAAI5sE,OAAO9L,WAAUm0E,oBAAoBsE,SAAS//D,UAAUigE,SAC5D;AAAA,YAAQ7sE;MACP,KAAKu1D,MAAMtsD;AACVhD,eAAO1R,KAAKu4E,qBAAqBhpE,OAAOC,KAAKnJ,OAC7C;AAAA;AAAA,MACD,KAAK26D,MAAM/lD;AACVvJ,eAAO1R,KAAKw4E,qBAAqBjpE,OAAOC,KAAKnJ,OAAAA;AAC7C;AAAA,MACD,KAAK26D,MAAM7lD;AACVzJ,eAAOA,KAAKtG,OAAOpL,KAAKi4E,eAAe1oE,OAAOC,KAAKxP,KAAKy4E,gBAAAA,CAAAA;AACxD;AAAA,MACD,KAAKzX,MAAMhgC;AACVtvB,eAAO1R,KAAK04E,kBAAkBnpE,OAAOC,GAAAA;AACrC;AAAA,MACD,KAAKwxD,MAAM2X;AACVjnE,eAAOA,KAAKtG,OAAOpL,KAAKi4E,eAAe1oE,OAAOC,KAAKxP,KAAK44E,sBAAAA,CAAAA;AACxD;AAAA,MACD,KAAK5X,MAAM79C;AACVzR,eAAO1R,KAAK64E,mBAAmBtpE,OAAOC,GAAAA;AACtC;AAAA,MACD,KAAKwxD,MAAM8X;AACVpnE,eAAOA,KAAKtG,OAAOpL,KAAKi4E,eAAe1oE,OAAOC,KAAKxP,KAAKu4E,oBAAAA,CAAAA;AACxD;AAAA;AAGFv4E,SAAK+4E,gBAAgBrnE,MAAMnC,OAAOC,KAAKnJ;AACvCrG,SAAKg5E,kBAAkBtnE,MAAMnC,OAAOC,KAAKnJ,OAEzC;AAAA,aAAQlC,IAAIuN,KAAKtN,SAAS,GAAGD,KAAK,GAAGA,KAAI;AACxC,UAAGuN,KAAKvN,GAAG6c,aAAY;AACtB,eAAOtP,KAAKvN,CAAAA;AAAAA,MACZ;AAAA,IACD;AAED,WAAO;AAAA,EACP,GAED60E,mBAAmB,SAAStnE,MAAMnC,OAAOC,KAAKnJ,SAAAA;AAC7C,QAAI4yE,YAAYt5E,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOkuC,QAAAA;AAE5D,QAAI5a,OAAOikD,UAAU1pE,KACpB0lB,GAAAA,KAAKgkD,UAAUzpE,GAEhB;AAAA,aAAQrL,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCuN,WAAKvN,CAAG2Y,EAAAA,aAAa,mBAAmBkY,IACxCtjB;AAAAA,WAAKvN,GAAG2Y,aAAa,iBAAiBmY,EACtC;AAAA,UAAG5uB,SAAQ;AACVqL,aAAKvN,GAAG2Y,aAAa,gBAAgBzW;MACrC;AAAA,IACD;AAAA,EACD,GAED0yE,iBAAiB,SAASrnE,MAAMnC,OAAOC,KAAKnJ,SAC3C;AAAA,QAAIohB,QAAQ;AACZ,QAAIsU,QAAQp8B,WAAUsG;AACtB,QAAIxG,OAAOs8B,MAAMt8B;AAEjB,QAAIy5E,gBAAgB;AAEpBzxD,aAAS9nB,WAAU2zB,UAAUoK,SAASnuB,KAEtC;AAAA,QAAI5P,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAK+K,KAAAA,CAAAA,EAAQxK,QAAawK,KAAAA,MAAMxK,WAAW;AAC3E0iB,eAAS,MAAM9nB,WAAU2zB,UAAU0E,WAAWzoB,KAC9C2pE;AAAAA,sBAAgB;AAAA,IAChB;AAED,QAAIv5E,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAK+K,QAAQxK,QAAapF,KAAAA,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKgL,GAAAA,CAAAA,EAAMzK,WAAW;AAE7G0iB,eAAS,QAAQ9nB,WAAU2zB,UAAUoK,SAASluB,GAAAA;AAC9C,UAAG0pE,iBAAkBv5E,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKgL,GAAMzK,CAAAA,EAAAA,QAAAA,KAAayK,IAAIzK,QAAAA,GAAW;AACxF0iB,iBAAS,MAAM9nB,WAAU2zB,UAAU0E,WAAWxoB;MAC9C;AAAA,IACD;AAED,QAAGnJ,SAAQ;AACV,UAAG1G,WAAU4L,UAAU5L,WAAU4L,OAAO9L,OAAM;AAC7C,cAAMwb,WAAWtb,WAAU4L,OAAO9L,IAClC;AAAA,cAAM05E,gBAAgBl+D,SAASi0D,OAAOj0D,SAASjK,MAAM3K,OAAAA,CAAAA;AACrDohB,iBAAS,OAAO9nB,WAAU2zB,UAAU7zB,OAAO,gBAAgB05E,cAAcjkE,KAAKikE,cAAc1xD,OAAO0xD,aAAAA;AAAAA,MACvG,WAAYx5E,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAM,GAAA;AACnD,cAAMiV,QAAQ/U,WAAU2L,OAAO7L,IAAAA;AAC/B,cAAM05E,gBAAgBzkE,MAAM9M,QAAQ8M,MAAM1D,MAAM3K;AAEhDohB,iBAAS,OAAO9nB,WAAU2zB,UAAU7zB,OAAO,aAAe05E,EAAAA,cAAcjkE,KAAKikE,cAAc1xD,OAAO0xD;MAClG;AAAA,IACD;AAGD,aAAQh1E,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCxE,MAAAA,WAAUioB,SAAS4V,cAAc9rB,KAAKvN,IAAI,EACzC,cAAcsjB,OACd,aAAa,SAAA,CAAA;AAAA,IAEd;AAAA,EACD,GAEDmxD,wBAAwB,SAAS71E,YAAYC;AAC5C,QAAI0O,OAAO/R,WAAUqE,WAAWC,iBAAiB;AAEjD,QAAIa,WAAWnF,WAAUwD,KAAK6B,WAAW,IAAIR,KAAK7E,WAAUsG,SAAWkK,EAAAA,QAAAA,CAAAA;AAEvE,QAAIb,QAAS;AACb,QAAI8pE,aAAaz5E,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKzB,UAAAA,CAAAA;AACnD,aAAQoB,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCmL;AACA,UAAG3P,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKM,WAAWC,QAAaq0E,KAAAA,WAAWr0E,WAAU;AACjF;AAAA,MACJ,OAAQ;AACJD,mBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG;MAC3C;AAAA,IACD;AACD,QAAGwK,SAAU;AAAG,aAAOtP,KAAKq5E,SAAS3nE,KAAKpC,KAAAA,CAAAA;AAC1C,WAAO,CACP;AAAA,EAAA,GAED+pE,UAAU,SAASrgD,MAAAA;AAClB,QAAIw9B,UAASx2D,KAAKF,cAClB02D;AAAAA,IAAAA,QAAOl0D,MAAMC,MAAMy2B,KAAKvS,YAAY;AACpC+vC,IAAAA,QAAOl0D,MAAME,OAAOw2B,KAAKwJ,aAAa;AACtCg0B,IAAAA,QAAOl0D,MAAMyO,QAAQioB,KAAKhY,cAAc;AACxCw1C,IAAAA,QAAOl0D,MAAMwO,SAASkoB,KAAKlY,eAAe;AAC1CkY,SAAK54B,YAAYo2D;AACjB,WAAO,CAACA,OACR;AAAA,EAAA,GACDiiB,kBAAkB,SAAS11E,YAAYC;AACtC,QAAIg2B,OAAOr5B,WAAU25E,eAAev2E,UAAAA;AACpCi2B,SAAK12B,MAAM2K,WAAW;AACtB,QAAIupD,UAASx2D,KAAKF;AAClB02D,IAAAA,QAAOl0D,MAAMC,MAAM;AACnBi0D,IAAAA,QAAOl0D,MAAME,OAAO;AACpBg0D,IAAAA,QAAOl0D,MAAMyO,QAAQ;AACrBylD,IAAAA,QAAOl0D,MAAMwO,SAAS;AACtBkoB,SAAK54B,YAAYo2D;AACjB,WAAO,CAACA;EACR,GAEDqiB,oBAAoB,SAAS91E,YAAYC;AACxC,QAAIgN,QAAQhQ,KAAKF,cACjBkQ;AAAAA,UAAM1N,MAAMwO,SAAS;AACrBd,UAAM1N,MAAMyO,QAAQ;AACpBf,UAAM1N,MAAMi3E,UAAU;AACtBvpE,UAAM1N,MAAMC,MAAM;AAClByN,UAAM1N,MAAME,OAAO;AACnB7C,IAAAA,WAAUqE,WAAWgb,cAAc,iBAAiB5e,YAAY4P,KAAAA;AAChE,WAAO,CAACA;EACR,GAEDwoE,sBAAsB,SAASz1E,YAAYC,UAAUqD;AACpD,QAAImzE,YAAY75E,WAAUoP,WAAW,CAAE,GAAEpP,WAAU4L,OAAO5L,WAAUiN,KAAAA,CAAAA;AACpE,QAAI2D,QAAQipE,UAAUhpE;AAEtBgpE,cAAUC,iBAAiB;AAC3B,QAAIvpE,SAAS,CAEb;AAAA,QAAIC,WAAWpN,aAAa,IAAIyB,KAAKzB,UAAAA,IAAcpD,WAAUyM;AAC7D,QAAIgE,WAAWpN,WAAW,IAAIwB,KAAKxB,QAAYrD,IAAAA,WAAUwM;AAEzD,QAAGgE,SAASpL,QAAYpF,IAAAA,WAAUyM,UAAUrH,QAC3CoL;AAAAA,iBAAW,IAAI3L,KAAK7E,WAAUyM,SAC/B;AAAA,QAAGgE,SAASrL,QAAYpF,IAAAA,WAAUwM,UAAUpH,QAC3CqL;AAAAA,iBAAW,IAAI5L,KAAK7E,WAAUwM,SAE/B;AAAA,QAAA,CAAIqtE,UAAUE;AAAU,aAAOxpE;AAE/B,aAAQ/L,IAAI,GAAGA,IAAIq1E,UAAUE,SAASt1E,QAAQD,KAAI;AACjD,UAAGxE,WAAUg6E,mBAAmBH,UAAUE,SAASv1E,CAAAA,CAAAA;AAClD;AAAA,IACD;AACD,QAAGA,KAAKq1E,UAAUE,SAASt1E;AAC1B,aAAO8L;AAER,QAAID,OAAOM,MAAMlK,OAAAA;AAEjB,UAAM8J,WAAWnN,YAAYoN,WAAWrN;AACvC,aAAOmN;AAER,QAAIF,QAAQhQ,KAAKF,cAAAA;AAEjB,QAAI85E;AACJ,QAAIC;AAEJ,aAASC,cAAcpgE,QAAQ3T,QAE9BA;AAAAA,aAAOonC,QAAQ,CAAA;AAEfpnC,aAAO47D,YAAYjoD,OAAOf;AAC1B5S,aAAOsnC,SAAS3zB,OAAOd,SACvB7S,CAAAA;AAAAA,aAAOonC,QAAQzzB,OAAOtQ;IACtB;AAED,QAAA,CAAIzJ,WAAUqC,QAAU6F,EAAAA,MAAK;AAC5B+xE,kBAAYj6E,WAAUo6E,eAAe,EAACh3E,WAAyB,GAAA,OAAOy2E;AACtEK,gBAAUl6E,WAAUo6E,eAAe,EAACh3E,YAAYC,SAAW,GAAA,OAAOw2E;IACrE,OAAO;AAEJ,YAAMQ,YAAY,IAAIx1E,KAAKzB,UAC3B+2E;AAAAA,oBAAcn6E,WAAUyM,WAAW4tE;AACnC,YAAMC,UAAU,IAAIz1E,KAAKxB,QAAAA;AACzB82E,oBAAcn6E,WAAUyM,WAAW6tE,OACnCL;AAAAA,kBAAYj6E,WAAUo6E,eAAe,EAACh3E,YAAYi3E,UAAY,GAAA,OAAOR;AACrEK,gBAAUl6E,WAAUo6E,eAAe,EAACh3E,YAAYk3E,QAAU,GAAA,OAAOT;IACjE;AAED,QAAI1oE,SAAW0oE,UAAUU,gBAAgB7zE,OAAS,IAAA,KAAOmzE,UAAU5rD,KAAK;AAExE,QAAIrrB,MAAM;AACV,QAAI5C,WAAUw6E,UAAU,MAAQ,GAAA;AAC/B53E,YAAM0N,KAAKwW;AACXmzD,mBAAaJ,UAAU1kE;AACvB+kE,iBAAWL,UAAU1kE;AACrB7E,aAAOtQ,WAAUqE,WAAWgb,cAAc,eAAA;AAAA,IAG1C;AACD,QAAIjO,QAAQI,KAAK5C,IAAI,GAAGsrE,UAAUD,YAAY;AAC9C,QAAIvyD,YAAY;AAChB,QAAG1nB,WAAU+B,OAAOkjB,KAAI;AACvByC,kBAAY;AAAA,IACZ;AACDrX,UAAM1N,MAAMi5C,UAAU,UAAUzqC,MAAAA,OAAauW,aAAauyD,SAAsB7oE,aAAAA,KAAAA,WAAgBxO,GAEhG;AAAA,QAAG0N,MAAK;AACPA,WAAK7P,YAAY4P,KACjBE;AAAAA,aAAOrM,KAAKmM,KACZ;AAAA,IAAA;AAED,WAAOE;AAAAA,EACP,GAEDkqE,iBAAiB,SAASj3E;AACzB,QAAI8B,QAAQtF,WAAUqE,WAAWC,iBAAiB,iBAElD;AAAA,QAAIyN,OAAO,CACX;AAAA,aAAQvN,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAI;AACpCuN,WAAK7N,KAAKoB,MAAMd,GAAGsJ,UACnB;AAAA,IAAA;AAED,QAAI81D,YAAY5jE,WAAUwD,KAAK6B,WAAW,IAAIR,KAAK7E,WAAUsG,WAAWkK,QAExE,CAAA;AAAA,QAAIb;AACJ,QAAI+qE,aAAa;AACjB,QAAIC,WAAY;AAChB,QAAIx1E,WAAWy+D;AACf,QAAI6V,aAAaz5E,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKrB,IAAAA,CAAAA;AACnD,aAAQgB,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCmL;AAEA,UAAGgrE,YAAY,GAAE;AAChBD;AACAC,mBAAW;AAAA,MACf,OAAQ;AACJA;AAAAA,MACA;AAED,UAAG36E,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKM,QAAAA,CAAAA,EAAWC,QAAaq0E,KAAAA,WAAWr0E,WAAU;AACjF;AAAA,MACJ,OAAQ;AACJD,mBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG;MAC3C;AAAA,IACD;AAED,QAAGwK,SAAU,IAAE;AACd,aAAO,CAAA;AAAA,IACP;AAED,QAAI9M,OAAO7C,WAAU6tB,OAAO8sD;AAC5B,QAAI/3E,MAAM5C,WAAU6tB,OAAOK,QAAQwsD,UAEnC;AAAA,QAAI9sE,MAAMvN,KAAKF,cAAAA;AACfyN,QAAIjL,MAAMC,MAAMA,MAAM;AACtBgL,QAAIjL,MAAME,OAAOA,OAAO;AACxB+K,QAAIjL,MAAMyO,QAAQpR,WAAU+Q,MAAM4pE,QAAY,IAAA;AAC9C/sE,QAAIjL,MAAMwO,UAAWnR,WAAU6tB,OAAOK,QAAQwsD,aAAa,CAAA,IAAK93E,OAAQ5C,WAAU6tB,OAAO1c,UAAU;AAGnG,QAAItF,YAAY7L,WAAUqE,WAAWgb,cAAc,eAAA;AAEnD,QAAIu7D,YAAY/uE,UAAUwT,cAAc,sBAAA;AACxC,QAAGu7D,UAAUr0C,aAAY;AACxB16B,gBAAU+a,aAAahZ,KAAKgtE,UAAUr0C,WAAAA;AAAAA,IACzC,OAAO;AACJ16B,gBAAUpL,YAAYmN,GAAAA;AAAAA,IACtB;AACD,WAAOA;AAAAA,EACP,GACDmrE,mBAAmB,SAAS31E,YAAYC,UAAAA;AACvC,QAAIuF,MAAM,CAAA;AACV,QAAIq6D,cAAc7/D;AAClB,WAAM6/D,YAAY79D,QAAAA,IAAY/B,SAAS+B,QAAAA,GAAU;AAChDwD,UAAI1E,KAAK7D,KAAKo6E,gBAAgBxX,WAAAA,CAAAA;AAC9BA,oBAAcjjE,WAAUwD,KAAKC,IAAIw/D,aAAa,GAAG,KACjD;AAAA,IAAA;AACD,WAAOr6D;AAAAA,EACP,GAEDgwE,sBAAsB,SAASx1E,YAAYC,UAAUqD,SAAAA;AACpD,QAAIiJ,QAAQ3P,WAAU6M,kBAAkBzJ,UAExC;AAAA,QAAI2O,OAAO,CACX;AAAA,QAAIzB,OAAO;AAEX,QAAIvG,IAAI/J,WAAU+B;AAClB,QAAG/B,WAAUgR,SAASrB,KAAQ;AAAA,aAAOoC;AAErC,QAAI/R,WAAU2L,UAAU3L,WAAU2L,OAAO3L,WAAUiN,KAAAA,KAAUvG,SAAS;AACrE,UAAIoF,OAAO9L,WAAU2L,OAAO3L,WAAUiN,KAAAA;AACtC0C,cAAQ7D,KAAKuF,MAAM3K;AAEnB,UAAI4K,cAAcxF,KAAKuF,MAAM3K;AAC7B,UAAKoF,EAAAA,KAAK5D,OAAO,IAAG;AACnByH,gBAAQ2B;AACR,YAAIxF,KAAKuB,QAASsC,QAAQ7D,KAAKwB,WAASxB,KAAKuB,MAAO;AACnDsC,kBAAQ;AAAA,QACR;AAAA,MACL,OAAQ;AAGJA,gBAAQ3P,WAAU6M,kBAAkBzJ,cAAckO;AAAAA,MAElD;AAAA,IACD;AACDhB,WAAOtQ,WAAUuR,cAAc5B,KAAAA;AAC/B,SAAIW,QAAQA,KAAK+O,cAAc,iBAAmB,GAAA;AAEjD,aAAOnf,SAASC,cAAc,KAC9B;AAAA,IAAA;AAED,QAAIyP,QAAQ4B,KAAK5C,IAAKxL,WAAWsJ,SAAAA,IAAW,KAAKtJ,WAAW4K,WAAAA,GAAejE,EAAE4C,aAAW;AAGxF,QAAIkD,MAAM2B,KAAK7C,IAAKtL,SAASqJ,aAAW,KAAKrJ,SAAS2K,WAAejE,GAAAA,EAAE6C,YAAU,EACjF;AAAA,QAAA,CAAIiD,OAAQ7P,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKxB,QAAW+B,CAAAA,EAAAA,QAAAA,IAAYpF,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKzB,UAAAA,CAAAA,EAAagC,WAAW;AAC9HyK,YAAM9F,EAAE6C,YAAU;AAAA,IAClB;AAED,QAAIiD,OAAOD,OAAO;AACjB,aAAO,CACP;AAAA,IAAA;AAED,QAAIS,QAAQhQ,KAAKF,cAGjB;AAAA,QAAIsR,mBAAmBzR,WAAU+B,OAAO2P,eAAa3H,EAAE6C,YAAY;AACnE,QAAI+E,UAAU,KAAG,KAAG;AACpBtB,UAAM1N,MAAMC,MAAO4O,KAAKI,OAAOhC,QAAM,KAAG,MAAK5P,WAAU+B,OAAO4K,aAAWgF,WAAS3R,WAAU+B,OAAO2P,eAAaC,OAAWF,IAAAA,mBAAoB;AAC/IpB,UAAM1N,MAAMk4E,aAAaxqE,MAAM1N,MAAMwO,SAASK,KAAK5C,IAAK4C,KAAKI,OAAQ/B,MAAID,SAAO,KAAG,MAAM5P,WAAU+B,OAAO2P,eAAaC,OAAYF,IAAAA,kBAAkB,CAAG,IAAA;AACxJpB,UAAM1N,MAAMyO,QAAQ;AACpBd,SAAK7P,YAAY4P;AACjB0B,SAAK7N,KAAKmM,KACV;AAAA,WAAO0B,KAAK,CAEZ;AAAA,EAAA,EAAA;AAGF;ACxYe,SAAQ+oE,eAAC96E;AAExBA,EAAAA,WAAUm0E,oBAAoB4G,gBAAgB,WAAA;AAAA;AAE9C/6E,EAAAA,WAAUm0E,oBAAoB4G,cAAcriE,YAAY1Y,WAAUg7E,SACjEh7E,WAAUm0E,oBAAoBsD,cAC9B,EACCwD,gBAAgB,WACf;AAAA,QAAI9zD,OAAO,IAAInnB,WAAUm0E,oBAAoBsE;AAE7C,QAAA,CAAItxD,KAAK2d,QAAAA,GAAU;AAClB3d,aAAOA,KAAKsiC;IACZ;AACD,WAAOtiC;AAAAA,EACP,GAEDuxD,QAAO,EACNr3C,OAAO,SACP7lB,MAAM,QACN29D,YAAY,cACZ79D,UAAS,YACTvG,OAAM,SACNikE,YAAY,cACZx1D,MAAM,OAEP03D,GAAAA,SAAS;AACR,QAAI9+C,QAAQp8B,WAAUsG,SAEtB;AAAA,QAAIxG,OAAOs8B,MAAMt8B;AACjB,QAAIE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,OAAO;AAC/C,aAAOO,KAAKq4E,OAAOp9D;AAAAA,IACvB,WAActb,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAO,GAAA;AACtD,aAAOO,KAAKq4E,OAAO3jE;AAAAA,IACvB,WAAYjV,QAAQ,SAAQ;AACxB,aAAOO,KAAKq4E,OAAOr3C;AAAAA,IACvB,WAAYvhC,QAAQ,QAAO;AACvB,aAAOO,KAAKq4E,OAAOl9D;AAAAA,IACvB,WAAY1b,QAAQ,eAAc;AAC9B,aAAOO,KAAKq4E,OAAOM;AAAAA,IACnB,WAAQl5E,QAAQ,SAASA,QAAQ,YAAaE,WAAUykB,SAASzkB,WAAU,UAAUF,OAAO;AAC5F,aAAOO,KAAKq4E,OAAOl1D;AAAAA,IACvB,OAAQ;AACJ,aAAOnjB,KAAKq4E,OAAOS;AAAAA,IACnB;AAAA,EACD,GAEDx+C,OAAO,WAAA;AACN36B,IAAAA,WAAU26B,MACV;AAAA,EAAA,GAEDwgD,MAAM,WAEL;AAAA,EAAA,GAED5I,SAAS,WACRvyE;AAAAA,IAAAA,WAAUqE,WAAW8Y,aAAa,YAAY,GAC9C;AAAA,EAAA,GACDi+D,QAAQ,WACP;AAAA,QAAGp7E,WAAUqE;AACZrE,MAAAA,WAAUqE,WAAWg3E,gBAAgB;EACtC,GACDv5E,WAAW;AACV,WAAO9B,WAAUqE,WAAWmgC,aAAa,UAAA;AAAA,EACzC,GAGD82C,gBAAgB,SAAS9+D,GAAGC,GAAAA;AAC3B,QAAID,EAAEpZ,WAAWgC,aAAaqX,EAAErZ,WAAWgC,QAC1C;AAAA,aAAOoX,EAAEpc,KAAKqc,EAAErc,KAAK,IAAK;AAC3B,WAAOoc,EAAEpZ,WAAWgC,QAAYqX,IAAAA,EAAErZ,WAAWgC,QAAY,IAAA,IAAA;AAAA,EACzD,GAEDm2E,YAAY,SAASlmD,MAAMC,IAAIkmD,SAAShsB,SAAAA;AACvC,QAAIpK,SAAQplD,WAAUsG;AACtB+uB,WAAO,IAAIxwB,KAAK2M,KAAK5C,IAAIw2C,OAAM50C,SAASpL,WAAWiwB,KAAKjwB,QAAAA,CAAAA,CAAAA;AACxDkwB,SAAK,IAAIzwB,KAAK2M,KAAK7C,IAAIy2C,OAAM30C,SAASrL,QAAAA,GAAWkwB,GAAGlwB,QAEpD,CAAA,CAAA;AAAA,QAAI4E,MAAMhK,WAAUo2C,UAAU/gB,MAAMC,EACpCtrB;AAAAA,QAAI66B,KAAKxkC,KAAKi7E;AACd,QAAG9rB,SAAQ;AACVxlD,YAAMA,IAAIwlD;IACV;AAED,QAAItyB,OAASs+C,CAAAA,CAAAA;AACb,aAAQh3E,IAAG,GAAGA,IAAIwF,IAAIvF,UAAUy4B,MAAM14B,KAAI;AACzC,UAAGwF,IAAIxF,CAAGpE,EAAAA,MAAMo7E,SAAQ;AACvBt+C,eAAO;AAAA,MACP;AACDlzB,UAAIyJ,OAAOjP,GAAG;AACdA;AAAAA,IACA;AAED,aAAQA,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAI;AAClC,UAAIi3E,eAAe,IAAIz7E,WAAUm0E,oBAAoBuH,MAAM1xE,IAAIxF,CAAAA,EAAGpE,EAClE;AAAA,UAAGq7E,aAAaE,QACf;AAAA,eAAO3xE,IAAIxF,CACZ;AAAA,IAAA;AAED,WAAO;AAAA,EACP,GAEDo3E,kBAAkB,SAASx7E;AAC1B,QAAIy7E,aAAa77E,WAAUm0E,oBAAoB2H,WAAWD;AAE1D,QAAIL,UAAUp7E,OAAOy7E,cAAcA,WAAWp4D;AAE9C,QAAIs4D,YAAY;AAChB,QAAGP,WAAWx7E,WAAUmG,SAASq1E,OAAS,GAAA;AACzC,UAAIQ,YAAYh8E,WAAUmG,SAASq1E,OAEnCO;AAAAA,kBAAY/7E,WAAUm0E,oBAAoB4G,cAAcriE,UAAU6iE,WACjES,UAAU54E,YACVpD,WAAUwD,KAAKC,IAAIu4E,UAAU54E,YAAY,GAAG,MAAA,GAC5C44E,UAAU57E,IACV;IAGD;AACD,QAAA,CAAI27E,cAAc37E,KAAG;AACpB,UAAI67E,eAAej8E,WAAUsG,SAE7By1E;AAAAA,kBAAY/7E,WAAUm0E,oBAAoB4G,cAAcriE,UAAU6iE,WACjEU,aAAazrE,UACbxQ,WAAUwD,KAAKC,IAAIw4E,aAAazrE,UAAU,GAAG,MAAA,GAC7C,MACA,KAED;AAAA,IAAA;AAED,QAAGurE,WAAU;AAEZ,UAAIG,SAAS,IAAIl8E,WAAUm0E,oBAAoBuH,MAAMK,UAAU37E,EAAAA;AAC/D,WAAI87E,OAAOp3C,QAAAA,GAAU;AACpBzkC,aAAKu7E,iBAAiBG,UAAU37E,EAAAA;AAAAA,MACrC,OAAS;AACJ,YAAGy7E,YAAW;AAACA,qBAAWV,KAAO;AAAA,QAAA;AACjCn7E,QAAAA,WAAUm0E,oBAAoB2H,WAAWK,cAAcD,MACvD;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GAEDE,kBAAkB,SAASh8E,KAAAA;AAC1B,QAAIy7E,aAAa77E,WAAUm0E,oBAAoB2H,WAAWD;AAE1D,QAAIL,UAAUp7E,OAAOy7E,cAAcA,WAAWp4D;AAE9C,QAAIs4D,YAAY;AAChB,QAAGP,WAAWx7E,WAAUmG,SAASq1E,OAAAA,GAAS;AACzC,UAAIQ,YAAYh8E,WAAUmG,SAASq1E;AAEnCO,kBAAY/7E,WAAUm0E,oBAAoB4G,cAAcriE,UAAU6iE,WACjEv7E,WAAUwD,KAAKC,IAAIu4E,UAAU34E,cAAc,MAAA,GAC3C24E,UAAU34E,UACV24E,UAAU57E,IACV,IAAA;AAAA,IAED;AACD,QAAI27E,CAAAA,aAAAA,CAAc37E,KAAG;AACpB,UAAI67E,eAAej8E,WAAUsG,SAAAA;AAE7By1E,kBAAY/7E,WAAUm0E,oBAAoB4G,cAAcriE,UAAU6iE,WACjEv7E,WAAUwD,KAAKC,IAAIw4E,aAAaxrE,UAAAA,IAAc,MAAA,GAC9CwrE,aAAaxrE,UACb,MACA;IAED;AAED,QAAGsrE,WAAU;AACZ,UAAIG,SAAS,IAAIl8E,WAAUm0E,oBAAoBuH,MAAMK,UAAU37E,EAC/D;AAAA,UAAA,CAAI87E,OAAOp3C,QAAU,GAAA;AACpBzkC,aAAK+7E,iBAAiBL,UAAU37E,EACrC;AAAA,MAAA,OAAS;AACJ,YAAGy7E,YAAW;AAACA,qBAAWV,KAAAA;AAAAA,QAAO;AACjCn7E,QAAAA,WAAUm0E,oBAAoB2H,WAAWK,cAAcD;MACvD;AAAA,IACD;AAAA,EACD,GAED91D,MAAM,EAEL,iEAAiE,SAASlgB;AACzE,QAAInG,OAAOC,WAAUm0E,oBAAoBkI,WAAW3jE,UAAU4jE,SAAS,+BAAA;AACvE,QAAI/mE,MAAMrP,EAAEqP;AACZ,QAAGA,QAAQ7G,QAAU;AACpB6G,YAAMrP,EAAE61C,UAAU;AAAA,IAClB;AACD,QAAGh8C,KAAKwV,MAAI,IAAI,CAAG,GAAA;AAClBxV,WAAKwV,MAAI,IAAI,CAAGsI,EAAAA,MAAAA;AAAAA,IAChB;AAAA,EACD,GAED,uBAAuB,SAAS3X,GAC/BlG;AAAAA,IAAAA,WAAUsoB,OAAOgC,oBACjB;AAAA,EAAA,GACD,yBAAyB,SAASpkB;AACjClG,IAAAA,WAAUsoB,OAAOiC;EACjB,GACD,mBAAkB,SAASrkB,GAC1B;AAAA,QAAIke,WAAWpkB,WAAUqE,WAAWgb,cAAc,eAAA;AAClD+E,aAASuJ,aAAa;AAAA,EACtB,GACD,uBAAuB,SAASznB,GAC/B;AAAA,QAAIke,WAAWpkB,WAAUqE,WAAWgb,cAAc,eAClD+E;AAAAA,aAASuJ,aAAa;AAAA,EACtB,GAGDznB,GAAK,WAAA;AACJ7F,SAAKu7E,iBACL;AAAA,EAAA,GAEDrF,MAAQ,WACPv2E;AAAAA,IAAAA,WAAU8X,eAAe,oBAAIjT,MAAAA;AAAAA,EAC7B,GAED,WAAW;AACVxE,SAAK+7E,iBAAAA;AAAAA,EACL,GAED,yBAAyB,WAAA;AACxBp8E,IAAAA,WAAU+V,YAAY,EAAC3S,YAAY,IAAIyB,KAAK7E,WAAUsG,SAAAA,EAAW9C;EACjE,GAED,iBAAiB,SAAS0C,GACzBlG;AAAAA,IAAAA,WAAUu8E,oBAAoBr2E,CAAAA;AAAAA,EAC9B,GACD,iBAAiB,SAASA;AACzBlG,IAAAA,WAAUu8E,oBAAoBr2E;EAC9B,GACD,iBAAiB,SAASA,GAAAA;AACzBlG,IAAAA,WAAUu8E,oBAAoBr2E,CAAAA;AAAAA,EAC9B,EAMJlG,EAAAA,CAAAA;AAAAA,EAAAA,WAAUm0E,oBAAoB4G,cAAcriE,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoB4G,cAAcriE,UAAU0N;AAEpH;AChPe,SAAQo2D,SAACx8E,YAExBA;AAAAA,EAAAA,WAAUm0E,oBAAoBsI,aAAa;;AAE3Cz8E,EAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,YAAY1Y,WAAUg7E,SAC9Dh7E,WAAUm0E,oBAAoBsD,cAC9B,EACC3yC,SAAS,WAAA;AACR,WAAO;AAAA,EACP,GACD2kB,UAAU,WACT;AAAA,WAAO;AAAA,EACP,GAEDizB,QAAQ,SAAU32E,SAAAA;AACjB/F,IAAAA,WAAUm0E,oBAAoB2H,WAAWK,cAAcp2E,OACvD;AAAA,EAAA,GAED42E,WAAW,SAASlgE;AAEnB,QAAIA,CAAAA;AAAG,aAAO;AACd,aAAQjY,KAAKnE,MAAK;AACjB,UAAA,CAAA,CAAKA,KAAKmE,CAAQiY,KAAAA,CAAAA,CAAAA,EAAEjY;AAAI,eAAO;AAE/B,UAAIo4E,mBAAsBv8E,CAAAA,EAAAA,KAAKmE,CAAMnE,KAAAA,KAAKmE,GAAGmU;AAC7C,UAAIkkE,sBAAsBpgE,EAAEjY,CAAAA,KAAMiY,EAAEjY,CAAGmU,EAAAA;AACvC,UAAGkkE,oBAAoBD;AAAkB,eAAO;AAChD,YAAKC,oBAAoBD,mBAAmB;AAC3C,YAAGngE,EAAEjY,CAAMnE,KAAAA,KAAKmE;AAAI,iBAAO;AAAA,MAChC,OAAS;AACJ,YAAGiY,EAAEjY,CAAGmU,EAAAA,SAAAA,KAActY,KAAKmE,CAAAA,EAAGmU;AAC7B,iBAAO;AAAA,MACR;AAAA,IACD;AACD,WAAO;AAAA,EACP,GAEDgjE,SAAS,WAAY;AAAA,EAAA,GACrBhhD,OAAO,WACN;AAAA,QAAIxT,OAAO9mB,KAAKs7E,QAAAA;AAChB,QAAGx0D,MAAK;AACPA,WAAKhK,aAAa,YAAY,IAE9B;AAAA,UAAGgK,KAAKwT;AAAOxT,aAAKwT;IACpB;AAAA,EAED,GACDwgD,MAAM,WAAA;AACL,QAAIh0D,OAAO9mB,KAAKs7E;AAChB,QAAGx0D,MAAK;AACPA,WAAKhK,aAAa,YAAY,IAAA;AAAA,IAE9B;AAAA,EACD,EAKH,CAAA;AAAA;AC1De,SAAQ2/D,YAAC98E,YAAAA;AAExBA,EAAAA,WAAUm0E,oBAAoBkI,aAAa,SAAS1sE,OAAAA;AACnDtP,SAAKsP,QAAQA,SAAS;AAAA,EACvB;AAEA3P,EAAAA,WAAUm0E,oBAAoBkI,WAAW3jE,YAAY1Y,WAAUg7E,SAC9Dh7E,WAAUm0E,oBAAoBsI,YAC9B,EACCd,SAAS,SAAShsE;AACjBA,YAAQA,SAAStP,KAAKsP,SAAS;AAC/B,QAAI+0B,QAAQrkC,KAAKi8E,SACjB;AAAA,QAAG53C,MAAM/0B,KAAQ;AAAA,aAAO+0B,MAAM/0B,KAAAA;AAAAA,EAC9B,GAED2sE,UAAU,SAASn2C;AAClBA,eAAWA,YAAY,CACrB,yCACA,yCACA,0CACA,+BAAA,EACCh2B,KAAK,IAER;AAAA,QAAIu0B,QAAQt2B,MAAMsK,UAAUpK,MAAMmI,KAAKzW,WAAUqE,WAAWC,iBAAiB6hC;AAC7EzB,UAAMG,KAAK,SAASroB,GAAGC,GAAAA;AACtB,aAAOD,EAAEqmB,aAAapmB,EAAEomB;AAAAA,IAC5B;AACG,WAAO6B;AAAAA,EACP,GAEDgzC,WAAU,MAEV5yC,SAAS,WACR;AAAA,WAAA,CAAA,CAASzkC,KAAKs7E,QAAQt7E,KAAKsP,KAC3B;AAAA,EAAA,GACD85C,UAAS,WACR;AAAA,QAAIszB,cAAc18E,KAAKs7E,QAAQ,CAC/B;AAAA,QAAA,CAAIoB,aAAY;AACfA,oBAAc,IAAI/8E,WAAUm0E,oBAAoBsE;AAAAA,IAChD;AACD,WAAOsE;AAAAA,EACP,GAED32D,MAAM,EACLvjB,MAAQ;AACP,QAAIq/D,WAAW7hE,KAAKsP,QAAQ;AAC5B,QAAGuyD,WAAW,GAAE;AACfA,iBAAW7hE,KAAKi8E,SAAW73E,EAAAA,SAAS;AAAA,IACpC;AAEDpE,SAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBkI,WAAWna;EAEzD,GACDh7C,OAAS;AACR,QAAIg7C,WAAW7hE,KAAKsP,QAAQ;AAC5B,QAAGuyD,YAAY7hE,KAAKi8E,SAAW73E,EAAAA,QAAO;AACrCy9D,iBAAW;AAAA,IACX;AAED7hE,SAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBkI,WAAWna,QAAAA,CAAAA;AAAAA,EACzD,GACDoU,MAAQ,WAAA;AACPj2E,SAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBsE;EAC9C,GAEDvC,OAAS;AACR,QAAI/uD,OAAO9mB,KAAKs7E,QAAAA;AAChB,QAAGx0D,MAAK;AACPA,WAAKtJ,MACL;AAAA,IAAA;AAAA,EACD;AAKJ7d,EAAAA,WAAUm0E,oBAAoBkI,WAAW3jE,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoBkI,WAAW3jE,UAAU0N,IAAAA;AAE9G;AC7Ee,SAAQvkB,MAAC7B,YAExBA;AAAAA,EAAAA,WAAUm0E,oBAAoBuH,QAAQ,SAASt7E;AAC9CC,SAAKojB,UAAU;AACf,QAAGzjB,WAAUmG,SAAS/F,GAAAA,GAAI;AACzB,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5BC,WAAKuP,QAAQ,IAAI/K,KAAKgC,GAAGzD;AACzB/C,WAAKwP,MAAM,IAAIhL,KAAKgC,GAAGxD;AAEvBhD,WAAKqG,UAAUrG,KAAK28E,YAAYn2E;AAChCxG,WAAKojB,UAAUrjB;AAAAA,IACf;AAAA,EACF;AAEAJ,EAAAA,WAAUm0E,oBAAoBuH,MAAMhjE,YAAY1Y,WAAUg7E,SACzDh7E,WAAUm0E,oBAAoBsI,YAC9B,EACCQ,WAAW;AACV,WAAO7uE,MAAMsK,UAAUpK,MAAMmI,KAAKzW,WAAUqE,WAAWC,iBAAiB,MAAItE,WAAU+B,OAAOwC,kBAAgB,GAAA,CAAA;AAAA,EAC7G,GAEDm0E,QAAQ14E,WAAUm0E,oBAAoB4G,cAAcriE,UAAUggE,QAE9DwC,SAASl7E,WAAUm0E,oBAAoB4G,cAAcriE,UAAUwiE,SAE/DxD,WAAW,MACX5yC,SAAS;AACR,WAAU9kC,CAAAA,EAAAA,WAAUmG,SAAS9F,KAAKojB,OAAAA,KAAYpjB,KAAKs7E,QAAAA;AAAAA,EACnD,GACDlyB,UAAU,WAAA;AACT,QAAI7nD,YAAYvB,KAAK48E,YAAY,CACjC;AAAA,QAAIC,iBAAiB;AACrB,SAAIt7E,aAAe5B,CAAAA,WAAUgpB,cAAcpnB,SAAY,GAAA;AACtDs7E,uBAAiB,IAAIl9E,WAAUm0E,oBAAoBsE;AAAAA,IACvD,OAAQ;AACJ,UAAIr4E,MAAKJ,WAAUgpB,cAAcpnB;AACjCs7E,uBAAiB,IAAIl9E,WAAUm0E,oBAAoBuH,MAAMt7E,GACzD;AAAA,IAAA;AAED,WAAO88E;AAAAA,EACP,GAEDC,oBAAoB,SAAUr5D,KAAAA;AAC7B,QAAIs5D,WAAWt5D,IAAG0e,sBAClB;AAAA,QAAI66C,WAAWr9E,WAAUqE,WAAWgb,cAAc,eAAiBmjB,EAAAA,sBAAAA;AAEnE,QAAG46C,SAAS76C,SAAS86C,SAASz6E,OAAOw6E,SAASx6E,MAAMy6E,SAAS96C,QAAO;AACnE,aAAO;AAAA,IACP;AACD,WAAO;AAAA,EACP,GAEDo5C,SAAS,WAER;AAAA,QAAI2B,aAAa,MAAIt9E,WAAU+B,OAAOwC,kBAAgB,OAAKlE,KAAKojB,UAAQ;AAExE,QAAI85D,eAAev9E,WAAUm0E,oBAAoB2H,WAAW0B,gBAAgBn9E,KAAKojB;AACjF,QAAG85D,cAAa;AACf,aAAOA;AAAAA,IACX,OAAQ;AACJ,UAAGv9E,WAAUy9E,uBAAuBz9E,WAAUy9E,oBAAoBz9E,WAAUmG,SAAS9F,KAAKojB,OAAAA,CAAAA,GAAU;AACnG,YAAIihB,QAAQ1kC,WAAUqE,WAAWC,iBAAiBg5E,UAClD;AAAA,iBAAQ94E,IAAI,GAAGA,IAAIkgC,MAAMjgC,QAAQD,KAAI;AACpC,cAAGnE,KAAK88E,mBAAmBz4C,MAAMlgC,CAAI,CAAA,GAAA;AACpC,mBAAOkgC,MAAMlgC,CAAAA;AAAAA,UACb;AAAA,QACD;AACD,eAAOkgC,MAAM,CAAA;AAAA,MAClB,OAAS;AACJ,eAAO1kC,WAAUqE,WAAWgb,cAAci+D,UAC1C;AAAA,MAAA;AAAA,IAGD;AAAA,EAED,GAED3iD,OAAO;AACN,QAAI94B,SAAQ7B,WAAUmG,SAAS9F,KAAKojB,OAEpC;AAAA,QAAItF,WAAWne,WAAUsG,SAAAA;AACzB,QAAGzE,OAAMuB,WAAWgC,YAAY+Y,SAAS1N,SAASrL,QAAavD,KAAAA,OAAMwB,SAAS+B,QAAa+Y,KAAAA,SAAS3N,SAASpL,QAAU,GAAA;AACtHpF,MAAAA,WAAU8X,eAAejW,OAAMuB,UAC/B;AAAA,IAAA;AAED,QAAI+jB,OAAO9mB,KAAKs7E;AAChB,QAAIt7E,KAAK88E,mBAAmBh2D,IAAO,GAAA;AAClCnnB,MAAAA,WAAUm0E,oBAAoB2H,WAAW4B,oBAAmB,WAAA;AAC3D19E,QAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUiiB,MAAMlsB,MAAMpO,IAC/D;AAAA,MAAA,GAAE6iB,KAAK7iB,IACZ,CAAA;AAAA,IAAA,OAAU;AACNL,MAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUiiB,MAAMlsB,MAAMpO,IAAAA;AAAAA,IAC/D;AAAA,EAED,GACD86E,MAAM;AACLn7E,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUyiE,KAAK1sE,MAAMpO,IAAAA;AAAAA,EAC9D,GAGD28E,aAAa,SAASn2E;AACrB,QAAIH,UAAU;AACd,QAAI5G,OAAOE,WAAUsG,SAAAA,EAAWxG;AAChC,QAAGE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,OAAM;AAC7C,UAAIwb,WAAWtb,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG;AACrD4G,gBAAUG,GAAGyU,SAAS9Y,UAC1B;AAAA,IAAA,WAAYxC,WAAU2L,UAAU3L,WAAU2L,OAAO7L,OAAM;AACnD,UAAImV,OAAOjV,WAAU2L,OAAO7L,IAC5B4G;AAAAA,gBAAUG,GAAGoO,KAAKxS,MAAAA;AAAAA,IAClB;AACD,WAAOiE;AAAAA,EACP,GACDi3E,aAAa,SAAS9hD,KAAAA;AACrB,QAAIh1B,KAAK7G,WAAUmG,SAAS9F,KAAKojB,OAAAA;AACjC,QAAG5c,IAAG;AACL,UAAIH,UAASrG,KAAK28E,YAAYn2E,EAAAA;AAC9B,UAAI+2E,OAAO,IAAI59E,WAAUm0E,oBAAoBsE,SAAS5xE,GAAGzD,YAAY,MAAMsD,OAC3ErG;AAAAA,WAAKq8E,OAAOkB,KAAKC,SAASD,MAAM/hD,GACpC,CAAA;AAAA,IAAA,OAAQ;AACJx7B,WAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBsE,UAC9C;AAAA,IAAA;AAAA,EACD,GAEDryD,MAAM,EACLvjB,MAAQ,WAAA;AACPxC,SAAKs9E,YAAY,MAAA;AAAA,EACjB,GAEDz2D,OAAS,WAAA;AACR7mB,SAAKs9E,YAAY,OAAA;AAAA,EACjB,GACDrH,MAAQ;AACP,QAAGj2E,KAAK66E,aAAa76E,KAAKq4E,OAAOl1D,MAAK;AACrCxjB,MAAAA,WAAUm0E,oBAAoB4G,cAAcriE,UAAUkjE,iBAC3D;AAAA,IAAA,OAAU;AACLv7E,WAAKs9E,YAAY;IACjB;AAAA,EACD,GAEDvH,OAAS,WAAA;AACR,QAAIjvD,OAAO9mB,KAAKs7E;AAChB,QAAGx0D,QAAQA,KAAKtJ,OAAM;AACrBsJ,WAAKtJ,MAAAA;AAAAA,IACV,OAAS;AACJxd,WAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBsE,UAC9C;AAAA,IAAA;AAAA,EAED,GAEDpC,IAAM;AACL,QAAGh2E,KAAK66E,aAAa76E,KAAKq4E,OAAOl1D,MAAK;AACrCxjB,MAAAA,WAAUm0E,oBAAoB4G,cAAcriE,UAAU0jE,iBAC3D;AAAA,IAAA,OAAU;AACL/7E,WAAKs9E,YAAY;IACjB;AAAA,EACD,GAED3yD,QAAU,WAAA;AACT,QAAGhrB,WAAUmG,SAAS9F,KAAKojB,OAAU,GAAA;AACpCzjB,MAAAA,WAAUsoB,OAAO8B,QAAQ,QAAU/pB,EAAAA,KAAKojB;IAC7C,OAAS;AACJpjB,WAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBsE,UAAAA;AAAAA,IAC9C;AAAA,EACD,GAGDvC,OAAS,WACR;AAAA,QAAGl2E,WAAUmG,SAAS9F,KAAKojB,UAAU;AACpCzjB,MAAAA,WAAU2rB,aAAatrB,KAAKojB;IACjC,OAAS;AACJpjB,WAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBsE,UAAAA;AAAAA,IAC9C;AAAA,EACD,EAAA,EAAA,CAAA;AAIJz4E,EAAAA,WAAUm0E,oBAAoBuH,MAAMhjE,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoBuH,MAAMhjE,UAAU0N,IAEpG;AAAA;AClLe,SAAQ03D,UAAC99E,YAAAA;AAExBA,EAAAA,WAAUm0E,oBAAoBsE,WAAW,SAASpjD,MAAMC,IAAI5uB,SAASq3E,YAAAA;AACpE,QAAI3hD,QAAQp8B,WAAUsG;AACtB,QAAIgV,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAOwwB,MAAMt8B;AAE1D,QAAIu1B,CAAAA,MAAK;AACRA,aAAOh1B,KAAK29E;IACZ;AAED,QAAA,CAAI1oD,IAAG;AAEN,UAAGha,UAAS;AACXga,aAAKt1B,WAAUwD,KAAKC,IAAI4xB,MAAM/Z,SAASiT,QAAQjT,SAASkT;MAC3D,OAAO;AACJ8G,aAAKt1B,WAAUwD,KAAKC,IAAI4xB,MAAMr1B,WAAU+B,OAAOk8E,cAAc;MAC7D;AAAA,IAED;AAED59E,SAAKqG,UAAUA,WAAWrG,KAAK69E,mBAC/B79E;AAAAA,SAAK+C,aAAa,IAAIyB,KAAKwwB,IAC3Bh1B;AAAAA,SAAKgD,WAAW,IAAIwB,KAAKywB;AACzBj1B,SAAK09E,aAAaA,cAAc;AAAA,EACjC;AAEA/9E,EAAAA,WAAUm0E,oBAAoBsE,SAAS//D,YAAY1Y,WAAUg7E,SAC5Dh7E,WAAUm0E,oBAAoBsI,YAC9B,EACC/E,WAAU,MAEVsG,gBAAgB;AACf,QAAI3oD;AACJ,QAAI+G,QAAQp8B,WAAUsG,SACtB;AAAA,QAAI63E,cAAc,IAAIt5E,KAAKu3B,MAAM54B,IACjC26E;AAAAA,gBAAY/wC,WAAW,CACvB+wC;AAAAA,gBAAY9wC,gBAAgB,CAAA;AAE5B,QAAI+wC,UAAU,oBAAIv5E;AAClBu5E,YAAQhxC,WAAW;AACnBgxC,YAAQ/wC,gBAAgB,CAExB;AAAA,QAAI/xB,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAOwwB,MAAMt8B;AAC1D,QAAIu+E,cAAc;AAClB,QAAGF,YAAY/4E,QAAcg5E,MAAAA,QAAQh5E,WAAU;AAC9Ci5E,oBAAc;AAAA,IACd;AAED,QAAG/iE,UAAS;AACX,UAAG+iE,aAAY;AACd,YAAG/iE,SAASkT,WAAW,OAAM;AAC5B4vD,kBAAQtzE,SAAS,CAAA;AACjBszE,kBAAQrzE,WAAW,CAAA;AAAA,QACzB,WAAcuQ,SAASkT,WAAW,QAAO;AACnC4vD,kBAAQrzE,WAAW;QACnB;AACDsqB,eAAO+oD;AAAAA,MACZ,OAAS;AACJ/oD,eAAOr1B,WAAUwD,KAAK8X,SAASb,OAAO,UAAU,IAAI5V,KAAKu3B,MAAM54B,IAC/D,CAAA;AAAA,MAAA;AAED6xB,aAAOh1B,KAAKi+E,kBAAkBjpD,IAClC;AAAA,IAAA,OAAQ;AACJA,aAAO,IAAIxwB,KAAK7E,WAAUsG,SAAAA,EAAWkK;AACrC,UAAG6tE,aAAY;AACdhpD,eAAO+oD;AAAAA,MACP;AACD/oD,aAAOh1B,KAAKi+E,kBAAkBjpD,IAAAA;AAC9B,WAAIgpD,aAAY;AACfhpD,aAAKvqB,SAAS9K,WAAU+B,OAAO4K,UAAAA;AAAAA,MAC/B;AAED,UAAI3M,CAAAA,WAAUgN,aAAY;AACzB,YAAI41D,gBAAgB5iE,WAAUqE,WAAWgb,cAAc,eAAA;AACvD,YAAGujD,cAAcj1C,WAAU;AAC1B0H,eAAKvqB,SAAS9K,WAAU+B,OAAO4K,aAAa6E,KAAKyb,KAAK21C,cAAcj1C,YAAY3tB,WAAU+B,OAAO2P,YACjG,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAED,WAAO2jB;AAAAA,EACP,GAEDkpD,OAAO,SAASC,UAAAA;AACf,WAAO,IAAIx+E,WAAUm0E,oBAAoBsE,SAAS+F,SAASp7E,YAAYo7E,SAASn7E,UAAUm7E,SAAS93E,SAAS83E,SAAST,UACrH;AAAA,EAAA,GACDU,sBAAsB,WAAA;AACrB,QAAIriD,QAAQp8B,WAAUsG;AACtB,QAAIwF;AACJ,QAAG9L,WAAU2L,UAAU3L,WAAU2L,OAAOywB,MAAMt8B,IAAO,GAAA;AACpDgM,aAAO9L,WAAU2L,OAAOywB,MAAMt8B,IAClC;AAAA,IAAA,WAAYE,WAAU4L,UAAU5L,WAAU4L,OAAOwwB,MAAMt8B,IAAM,GAAA;AACzDgM,aAAO9L,WAAU4L,OAAOwwB,MAAMt8B,IAAAA;AAAAA,IAC9B;AACD,WAAOgM;AAAAA,EACP,GAEDoyE,oBAAoB,WAAA;AACnB,QAAIx3E,UAAU;AACd,QAAIoF,OAAOzL,KAAKo+E,qBAChB;AAAA,QAAG3yE,SAASpF,SAAQ;AACnBA,gBAAUrG,KAAKq+E,gBAAAA;AAAAA,IACf;AACD,WAAOh4E;AAAAA,EACP,GAEDg4E,iBAAiB,SAASz7E,WAAW44B,KAAAA;AACpC,QAAI/vB,OAAOzL,KAAKo+E,qBAChB;AAAA,QAAItG,eAAersE,KAAKuF,MAAMpO;AAC9B,QAAIm1E,YAAYD;AAChB,QAAGA,iBAAiBzpE,QAAU;AAC7B0pE,kBAAaD,eAAet8C;AAAAA,IAChC,OAAQ;AACJu8C,kBAAatsE,KAAKuB,QAAQvB,KAAKwB,WAAYxB,KAAKwB,WAAW;AAAA,IAC3D;AAED,QAAG8qE,YAAY,GAAE;AAChBA,kBAAY;AAAA,IACZ;AACD,QAAInwE,UAAU6D,KAAK7D,WAAW6D,KAAKyjE;AAEnC,QAAG6I,aAAanwE,QAAQxD,QAAO;AAC9B2zE,kBAAYnwE,QAAQxD,SAAS;AAAA,IAC7B;AAGD,QAAGwD,QAAQmwE,YAAW;AACrB,aAAOnwE,QAAQmwE,SAAAA,EAAW7iE;AAAAA,IAC9B,OAAQ;AACJ,aAAO;AAAA,IACP;AAAA,EACD,GAGDuvB,SAAS,WAAA;AACR,QAAI1I,QAAQp8B,WAAUsG,SACtB;AAAA,QAAIq4E,cAAct+E,KAAK+C,WAAWgC,YAAYg3B,MAAM5rB,SAASpL,QAAa/E,KAAAA,KAAK+C,WAAWgC,QAAag3B,KAAAA,MAAM3rB,SAASrL,QAEtH;AAAA,QAAA,CAAIu5E;AAAW,aAAO;AAGtB,QAAIt+E,CAAAA,KAAKujC,UAAUvjC,KAAK+C,YAAY/C,KAAKgD,QAAW;AAAA,aAAO;AAE3D,QAAIyI,OAAOzL,KAAKo+E,qBAAAA;AAEhB,QAAG3yE,MAAK;AACP,aAAQA,KAAKuF,MAAMhR,KAAKqG,OAAagI,MAAAA;AAAAA,IACzC,OAAQ;AACJ,aAAO;AAAA,IACP;AAAA,EAED,GAED+6C,UAAS,WAAA;AAER,QAAIm1B,cAAc,IAAI5+E,WAAUm0E,oBAAoBsE;AACpD,QAAImG,CAAAA,YAAY95C,WAAU;AACzB,aAAO,IAAI9kC,WAAUm0E,oBAAoB0K;AAAAA,IAC7C,OAAQ;AACJ,aAAOD;AAAAA,IACP;AAAA,EACD,GAEDtC,UAAU;AACT,WAAOluE,MAAMsK,UAAUpK,MAAMmI,KAAKzW,WAAUqE,WAAWC,iBAAiB,iBACxE,CAAA;AAAA,EAAA,GACDq3E,SAAS,WACR;AAAA,WAAOt7E,KAAKi8E,SAAAA,EAAW;EACvB,GAED3hD,OAAO;AACN,QAAGt6B,KAAKqG,WAAW1G,WAAUqC,QAAAA,KAAarC,WAAUqC,QAAAA,EAAUy8E,mBAAmB9+E,WAAUqC,QAAAA,EAAUs8C,aAAa3+C,WAAUqE,WAAWgb,cAAc,qBAAqBhf,KAAKqG,OAAa,IAAA,GAAA;AAC3L1G,MAAAA,WAAUqC,QAAUs8C,EAAAA,SAAS,EAACj4C,SAASrG,KAAKqG;IAC5C;AACD1G,IAAAA,WAAUm0E,oBAAoBtd,OAAOpvD,OAAOpH,KAAK+C,YAAY/C,KAAKgD,UAAUhD,KAAKqG,OACjF1G;AAAAA,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUiiB,MAAMlsB,MAAMpO;AAC/DL,IAAAA,WAAUm0E,oBAAoB4K,aAAa1+E,KAAK+C;AAChDpD,IAAAA,WAAUm0E,oBAAoB6K,gBAAgB3+E,KAAKqG;AAAAA,EAEnD,GACDy0E,MAAM,WAAA;AACLn7E,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUyiE,KAAK1sE,MAAMpO,IAC9DL;AAAAA,IAAAA,WAAUm0E,oBAAoBtd,OAAOj0C,MAAAA;AAAAA,EACrC,GAED81D,QAAQ14E,WAAUm0E,oBAAoB4G,cAAcriE,UAAUggE,QAE9DC,UAAU34E,WAAUm0E,oBAAoB4G,cAAcriE,UAAUwiE,SAEhE+D,cAAc,SAASz7E,MAAMq4B,KAAK3gB,SACjC;AAAA,QAAItS;AACJ,YAAQizB,KAAAA;AAAAA,MACP,KAAK;AACJjzB,cAAM5I,WAAUwD,KAAKC,IAAID,MAAO,IAAG;AACnC;AAAA,MACD,KAAK;AACJoF,cAAM5I,WAAUwD,KAAKC,IAAID,MAAM,GAAG,MAAA;AAClC;AAAA,MACD,KAAK;AACJoF,cAAM5I,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAID,MAAAA,IAAU,KAC5DoF,CAAAA;AAAAA,cAAMvI,KAAKi+E,kBAAkB11E,KAAAA,EAC7B;AAAA;AAAA,MACD,KAAK;AACJA,cAAM5I,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAID,MAAM,GAAG;AAC3DoF,cAAMvI,KAAKi+E,kBAAkB11E,KAAK,CAAA;AAClC;AAAA,MACD;AACCA,cAAM5I,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAKrB;AACxC;AAAA,IAGF;AAAA,QAAI44B,QAAQp8B,WAAUsG,SAAAA;AACtB,QAAG9C,KAAK4B,YAAYg3B,MAAM5rB,SAASpL,cAAe8V,WAAU1X,KAAK4B,aAAag3B,MAAM3rB,SAASrL,QAAW,GAAA;AACvGwD,YAAM,IAAI/D,KAAKu3B,MAAM5rB,QACrB;AAAA,IAAA;AAED,WAAO5H;AAAAA,EACP,GAEDs2E,eAAe,SAAStB,MAAM/hD,KAAK3gB,SAAAA;AAElC,QAAItL,OAAOC;AACXD,YAAQvP,KAAK4+E,aAAarB,KAAKx6E,YAAYy4B,KAAK3gB,OAEhDtL;AAAAA,UAAM9E,SAAS9K,WAAU+B,OAAO4K;AAChCkD,UAAM,IAAIhL,KAAK+K,KAAAA;AACfC,QAAI/E,SAAS9K,WAAU+B,OAAO6K,SAC9B;AAAA,WAAO,EAACxJ,YAAYwM,OAAOvM,UAAUwM,IAAAA;AAAAA,EACrC,GAEDsvE,gBAAgB,SAAS37E,MAAM2tB,SAASlc,MAAMwV;AAC7C,QAAIw4C,cAAc,IAAIp+D,KAAKssB;AAC3B,WAAM8xC,YAAY79D,YAAY5B,KAAK4B,QAAAA,GAAU;AAC5C69D,oBAAcjjE,WAAUwD,KAAKC,IAAIw/D,aAAax4C,MAAMxV,IAAAA;AAAAA,IACpD;AAED,QAAGguD,YAAY79D,YAAY5B,KAAK4B,QAAAA,GAAU;AACzC69D,oBAAcjjE,WAAUwD,KAAKC,IAAIw/D,cAAcx4C,MAAMxV,IAAAA;AAAAA,IACrD;AAED,WAAOguD;AAAAA,EACP,GAEDmc,kBAAkB,SAASxB,MAAM/hD,KAAK3gB;AACrC,QAAIkhB,QAAQp8B,WAAUsG,SACtB;AAAA,QAAIwF,OAAO9L,WAAU4L,OAAOwwB,MAAMt8B,IAAAA;AAElC,QAAI8E,YAAavE,KAAK8+E,eAAevB,KAAKx6E,YAAYpD,WAAUwD,KAAKsI,KAAK2O,OAAO,QAAA,EAAU,IAAI5V,KAAK+4E,KAAKx6E,cAAc0I,KAAK0iB,QAAQ1iB,KAAKyiB,MAAAA;AACzI,QAAIxpB,UAAU1E,KAAK8+E,eAAevB,KAAKv6E,UAAUrD,WAAUwD,KAAKsI,KAAK2O,OAAO,QAAA,EAAU,IAAI5V,KAAK+4E,KAAKv6E,YAAYyI,KAAK0iB,QAAQ1iB,KAAKyiB,MAElI;AAAA,QAAGxpB,QAAQK,QAAAA,KAAaR,UAAUQ,QAAU,GAAA;AAC3CL,gBAAU/E,WAAUwD,KAAKC,IAAImB,WAAWkH,KAAKyiB,QAAQziB,KAAK0iB;IAC1D;AACD,QAAI6wD,SAASh/E,KAAKk+E,MAAMX;AACxByB,WAAOj8E,aAAawB;AACpBy6E,WAAOh8E,WAAW0B;AAClBs6E,WAAO34E,UAAUk3E,KAAKl3E,WAAWrG,KAAKq+E,gBAGtC;AAAA,YAAQ7iD,KACP;AAAA,MAAA,KAAK;AACJwjD,eAAO34E,UAAUrG,KAAKq+E,gBAAgBd,KAAKl3E,WAC3C;AAAA;AAAA,MACD,KAAK;AACJ24E,eAAO34E,UAAUrG,KAAKq+E,gBAAgBd,KAAKl3E,SAAAA;AAC3C;AAAA,MACD,KAAK;AACJ24E,eAAOj8E,aAAa/C,KAAKi+E,kBAAkBt+E,WAAUwD,KAAKC,IAAI47E,OAAOj8E,YAAa0I,CAAAA,KAAKyiB,QAAQziB,KAAK0iB,WACpG6wD;AAAAA,eAAOh8E,WAAWrD,WAAUwD,KAAKC,IAAI47E,OAAOj8E,YAAY0I,KAAKyiB,QAAQziB,KAAK0iB,MAAAA;AAC1E;AAAA,MACD,KAAK;AACJ6wD,eAAOj8E,aAAa/C,KAAKi+E,kBAAkBt+E,WAAUwD,KAAKC,IAAI47E,OAAOj8E,YAAY0I,KAAKyiB,QAAQziB,KAAK0iB,MAAS,GAAA,CAAA;AAC5G6wD,eAAOh8E,WAAWrD,WAAUwD,KAAKC,IAAI47E,OAAOj8E,YAAY0I,KAAKyiB,QAAQziB,KAAK0iB,MAAAA;AAE1E;AAAA,IAMF;AAAA,QAAG6wD,OAAOj8E,WAAWgC,QAAAA,IAAYg3B,MAAM5rB,SAASpL,QAAAA,KAAai6E,OAAOj8E,WAAWgC,QAAAA,KAAag3B,MAAM3rB,SAASrL,WAAU;AACpH,UAAG8V,WAAUmkE,OAAOj8E,WAAWgC,aAAag3B,MAAM3rB,SAASrL,QAAU,GAAA;AACpEi6E,eAAOj8E,aAAa,IAAIyB,KAAKu3B,MAAM3rB,QAAAA;AAAAA,MACxC,OAAS;AACJ4uE,eAAOj8E,aAAapD,WAAUwD,KAAK44B,MAAMt8B,OAAO,UAAUE,WAAUwD,KAAKC,IAAI24B,MAAM54B,MAAMq4B,OAAO,SAAA,KAAc,GAAGO,MAAMt8B;AACvHu/E,eAAOh8E,WAAWrD,WAAUwD,KAAKC,IAAI47E,OAAOj8E,YAAY0I,KAAKyiB,QAAQziB,KAAK0iB;MAC1E;AAAA,IACD;AAED,WAAO6wD;AAAAA,EACP,GAEDC,eAAe,SAAS1B,MAAM/hD,KAAK3gB,SAAAA;AAClC,QAAImkE,SAASh/E,KAAKk+E,MAAMX,IACxByB;AAAAA,WAAO34E,UAAUk3E,KAAKl3E,WAAWrG,KAAKq+E,gBAAAA;AAEtC,QAAIh4E,UAAUk3E,KAAKl3E,WAAWrG,KAAKq+E,gBAAAA;AACnC,QAAItiD,QAAQp8B,WAAUsG,SACtB;AAAA,QAAIwF,OAAO9L,WAAU2L,OAAOywB,MAAMt8B,IAClC;AAAA,YAAQ+7B,KACP;AAAA,MAAA,KAAK;AACJn1B,kBAAUrG,KAAKq+E,gBAAgBd,KAAKl3E,SAAAA;AACpC,YAAI64E,eAAezzE,KAAKuB,OAAQvB,KAAKuB,OAAO,IAAKvB,KAAK7D,QAAQxD;AAE9D,YAAGqH,KAAK5D,OAAO,KAAM4D,KAAKuF,MAAM3K,OAAY64E,KAAAA,eAAe,GAAG;AAC7D,cAAGv/E,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,YAAAA,IAAgB,KAAOgC,EAAAA,QAAAA,KAAag3B,MAAM5rB,SAASpL,QAAAA,GAAU;AACvFi6E,qBAASh/E,KAAKm/E,YAAY5B,MAAM/hD,KAAK3gB,OACrC;AAAA,UAAA;AAAA,QACD;AACD;AAAA,MACD,KAAK;AACJxU,kBAAUrG,KAAKq+E,gBAAgBd,KAAKl3E,SAAS,CAC7C;AAAA,YAAGoF,KAAK5D,OAAO,KAAA,CAAM4D,KAAKuF,MAAM3K,OAAAA,GAAS;AACxC,cAAG1G,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,YAAY,GAAG,OAAOgC,QAAYg3B,IAAAA,MAAM3rB,SAASrL,QAAAA,GAAU;AACrFi6E,qBAASh/E,KAAKm/E,YAAY5B,MAAM/hD,KAAK3gB;UACrC;AAAA,QACD;AAED;AAAA,MACD;AACCmkE,iBAASh/E,KAAKm/E,YAAY5B,MAAM/hD,KAAK3gB,OAAAA;AACrCxU,kBAAUk3E,KAAKl3E;AACf;AAAA,IAEF24E;AAAAA,WAAO34E,UAAUA;AACjB,WAAO24E;AAAAA,EACP,GAEDI,WAAW,SAASnvB,SAASz0B,KAAAA;AAC5B,QAAIkmC,UAAU1hE,KAAKi+E,kBAAkBt+E,WAAUwD,KAAKC,IAAI6sD,SAASz0B,KAAK,KAAQA,GAAAA,GAAAA;AAC9EkmC,YAAQj3D,SAASwlD,QAAQ5jD,SACzBq1D,CAAAA;AAAAA,YAAQh3D,WAAWulD,QAAQtiD,WAAAA,CAAAA;AAC3B,WAAO+zD;AAAAA,EACP,GAED2d,kBAAkB,SAASl8E,MAAMm8E,aAChC;AAAA,QAAIC,UAAUp8E,KAAKwK,WAAAA,GAClBggC,QAAQxqC,KAAKkJ,SAAAA,GACbE,YAAY5M,WAAU+B,OAAO6K;AAC9B,WAAQohC,QAAQphC,aAAe+yE,CAAAA,iBAAiB/yE,aAAa,MAAMohC,SAASphC,cAAegzE,CAAAA;AAAAA,EAC3F,GACDC,kBAAkB,SAASr8E,MAAMm8E,aAChC;AAAA,QAAIC,UAAUp8E,KAAKwK,WAAAA,GAClBggC,QAAQxqC,KAAKkJ,YACbC,aAAa3M,WAAU+B,OAAO4K,YAC9BC,YAAY5M,WAAU+B,OAAO6K;AAC9B,WAAQohC,SAASrhC,eAAgBgzE,gBAAiBC,CAAAA,YAAAA,CAAc5xC,SAAUphC,aAAa,MAAQohC,SAASphC;AAAAA,EACxG,GACDkzE,oBAAoB,SAASt8E,MAAMm8E,aAClC;AAAA,WAAQt/E,KAAKq/E,iBAAiBl8E,MAAMm8E,gBAAgBt/E,KAAKw/E,iBAAiBr8E,MAAMm8E,WAAAA;AAAAA,EAChF,GAEDH,aAAa,SAAS5B,MAAM/hD,KAAK3gB,SAAAA;AAChC,QAAItL,OAAOC;AAEX,QAAIouE,eAAej+E,WAAU+B,OAAOk8E;AAEpC,QAAIz6E,OAAOnD,KAAK8+E,eAAevB,KAAKx6E,YAAYpD,WAAUwD,KAAK0zB,UAAU,IAAIryB,KAAK+4E,KAAKx6E,UAAAA,CAAAA,GAAc,UAAU66E,YAG/G;AAAA,QAAI8B,WAAWnC,KAAKx6E;AAEpB,YAAQy4B,KAAAA;AAAAA,MACP,KAAK;AACJjsB,gBAAQ5P,WAAUwD,KAAKC,IAAID,MAAOy6E,CAAAA,cAAc;AAEhD,YAAI59E,CAAAA,KAAKy/E,mBAAmBlwE,OAAO,IAAA,GAAM;AACxC,cAAKsL,CAAAA,WAAU7a,KAAKy/E,mBAAmBC,UAAU,IAAO,GAAA;AAEvD,gBAAIC,YAAY;AAChB,gBAAG9kE,WAAUlb,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAK+K,KAAAA,CAAAA,EAAQxK,aAAapF,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKk7E,QAAW36E,CAAAA,EAAAA,QAAAA;AAChH46E,0BAAY;AACb,gBAAGA;AACFpwE,sBAAQvP,KAAKi+E,kBAAkBt+E,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,gBAAgB,KAAA,GAAA;AAExEwM,kBAAM9E,SAAS9K,WAAU+B,OAAO6K,SAAAA;AAChCgD,kBAAM7E,WAAW;AACjB6E,oBAAQ5P,WAAUwD,KAAKC,IAAImM,OAAAA,CAAQquE,cAAc,QACjD;AAAA,UAAA;AAAA,QACD;AACDpuE,cAAM7P,WAAUwD,KAAKC,IAAImM,OAAOquE,cAAc,QAAA;AAC9C;AAAA,MACD,KAAK;AACJruE,gBAAQ5P,WAAUwD,KAAKC,IAAID,MAAMy6E,cAAc,QAE/C;AAAA,YAAIgC,UAAU/kE,UAAStL,QAAQ5P,WAAUwD,KAAKC,IAAImM,OAAOquE,cAAc;AACvE,YAAI59E,CAAAA,KAAKy/E,mBAAmBG,SAAS,KAAA,GAAO;AAC3C,cAAA,CAAI/kE,WAAU7a,KAAKy/E,mBAAmBC,UAAU,KAAQ,GAAA;AACvD,iBAAK7kE,SAAQ;AACZtL,sBAAQvP,KAAKi+E,kBAAkBt+E,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,YAAY,GAAG,KAAQ,GAAA,CAAA;AAC9EwM,oBAAM9E,SAAS9K,WAAU+B,OAAO4K,UAAAA;AAChCiD,oBAAM7E,WAAW,CAAA;AAAA,YACzB,OAAc;AACN,kBAAIi1E,YAAY;AAChB,kBAAIhgF,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKk7E,WAAW36E,QAAa26E,KAAAA,SAAS36E,QAAW,GAAA;AACjF46E,4BAAY;AAAA,cACZ;AACD,kBAAIA,WAAW;AACdpwE,wBAAQvP,KAAKi+E,kBAAkBt+E,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,YAAY,GAAG,KAAQ,GAAA,CAAA;AAAA,cAC9E;AACDwM,oBAAM9E,SAAS9K,WAAU+B,OAAO4K;AAChCiD,oBAAM7E,WAAW;AACjB6E,sBAAQ5P,WAAUwD,KAAKC,IAAImM,OAAOquE,cAAc,QAAA;AAAA,YAChD;AAAA,UAED;AAAA,QACD;AACDpuE,cAAM7P,WAAUwD,KAAKC,IAAImM,OAAOquE,cAAc,QAC9C;AAAA;AAAA,MACD,KAAK;AACJruE,gBAAQvP,KAAKo/E,UAAU7B,KAAKx6E,cAC5ByM;AAAAA,cAAMxP,KAAKo/E,UAAU7B,KAAKv6E,UAAW,EAAA;AACrC;AAAA,MACD,KAAK;AACJuM,gBAAQvP,KAAKo/E,UAAU7B,KAAKx6E,YAAY;AACxCyM,cAAMxP,KAAKo/E,UAAU7B,KAAKv6E,UAAU;AACpC;AAAA,MACD;AACCuM,gBAAQpM;AACRqM,cAAM7P,WAAUwD,KAAKC,IAAImM,OAAOquE,cAAc;AAC9C;AAAA,IAGF;AAAA,WAAO,EAAC76E,YAAYwM,OAAOvM,UAAUwM,IAAAA;AAAAA,EACrC,GACDqwE,oBAAoB,SAAStC,MAAM/hD,KAClC;AAAA,QAAIjsB,OAAOC;AACX,QAAIusB,QAAQp8B,WAAUsG;AAEtB,YAAQu1B,KAAAA;AAAAA,MACP,KAAK;AAAA,MACL,KAAK;AACJjsB,gBAAQ5P,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,YAAa,IAAG,KACzEwM,CAAAA;AAAAA,gBAAQvP,KAAKi+E,kBAAkB1uE,OAAAA;AAC/B;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJA,gBAAQ5P,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAIm6E,KAAKx6E,YAAY,GAAG,KAAA,CAAA;AACxEwM,gBAAQvP,KAAKi+E,kBAAkB1uE,OAAO,CAAA;AACtC;AAAA,MACD;AACCA,gBAAQ5P,WAAUwD,KAAK0zB,UAAU0mD,KAAKx6E,UAAAA;AACtC;AAAA;AAEF,QAAGw6E,KAAKx6E,WAAWgC,QAAYg3B,IAAAA,MAAM5rB,SAASpL,QAAaw4E,KAAAA,KAAKx6E,WAAWgC,QAAAA,KAAag3B,MAAM3rB,SAASrL,QAAAA,GAAU;AAChHwK,cAAQ,IAAI/K,KAAKu3B,MAAM5rB,QAAAA;AAAAA,IAEvB;AACDX,UAAM,IAAIhL,KAAK+K,KAAAA;AACfC,QAAI/E,SAAS9K,WAAU+B,OAAO6K,SAC9B;AAAA,WAAO,EAACxJ,YAAYwM,OAAOvM,UAAUwM,IAAAA;AAAAA,EACrC,GACDswE,gBAAgB,SAASvC,MAAM/hD,KAC9B;AAAA,WAAO,EAACz4B,YAAYw6E,KAAKx6E,YAAYC,UAAUu6E,KAAKv6E,SACpD;AAAA,EAAA,GAGD+8E,eAAe,SAAS58E,MAAAA;AACvB,QAAIxD,CAAAA,WAAUmuB;AACb,aAAO;AAER,QAAI7S,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG;AAEzE,QAAI6P;AACJ,QAAG2L,UAAS;AACX3L,cAAQ3P,WAAUm7B,gBAAgB7f,UAAU9X,IAAAA;AAAAA,IAChD,OAAQ;AACJmM,cAAQ3P,WAAU6M,kBAAkBrJ,IAAAA;AAAAA,IACpC;AAED,WAAQxD,CAAAA,WAAUgR,SAASrB,KAAAA;AAAAA,EAC3B,GAED2uE,mBAAmB,SAAS1uE,OAAOisB,KAClC;AAAA,QAAIr4B,OAAOoM;AACXisB,UAAMA,OAAO;AACb,QAAIupB,SAAQplD,WAAUsG;AAEtB,WAAOjG,CAAAA,KAAK+/E,cAAc58E,IAAWq4B,MAAAA,MAAM,KAAKr4B,KAAK4B,aAAaggD,OAAM30C,SAASrL,aAAey2B,MAAM,KAAKr4B,KAAK4B,QAAaggD,KAAAA,OAAM50C,SAASpL,QAAAA,IAAY;AACvJ5B,aAAOnD,KAAKggF,eAAe78E,MAAMq4B,GAAAA;AAAAA,IACjC;AAED,WAAOr4B;AAAAA,EACP,GAED68E,gBAAgB,SAASzwE,OAAOisB,KAAAA;AAC/BA,UAAMA,OAAO;AACb,QAAIvgB,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG;AAEzE,QAAI0D;AACJ,QAAG8X,UAAS;AACX9X,aAAOxD,WAAUwD,KAAKC,IAAImM,OAAOisB,MAAMvgB,SAASiT,QAAQjT,SAASkT,MACrE;AAAA,IAAA,OAAQ;AACJhrB,aAAOxD,WAAUwD,KAAK0zB,UAAUl3B,WAAUwD,KAAKC,IAAImM,OAAOisB,KAAK,KAAA,CAAA;AAAA,IAC/D;AAED,WAAOr4B;AAAAA,EACP,GAEDogC,WAAU,SAASvO,MAAMC,IAAAA;AACxB,SAAIt1B,WAAUmuB;AACb,aAAO;AAER,QAAImyD,UAAU,IAAIz7E,KAAKwwB,IAEvB;AAAA,WAAMirD,QAAQl7E,QAAYkwB,IAAAA,GAAGlwB,QAAU,GAAA;AACtC,UAAG/E,KAAK+/E,cAAcE;AAAU,eAAO;AACvCA,gBAAUjgF,KAAKggF,eAAeC,OAC9B;AAAA,IAAA;AACD,WAAO;AAAA,EACP,GAEDzC,UAAU,SAASD,MAAM/hD,KAAK/vB,MAAMoP,SAAAA;AACnC,QAAIgE;AACJpT,WAAOA,QAAQzL,KAAKs4E;AAEpB,QAAI4H,WAAWvgF,WAAUm0E,oBAAoBsE,SAAS//D,UAAU6lE,MAAMX;AAEtE,YAAQ9xE,MAAAA;AAAAA,MACP,KAAKzL,KAAKq4E,OAAO3jE;AAChBmK,eAAO7e,KAAKi/E,cAAciB,UAAU1kD,KAAK3gB,OACzC;AAAA;AAAA,MACD,KAAK7a,KAAKq4E,OAAOp9D;AAChB4D,eAAO7e,KAAK++E,iBAAiBmB,UAAU1kD,KAAK3gB,OAC5C;AAAA;AAAA,MACD,KAAK7a,KAAKq4E,OAAOl9D;AAChB0D,eAAO7e,KAAK6+E,cAAcqB,UAAU1kD,KAAK3gB,OACzC;AAAA;AAAA,MACD,KAAK7a,KAAKq4E,OAAOr3C;AAChBniB,eAAO7e,KAAK6+E,cAAcqB,UAAU1kD,KAAK3gB,OACzC;AAAA;AAAA,MACD,KAAK7a,KAAKq4E,OAAOM;AAChB95D,eAAO7e,KAAK6/E,mBAAmBK,UAAU1kD,KAAK3gB,OAC9C;AAAA;AAAA,MACD,KAAK7a,KAAKq4E,OAAOl1D;AAChBtE,eAAO7e,KAAK8/E,eAAeI,UAAU1kD,KAAK3gB,OAC1C;AAAA;AAAA,MACD,KAAK7a,KAAKq4E,OAAOS;AAChBj6D,eAAO7e,KAAKm/E,YAAYe,UAAU1kD,KAAK3gB,OACvC;AAAA;AAAA,IAAA;AAGF,QAAGgE,KAAK9b,WAAWgC,aAAa8Z,KAAK7b,SAAS+B,QAAU,GAAA;AACvD8Z,aAAO7e,KAAKw9E,SAAS3+D,MAAM2c,KAAK/vB,IAAAA;AAAAA,IAChC;AAED,WAAO9L,WAAUm0E,oBAAoBsE,SAAS//D,UAAU6lE,MAAMr/D,IAAAA;AAAAA,EAE9D,GAEDshE,YAAY,SAAS5C,MAAM/hD,KAC1B;AAAA,QAAI/vB,OAAOzL,KAAKs4E;AAChB,QAAIz5D;AACJ,YAAQpT,MACP;AAAA,MAAA,KAAKzL,KAAKq4E,OAAO3jE;AAChB,YAAG8mB,OAAO,UAAUA,OAAO,SAAQ;AAClC3c,iBAAO7e,KAAKi/E,cAAc1B,MAAM/hD,GAAAA;AAAAA,QACtC,OAAU;AACJ3c,iBAAO7e,KAAKogF,gBAAgB7C,MAAM/hD,GAClC;AAAA,QAAA;AACD;AAAA,MACD,KAAKx7B,KAAKq4E,OAAOp9D;AAChB,YAAGugB,OAAO,UAAUA,OAAO,MAAK;AAC/B3c,iBAAO7e,KAAK++E,iBAAiBxB,MAAM/hD;QACzC,OAAU;AACJ3c,iBAAO7e,KAAKqgF,mBAAmB9C,MAAM/hD,GACrC;AAAA,QAAA;AACD;AAAA,MACD,KAAKx7B,KAAKq4E,OAAOl9D;AAChB0D,eAAO7e,KAAKsgF,gBAAgB/C,MAAM/hD,GAClC;AAAA;AAAA,MACD,KAAKx7B,KAAKq4E,OAAOr3C;AAChBniB,eAAO7e,KAAKsgF,gBAAgB/C,MAAM/hD;AAClC;AAAA,MACD,KAAKx7B,KAAKq4E,OAAOS;AAChBj6D,eAAO7e,KAAKugF,cAAchD,MAAM/hD,GAAAA;AAChC;AAAA,MACD,KAAKx7B,KAAKq4E,OAAOM;AAChB95D,eAAO7e,KAAKwgF,qBAAqBjD,MAAM/hD,GACvC;AAAA;AAAA,MACD;AACC3c,eAAO0+D;AACP;AAAA,IAGF;AAAA,QAAIx4B,SAAQplD,WAAUsG,SAAAA;AACtB,QAAG4Y,KAAK9b,WAAWgC,YAAYggD,OAAM50C,SAASpL,QAAU,GAAA;AACvD8Z,WAAK9b,aAAa/C,KAAKi+E,kBAAkBl5B,OAAM50C,QAAAA;AAC/C0O,WAAK9b,WAAW0H,SAAS9K,WAAU+B,OAAO4K;IAC1C;AAED,QAAGuS,KAAK7b,SAAS+B,QAAAA,IAAYggD,OAAM30C,SAASrL,QAAAA,GAAU;AAErD8Z,WAAK7b,WAAWhD,KAAKi+E,kBAAkBl5B,OAAM30C,UAAW,EAAA;AAAA,IACxD;AAGD,WAAOzQ,WAAUm0E,oBAAoBsE,SAAS//D,UAAU6lE,MAAMr/D,IAAAA;AAAAA,EAC9D,GAEDwhE,oBAAoB,SAAS9C,MAAMl2D,WAClC;AAAA,WAAOrnB,KAAKygF,kBAAkB,EAC7Bj+E,MAAO,cACPqkB,OAAQ,WAER02D,GAAAA,MACAl2D,WACA,UAED;AAAA,EAAA,GAEDm5D,sBAAsB,SAASjD,MAAMl2D,WACpC;AAAA,WAAOrnB,KAAKygF,kBAAkB,EAC5Bj+E,MAAO,cACPqkB,OAAQ,WAET02D,GAAAA,MACAl2D,WACA,YAED;AAAA,EAAA,GAEDo5D,mBAAmB,SAASC,mBAAmBnD,MAAMl2D,WAAWrgB,MAAAA;AAC/D,QAAI6X;AACJ,QAAI8hE,WAAWpD,KAAKG;AAEpB,QAAIiD,CAAAA,UAAS;AACZA,iBAAWD,kBAAkBr5D,SAC7B;AAAA,IAAA;AAED,SAAIs5D,YAAaD,CAAAA,kBAAkBr5D,YAAW;AAC7C,aAAOk2D;AAAAA,IACP;AAED,QAAGl2D,WAAU;AACZxI,aAAO7e,KAAKw9E,SAAS,EAACz6E,YAAYw6E,KAAKoD,WAAWt6E,SAASk3E,KAAKl3E,QAAUghB,GAAAA,WAAWrgB,MAAM,IAE3F;AAAA,UAAG6X,KAAK9b,WAAWgC,QAAAA,KAAaw4E,KAAKx6E,WAAWgC,QAAAA,GAAU;AACzD8Z,eAAO7e,KAAKw9E,SAAS,EAACz6E,YAAY8b,KAAK9b,YAAYsD,SAAQwY,KAAKxY,QAAAA,GAAUghB,WAAWrgB,MAAM;MAC3F;AAED6X,WAAK6+D,aAAaiD;AAAAA,IACtB,OAAQ;AACJ,aAAOhhF,WAAUm0E,oBAAoBsE,SAAS//D,UAAU6lE,MAAMX,IAAAA;AAAAA,IAC9D;AAED,QAAIqD,WAAW5gF,KAAK6gF,gBAAgBtD,MAAM1+D,MAAMA,KAAK6+D;AAErD,QAAGkD,SAAS59E,SAAS+B,QAAa67E,KAAAA,SAAS79E,WAAWgC,QAAU,GAAA;AAC/D8Z,WAAK6+D,aAAa7+D,KAAK6+D,cAAc,aAAa,eAAe;AAAA,IACjE;AACDkD,eAAW5gF,KAAK6gF,gBAAgBtD,MAAM1+D,MAAMA,KAAK6+D,UAEjD7+D;AAAAA,SAAK9b,aAAa69E,SAAS79E;AAC3B8b,SAAK7b,WAAW49E,SAAS59E;AACzB,WAAO6b;AAAAA,EACP,GAEDgiE,iBAAiB,SAASC,SAASC,SAASC;AAC3C,QAAIz4E,MAAM,EAACxF,YAAW,MAAMC,UAAS,KAAA;AAErC,QAAGg+E,iBAAiB,cAAa;AAChCz4E,UAAIxF,aAAag+E,QAAQh+E;AACzBwF,UAAIvF,WAAW89E,QAAQ99E;AAAAA,IAC3B,OAAQ;AACJuF,UAAIxF,aAAa+9E,QAAQ/9E;AACzBwF,UAAIvF,WAAW+9E,QAAQh+E;AAAAA,IACvB;AACD,WAAOwF;AAAAA,EAEP,GAED+3E,iBAAiB,SAAS/C,MAAMl2D,WAAAA;AAC/B,QAAIk2D,OAAOv9E,KAAKygF,kBAAkB,EAChCzK,IAAK,cACLC,MAAO,YACPzzE,MAAO,cACPqkB,OAAQ,WAET02D,GAAAA,MACAl2D,WACA,OAGDk2D;AAAAA,SAAKx6E,WAAW0H,SAAS9K,WAAU+B,OAAO4K,UAAAA;AAC1CixE,SAAKv6E,WAAWrD,WAAUwD,KAAKC,IAAIm6E,KAAKv6E,cAAc,KAAA;AACtDu6E,SAAKv6E,SAASyH,SAAS9K,WAAU+B,OAAO6K;AACxC,WAAOgxE;AAAAA,EACP,GAED6C,iBAAiB,SAAS7C,MAAMl2D,WAAAA;AAC/B,QAAIxI;AAEJ,YAAQwI;MACP,KAAK;AAAA,MACL,KAAK;AACJxI,eAAO7e,KAAKugF,cAAchD,MAAMl2D,SAChC;AAAA;AAAA,MACD;AACCxI,eAAO0+D;AACP;AAAA;AAEF1+D,SAAKxY,UAAUk3E,KAAKl3E;AACpB,WAAOwY;AAAAA,EACP,GACD0hE,eAAe,SAAShD,MAAMl2D;AAC7B,WAAOrnB,KAAKygF,kBAAkB,EAC5BzK,IAAK,cACLC,MAAO,YACPzzE,MAAO,cACPqkB,OAAQ,WAET02D,GAAAA,MACAl2D,WACA,YAAA;AAAA,EAED,GAED45D,YAAY,SAASzlD;AACpB,QAAIO,QAAQp8B,WAAUsG,SAEtB;AAAA,QAAIs3E,OAAOv9E,KAAKw9E,SAASx9E,MAAMw7B,GAAAA;AAC/B,QAAG+hD,KAAKx6E,WAAWgC,YAAYg3B,MAAM5rB,SAASpL,QAAaw4E,KAAAA,KAAKx6E,WAAWgC,QAAag3B,KAAAA,MAAM3rB,SAASrL,QAAU,GAAA;AAChHpF,MAAAA,WAAU8X,eAAe,IAAIjT,KAAK+4E,KAAKx6E;IACvC;AAED/C,SAAKq8E,OAAOkB,IACZ;AAAA,EAAA,GAEDx3D,MAAM,EACLvjB,MAAQ,WACPxC;AAAAA,SAAKihF,WAAW,MAChB;AAAA,EAAA,GACDp6D,OAAS,WACR7mB;AAAAA,SAAKihF,WAAW,OAChB;AAAA,EAAA,GACDhL,MAAQ,WAAA;AAEP,QAAIx2E,OAAQO,KAAKs4E;AACjB,QAAG74E,QAAQO,KAAKq4E,OAAOl1D,MAAK;AAC3BxjB,MAAAA,WAAUm0E,oBAAoB4G,cAAcriE,UAAUkjE;IAC3D,OAAS;AACJv7E,WAAKihF,WAAW,MAAA;AAAA,IAChB;AAAA,EAED,GAEDjL,IAAM,WACL;AAAA,QAAIv2E,OAAQO,KAAKs4E,SAAAA;AACjB,QAAG74E,QAAQO,KAAKq4E,OAAOl1D,MAAK;AAC3BxjB,MAAAA,WAAUm0E,oBAAoB4G,cAAcriE,UAAU0jE,iBAAAA;AAAAA,IAC3D,OAAS;AACJ/7E,WAAKihF,WAAW,IAAA;AAAA,IAChB;AAAA,EAED,GAED,cAAa;AACZjhF,SAAKq8E,OAAOr8E,KAAKmgF,WAAWngF,MAAM,MAClC,CAAA;AAAA,EAAA,GACD,YAAW,WACVA;AAAAA,SAAKq8E,OAAOr8E,KAAKmgF,WAAWngF,MAAM,IAClC,CAAA;AAAA,EAAA,GACD,eAAc,WAAA;AACbA,SAAKq8E,OAAOr8E,KAAKmgF,WAAWngF,MAAM,OAAA,CAAA;AAAA,EAClC,GACD,cAAa,WAAA;AACZA,SAAKq8E,OAAOr8E,KAAKmgF,WAAWngF,MAAM;EAClC,GAGD61E,OAAS;AACR,QAAIj2E,MAAM,EAACmD,YAAY,IAAIyB,KAAKxE,KAAK+C,aAAaC,UAAU,IAAIwB,KAAKxE,KAAKgD,QAAAA,EAAAA;AAE1E,QAAIvD,OAAOE,WAAUsG,SAAWxG,EAAAA;AAChC,QAAGE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAAA,GAAM;AAE7C,UAAIwb,WAAWtb,WAAU4L,OAAO5L,WAAUsG,SAAWxG,EAAAA,IAAAA;AACrDG,UAAIqb,SAAS9Y,UAAAA,IAAcnC,KAAKqG;AAAAA,IACrC,WAAa1G,WAAU2L,UAAU3L,WAAU2L,OAAO7L,OAAM;AACnD,UAAImV,OAAOjV,WAAU2L,OAAO7L,IAC5BG;AAAAA,UAAIgV,KAAKxS,MAAUpC,IAAAA,KAAKqG;AAAAA,IACxB;AAED1G,IAAAA,WAAU+V,YAAY9V,GAAAA;AAAAA,EACtB;AAKJD,EAAAA,WAAUm0E,oBAAoBsE,SAAS//D,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoBsE,SAAS//D,UAAU0N,IAAAA;AAE1G;ACxxBe,SAAQm7D,eAACvhF;AAExBA,EAAAA,WAAUm0E,oBAAoBqN,gBAAgB,SAAS5zE,KAAK+B,OAC3DtP;AAAAA,SAAKwL,YAAY+B;AACjBvN,SAAKsP,QAAQA,SAAS;AAAA,EACvB;AAEA3P,EAAAA,WAAUm0E,oBAAoBqN,cAAc9oE,YAAY1Y,WAAUg7E,SACjEh7E,WAAUm0E,oBAAoBsI,YAC9B,EAEC33C,SAAS,WACR;AAAA,QAAIj5B,YAAYxL,KAAKwL;AACrB,WAASA,CAAAA,CAAAA,UAAUwV;AAAAA,EACnB,GAEDooC,UAAU;AACT,QAAIm1B,cAAc,IAAI5+E,WAAUm0E,oBAAoBsE;AACpD,QAAGmG,YAAY95C,QAAU,GAAA;AACxB,aAAO85C;AAAAA,IACX,OAAQ;AACJ,aAAO,IAAI5+E,WAAUm0E,oBAAoB0K;AAAAA,IACzC;AAAA,EACD,GACDlkD,OAAO,WACN36B;AAAAA,IAAAA,WAAUm0E,oBAAoB2H,WAAW2F,WAAWlP,QACpDlyE;AAAAA,SAAKwL,UAAUwvE,gBAAgB,UAAA;AAC/Br7E,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUiiB,MAAMlsB,MAAMpO,IAE/D;AAAA,EAAA,GACD86E,MAAM,WACL96E;AAAAA,SAAKwL,UAAUsR,aAAa,YAAY,GACxCnd;AAAAA,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUyiE,KAAK1sE,MAAMpO,IAAAA;AAAAA,EAC9D,GACDs7E,SAAS,WAAA;AACR,QAAIt7E,CAAAA,KAAKsP,OAAM;AACd,aAAOtP,KAAKwL,UAAUwT,cAAc,sBACxC;AAAA,IAAA,OAAQ;AACJ,aAAOhf,KAAKwL,UAAUwT,cAAc;IACpC;AAAA,EACD,GAED+G,MAAM,EACLc,OAAS,SAAShhB,GAAAA;AACjB7F,SAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBqN,cAAcnhF,KAAKwL,WAAWxL,KAAKsP,QAAQ,IAAI;EAC7F,GACD9M,MAAQ,SAASqD,GAChB7F;AAAAA,SAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBqN,cAAcnhF,KAAKwL,WAAWxL,KAAKsP,QAAQ,IAAI,CAAA,CAAA;AAAA,EAC7F,GACD2mE,MAAQ,WAAA;AACP,QAAIp3D,OAAO,IAAIlf,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAW,GAAG,CAC5E;AAAA,QAAGqT,QAASA,CAAAA,KAAK4lB,WAAU;AAC1B5lB,aAAOA,KAAKuqC,SACZ;AAAA,IAAA;AAEDppD,SAAKq8E,OAAOx9D,IAAAA;AAAAA,EACZ,GACDg3D,OAAS,SAAShwE,GACjB7F;AAAAA,SAAKs7E,UAAU99D,MACf;AAAA,EAAA,EAAA,EAAA,CAAA;AAKJ7d,EAAAA,WAAUm0E,oBAAoBqN,cAAc9oE,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoBqN,cAAc9oE,UAAU0N,IAEpH;AAAA;AClEe,SAAQu7D,aAAC3hF,YAAAA;AAExBA,EAAAA,WAAUm0E,oBAAoBuN,cAAc,SAAS9zE,KAAKsP,KAAKosB,KAC9DjpC;AAAAA,SAAKwL,YAAY+B;AACjBvN,SAAK6c,MAAMA,OAAO;AAClB7c,SAAKipC,MAAMA,OAAO;AAAA,EACnB;AAEAtpC,EAAAA,WAAUm0E,oBAAoBuN,YAAYhpE,YAAY1Y,WAAUg7E,SAC/Dh7E,WAAUm0E,oBAAoBsI,YAC9B,EAEC33C,SAAS;AACR,QAAIzpB,OAAOhb,KAAKuhF,SAAAA;AAChB,cAAUvmE,KAAKhb,KAAK6c,QAAQ7B,KAAKhb,KAAK6c,KAAK7c,KAAKipC,GAAAA;AAAAA,EAChD,GACDmgB,UAAU;AACT,QAAIvsC,MAAM7c,KAAK6c;AACf,QAAIosB,MAAMjpC,KAAKipC;AACf,QAAIjuB,OAAOhb,KAAKuhF,SAChB;AAAA,QAAA,CAAIvmE,KAAK6B,GAAK,GAAA;AACbA,YAAM;AAAA,IACN;AACD,QAAI2e,MAAM;AACV,QAAG3e,MAAM7B,KAAK5W,SAAS,GAAE;AACxBo3B,YAAM;AAAA,IACN;AAED,QAAA,CAAIxgB,KAAK6B,GAAK,GAAA;AACb,UAAI0hE,cAAc,IAAI5+E,WAAUm0E,oBAAoBsE;AACpD,UAAGmG,YAAY95C,WAAU;AACxB,eAAO85C;AAAAA,MACZ,OAAS;AACJ,eAAO,IAAI5+E,WAAUm0E,oBAAoB0K;AAAAA,MACzC;AAAA,IACD;AAED,QAAGhjD,KAAI;AACN,eAAQ9xB,IAAIu/B,KAAKjuB,KAAK6B,GAAAA,KAAQnT,IAAIsR,KAAK6B,GAAAA,EAAKzY,QAAQsF,KAAI;AACvD,aAAIsR,KAAK6B,GAAAA,EAAKnT,CAAMA,KAAAA,KAAKsR,KAAK6B,GAAKzY,EAAAA,SAAS,GAAE;AAC7CyY;AACAosB,gBAAM;AAAA,QACN;AACD,YAAGjuB,KAAK6B,KAAKnT,CAAG,GAAA;AACf,iBAAO,IAAI/J,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAWqR,KAAKnT;QAC1E;AAAA,MACD;AAAA,IACL,OAAQ;AACJ,eAAQA,IAAIu/B,KAAKjuB,KAAK6B,GAAAA,KAAQnT,IAAIsR,KAAK6B,GAAAA,EAAKzY,QAAQsF,KAAI;AACvD,aAAIsR,KAAK6B,GAAAA,EAAKnT,CAAOA,KAAAA,CAAAA,GAAE;AACtBmT;AACAosB,gBAAMjuB,KAAK6B,GAAKzY,EAAAA,SAAS;AAAA,QACzB;AACD,YAAG4W,KAAK6B,GAAAA,EAAKnT,IAAG;AACf,iBAAO,IAAI/J,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAWqR,KAAKnT,CAAAA;AAAAA,QAC1E;AAAA,MACD;AAAA,IACD;AAED,WAAO,IAAI/J,WAAUm0E,oBAAoBqN,cAAcnhF,KAAKwL,WAAW,CAAA;AAAA,EACvE,GACD8uB,OAAO,WAAA;AACN36B,IAAAA,WAAUm0E,oBAAoB2H,WAAW2F,WAAWlP,QAEpDlyE;AAAAA,SAAKwL,UAAUwvE,gBAAgB;AAC/Br7E,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUiiB,MAAMlsB,MAAMpO,IAC/D;AAAA,EAAA,GACD86E,MAAM,WAAA;AACL96E,SAAKwL,UAAUsR,aAAa,YAAY,GACxCnd;AAAAA,IAAAA,WAAUm0E,oBAAoBsI,WAAW/jE,UAAUyiE,KAAK1sE,MAAMpO;EAC9D,GACDwhF,UAAU,SAAS3kE,KAAKosB,KAAAA;AACvB,WAAOjpC,KAAKwL,UAAUwT,cAAc,kCAAgCnC,MAAM,KAAK,qBAAmBosB,MAAM,KAAG,GAAA;AAAA,EAC3G,GACDqyC,SAAS,WAAA;AACR,WAAOt7E,KAAKwhF,SAASxhF,KAAK6c,KAAK7c,KAAKipC,GACpC;AAAA,EAAA,GAEDs4C,UAAU,WACT;AAAA,QAAIrjE,OAAOle,KAAKwL,UAAUvH,iBAAiB,mBAAA;AAC3C,QAAI+W,OAAO,CAAA;AACX,aAAQ7W,IAAI,GAAGA,IAAI+Z,KAAK9Z,QAAQD,KAAI;AACnC6W,WAAK7W,CAAAA,IAAK;AACV,UAAI0Y,MAAMqB,KAAK/Z,CAAAA;AACf,UAAIc,QAAQ4X,IAAI5Y,iBAAiB,IACjC;AAAA,eAAQyF,IAAI,GAAGA,IAAIzE,MAAMb,QAAQsF,KAAI;AACpC,YAAIsvB,OAAO/zB,MAAMyE;AACjB,YAAI+3E,UAAU;AACd,YAAIx+E,MAAMtD,WAAUmS,cAAcknB;AAClC,YAAG/1B,IAAI8O,QAAQ,WAAgB,IAAA,MAAK9O,IAAI8O,QAAQ,sBAAsB9O,IAAI8O,QAAQ,kBAAuB,IAAA,IAAE;AAC1G0vE,oBAAU;AAAA,QACV;AACDzmE,aAAK7W,GAAGuF,CAAK+3E,IAAAA;AAAAA,MACb;AAAA,IACD;AACD,WAAOzmE;AAAAA,EACP,GAGD+K,MAAM,EACLc,OAAS,SAAShhB,GACjB;AAAA,QAAImV,OAAOhb,KAAKuhF,SAAAA;AAChB,QAAIG,SAAS1hF,KAAK6c;AAClB,QAAI8kE,SAAS3hF,KAAKipC,MAAM;AACxB,QAAIjuB,CAAAA,KAAK0mE,YAAY1mE,KAAK0mE,MAAAA,EAAQC,MAAQ,GAAA;AACzC,UAAG3mE,KAAK0mE,SAAS,IAAG;AACnBA,iBAASA,SAAS;AAClBC,iBAAS;AAAA,MACf,OAAU;AACJA,iBAAS3hF,KAAKipC;AAAAA,MACd;AAAA,IACD;AAED,QAAIpqB,OAAO,IAAIlf,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAWk2E,QAAQC,MACjF;AAAA,QAAA,CAAI9iE,KAAK4lB,QAAU,GAAA;AAClB5lB,aAAOA,KAAKuqC;IACZ;AAEDppD,SAAKq8E,OAAOx9D,IACZ;AAAA,EAAA,GACDrc,MAAQ,SAASqD,GAAAA;AAChB,QAAImV,OAAOhb,KAAKuhF,SAChB;AAAA,QAAIG,SAAS1hF,KAAK6c;AAClB,QAAI8kE,SAAS3hF,KAAKipC,MAAM;AACxB,SAAIjuB,KAAK0mE,MAAAA,KAAAA,CAAY1mE,KAAK0mE,MAAQC,EAAAA,MAAAA,GAAQ;AACzC,UAAG3mE,KAAK0mE,SAAS,CAAA,GAAG;AACnBA,iBAASA,SAAS;AAClBC,iBAAS3mE,KAAK0mE,QAAQt9E,SAAS;AAAA,MACrC,OAAU;AACJu9E,iBAAS3hF,KAAKipC;AAAAA,MACd;AAAA,IACD;AAED,QAAIpqB,OAAO,IAAIlf,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAWk2E,QAAQC;AACjF,QAAI9iE,CAAAA,KAAK4lB,WAAU;AAClB5lB,aAAOA,KAAKuqC,SAAAA;AAAAA,IACZ;AAEDppD,SAAKq8E,OAAOx9D;EACZ,GACDo3D,MAAQ;AACP,QAAIj7D,OAAOhb,KAAKuhF,SAAAA;AAChB,QAAIG,SAAS1hF,KAAK6c,MAAM;AACxB,QAAI8kE,SAAS3hF,KAAKipC;AAElB,QAAIjuB,CAAAA,KAAK0mE,YAAY1mE,KAAK0mE,MAAAA,EAAQC,SAAQ;AACzCD,eAAS1hF,KAAK6c;AAAAA,IACd;AAED,QAAIgC,OAAO,IAAIlf,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAWk2E,QAAQC,MACjF;AAAA,QAAA,CAAI9iE,KAAK4lB,QAAAA,GAAU;AAClB5lB,aAAOA,KAAKuqC;IACZ;AAEDppD,SAAKq8E,OAAOx9D,IACZ;AAAA,EAAA,GACDm3D,IAAM,WAAA;AACL,QAAIh7D,OAAOhb,KAAKuhF;AAChB,QAAIG,SAAS1hF,KAAK6c,MAAM;AACxB,QAAI8kE,SAAS3hF,KAAKipC;AAElB,QAAA,CAAIjuB,KAAK0mE,MAAY1mE,KAAAA,CAAAA,KAAK0mE,QAAQC,MAAQ,GAAA;AACzC,UAAIryE,QAAQ;AACZ,UAAGtP,KAAKipC,MAAMjuB,KAAKhb,KAAK6c,KAAKzY,SAAS,GAAE;AACvCkL,gBAAQ;AAAA,MACR;AACDtP,WAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBqN,cAAcnhF,KAAKwL,WAAW8D,KAAAA,CAAAA;AAAAA,IACjF,OAAS;AACJ,UAAIuP,OAAO,IAAIlf,WAAUm0E,oBAAoBuN,YAAYrhF,KAAKwL,WAAWk2E,QAAQC;AACjF,UAAI9iE,CAAAA,KAAK4lB,WAAU;AAClB5lB,eAAOA,KAAKuqC,SACZ;AAAA,MAAA;AAEDppD,WAAKq8E,OAAOx9D;IACZ;AAAA,EAED,GACDg3D,OAAS,SAAShwE,GAAAA;AACjB7F,SAAKs7E,QAAUt8D,EAAAA,cAAc,iBAAmBxB,EAAAA,MAAAA;AAAAA,EAChD;AAKJ7d,EAAAA,WAAUm0E,oBAAoBuN,YAAYhpE,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoBuN,YAAYhpE,UAAU0N,IAAAA;AAEhH;AC1Le,SAAQ+P,UAACn2B,YAExBA;AAAAA,EAAAA,WAAUm0E,oBAAoB0K,WAAW,SAASlvE,OACjDtP;AAAAA,SAAKsP,QAAQA,SAAS;AAAA,EACvB;AAEA3P,EAAAA,WAAUm0E,oBAAoB0K,SAASnmE,YAAY1Y,WAAUg7E,SAC5Dh7E,WAAUm0E,oBAAoBsI,YAC9B,EACCd,SAAS,SAAShsE,OAAAA;AACjB,WAAO3P,WAAUqE,WAAWgb,cAAc,eAAA;AAAA,EAC1C,GAEDq4D,WAAU,MAEV5yC,SAAS,WACR;AAAA,WAAO;AAAA,EACP,GACD2kB,UAAS,WACR;AAAA,WAAOppD;AAAAA,EACP,GAED+lB,MAAM,EACL,sBAAqB,WAAA;AACpB/lB,SAAKq8E,OAAO,IAAI18E,WAAUm0E,oBAAoBsE;EAC9C,EAKJz4E,EAAAA,CAAAA;AAAAA,EAAAA,WAAUm0E,oBAAoB0K,SAASnmE,UAAUo/D,QAAQ93E,WAAUm0E,oBAAoB0K,SAASnmE,UAAU0N;AAE1G;AChCe,SAAQ67D,OAACjiF,YAIxB;AAAA,GAAA,WAAA;AACC,QAAIkiF,cAAc,CAAA;AAElB,aAASC,UAAAA;AACR,eAAUD,YAAkB;AAAA,IAC5B;AAED,aAAS17C,UAAUC,OAAO54B,QACzB;AAAA,aAAM44B,SAASA,SAAS54B,QAAO;AAC9B44B,gBAAQA,MAAM34B;AAAAA,MACd;AAED,gBAAU24B,SAAS54B;AAAAA,IACnB;AAED,aAASu0E,WAAW3/C,KACnB/oB;AAAAA,iBAAW;AACV,YAAG1Z,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACD,aAAIqhE,QAAe37C,KAAAA,CAAAA,UAAUtmC,SAASilC,eAAenlC,WAAUqE,aAAc;AAC5ErE,UAAAA,WAAU26B,MACV;AAAA,QAAA;AAAA,MACD,GAAE,CACH;AAAA,IAAA;AACD,aAAS0nD,WAAW5/C,KAAAA;AACnBziC,MAAAA,WAAUw8B,YAAYiG,KAAK,WAAWw1C,SAAAA;AACtCj4E,MAAAA,WAAU6B,MAAM4gC,KAAK,WAAWw1C,SAChCiK;AAAAA,kBAAYh+E,KAAKu+B,GAEjB;AAAA,IAAA;AAED,aAAS6/C,WAAAA;AACR,UAAI7/C,MAAMy/C,YAAY3pE;AACtB,UAAGkqB,KAAK;AACPziC,QAAAA,WAAUw8B,YAAYiG,KAAK,WAAWw1C;MACtC;AACDmK,iBAAAA;AAAAA,IAEA;AAED,aAASG,WAAW9/C;AAIlB,aAAOA,OAAOy/C,YAAYA,YAAYz9E,SAAS,CAGhD;AAAA,IAAA;AAED,aAASwzE,UAAUp2E,QAAAA;AAClB,UAAIA,SAAQA,UAASP,OAAOO;AAC5B,UAAIuE,SAASvE,OAAM2gF;AACnB,UAAID,CAAAA,WAAWn8E;AAAS;AAExBpG,MAAAA,WAAUm0E,oBAAoB8D,UAAU7xE,QAAQvE,MAChD;AAAA,IAAA;AAED,aAAS4gF,gBACRJ;AAAAA,iBAAWriF,WAAU2jD,YACrB,CAAA;AAAA,IAAA;AAED3jD,IAAAA,WAAUiG,YAAY,cAAcw8E,aACpCziF;AAAAA,IAAAA,WAAUiG,YAAY,mBAAmBq8E,QAAAA;AAEzCtiF,IAAAA,WAAUiG,YAAY,oBAAoB,WAAWm8E;AAAAA,iBAAAA;AAAAA,IAAa;AAElE,QAAIpiF,CAAAA,WAAU0iF,qBAAqB;AAClC1iF,MAAAA,WAAU0iF,sBAAsB;AAEhC,UAAIC,eAAe;AACnB,UAAIC,cAAc;AAClB,YAAMV,eAAc,CAAA;AACpBliF,MAAAA,WAAUiG,YAAY,kBAAkB,SAASw8B,KAAAA;AAChDkgD,uBAAeziF,SAASilC;AACxBy9C,sBAAcD;AAEd,eAAMC,eAAe5iF,WAAUmS,cAAcywE,WAAaxwE,EAAAA,QAAQ,kBAAkB,GAAE;AACrFwwE,wBAAcA,YAAY90E;AAAAA,QAC1B;AACD,YAAG80E,aAAY;AACdA,wBAAcA,YAAY90E;AAAAA,QAC1B;AAED9N,QAAAA,WAAUw8B,YAAYiG,KAAK,WAAWw1C,SACtCj4E;AAAAA,QAAAA,WAAU6B,MAAM4gC,KAAK,WAAWw1C,SAChCiK;AAAAA,QAAAA,aAAYh+E,KAAKu+B,GACpB;AAAA,MAAA,CAAA;AAGEziC,MAAAA,WAAUiG,YAAY,uBAAuB,WAC5C;AAAA,YAAIw8B,MAAMy/C,aAAY3pE,IAAAA;AACtB,YAAGkqB,KAAK;AACPziC,UAAAA,WAAUw8B,YAAYiG,KAAK,WAAWw1C,SAAAA;AAAAA,QACtC;AACDv+D,mBAAW,WAAA;AACV,cAAG1Z,WAAU8gB,YAAW;AACvB,mBAAO;AAAA,UACP;AACD,cAAI0hE,gBAAgBtiF,SAASilC;AAC7B,iBAAMq9C,iBAAiBxiF,WAAUmS,cAAcqwE,aAAepwE,EAAAA,QAAQ,eAAmB,IAAA,GAAE;AAC1FowE,4BAAgBA,cAAc10E;AAAAA,UAC9B;AACD,cAAG00E;AACF;AAGD,cAAGG,gBAAgBA,aAAa70E,YAAW;AAC1C60E,yBAAahoD;UAElB,WAAaioD,eAAeA,YAAY90E,YAAW;AAC9C80E,wBAAYjoD;UACZ;AACDgoD,yBAAe;AACfC,wBAAc;AAAA,QAEd,GAAE,CACN;AAAA,MAAA,CAAA;AAAA,IACE;AAED5iF,IAAAA,WAAUm0E,oBAAoBgO,UAAUA;AAAAA,EAGxC,GAED;AAAA;ACjIe,SAAQU,KAAC7iF,YAAAA;AAExBA,EAAAA,WAAUm0E,oBAAoB2H,aAAa,EAC1C5lE,UAAU,OACV2lE,YAAY,MACZ4F,YAAY,IAAIzhF,WAAUm0E,oBAAoB4G,iBAE9C2C,oBAAoB,SAAUp2E,UAAAA;AAC7B,QAAI1E,KAAKC;AAET,QAAIuoD,aAAaprD,WAAUqE,WAAWgb,cAAc;AACpD,QAAI+rC,CAAAA,YAAW;AACdA,mBAAaprD,WAAUqE,WAAWgb,cAAc,eAAA;AAAA,IAChD;AAED,QAAG+rC,YAAW;AACbxoD,YAAMwoD,WAAWz9B;AACjB9qB,aAAOuoD,WAAW59B;AAAAA,IAClB;AAEDlmB,aAEA;AAAA,QAAG8jD,YAAW;AACbA,iBAAWz9B,YAAY/qB;AACvBwoD,iBAAW59B,aAAa3qB;AAAAA,IACxB;AAAA,EACD,GACDu4E,QAAQ;AACP,QAAIp7E,CAAAA,WAAUqE,YAAW;AAExB;AAAA,IACA;AAEDhE,SAAK6V,WAAW;AAChB,QAAIm6C,OAAOhwD;AACXA,SAAKq9E,mBAAmB,WACvBrtB;AAAAA,WAAKoxB,WAAWrG,OAChB/qB;AAAAA,WAAK8rB,cAAc9rB,KAAKyyB;IAC3B,CACE;AAAA,EAAA,GAEDvQ,SAAS,WACRlyE;AAAAA,SAAK6V,WAAW;AAChB7V,SAAKohF,WAAWlP,QAAAA;AAAAA,EAChB,GAEDzwE,WAAW,WAAA;AACV,aAASzB,KAAK6V;AAAAA,EACd,GAED+kE,gBAAgB,WAAA;AACf,WAAO56E,KAAKohF,WAAWxG,eACvB;AAAA,EAAA,GAED8H,gBAAgB,WACf1iF;AAAAA,SAAK87E,cAAc97E,KAAK46E,eAAAA,CAAAA;AAAAA,EACxB,GAED6H,eAAe;AACd,QAAI37D,OAAO9mB,KAAKw7E;AAChB,QAAG10D,SAASA,KAAK2d,QAAAA,GAAU;AAC1B3d,aAAOA,KAAKsiC,SACZ;AAAA,IAAA;AACD,WAAOtiC;AAAAA,EACP,GAED67D,iBAAiB,WAChB3iF;AAAAA,SAAK4iF,SAAS5iF,KAAKohF;AACnBphF,SAAKglC,UAAUhlC,KAAKohF,UACpB;AAAA,EAAA,GAEDtF,eAAe,SAASr4D,KAAAA;AACvB,QAAIA,CAAAA,OAAAA,CAAOA,IAAGghB,QACb;AAAA;AAED,QAAGzkC,KAAKw7E,YAAW;AAClB,UAAGx7E,KAAKw7E,WAAWc,UAAU74D,MAAI;AAChC;AAAA,MACA;AAAA,IACD;AACD,QAAGzjB,KAAKyB,UAAY,GAAA;AACnBzB,WAAK4iF,SAAS5iF,KAAKw7E,UACnBx7E;AAAAA,WAAKw7E,aAAa/3D;AAClBzjB,WAAKglC,UAAUhlC,KAAKw7E,UAAAA;AAAAA,IACpB;AAAA,EACD,GAEDx2C,WAAW,SAASvhB,KAAAA;AACnB,QAAGA,OAAMA,IAAG6W,OAAM;AACjB7W,MAAAA,IAAG6W,MACH;AAAA,UAAG7W,IAAG63D,WAAWz7E,SAASilC,iBAAiBrhB,IAAG63D,QAAAA,GAAU;AACvDt7E,aAAK87E,cAAc,IAAIn8E,WAAUm0E,oBAAoB0K,UACrD;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GACDoE,UAAU,SAASn/D,KAClB;AAAA,QAAGA,OAAMA,IAAGq3D,MAAK;AAChBr3D,MAAAA,IAAGq3D;IACH;AAAA,EACD,GAEDqC,iBAAiB,SAASp9E,KAAAA;AACzB,QAAI8iF,SAASljF,WAAUqE,WAAWgb,cAAc,qBAAmBrf,WAAU+B,OAAOwC,kBAAgB,OAAKnE,MAAG,aAC5G;AAAA,QAAG8iF,UAAUA,OAAO7hE,aAAY;AAE/B,aAAO6hE;AAAAA,IACP;AACD,WAAO;AAAA,EACP,GAEDC,gBAAgB,SAAUj9E,GAEzB;AAAA,QAAGA,EAAEk9E,kBAAiB;AACrB;AAAA,IACA;AAED,QAAIj+C,gBAAgB9kC,KAAKyiF;AAEzB,QAAG9iF,WAAUm0E,oBAAoBgO,QAC9Bh9C,KAAAA,EAAAA,iBAAiBA,cAAct5B,aAAa7L,WAAU6Z,MAAMorD,IAAIzhC,UAAU,EAACp9B,QAAO++B,cAAct5B,UAAY,GAAA,qBAAqB;AACnI;AAED,QAAG7L,WAAUsG,SAAAA,EAAWgjB,aAAajpB,KAAKm9E,gBAAgBx9E,WAAUsG,SAAWgjB,EAAAA,SAAAA;AAC9E;AAED,QAAKjpB,CAAAA,KAAKyB,UACT;AAAA;AAEDoE,QAAIA,KAAK5E,OAAOO;AAEhB,QAAIwhF,gBAAgBhjF,KAAKohF;AAEzB,QAAIzM,UAAUh1E,WAAUm0E,oBAAoBC,UAAUgB,oBAAoBlvE;AAE1E,QAAIi/B,CAAAA,eAAc;AACjB9kC,WAAK0iF,eAAAA;AAAAA,IACL,WAAQ59C,cAAcwyC,YAAY3C,OAAAA,GAAS;AAC3C7vC,oBAAcyyC,SAAS5C,SAAS9uE,CAChC;AAAA,IAAA,WAAQm9E,cAAc1L,YAAY3C,OAAS,GAAA;AAC3CqO,oBAAczL,SAAS5C,SAAS9uE;IAChC;AAAA,EAED,GAEDo9E,UAAU,MACVnqE,OAAO,SAAS7R,UAAU6R;AAEzBQ,iBAAatZ,KAAKijF;AAClBjjF,SAAKijF,WAAW5pE,WAAWpS,UAAU6R,UAAS,CAE9C;AAAA,EAAA,EAAA;AAGF;ACzJe,SAAQoqE,eAACvjF;AAGxBA,EAAAA,WAAUwjF,kBAAkB,WAE3BxjF;AAAAA,IAAAA,WAAU+B,OAAO0hF,UAAU;AAE3BzjF,IAAAA,WAAUm0E,oBAAoB4K,aAAa;AAC3C/+E,IAAAA,WAAUm0E,oBAAoB6K,gBAAgB;AAC9C,QAAI0E,SAAS;AAEb,QAAI12D,MAAM,CAAA;AAEV,QAAA,CAAI9sB,SAASM,MAAK;AACjBR,MAAAA,WAAU6B,MAAMP,QAAQ,QAAQ,WAAA;AAC/BtB,QAAAA,WAAU6B,MAAM3B,SAASM,MAAM,aAAamjF;MAC/C,CACA;AAAA,IAAA,OAAM;AACJ3jF,MAAAA,WAAU6B,MAAM3B,SAASM,MAAM,aAAamjF,kBAC5C;AAAA,IAAA;AAED,aAASA,mBAAmB9hF,QAAAA;AAC3BA,MAAAA,SAAQA,UAASP,OAAOO;AACxBmrB,UAAI5F,IAAIvlB,OAAM0rB;AACdP,UAAI3F,IAAIxlB,OAAM6rB;AAAAA,IACd;AACD,aAAS80D;AAER,UAAIoB,eAAe;AACnB,UAAIC,gBAAgB;AAEpB,UAAIz9E,SAASlG,SAAS4jF,iBAAiB92D,IAAI5F,GAAG4F,IAAI3F,CAClD;AAAA,aAAMjhB,UAAUA,UAAUpG,WAAU4kB,MAAK;AACxCxe,iBAASA,OAAO0H;AAAAA,MAChB;AACD81E,qBAAkBx9E,CAAAA,EAAAA,UAAUpG,WAAU4kB;AAEtCi/D,sBAAgB7jF,WAAUm0E,oBAAoB2H,WAAWh6E;AAEzD,aAAO8hF,gBAAgBC;AAAAA,IACvB;AAED7jF,IAAAA,WAAUiG,YAAY,eAAe,SAAS7F,KAAG8F,GAAAA;AAChD,UAAIk2B,QAAQp8B,WAAUsG,SAGtB;AAAA,UAAA,EAAK81B,MAAMt8B,QAAQs8B,MAAM5rB,WAAU;AAClC;AAAA,MACA;AACD,UAAIlD,WAAWtN,WAAUyG,cAAcP;AACvClG,MAAAA,WAAUm0E,oBAAoB4K,aAAazxE,SAAS9J;AACpDxD,MAAAA,WAAUm0E,oBAAoB6K,gBAAgB1xE,SAAS5G;AAAAA,IACzD;AAEC,aAASq9E,kBAAkBl9E;aACnBA,GAAGoD;AAAAA,aAAiBpD,GAAGmrD;AACvBnrD,aAAAA,GAAG6kE;AAAkB7kE,aAAAA,GAAG+kE;AAAAA,IAC/B;AAED,aAASoY,UAAUn9E,IAClB;AAAA,aAAO7G,WAAUoP,WAAW,CAAE,GAAEvI,EAAAA;AAAAA,IAChC;AAED7G,IAAAA,WAAUikF,qBAAqB,SAASp9E,IACvC;AAAA,UAAIrD,OAAOxD,WAAUm0E,oBAAoB4K;AACzC,UAAIr4E,UAAU1G,WAAUm0E,oBAAoB6K;AAE5C,UAAI5yD,iBAAiBvlB,GAAGxD,WAASwD,GAAGzD;AAEpC,UAAI2D,QAAOi9E,UAAUn9E,EAAAA;AACrBk9E,wBAAkBh9E,KAClBA;AAAAA,MAAAA,MAAK3D,aAAa,IAAIyB,KAAKrB,IAC3BuD;AAAAA,MAAAA,MAAK1D,WAAW,IAAIwB,KAAKkC,MAAK3D,WAAWgC,QAAAA,IAAYgnB;AAErD,UAAG1lB,SAAQ;AACV,YAAIyE,WAAWnL,WAAUk8B,sBAAAA;AAEzB,YAAGl8B,WAAU+B,OAAO0D;AACnBsB,UAAAA,MAAKoE,QAAAA,IAAYtE,GAAGsE,QAAAA;AAAAA;AAEpBpE,UAAAA,MAAKoE,QAAYzE,IAAAA;AAAAA,MAClB;AACD,aAAOK;AAAAA,IACT;AACC/G,IAAAA,WAAUkkF,YAAY,SAASC,SAASC,aAAaC,aACpD;AAAA,UAAGrkF,WAAUiL,UAAU,uBAAuB,CAACk5E,SAASC,aAAaC,WAAkB,CAAA,MAAA,OAAM;AAC5F;AAAA,MACA;AACDrkF,MAAAA,WAAUwH,SAAS48E,WAAAA;AACnBpkF,MAAAA,WAAUiL,UAAU,iBAAiB,CAACk5E,SAASC,aAAaC,WAC9D,CAAA;AAAA,IAAA;AAECrkF,IAAAA,WAAUskF,qBAAqB,WAAA;AAC9B,UAAGjkF,KAAK87B,gBAAAA,KAAAA,CAAsB97B,KAAKg8B,kBAAAA,KAAuBh8B,KAAK0B,OAAO0hF,SAAQ;AAC7E,eAAO;AAAA,MACP;AACD,aAAO;AAAA,IACT;AAEC,aAASc;AACR,UAAIp9D,OAAOnnB,WAAUm0E,oBAAoB2H,WAAWgH;AACpD,UAAG37D,QAAQA,KAAK1D;AAAS,eAAO0D,KAAK1D;AACrC,aAAOzjB,WAAUkpB;AAAAA,IACjB;AAEDlpB,IAAAA,WAAU6B,MAAM3B,UAAU,WAAW,SAASgG,GAE7C;AAAA,WAAKA,EAAEqvE,WAAWrvE,EAAEsvE,YAAYtvE,EAAE61C,WAAW,MAAO/7C,WAAUwkF,kBAAkBxkF,WAAUm0E,oBAAoB2H,WAAWh6E,UAAa,GAAA;AACrI9B,QAAAA,WAAUm0E,oBAAoB2H,WAAW5lE,WAAWssE,cAAAA;AAAAA,MACpD;AAAA,IACH,CAECxiF;AAAAA,IAAAA,WAAUu8E,sBAAsB,SAASr2E,GAAAA;AACxC,WAAIlG,WAAUskF,mBAAAA;AAAsB,eAAO;AAE3C,UAAIp+E,EAAE61C,WAAW,MAAM71C,EAAE61C,WAAW,IAAI;AACvC71C,UAAE8jB,eAAe;AAEjB,YAAI9K,OAAOlf,WAAUwD,KAAKC,IAAIzD,WAAUkV,OAAOhP,EAAE61C,WAAW,KAAM,KAAI,GAAI/7C,WAAUiN,KAAAA;AACpFjN,QAAAA,WAAU8X,eAAeoH,IAAAA;AACzB,eAAO;AAAA,MACP;AAED,UAAIyK,YAAY46D;AAChB,WAAKr+E,EAAEqvE,WAAWrvE,EAAEsvE,YAAYtvE,EAAE61C,WAAW,IAAI;AAChD,YAAIpyB,WAAW;AACd3pB,UAAAA,WAAUwkF,gBAAgBR,UAAUhkF,WAAUmG,SAASwjB,SACvD+5D,CAAAA;AAAAA,mBAAS;AACT1jF,UAAAA,WAAUiL,UAAU,iBAAiB,CAACjL,WAAUmG,SAASwjB,SAAAA,CAAAA,CAAAA;AAAAA,QACzD;AACD,eAAO;AAAA,MACP;AACD,WAAKzjB,EAAEqvE,WAAWrvE,EAAEsvE,YAAYtvE,EAAE61C,WAAW,IAAI;AAChD,YAAIpyB,WAAW;AACd+5D,mBAAS;AACT,cAAI78E,KAAK7G,WAAUwkF,gBAAgBR,UAAUhkF,WAAUmG,SAASwjB,SAEhE3pB,CAAAA;AAAAA,UAAAA,WAAUiY,YAAYpR,GAAGzG,EAAAA;AACzBJ,UAAAA,WAAUiL,UAAU,cAAc,CAACpE,EACnC,CAAA;AAAA,QAAA;AAAA,MACD;AAED,WAAKX,EAAEqvE,WAAWrvE,EAAEsvE,YAAYtvE,EAAE61C,WAAW,MAAMymC,cAAkB,GAAA;AACpE,YAAI37E,KAAK7G,WAAUwkF,gBAAgBxkF,WAAUmG,SAASnG,WAAUwkF,cAAcpkF,MAAMJ,WAAUwkF;AAC9F39E,aAAKA,MAAM7G,WAAUwkF;AAErB,YAAI39E,IAAI;AACP,cAAI49E,SAASzkF,WAAUikF,mBAAmBp9E,EAC1C;AAAA,cAAI68E,QAAQ;AACXe,mBAAOrkF,KAAKJ,WAAU+O,IAAAA;AACtB/O,YAAAA,WAAUkkF,UAAUR,QAAQe,QAAQ59E,EAAAA;AAAAA,UACpC,OACI;AACJ,gBAAI+B,MAAM5I,WAAUiL,UAAU,wBAAuB,CAACw5E,QAAQv+E,GAAG,OAAOW;AACxE,gBAAI+B,KAAK;AACR5I,cAAAA,WAAUkkF,UAAUR,QAAQe,QAAQ59E,EAAAA;AACpC68E,uBAAS;AAAA,YACT;AAAA,UACD;AAAA,QAED;AACD,eAAO;AAAA,MACP;AAAA,IACH;AAAA,EACA;AACA1jF,EAAAA,WAAUwjF,gBAEV;AAAA;ACvKe,SAAQkB,mBAAC1kF,YAAAA;AAExBA,EAAAA,WAAUm0E,oBAAoBwQ,0BAA0B;AACvD,QAAI7I,aAAa97E,WAAUm0E,oBAAoB2H;AAE/C,QAAIqH,iBAAiB,SAASj9E,GAC7B;AAAA,UAAA,CAAIlG,WAAU+B,OAAO0hF;AAAS;AAE9B,aAAO3H,WAAWqH,eAAej9E,CAAAA;AAAAA,IACnC;AAEC,QAAI0+E,eAAe;AAClB9I,iBAAW4B,mBAAmB,WAC7B5B;AAAAA,mBAAWkH;MACd,CACA;AAAA,IAAA;AAEC,QAAI6B;AACJ7kF,IAAAA,WAAUiG,YAAY,gBAAgB,WAAA;AACrC,UAAIjG,CAAAA,WAAU+B,OAAO0hF;AAAS;AAC9B,YAAK3H,WAAWh6E,UAAAA,KAAAA,CAAgB9B,WAAUsG,SAAWgjB,EAAAA;AAAY;AAEjE3P,mBAAakrE;AACbA,iBAAWnrE,WAAW;AACrB,YAAG1Z,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACD,aAAIg7D,WAAWh6E,UAAAA;AACdg6E,qBAAWV,OACZ0J;AAAAA,0BAAAA;AAAAA,MACH;IACA,CAEC;AAAA,QAAIA,oBAAoB,WAAA;AACvB,WAAIhJ,WAAWh6E,UAAAA;AACd;AAED,UAAI+5E,aAAaC,WAAWgH,cAC5B;AAAA,UAAA,CAAIjH;AACH;AAED,WAAIA,WAAW/2C,QAAAA,GAAU;AACxB+2C,qBAAaA,WAAWpyB;MACxB;AAED,UAAA,CAAIoyB,cAAcA,sBAAsB77E,WAAUm0E,oBAAoBqN,iBAAiB3F,sBAAsB77E,WAAUm0E,oBAAoBuN;AAC1I;AAED5F,iBAAW4B,mBAAmB,WAAA;AAC7B7B,mBAAWlhD,MAAM,IAAA;AAAA,MACpB;IACA;AAEC36B,IAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzC,UAAI4F,YAAY7L,WAAUqE;AAC1BrE,MAAAA,WAAUw8B,YAAYt8B,UAAU,WAAWijF;AAC3CnjF,MAAAA,WAAUw8B,YAAY3wB,WAAW,aAAak5E;AAC9C/kF,MAAAA,WAAUw8B,YAAY3wB,WAAW,SAAS+4E,YAAAA;AAG1C,UAAG5kF,WAAU+B,OAAO0hF,SAAQ;AAE3BzjF,QAAAA,WAAU6B,MAAM3B,UAAU,WAAWijF,cACrCnjF;AAAAA,QAAAA,WAAU6B,MAAMgK,WAAW,aAAak5E,gBACxC/kF;AAAAA,QAAAA,WAAU6B,MAAMgK,WAAW,SAAS+4E;AAEpC/4E,kBAAUsR,aAAa,YAAY,GAEtC;AAAA,MAAA,OAAO;AACJtR,kBAAUwvE,gBAAgB,UAC1B;AAAA,MAAA;AAAA,IACH;AAEC,aAAS0J,iBAAiB7+E;AACzB,UAAIlG,CAAAA,WAAU+B,OAAO0hF;AAAS,eAAO;AAErC,YAAM33E,OAAO9L,WAAUqC,QAAAA;AACvB,UAAI2iF,gBAAgB;AACpB,UAAIhlF,WAAUsG,WAAWxG,SAAS,SAAS;AAC1CklF,wBAAgBhlF,WAAUm0E,oBAAoB3tC,UAAUtgC,EAAEE,UAAUF,EAAEksB,YAAYpyB,WAAUqE,WAAWgb,cAAc,sBACrH,CAAA;AAAA,MAAA,WAAUvT,QAAQA,KAAKxJ,WAAW,YAAY;AAC9C0iF,wBAAgBhlF,WAAUm0E,oBAAoB3tC,UAAUtgC,EAAEE,UAAUF,EAAEksB,YAAYpyB,WAAUqE,WAAWgb,cAAc,wBAAA,CAAA;AAAA,MACxH,OAAS;AACN,cAAM4lE,eAAejlF,WAAUqE,WAAWC,iBAAiB,mBAAA;AAC3D,cAAM4gF,cAAc92E,MAAMinB,KAAK4vD,YAC/BD;AAAAA,wBAAgBE,YAAYC,KAAKpmC,WAASA,UAAU74C,EAAEE,OAAO0H,UAC7D;AAAA,MAAA;AAED,UAAIkf,MAAMhtB,WAAUyG,cAAcP,CAElC;AAAA,UAAIm/B;AACJ,UAAGrlC,WAAUgpB,cAAc9iB,EAAEE,UAAUF,EAAEksB,UAAAA,GAAY;AACpDiT,oBAAY,IAAIrlC,WAAUm0E,oBAAoBuH,MAAM17E,WAAUgpB,cAAc9iB,EAAEE,UAAUF,EAAEksB;MAC1F,WAAQ4yD,eAAc;AACtB3/C,oBAAY,IAAIrlC,WAAUm0E,oBAAoBsE;AAC9C,YAAGzrD,IAAIxpB,QAAQwhF,eAAc;AAC5B3/C,sBAAYA,UAAUw4C,SAAS,IAAI79E,WAAUm0E,oBAAoBsE,SAASzrD,IAAIxpB,MAAM,MAAMwpB,IAAItmB,OAAAA,CAAAA;AAAAA,QAC9F;AAAA,MACD;AAED,UAAG2+B,WAAW;AACb,YAAA,CAAKy2C,WAAWh6E,UAAa,GAAA;AAC5Bg6E,qBAAWD,aAAax2C;AAAAA,QAE5B,OAAU;AACN,cAAIrY,IAAIxpB,QAAQwhF,eAAe;AAC9BlJ,uBAAW3iE,MAAM,WAAA;AAChB2iE,yBAAWK,cAAc92C,SAAAA;AAAAA,YAC/B;UACK;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED,aAAS+/C,WAAWC,QAAAA;AACnB,WAAIrlF,WAAU+B,OAAO0hF;AAAS;AAC9B,UAAA,CAAI3H,WAAWh6E,UAAa;AAAA;AAG5B,UAAIwjF,YAAYD;AAChB,UAAIhgD,YAAY,IAAIrlC,WAAUm0E,oBAAoBuH,MAAM4J,UAAU7hE,OAAAA;AAClE,UAAI4hB,CAAAA,UAAUP,WAAU;AACvB,YAAIygD,YAAYlgD,UAAUz1B,SAAS01E,UAAU11E;AAC7C,YAAI41E,UAAUngD,UAAUx1B,OAAOy1E,UAAUz1E;AACzC,YAAI41E,cAAcpgD,UAAU3+B,WAAW4+E,UAAU5+E;AAEjD2+B,oBAAY,IAAIrlC,WAAUm0E,oBAAoBsE,SAAS8M,WAAWC,SAASC,WAAAA;AAC3E,aAAIpgD,UAAUP,QAAAA,GAAU;AACvBO,sBAAY,IAAIrlC,WAAUm0E,oBAAoBsE;AAAAA,QAC9C;AAAA,MACD;AAEDqD,iBAAWK,cAAc92C,SAAAA;AACzB,UAAIle,OAAO20D,WAAWgH,cACtB;AAAA,UAAG37D,QAAQA,KAAKw0D,WAAWz7E,SAASilC,iBAAiBhe,KAAKw0D,QAAU,GAAA;AACnEG,mBAAWz2C,UAAUy2C,WAAWgH;MAChC;AAAA,IACD;AAGD,QAAI7qE,cAAcjY,WAAUiY;AAC5BjY,IAAAA,WAAUiY,cAAc,SAAS7X,KAAAA;AAChC,UAAIwI,MAAMqP,YAAYxJ,MAAMpO,MAAMiU,SAAAA;AAClC,UAAGtU,WAAU+B,OAAO0hF,WAAW3H,WAAWh6E,aAAY;AACrD,YAAG9B,WAAUsG,SAAWqjB,EAAAA,aAAavpB,KAAG;AACvC,cAAI2F,UAAU,IAAI/F,WAAUm0E,oBAAoBuH,MAAMt7E;AAEtD,cAAIJ,CAAAA,WAAUsG,SAAWkjB,EAAAA,aAAY;AACpC47D,uBAAWr/E,OAAAA;AAAAA,UACX;AAAA,QACD;AAAA,MACD;AACD,aAAO6C;AAAAA,IACT;AAEC5I,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAAA;AAChD,WAAIJ,WAAU+B,OAAO0hF;AAAS,eAAO;AACrC,UAAG3H,WAAWh6E,aAAY;AACzB,YAAI+5E,aAAaC,WAAWgH,cAAAA;AAC5B,YAAGjH,WAAWp4D,WAAWrjB,KAAG;AAC3B07E,qBAAWK,cAAc,IAAIn8E,WAAUm0E,oBAAoBsE,UAAAA;AAAAA,QAC3D;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAAA;AAECz4E,IAAAA,WAAUiG,YAAY,cAAc;AACnC,UAAIjG,CAAAA,WAAU+B,OAAO0hF;AAAS,eAAO;AACrC,UAAG3H,WAAWh6E,UAAY,GAAA;AACzB,YAAGg6E,WAAWgH,cAAAA,aAA2B9iF,WAAUm0E,oBAAoBuH,OAAM;AAC5EI,qBAAWK,cAAc,IAAIn8E,WAAUm0E,oBAAoBsE,UAC3D;AAAA,QAAA;AAAA,MACD;AAAA,IACH,CAEA;AAAA,EAAA;AAEA;ACjLe,SAAQiN,iBAAC1lF,YAExBA;AAAAA,EAAAA,WAAUm0E,oBAAoBwR,iBAAiB,CAAA;AAE/C3lF,EAAAA,WAAUm0E,oBAAoByR,YAAY,SAASz+D,MAAAA;AAClD,QAAI0+D,gBAAgB7lF,WAAUm0E,oBAAoBwR;AAClD,aAAQnhF,IAAI,GAAGA,IAAIqhF,cAAcphF,QAAQD,KAAI;AAC5C,UAAGnE,KAAKmmC,UAAUrf,MAAM0+D,cAAcrhF,CAAAA,CAAAA;AACrC,eAAO;AAAA,IACR;AACD,WAAO;AAAA,EACR;AAEAxE,EAAAA,WAAUm0E,oBAAoB3tC,YAAY,SAASC,OAAO54B,QACzD;AAAA,WAAM44B,SAASA,UAAU54B,QAAO;AAC/B44B,cAAQA,MAAM34B;AAAAA,IACd;AAED,WAAA,CAAA,EAAU24B,UAAU54B;AAAAA,EACrB;AAEA7N,EAAAA,WAAUm0E,oBAAoB2R,oBAAoB,WACjD;AAAA,QAAIhK,aAAa97E,WAAUm0E,oBAAoB2H;AAE/C,aAASiK,aAAa7/E,GACrB;AAAA,UAAIE,SAASF,EAAEE;AAEf01E,iBAAWV,OACXU;AAAAA,iBAAWK,cAAc,IAAIn8E,WAAUm0E,oBAAoBqN,cAAcp7E,QAAQ,CACjF,CAAA;AAAA,IAAA;AAED,aAAS4/E,aAAa9/E,GAAAA;AACrB,UAAIE,SAASF,EAAEE,UAAUF,EAAEksB;AAE3B,UAAI4B,OAAOh0B,WAAU6Z,MAAMorD,IAAIzhC,UAAUt9B,GAAG,uBAAuB,KACnE;AAAA,UAAIgZ,OAAOlf,WAAU6Z,MAAMorD,IAAIzhC,UAAUt9B,GAAG,uBAAuB,KAAA;AACnE,UAAImzB,OAAOr5B,WAAU6Z,MAAMorD,IAAIzhC,UAAUt9B,GAAG,iBAAiB,KAAA;AAE7D,UAAI+/E,WAAW;AACf,UAAIvsC,YAAY;AAChB,UAAGrgB,MAAK;AACP,YAAI4nC;AACJ,YAAIilB;AACJ,YAAI5F,UAAUl6E;AACd,eAAMk6E,WAAWA,QAAQj9C,QAAQrgB,YAAiB,KAAA,MAAK;AACtDs9D,oBAAUA,QAAQxyE;AAAAA,QAClB;AACD,YAAGwyE,SAAQ;AACV4F,eAAK5F;AACLrf,UAAAA,MAAKilB,GAAGp4E;AAAAA,QACR;AAED,YAAGmzD,OAAMilB,IAAG;AACX,cAAI3nE,OAAO0iD,IAAGnzD,WAAWxJ,iBAAiB,IAAA;AAC1C,mBAAQE,IAAI,GAAGA,IAAI+Z,KAAK9Z,QAAQD,KAAI;AACnC,gBAAG+Z,KAAK/Z,MAAMy8D,KAAG;AAChBglB,yBAAWzhF;AACX;AAAA,YACA;AAAA,UACD;AACD,cAAIc,QAAQ27D,IAAG38D,iBAAiB,IAChC;AAAA,mBAAQE,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAI;AACpC,gBAAGc,MAAMd,CAAAA,KAAM0hF,IAAG;AACjBxsC,0BAAYl1C;AACZ;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACD,UAAIyb,OAAO/Z,EAAEs8E;AACb1G,iBAAW3iE,MAAM,WAChB;AAAA,YAAG6a,QAAQ9U,QAAQma,MAAK;AAEvB,cAAItzB;AACJ,cAAGiuB,MAAK;AACPjuB,sBAAU,IAAI/F,WAAUm0E,oBAAoBqN,cAAcvhE,MAAM,CAAA;AAChE67D,uBAAWK,cAAc,IAAIn8E,WAAUm0E,oBAAoBqN,cAAcvhE,MAAM,CAAA,CAAA;AAAA,UAC/E,WAAQf,MAAK;AACbnZ,sBAAU,IAAI/F,WAAUm0E,oBAAoBqN,cAAcvhE,MAAM,CAAA;AAAA,UAChE,WAAQoZ,MAAK;AACbtzB,sBAAU,IAAI/F,WAAUm0E,oBAAoBuN,YAAYzhE,MAAMgmE,UAAUvsC;UAExE;AAED,cAAG3zC,SAAQ;AAEV+1E,uBAAWV;AACX,gBAAGr1E,QAAQ++B,QAAU,GAAA;AACpBg3C,yBAAWD,aAAa;AACxBC,yBAAWK,cAAcp2E,OAAAA;AAAAA,YACzB;AAAA,UAED;AAAA,QACD;AAAA,MAEJ,CACE;AAAA,IAAA;AAED,QAAG/F,WAAUmc,gBAAe;AAC3B,UAAIgqE,gBAAgBnmF,WAAUmc;AAC9Bnc,MAAAA,WAAUmc,iBAAiB,WAAA;AAC1B,YAAIiqE,MAAMD,cAAc13E,MAAMpO,MAAMiU,SAAAA;AACpC,YAAIuxE,gBAAgB7lF,WAAUm0E,oBAAoBwR;AAElD3lF,QAAAA,WAAUw8B,YAAY4pD,KAAK,SAASJ,YACpChmF;AAAAA,QAAAA,WAAU6B,MAAMukF,KAAK,SAASJ,YAE9BhmF;AAAAA,QAAAA,WAAUw8B,YAAY4pD,KAAK,SAASL;AACpC/lF,QAAAA,WAAU6B,MAAMukF,KAAK,SAASL,YAAAA;AAE9B,YAAIM,QAAQ;AACZ,iBAAQ7hF,IAAI,GAAGA,IAAIqhF,cAAcphF,QAAQD,KAAI;AAC5C,cAAGqhF,cAAcrhF,CAAM4hF,KAAAA,KAAI;AAC1BC,oBAAQ;AACR;AAAA,UACA;AAAA,QACD;AACD,YAAIA,CAAAA;AACHR,wBAAc3hF,KAAKkiF,GAAAA;AAEpB,YAAGtK,WAAWh6E,UAAAA,GAAY;AACzB,cAAIqlB,OAAO20D,WAAWgH,cAAAA;AACtB,cAAG37D,QAAQA,KAAKtb,aAAau6E,KAAI;AAChCtK,uBAAWz2C,UAAUle,IAAAA;AAAAA,UAC1B,OAAS;AACJi/D,gBAAIjpE,aAAa,YAAY;UAC7B;AAAA,QACL,OAAQ;AACJipE,cAAIjpE,aAAa,YAAY,GAAA;AAAA,QAC7B;AACD,eAAOipE;AAAAA,MACV;AAAA,IACE;AAED,QAAGpmF,WAAUge,iBAAgB;AAC5B,UAAIsoE,iBAAiBtmF,WAAUge;AAC/Bhe,MAAAA,WAAUge,kBAAkB,SAASooE,KAAKpsE,OACzCosE;AAAAA,cAAMA,QAAQpmF,WAAUumF,aAAavmF,WAAUumF,WAAW7lF,aAAa;AACvE,YAAIkI,MAAM09E,eAAe73E,MAAMpO,MAAMiU,SAAAA;AAErC,aAAI8xE,OAAQA,CAAAA,IAAIt4E,YAAW;AAC1B,cAAI+3E,gBAAgB7lF,WAAUm0E,oBAAoBwR;AAClD,mBAAQnhF,IAAI,GAAGA,IAAIqhF,cAAcphF,QAAQD,KAAI;AAC5C,gBAAGqhF,cAAcrhF,CAAAA,KAAM4hF,KAAI;AAC1BpmF,cAAAA,WAAUw8B,YAAYqpD,cAAcrhF,CAAAA,GAAI,SAASuhF,YACjDF;AAAAA,4BAAcpyE,OAAOjP,GAAG;AACxBA;AAAAA,YACA;AAAA,UACD;AAAA,QACD;AAED,eAAOoE;AAAAA,MACV;AAAA,IACE;AAAA,EACF;AAEA;ACxIe,SAAQ66E,QAACzjF,YAAAA;AACtBA,EAAAA,WAAU+B,OAAO0hF,UAAU;AAC3BzjF,EAAAA,WAAU+B,OAAOk8E,eAAe;AAChCj+E,EAAAA,WAAUwmF,cAAc,SAAS9R,UAAUx2D,SAASuoE,OAAAA;AACnD,QAAIC,cAAcC,SAASF,KAC3B;AAAA,QAAGC,aAAY;AACdA,kBAAYhuE,UAAUwK,KAAKwxD,UAAUx2D;IACrC;AAAA,EACJ;AAEEle,EAAAA,WAAU4mF,qBAAqB,SAASlS,UAAU+R,OAAAA;AACjD,QAAIC,cAAcC,SAASF;AAC3B,QAAGC,aAAY;AACd,UAAI/R,WAAW30E,WAAUm0E,oBAAoBC,UAAU9rC,MAAMosC,QAAAA;AAC7D,UAAGC,SAASlwE,QAAO;AAClB,eAAOiiF,YAAYhuE,UAAUi/D,YAAYhD,SAAS,CAClD,CAAA;AAAA,MAAA;AAAA,IACD;AAAA,EACJ;AAEE30E,EAAAA,WAAU6mF,iBAAiB,SAASnS,UAAU+R,OAC7C;AAAA,QAAIC,cAAcC,SAASF,KAAAA;AAC3B,QAAGC,aAAY;AACdA,kBAAYhuE,UAAUm/D,OAAOnD,QAC7B;AAAA,IAAA;AAAA,EACJ;AAEE10E,EAAAA,WAAU26B,QAAQ;AACjB,QAAI36B,CAAAA,WAAU+B,OAAO0hF,SAAQ;AAC5B;AAAA,IACA;AACD,QAAIqD,OAAO9mF,WAAUm0E,oBAAoB2H;AACzCgL,SAAK1L,OACL;AAAA,QAAIS,aAAaiL,KAAKhE,cAAAA;AACtB,SAAIjH,cAAcA,sBAAsB77E,WAAUm0E,oBAAoBqN,iBAAiB3F,sBAAsB77E,WAAUm0E,oBAAoBuN,aAAY;AACtJoF,WAAK/D,eACT;AAAA,IAAA,OAAQ;AACJ+D,WAAKzhD,UAAUyhD,KAAKhE,cAAAA,CAAAA;AAAAA,IACpB;AAAA,EACJ;AAEE,WAAS6D,SAAS7mF,MACjB;AAAA,QAAIinF,SAAS,EACZC,eAAgBhnF,WAAUm0E,oBAAoBqN,eAC9CyF,aAAcjnF,WAAUm0E,oBAAoBuN,aAC5C1hF,WAAYA,WAAUm0E,oBAAoB4G,eAC1C32D,UAAYpkB,WAAUm0E,oBAAoB0K,UAC1CqI,UAAYlnF,WAAUm0E,oBAAoBsE,UAC1C52E,OAAS7B,WAAUm0E,oBAAoBuH,MAGxC;AAAA,QAAIyL,YAAY,CAAA;AAChB,aAAQ3iF,KAAKuiF;AACZI,gBAAU3iF,EAAEwe,YAAiB+jE,CAAAA,IAAAA,OAAOviF;AAErC1E,YAAQA,OAAO,IAAIkjB,YAEnB;AAAA,WAAOmkE,UAAUrnF,IAASinF,KAAAA,OAAO/mF;AAAAA,EACjC;AAEDA,EAAAA,WAAUm0E,sBAAsB;AAEhCn0E,EAAAA,WAAUg7E,WAAW;AACpB,QAAInF,QAAQznE,MAAMsK,UAAUpK,MAAMmI,KAAKnC,WAAW;AAClD,QAAI1L,MAAM,CAAA;AACV,aAAQpE,IAAI,GAAGA,IAAIqxE,MAAMpxE,QAAQD,KAAI;AACpC,UAAIvE,MAAM41E,MAAMrxE,CAChB;AAAA,UAAA,OAAUvE,OAAO,YAAW;AAC3BA,cAAM,IAAIA;AAAAA,MACV;AAED,eAAQuK,KAAKvK,KAAI;AAChB2I,YAAI4B,CAAAA,IAAKvK,IAAIuK,CACb;AAAA,MAAA;AAAA,IACD;AACD,WAAO5B;AAAAA,EACV;AAEEsrE,qBAAmBl0E;AACnBw3E,eAAax3E,UAAAA;AACbg4E,mBAAiBh4E,UACjB62D;AAAAA,SAAO72D;AACP86E,iBAAe96E,UAAAA;AACfw8E,WAASx8E,UAAAA;AACT88E,cAAY98E,UACZ6B;AAAAA,QAAM7B;AACN89E,YAAU99E,UAAAA;AACVuhF,iBAAevhF,UACf2hF;AAAAA,eAAa3hF,UACbm2B;AAAAA,YAAUn2B;AACViiF,SAAOjiF,UAAAA;AACP6iF,OAAK7iF,UACLujF;AAAAA,iBAAevjF;GAEf,WACC0kF;AAAAA,uBAAmB1kF,UACnB0lF;AAAAA,qBAAiB1lF;AAEjB,QAAI87E,aAAa97E,WAAUm0E,oBAAoB2H;AAE/C97E,IAAAA,WAAUm0E,oBAAoBwQ,wBAAAA;AAE9B,QAAG3kF,WAAUmc,gBAAe;AAE3Bnc,MAAAA,WAAUm0E,oBAAoB2R,kBAClC;AAAA,IAAA,OAAQ;AAEJ,UAAIsB,aAAapnF,WAAUiG,YAAY,oBAAoB,WAC1DjG;AAAAA,QAAAA,WAAUujB,YAAY6jE,UACtBpnF;AAAAA,QAAAA,WAAUm0E,oBAAoB2R,kBACnC;AAAA,MAAA,CAAA;AAAA,IACI;AAID,aAASuB;AACR,UAAIrnF,CAAAA,WAAU+B,OAAO0hF;AAAS;AAE9B,UAAIrI;AACJ,UAAIuH,eAAeziF,SAASilC;AAE5B,UAAIw9C,CAAAA,gBAAgB3iF,WAAU6Z,MAAMorD,IAAIzhC,UAAUm/C,cAAc,sBAAsB,KAAO,GAAA;AAC5FvH,iBAAS;AAAA,MACd,OAAS;AACJA,iBAASp7E,WAAUm0E,oBAAoB3tC,UAAUm8C,cAAc3iF,WAAUqE,UAAAA,KAAerE,WAAUm0E,oBAAoByR,UAAUjD;MAChI;AAED,aAAOvH;AAAAA,IACP;AAID,aAASkM,YAAYlM,QAAAA;AACpB,UAAGA,UAAWU,CAAAA,WAAWh6E,aAAY;AACpCg6E,mBAAWV;MACX,WAAK,CAAIA,UAAUU,WAAWh6E,aAAY;AAC1Cg6E,mBAAWvJ;MACX;AAAA,IACD;AAED,UAAMla,aAAatJ,YAAY,WAC9B;AAAA,UAAA,CAAI/uD,WAAUqE,cAAerE,CAAAA,WAAUm0E,oBAAoB3tC,UAAUxmC,WAAUqE,YAAYnE,SAASM,IAAAA,GAAM;AACzG;AAAA,MACA;AAED,UAAI46E,SAASiM;AAEb,UAAGjM,QAAO;AACTkM,oBAAYlM,MAAAA;AAAAA,MACZ,WAAK,CAAIA,UAAUU,WAAWh6E,UAAAA,GAAY;AAC1C4X,mBAAW,WAAA;AACV,cAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,UACA;AAED,cAAG9gB,WAAU+B,OAAO0hF,SAAQ;AAC3B6D,wBAAYD,oBACnB,CAAA;AAAA,UAAA,OAAW;AACJrnF,YAAAA,WAAUqE,WAAWg3E,gBAAgB,UAAA;AAAA,UACrC;AAAA,QAED,GAAE,GAAA;AAAA,MACH;AAAA,IACD,GAAE,GAAA;AACHr7E,IAAAA,WAAUiG,YAAY,aAAa,WAClC6oD;AAAAA,oBAAcuJ;IAClB,CACG;AAAA,EAAA;AACH;AC5Le,SAAQkvB,MAACvnF,YAAAA;AAExBA,EAAAA,WAAUiG,YAAY,oBAAmB;AAExC5F,SAAKmnF,OAAO3iD,KAAK,SAASroB,GAAGC,GAC5B;AAAA,aAAOD,EAAEg/B,SAAS/+B,EAAE++B;AAAAA,IACtB,CAECx7C;AAAAA,IAAAA,WAAUw3D,WAAS,SAAS5G,IAAAA;AAC3BA,SAAG4D,WAAS,CAAC,yBAAwB,IAAG,iBAAgB,aAExDn0D;AAAAA,WAAK4F,YAAY,gBAAe,SAAS7F,KACxC;AAAA,YAAA,CAAKC,KAAKmsB,YAAYnsB,KAAKonF,QAAQrnF,GAAOC,KAAAA,KAAK8F,SAAS/F,GAAOC,KAAAA,KAAK8F,SAAS/F,GAAAA,EAAImnF,SAAS32B,GAAG22B;AAC5F32B,aAAGK,WAAW7wD,KAAG,MAAK,UAC1B;AAAA,MAAA,CAAA;AACEC,WAAK4F,YAAY,uBAAsB,SAAS7F,KAAAA;AAC/C,YAAGC,KAAK8F,SAAS/F,QAAOC,KAAK8F,SAAS/F,GAAImnF,EAAAA,SAAS32B,GAAG22B,OAAO;AAC5D,eAAKlnF,KAAKonF,QAAQrnF;AAAK;AACvB,cAAI8wD,IAAEN,GAAGtqD,SAASlG,GAElB;AAAA,cAAI8wD,KAAG,cAAc7wD,KAAKqpB,YAAY;AAAGknC,eAAGK,WAAW7wD,KAAG;AAAS,mBAAO;AAAA,UAAO;AACjF,cAAI8wD,KAAG;AAAY,mBAAO;AAC1B,cAAIA,KAAG;AAAiB,mBAAO;AAE/BN,aAAGK,WAAW7wD,KAAG,MAAK,SACrB;AAAA,iBAAO;AAAA,QACR;AACI,iBAAO;AAAA,MACf,CAAA;AACEC,WAAK4F,YAAY,kBAAiB,SAAS7F,KAC1C;AAAA,YAAA,CAAKC,KAAKmsB,YAAYnsB,KAAKonF,QAAQrnF,GAAAA,KAAOC,KAAK8F,SAAS/F,GAAAA,KAAOC,KAAK8F,SAAS/F,GAAAA,EAAImnF,SAAS32B,GAAG22B;AAC5F32B,aAAGK,WAAW7wD,KAAG,MAAK,SAAA;AAAA,MAC1B;AAEEwwD,SAAGiE,cAAY,SAASz0D,KAAG60D;AAC1B,YAAIpuD,KAAGxG,KAAKJ,IAAIkG,SAAS/F;AACzB,YAAI0R,OAAO,CAAA;AAEX,iBAAS0K,KAAK3V,IAAG;AAChB,cAAI2V,EAAEpK,QAAQ,GAAA,MAAO;AAAG;AACxB,cAAIvL,GAAG2V,CAAAA,KAAM3V,GAAG2V,CAAGqvB,EAAAA;AAClB/5B,iBAAK0K,CAAKnc,IAAAA,KAAKJ,IAAI6xC,SAASG,WAAWprC,GAAG2V,CAAAA,CAAAA;AAAAA;AAE1C1K,iBAAK0K,CAAK3V,IAAAA,GAAG2V;QACd;AACD,eAAO1K;AAAAA,MACV;AACE8+C,SAAG82B,mBAAiB,WAAA;AAAA;AAEpB92B,SAAG3qD,YAAY,kBAAkBjG,WAAUuxD,gBAAAA;AAC3CX,SAAG3qD,YAAY,kBAAkBjG,WAAUuxD,gBAAAA;AAC3CX,SAAG3qD,YAAY,kBAAkB,SAASurD,KAAKpxD,KAC9CC;AAAAA,aAAKJ,IAAIwxD,YAAYrxD,KAAIC,KAAKqxD,cAAc,cAAA;AAC5CrxD,aAAKJ,IAAIorB,YAAYjrB,GACxB;AAAA,MAAA,CAAA;AAAA,IACA;KAEC,WACO;AAAA,UAAIunF,YAAY,SAAS1nF,KAAAA;AACrB,YAAGA,QAAQ,QAAA,OAAe,OAAQ;AAC9B,iBAAOA;AACX,YAAI0sC,OAAO,IAAI1sC,IAAI2Y;AACnB,iBAAQrD,OAAOtV;AACX0sC,eAAKp3B,GAAOoyE,IAAAA,UAAU1nF,IAAIsV,GAC9B,CAAA;AAAA,eAAOo3B;AAAAA,MACnB;AAEE3sC,MAAAA,WAAU4nF,kBAAkB,CAAA;AAC5B5nF,MAAAA,WAAU6nF,iBAAiB;AAC3B,eAAQrjF,KAAE,GAAGA,KAAExE,WAAUwnF,OAAO/iF,QAAQD,MAAK;AAC5CxE,QAAAA,WAAU+B,OAAO,cAAY/B,WAAUwnF,OAAOhjF,EAAAA,EAAGiW,IAAQ,IAAA;AAChDza,QAAAA,WAAU+B,OAAO,cAAY/B,WAAUwnF,OAAOhjF,IAAGiW,IAAMvX,EAAAA,WAAWykF,UAAU3nF,WAAU+B,OAAOi4B,SAAS92B,QAAAA;AAC/GlD,QAAAA,WAAU6nF,eAAe7nF,WAAUwnF,OAAOhjF,EAAGiW,EAAAA,IAAAA,IAAQza,WAAU+B,OAAO+lF,wBAAsB,IAAItjF,KAAE;AAClG,YAAGxE,WAAUwnF,OAAOhjF,EAAGwjC,EAAAA,KAAK;AAC3B,cAAI4oB,KAAK5wD,WAAUs5D,oBAAoB,EACtCtxB,KAAKhoC,WAAUwnF,OAAOhjF,EAAGwjC,EAAAA,IAAAA,CAAAA;AAE1B4oB,aAAG22B,QAAQvnF,WAAUwnF,OAAOhjF,EAAAA,EAAGiW;AAC/Bza,UAAAA,WAAU4nF,gBAAgB1jF,KAAK0sD,EAC/B5wD;AAAAA,UAAAA,WAAU4nF,gBAAgBpjF,EAAAA,EAAGrD,KAAKnB,UAClC;AAAA,QAAA;AACD,YAAGA,WAAUwnF,OAAOhjF,IAAGujF;AACtB/nF,UAAAA,WAAUgoF,eAAehoF,WAAUwnF,OAAOhjF,EAAGiW,EAAAA;AAAAA,MAC9C;AAAA,IACD,GA3BD;AA8BAza,IAAAA,WAAUioF,YAAY,SAASC,QAC9B7nF;AAAAA,WAAK8nF,YAAYD,QAAQ,IAAA;AAAA,IAC3B;AAECloF,IAAAA,WAAUooF,YAAY,SAASF,QAC9B7nF;AAAAA,WAAK8nF,YAAYD,QAAQ;IAC3B;AAECloF,IAAAA,WAAUmoF,cAAc,SAASD,QAAQG;AACxC,UAAId,SAAQlnF,KAAKioF,SAASJ;AAE1B,UAAUG,OAAAA,WAAW;AACpBd,QAAAA,OAAMc,UAAAA,CAAAA,CAAYA;AAAAA;AAElBd,QAAAA,OAAMc,UAAAA,CAAWd,OAAMc;AAExBhoF,WAAKyX,eAAezX,KAAK6U,OAAO7U,KAAK4M,KAAAA;AAAAA,IACvC;AAECjN,IAAAA,WAAUsoF,WAAW,SAASJ,QAAAA;AAC7B,UAAIX,QACHgB;AACD,iBAAUL,UAAU;AACnBK,qBAAaL;AACd,UAAA,OAAUA,UAAU;AACnBK,qBAAaL,OAAOX;AACrB,eAAS/iF,KAAE,GAAGA,KAAExE,WAAUwnF,OAAO/iF,QAAQD,MAAK;AAC7C,YAAGxE,WAAUwnF,OAAOhjF,EAAAA,EAAGiW,QAAQ8tE;AAC9BhB,UAAAA,SAAQvnF,WAAUwnF,OAAOhjF;MAC1B;AACD,aAAO+iF;AAAAA,IACT;AAECvnF,IAAAA,WAAUiG,YAAY,oBAAoB,SAAUknE,UACnD;AAAA,UAAItmE,KAAKxG,KAAK8F,SAASgnE;AACjB9sE,WAAK0B,OAAOi4B,SAAS92B,WAAW7C,KAAK0B,OAAO,cAAY8E,GAAG0gF,KAAOrkF,EAAAA;AAClElD,MAAAA,WAAUq6B,cAChB;AAAA,aAAO;AAAA,IACT,CAECr6B;AAAAA,IAAAA,WAAUiG,YAAY,WAAW,SAAUknE,UAAUqb,qBAAAA;AACpD,UAAI3hF,KAAK7G,WAAUmG,SAASgnE,QACtB;AAAA,aAAA,CAAQntE,WAAUsoF,SAASzhF,GAAG0gF,KAAOkB,EAAAA;AAAAA,IAC7C;AAECzoF,IAAAA,WAAUiG,YAAY,oBAAoB,SAASY,IAAImD,KACtD;AAAA,UAAIu9E,SAAQlnF,KAAKioF,SAASzhF;AAC1B,UAAI0gF,CAAAA,OAAMla;AACT,eAAO;AACR,UAAI93C,QAAQ;AACZ,eAAQ/wB,KAAI,GAAGA,KAAEwF,IAAIvF,QAAQD,MAAK;AACjC,YAAGwF,IAAIxF,EAAG+iF,EAAAA,SAASA,OAAM9sE,QAAQzQ,IAAIxF,IAAGpE,MAAMyG,GAAGzG;AAChDm1B;AAAAA,MACD;AACD,aAAQA,SAASv1B,WAAU+B,OAAOkrE;AAAAA,IACpC;AAECjtE,IAAAA,WAAUwH,WAAS,SAASpE,YAAWC,UAAS8D,MAAK/G,KAAGuzC;AACvD,UAAI9sC,KAAGzD;AACP,UAAIkR,UAAU7P,UAAQ,GAAE;AACvBoC,aAAG8sC,cAAY;AACf9sC,WAAGzD,aAAWA;AACdyD,WAAGxD,WAASA;AACZwD,WAAGM,OAAKA;AACRN,WAAGzG,KAAGA;AACNyG,WAAG0gF,QAAQlnF,KAAK2nF;AAAAA,MAChB;AACDnhF,SAAGzG,KAAKyG,GAAGzG,MAAIJ,WAAU+O;AACzBlI,SAAGM,OAAON,GAAGM,QAAM;AAGnB,UAAWN,OAAAA,GAAGzD,cAAc;AAAWyD,WAAGzD,aAAW/C,KAAKszB,UAAUsc,SAASppC,GAAGzD;AAChF,UAAWyD,OAAAA,GAAGxD,YAAY;AAAWwD,WAAGxD,WAAShD,KAAKszB,UAAUsc,SAASppC,GAAGxD;AAC5EwD,SAAG4D,SAAOpK,KAAKqK,cAAc7D,EAAAA;AAE7B,UAAIosB,SAAQ5yB,CAAAA,KAAKmzC,QAAQ3sC,GAAGzG;AAC5BC,WAAKmzC,QAAQ3sC,GAAGzG,EAAIyG,IAAAA;AACpBxG,WAAKuzC,cAAc/sC,EAAAA;AACnB,UAAKxG,CAAAA,KAAKmsB;AACTnsB,aAAK4K,UAAUgoB,SAAO,iBAAe,kBAAiB,CAACpsB,GAAGzG,IAAGyG,EAChE,CAAA;AAAA,IAAA;AAECxG,SAAKqoF,aAAa;AAClB,aAASlkF,IAAI,GAAGA,IAAInE,KAAKmnF,OAAO/iF,QAAQD,KAAK;AAC5CnE,WAAKqoF,WAAWroF,KAAKmnF,OAAOhjF,CAAGiW,EAAAA,IAAAA,IAAQ,CACvC;AAAA,IAAA;AAEDza,IAAAA,WAAU+V,cAAY,SAASnG,OAAMC,KAAI3J,GAAAA;AACxC,UAAI8lB,OAAO,CAAA;AACX,UAAA,OAAWpc,SAAS,UAAS;AAC5Boc,eAAOpc;AACPA,gBAAQ;AAAA,MACR;AAED,UAAIqE,KAAK5T,KAAK0B,OAAOqqB,kBAAgB/rB,KAAK0B,OAAOsqB,aAAW;AAC5D,WAAKzc;AAAOA,gBAAQ4B,KAAKI,MAAO5R,WAAUsM,aAAgBlH,EAAAA,QAAAA,IAAU6O,KAAGA;AACvE,UAAI7Q,aAAa,IAAIyB,KAAK+K,KAC1B;AAAA,UAAA,CAAKC,KAAI;AACR,YAAIyc,aAAajsB,KAAK0B,OAAO4K;AAC7B,YAAI2f,aAAalpB,WAAWsJ,SAAAA,GAAW;AACtCtJ,qBAAW0H,SAASwhB;AACpB1c,kBAAQxM,WAAWgC;QACnB;AACDyK,cAAMD,QAAMqE;AAAAA,MACZ;AAGD+X,WAAK5oB,aAAa4oB,KAAK5oB,cAAYA;AACnC4oB,WAAK3oB,WAAY2oB,KAAK3oB,YAAU,IAAIwB,KAAKgL,GACzCmc;AAAAA,WAAK7kB,OAAO6kB,KAAK7kB,QAAM9G,KAAK0nB,OAAOC,OAAO/gB;AAC1C+kB,WAAK5rB,KAAKC,KAAKuK,WAAWvK,KAAK0O,IAC/Bid;AAAAA,WAAKu7D,QAAQlnF,KAAK2nF;AAClB3nF,WAAKwK,aAAW;AAEhBxK,WAAKmsB,WAAS;AACdnsB,WAAKmH,SAASwkB;AACd3rB,WAAK4K,UAAU,kBAAiB,CAAC5K,KAAKuK,UAAS1E,CAAAA,CAAAA;AAC/C7F,WAAKmsB,WAAS;AAEdnsB,WAAKosB,cAAY;AACjBpsB,WAAKwoB,aAAa3iB,CACpB;AAAA,IAAA;AAEClG,IAAAA,WAAU2oF,sBAAsB,SAASvoC;AACxC,UAAI//C,KAAK0B,OAAO61B,aAAAA,CAAcv3B,KAAK2M,aAAa;AAC/C,YAAIwoC,MAAM,CAAA;AACV,YAAIC,MAAM,CAAA;AACV,iBAASpmC,IAAI,GAAGA,IAAI+wC,OAAO37C,QAAQ4K,KAAK;AACvC,cAAI+wC,OAAO/wC,CAAG5E,EAAAA;AACb+qC,gBAAItxC,KAAKk8C,OAAO/wC;;AAEhBomC,gBAAIvxC,KAAKk8C,OAAO/wC,CACjB,CAAA;AAAA,QAAA;AACDhP,aAAK2M,cAAc;AACnB3M,aAAK0X,YAAY09B;AACjBp1C,aAAK2M,cAAc;AACnB3M,aAAK0X,YAAYy9B,GACjB;AAAA,MAAA;AAEAn1C,aAAK0X,YAAYqoC,MAAAA;AAAAA,IACpB;AAECpgD,IAAAA,WAAUgY,mBAAmB;AAC5B,UAAI3X,KAAKi1C,aAAa;AACrBj1C,aAAKkzB,eAAe;AACpB;AAAA,MACA;AACDlzB,WAAKkzB,eAAe;AAEpBlzB,WAAKqzC,WAELrzC;AAAAA,WAAKqoF,aAAa;AAClB,eAASlkF,KAAI,GAAGA,KAAInE,KAAKmnF,OAAO/iF,QAAQD,MAAK;AAC5CnE,aAAKqoF,WAAWroF,KAAKmnF,OAAOhjF,IAAGiW,IAAQ,IAAA,CAAA;AAAA,MACvC;AAED,UAAIzQ,MAAM3J,KAAKy0C,mBAAAA;AACf,eAAStwC,KAAI,GAAGA,KAAIwF,IAAIvF,QAAQD,MAAK;AACpC,YAAGnE,KAAKqoF,WAAW1+E,IAAIxF,EAAAA,EAAG+iF;AACzBlnF,eAAKqoF,WAAW1+E,IAAIxF,EAAAA,EAAG+iF,OAAOrjF,KAAK8F,IAAIxF;MACxC;AAED,UAAGnE,KAAK4M,SAAS,SAAS;AACzB,YAAI2gE,OAAO,CACX;AAAA,iBAASppE,KAAI,GAAGA,KAAInE,KAAKmnF,OAAO/iF,QAAQD,MAAK;AAC5C,cAAInE,KAAKmnF,OAAOhjF,EAAAA,EAAG6jF;AAClBza,mBAAOA,KAAKniE,OAAOpL,KAAKqoF,WAAWroF,KAAKmnF,OAAOhjF,IAAGiW,IACnD,CAAA;AAAA,QAAA;AACDpa,aAAKsoF,oBAAoB/a,IAAAA;AAAAA,MACzB,OACI;AACJ,iBAASppE,KAAI,GAAGA,KAAInE,KAAKmnF,OAAO/iF,QAAQD,MAAK;AAC5C,cAAInE,KAAKmnF,OAAOhjF,EAAAA,EAAG6jF,SAAS;AAC3B,gBAAIO,YAAYvoF,KAAKqoF,WAAWroF,KAAKmnF,OAAOhjF,IAAGiW,IAC/Cpa;AAAAA,iBAAKsoF,oBAAoBC,SACzB;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACH;AAEC5oF,IAAAA,WAAUq7C,gBAAc,SAASx0C,IAAGugB,GAAEC,GAAElH,GAAEI,GAAE5d,OAAM25C,UAASC,UAASha,QACnE;AAAA,UAAIniC,MAAKyG,GAAGzG;AAEZ,UAAGk8C,SAASlqC,QAAQ;AACnBkqC,mBAAYt8C,WAAU2zB,UAAU,kBAAgB9sB,GAAG0gF,KAAAA,IAAQvnF,WAAU2zB,UAAU,kBAAgB9sB,GAAG0gF,KAAO1gF,EAAAA,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAIy1C,IAAAA;AACxI,UAAGC,SAASnqC,QAAQ;AACpBmqC,mBAAYv8C,WAAU2zB,UAAU,gBAAc9sB,GAAG0gF,KAAAA,IAAQvnF,WAAU2zB,UAAU,gBAAc9sB,GAAG0gF,KAAO1gF,EAAAA,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAI01C,IAAAA;AAEnI,UAAItoC,IAAE/T,SAASC,cAAc,KAC7B;AAAA,UAAIq8C,MAAK;AACT,UAAIC,MAAOz8C,WAAU2zB,UAAU,iBAAe9sB,GAAG0gF,SAAQvnF,WAAU2zB,UAAU,iBAAe9sB,GAAG0gF,OAAO1gF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,IAAI7G,WAAU2zB,UAAUif,YAAY/rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA;AAC9L,UAAI41C;AAAKD,QAAAA,MAAGA,MAAG,MAAIC;AAEnB,UAAIosC,YAAY7oF,WAAUuuD,mBAE1B;AAAA,UAAIu6B,iBAAiB3oE,IAAI;AACzB,UAAIu8B,WAAWmsC,YAAYC,iBAAkB3oE,IAAE,GAC/C4oE,cAAcF,YAAYC,iBAAkB3oE,IAAE,GAC9C6oE,YAAYH,YAAYC,iBAAkB3oE,IAAE,IAC5C8oE,cAAcJ,YAAaC,iBAAiB,IAAM3oE,IAAE;AAEpD,UAAI+oE,aAAaL,YAAatoE,IAAIlgB,KAAKsf,GAAGwG,sBAAwB5F,IAAE,KAAK;AAEzE,UAAIhd,OAAK,oBAAkBnD,MAAG,OAAKJ,WAAU+B,OAAOwC,kBAAgB,OAAKnE,MAAG,cAAYo8C,MAAG,qCAAmCn1B,IAAE,cAAYD,IAAE,eAAas1B,WAAS,gBAAcn8B,IAAE,SAAO5d,SAAO,MAAI;AACtMY,cAAM,2CAAyCwlF,cAAY;AAC3DxlF,cAAM,4BAA0B+4C,WAAS;AACzC/4C,cAAM,yCAAuCylF,YAAU,gBAAcE,aAAW,UAAQ3sC,WAAS;AACjGh5C,cAAM,2CAAyC0lF,cAAY,SAAO1mD,SAAO,sBAAoB,MAAI;AAEjGtuB,QAAE1T,YAAUgD;AACZ0Q,QAAEtR,MAAM64C,SAAS;AACjB,aAAOvnC,EAAEvT;AAAAA,IACX;AAECV,IAAAA,WAAUy2C,mBAAiB,SAAS5vC,IACnC;AAAA,UAAIgH,SAAOxN,KAAK+L,KAAK,gBAAgB,CAErC;AAAA,UAAIgb,IAAE/mB,KAAKwtB,OAAOhnB,GAAGmvC,KAAAA;AACrB,UAAIO,KAAGl2C,KAAKwtB,OAAOhnB,GAAGovC,KAAAA;AACtB,UAAIM,MAAInvB;AAAGmvB,aAAGl2C,KAAKwtB,OAAOhnB,GAAGovC,QAAM;AACnC,UAAIe,KAAK32C,KAAKsf,GAAG8F;AAEjB,UAAI4B,IAAEhnB,KAAKwtB,OAAOK,QAAQrnB,GAAGsvC,MAAS91C,KAAAA,KAAKwtB,OAAO1c,SAAQ9Q,KAAKsf,GAAGkG,qBAAmB,IAAG,KAAGhf,GAAG+vC,UAAQI;AAEtG,UAAI/iC,IAAE/T,SAASC,cAAc,KAC7B;AAAA,UAAIq8C,MAAK31C,GAAG4D,SAAO,wBAAsB;AACzC,UAAIgyC,MAAOz8C,WAAU2zB,UAAU,iBAAe9sB,GAAG0gF,SAAQvnF,WAAU2zB,UAAU,iBAAe9sB,GAAG0gF,KAAAA,EAAO1gF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,IAAI7G,WAAU2zB,UAAUif,YAAY/rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA;AAC9L,UAAI41C;AAAKD,QAAAA,MAAGA,MAAG,MAAIC;AAEnB,UAAIl5C,OAAK,oBAAkBsD,GAAGzG,KAAG,OAAKC,KAAK0B,OAAOwC,kBAAgB,OAAKsC,GAAGzG,KAAG,cAAYo8C,MAAG,qCAAmCn1B,IAAE,cAAYD,IAAE,gBAAcmvB,KAAGnvB,IAAE,MAAI,SAAOvgB,GAAGy0C,eAAa,MAAI;AAEjM,UAAIz0C,GAAG4D;AACNlH,gBAAOvD,WAAU2zB,UAAU,oBAAkB9sB,GAAG0gF,KAAAA,IAAQvnF,WAAU2zB,UAAU,oBAAkB9sB,GAAG0gF,KAAAA,EAAO1gF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAI7G,IAAAA,WAAU2zB,UAAUkf,eAAehsC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EACpMtD;AAAAA,cAASvD,WAAU2zB,UAAU,oBAAkB9sB,GAAG0gF,KAAAA,IAAQvnF,WAAU2zB,UAAU,oBAAkB9sB,GAAG0gF,KAAO1gF,EAAAA,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAI7G,IAAAA,WAAU2zB,UAAUmf,eAAejsC,GAAGzD,YAAWyD,GAAGxD,UAASwD,MAAM;AAC3MtD,cAAM;AAEN0Q,QAAE1T,YAAUgD;AAEZlD,WAAK2zC,UAAU9vC,KAAK+P,EAAEvT;AACtBmN,aAAOpN,YAAYwT,EAAEvT,UAAAA;AAAAA,IACvB;AAECV,IAAAA,WAAU82C,eAAa,SAASjwC,IAC/B;AAAA,UAAIk0C,OAAO/6C,WAAU2f,GAAGmG;AACxB,UAAG9lB,WAAUsoF,SAASzhF,GAAG0gF,OAAOkB;AAC/B1tC,eAAO;AAER,UAAIl0C,GAAGmvC,QAAM;AAAG;AAChB,UAAInoC,SAAO7N,WAAUuR,cAAc1K,GAAGmvC;AACtC,UAAKnoC,CAAAA;AAAQ;AACb,UAAI6sC,KAAK7zC,GAAGzD,WAAWsJ,aAAW,KAAG7F,GAAGzD,WAAW4K,WACnD;AAAA,UAAI6sC,KAAMh0C,GAAGxD,SAASqJ,SAAW,IAAA,KAAG7F,GAAGxD,SAAS2K,WAAAA,KAAgBhO,WAAU+B,OAAO6K,YAAU;AAE3F,UAAIhK,MAAO4O,KAAKI,OAAO8oC,KAAG,KAAG,MAAKr6C,KAAK0B,OAAO4K,aAAW,KAAG,KAAG,OAAMtM,KAAK0B,OAAO2P,gBAAc,KAAG,KAAG,SAASrR,KAAK0B,OAAO2P,eAAa,MAAI;AAC3I,UAAIP,SAASK,KAAK5C,IAAI5O,WAAU2f,GAAG6F,mBAAkBq1B,KAAGH,MAAIr6C,KAAK0B,OAAO2P,eAAa,EAAA,IAAI;AAEzF,UAAIN,QAAMI,KAAK8D,OAAOzH,OAAOyS,cAAYy6B,QAAMl0C,GAAGqyC,MAClD;AAAA,UAAIr2C,OAAKgE,GAAG+vC,UAAQxlC,QAAM;AAC1B,UAAA,CAAKvK,GAAG6xC;AAAQtnC,gBAAMA,SAAOvK,GAAGqyC,SAAOryC,GAAG+vC;AAI1C,UAAI3iC,IAAE5T,KAAKg7C,cAAcx0C,GAAGzG,IAAG26C,OAAKl4C,MAAKD,KAAIwO,OAAMD,QAAOtK,GAAGy0C,aAAYt7C,WAAU2zB,UAAUgf,aAAa9rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAI7G,GAAAA,WAAU2zB,UAAU0K,WAAWx3B,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAEjMxG,CAAAA;AAAAA,WAAK2zC,UAAU9vC,KAAK+P,CAAAA;AACpBpG,aAAOpN,YAAYwT,CAAAA;AAEnBpR,aAAKA,OAAKyzB,SAASzoB,OAAOlL,MAAME,MAAK,EAAIk4C,IAAAA;AAEzCn4C,aAAKvC,KAAKq0B;AACVzgB,QAAEtR,MAAM64C,SAASn7C,KAAKwnF,eAAehhF,GAAG0gF,KAExC;AAAA,UAAIlnF,KAAKkpB,YAAU1iB,GAAGzG,IAAG;AACxB6T,UAAEtR,MAAM64C,SAASllB,SAASriB,EAAEtR,MAAM64C,UAAQ;AAC1C,YAAI2tC,aAAal1E,EAAEtR,MAAM64C;AACzBpqC,gBAAMI,KAAK5C,IAAIwC,QAAM,GAAEpR,WAAU2f,GAAGsG,YACpC;AAAA,YAAIhS,IAAE/T,SAASC,cAAc;AAC7B8T,UAAEkJ,aAAa,YAAWtW,GAAGzG,EAAAA;AAC7B6T,UAAEkJ,aAAa9c,KAAK0B,OAAOwC,iBAAgBsC,GAAGzG,EAC9CC;AAAAA,aAAKwmB,OAAO5S,GAAE7C,OAAMD,SAAO,IAAGtO,MAAKD,MAAI,EAAA;AACvCqR,UAAE/C,YAAU;AACZ+C,UAAEtR,MAAM64C,SAAS2tC;AACjB,YAAI/2C,KAAGlyC,SAASC,cAAc;AAC9BE,aAAKwmB,OAAOurB,IAAGhhC,QAAM,GAAED,SAAO,EAAA;AAC9BihC,WAAGzvC,MAAMi5C,WAAS;AAGlBxJ,WAAGzvC,MAAM64C,SAAS2tC;AAClBl1E,UAAExT,YAAY2xC,EAAAA;AACd/xC,aAAK+L,KAAK,cAAA,EAAgB,CAAG3L,EAAAA,YAAYwT;AACzC5T,aAAK2zC,UAAU9vC,KAAK+P,CAAAA;AAEpBm+B,WAAG7xC,YAAU,sCAAoCsG,GAAGM,OAAK;AAEzD9G,aAAKw7C,UAAQzJ,GAAG1xC;AAChBL,aAAKw7C,QAAQtf,iBAAiB,YAAY,SAASr2B,GAClD;AAAA,cAAIA,EAAE41C;AAAU,mBAAO;AACvB,cAAItQ,OAAMtlC,EAAE61C;AACZ,cAAIvQ,QAAMxrC,WAAUomB,KAAKC;AAAWrmB,YAAAA,WAAUopB,SAAS,IAAA;AACvD,cAAIoiB,QAAMxrC,WAAUomB,KAAKE;AAAatmB,YAAAA,WAAUopB,SAAS,KAC7D;AAAA,QAAA,CAAA;AACG/oB,aAAKw7C,QAAQtf,iBAAiB,eAAe,SAASr2B;AAAIA,YAAE8jB,eAAa;AAAM,iBAAO;AAAA,QAAO,CAC7FooB;AAAAA,WAAG1xC,WAAWi6B,MAEdt6B;AAAAA,aAAK+L,KAAK,cAAgB,EAAA,CAAA,EAAGohB,aAAW;AACxC4kB,WAAG1xC,WAAWuoB,OAAAA;AAAAA,MACd;AACD,UAAI5oB,KAAK6oB,cAAYriB,GAAGzG,IAAG;AAC1B6T,UAAEtR,MAAM64C,SAASllB,SAASriB,EAAEtR,MAAM64C,MAAAA,IAAQ;AAC1C,YAAIQ,QAAM37C,KAAK0B,OAAO,YAAW1B,KAAKkpB,YAAU1iB,GAAGzG,KAAI,SAAO;AAC9D,YAAI67C,YAAU;AACd,iBAASz3C,KAAE,GAAGA,KAAEw3C,MAAMv3C,QAAQD;AAC7By3C,uBAAW,+BAA6BD,MAAMx3C,EAAG,IAAA,cAAYnE,KAAK0nB,OAAOC,OAAOg0B,MAAMx3C,EAAAA,CAAAA,IAAI;AAC3F,YAAIvE,MAAMI,KAAKg7C,cAAcx0C,GAAGzG,IAAGyC,OAAKk4C,OAAK,GAAEn4C,KAAIm4C,MAAKiB,MAAMv3C,SAAO,KAAG,IAAG,IAAG,qCAAoCw3C,WAAU;AAC5Hh8C,YAAI0C,MAAME,OAAKA,OAAKk4C,OAAK;AACzB96C,YAAI0C,MAAM64C,SAASvnC,EAAEtR,MAAM64C;AAC3Bn7C,aAAK+L,KAAK,cAAgB,EAAA,CAAA,EAAG3L,YAAYR,GACzCI;AAAAA,aAAK2zC,UAAU9vC,KAAKjE;MACpB;AAAA,IAEH;AAEID,IAAAA,WAAUopF,gBAAgB,SAAShpF,KAAIyB,QACnC;AAAA,UAAI0lF,SAAQvnF,WAAUsoF,SAASzmF,OAAM0lF,KAAAA;AACrC,aAAQA,UAASA,OAAMc;AAAAA,IAC/B;AAAA,EACA,CAAA;AAGA;AChae,SAAQjwE,MAACpY,YAExBA;AAAAA,EAAAA,WAAU+B,OAAOqI,cAAc;AAC/BpK,EAAAA,WAAU+B,OAAOsI,YAAc;AAC/BrK,EAAAA,WAAU+B,OAAOsnF,aAAc;AAC/BrpF,EAAAA,WAAU+B,OAAO8H,eAAe;AAEhC7J,EAAAA,WAAUspF,oBAAoB,WAC7B;AAAA,QAAItc,SAAS;AACb,QAAIllE,iBAAiB;AAErB9H,IAAAA,WAAUiG,YAAY,sBAAqB,SAASsjF,IAAGC,IAAGC,IAAGC,IAE5D;AAAA,eAASC,UAAUnmF,MAAM1D,MAAAA;AACxB,YAAIsK,cAAcpK,WAAU+B,OAAOqI,aAClCC,YAAYrK,WAAU+B,OAAOsI,WAC7Bu/E,WAAY5pF,WAAUwD,KAAKC,IAAID,MAAK,GAAE1D,IAAAA;AAEvC,eAAQ0D,KAAK4B,QAAAA,IAAYiF,UAAUjF,QAAawkF,KAAAA,YAAYx/E,YAAYhF,QACxE;AAAA,MAAA;AAED,UAAIpF,WAAU+B,OAAOsnF,YAAW;AAC/BK,aAAKA,MAAIF;AAAIC,aAAKA,MAAIF;AACtB,YAAII,UAAUD,IAAID,EAASD,KAAAA,EAAAA,GAAGpkF,aAAaskF,GAAGtkF,QAAAA,IAAW;AACxDsU,qBAAW,WAAA;AACV,gBAAG1Z,WAAU8gB,YAAW;AACvB,qBAAO;AAAA,YACP;AACD,gBAAI+oE,aAAaF,UAAUH,IAAIC,EAAMD,IAAAA,KAAKxpF,WAAU+B,OAAOqI;AAE3DpK,YAAAA,WAAU8X,eAAgB6xE,CAAAA,UAAUE,WAAWJ,EAAMI,IAAAA,YAAY,MAAMJ,EAAAA;AAAAA,UACvE,GAAC,CACF;AAAA,iBAAO;AAAA,QACP;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAAA;AACCzpF,IAAAA,WAAUiG,YAAY,eAAe,SAASosB,WAAAA;AAC7C,eAASA,aAAavqB;AAAAA,IACxB;AACC9H,IAAAA,WAAUiG,YAAY,gBAAe,SAAS7F;AAC7C,UAAKA,CAAAA;AAAI,eAAO;AAChB,aAAOJ,WAAU4J,oBAAoB5J,WAAUmG,SAAS/F,GAAAA,CAAAA;AAAAA,IAC1D;AACCJ,IAAAA,WAAUiG,YAAY,WAAW,SAAUknE,UAAUqb;AACpD,aAAOxoF,WAAU4J,oBAAoB5J,WAAUmG,SAASgnE,QAC1D,CAAA;AAAA,IAAA,CAAA;AACCntE,IAAAA,WAAUiG,YAAY,oBAAmB,SAAS7F,KAEjD;AAAA,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAC5B4sE;AAAAA,eAAS,CAACnmE,GAAGzD,YAAYyD,GAAGxD,QAC5B;AAAA,aAAOrD,WAAU4J,oBAAoB/C;IACvC,CACC7G;AAAAA,IAAAA,WAAUiG,YAAY,eAAe,SAAS7F,KAAI0R,MAAMg4E,cAAAA;AAGvD,UAAKh4E,EAAAA,KAAK1O,cAAc0O,KAAKzO,WAAU;AACtC,YAAIwD,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B0R,aAAK1O,aAAa,IAAIyB,KAAKgC,GAAGzD;AAC9B0O,aAAKzO,WAAW,IAAIwB,KAAKgC,GAAGxD,QAC5B;AAAA,MAAA;AAED,UAAGyO,KAAK7H,UAAS;AAGhB,YAAI8/E,YAAY/pF,WAAUwO,YAAYsD,IAAAA;AACtC9R,QAAAA,WAAUutE,iBAAiBwc;AAC3B,eAAO/pF,WAAU4J,oBAAoBmgF,SACrC;AAAA,MAAA;AACD,aAAO/pF,WAAU4J,oBAAoBkI,IACvC;AAAA,IAAA,CAAA;AACC9R,IAAAA,WAAUiG,YAAY,gBAAe,SAAS7F,KAC7C;AAAA,UAAA,CAAKA;AAAI,eAAO;AAChB,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,WAAKJ,WAAU4J,oBAAoB/C,OAAO7G,WAAU+B,OAAOqI,eAAepK,WAAU+B,OAAOsI,WAAW;AAErG,YAAIxD,GAAGzD,aAAapD,WAAU+B,OAAOqI,aAAa;AACjDvD,aAAGzD,aAAa,IAAIyB,KAAK7E,WAAU+B,OAAOqI,WAAAA;AAAAA,QAC1C;AACD,YAAIvD,GAAGzD,WAAWgC,QAAAA,KAAapF,WAAU+B,OAAOsI,UAAUjF,WAAW;AACpEyB,aAAGzD,aAAa/C,KAAKmD,KAAKC,IAAIzD,WAAU+B,OAAOsI,WAAY,IAAG;QAC9D;AACD,YAAIxD,GAAGxD,WAAWrD,WAAU+B,OAAOqI,aAAa;AAC/CvD,aAAGxD,WAAW,IAAIwB,KAAK7E,WAAU+B,OAAOqI,WACxC;AAAA,QAAA;AACD,YAAIvD,GAAGxD,SAAS+B,QAAapF,KAAAA,WAAU+B,OAAOsI,UAAUjF,QAAAA,GAAW;AAClEyB,aAAGxD,WAAWhD,KAAKmD,KAAKC,IAAIzD,WAAU+B,OAAOsI,eAAe,KAAA;AAAA,QAC5D;AACD,YAAIxD,GAAGzD,WAAWgC,QAAAA,KAAayB,GAAGxD,SAAS+B,QAAAA,GAAW;AACrDyB,aAAGxD,WAAWhD,KAAKmD,KAAKC,IAAIoD,GAAGzD,YAAa/C,KAAK0B,OAAOqqB,kBAAgB/rB,KAAK0B,OAAOsqB,WAAY;QAChG;AACDxlB,WAAG4D,SAAOpK,KAAKqK,cAAc7D,EAC7B;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CAAA;AACC7G,IAAAA,WAAUiG,YAAY,kBAAiB,SAAS7F,KAAAA;AAC/C,WAAKA;AAAI,eAAO;AAChB,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,UAAKJ,CAAAA,WAAU4J,oBAAoB/C,EAAI,GAAA;AACtC,aAAKmmE;AAAQ,iBAAO;AACpBnmE,WAAGzD,aAAa4pE,OAAO,CAAA;AACvBnmE,WAAGxD,WAAW2pE,OAAO;AACrBnmE,WAAG4D,SAAOpK,KAAKqK,cAAc7D,EAAAA;AAAAA,MAC7B;AACD,aAAO;AAAA,IACT,CACC7G;AAAAA,IAAAA,WAAUiG,YAAY,wBAAuB,SAASY,IAAImjF,eAAe/2D,QAAAA;AACxE,aAAOjzB,WAAU4J,oBAAoB/C,EACvC;AAAA,IAAA,CAAA;AACC7G,IAAAA,WAAUiG,YAAY,wBAAwB,SAASY,IACtD;AAAA,UAAIzD,aAAapD,WAAUyG,cAAcI,EAAIrD,EAAAA;AAC7C,UAAI3B,SAAQ,EACX4I,QAAQ,MACRrH,YACAC,UAAUrD,WAAUwD,KAAKC,IAAIL,YAAYpD,WAAU+B,OAAOsqB,WAAW,QAEtE,EAAA;AAAA,aAAOrsB,WAAU4J,oBAAoB/H;IACvC,CAEC7B;AAAAA,IAAAA,WAAUiG,YAAY,gBAAgB,WAAA;AACrCjG,MAAAA,WAAUiM,UACZ;AAAA,IAAA,CAAA;AAECjM,IAAAA,WAAUiG,YAAY,0BAA0B,WAC/C3E;AAAAA,aAAOoY,WAAW,WACjB;AAAA,YAAG1Z,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACD9gB,QAAAA,WAAUiM,UAAAA;AAAAA,MACV,GAAE,CACH;AAAA,aAAO;AAAA,IACT,CAECjM;AAAAA,IAAAA,WAAUiG,YAAY,oBAAoB;AACzCjG,MAAAA,WAAUiqF,kBAAkB3oF,OAAOytD,YAAY,WAAA;AAC9C,aAAI/uD,WAAUm8B,gBAAAA;AACb;AACDn8B,QAAAA,WAAUiM;MACV,GAAE,GAAA;AAAA,IACL;AAECjM,IAAAA,WAAUiG,YAAY,aAAa,WAClC6oD;AAAAA,oBAAc9uD,WAAUiqF,eAAAA;AAAAA,IAC1B;EAEA;AACAjqF,EAAAA,WAAUspF;AAGV;AClJO,MAAMY;EAMZ,YAAYlqF,YACXK;AAAAA,SAAKyF,MAAM;AACXzF,SAAK8pF,WAAW,CAChB9pF;AAAAA,SAAKL,YAAYA;AAAAA,EAClB;AAAA,EACA,aAAa6B;AACZ,QAAIxB,KAAK8pF,YAAY9pF,KAAK8pF,SAAS1lF,SAAS,GAAG;AAC9C,eAASD,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,YAAI3C,OAAMzB,MAAMC,KAAK8pF,SAAS3lF,GAAG3C,MAAMzB,IAAI;AAC1C,cAAIgqF,OAAO/pF,KAAKsD,SAAS0mF,sBAAsBhqF,KAAKsD,SAAS2mF;AACzD,cAAAzoF,OAAM0oF,OAAO1oF,OAAM2oF,KAAI;AAC1BnqF,iBAAKyF,IAAI2kF,UAAU,EAClBF,KAAK1oF,OAAM0oF,KACXC,KAAK3oF,OAAM2oF,IAAAA,CAAAA;AAEPnqF,iBAAAyF,IAAI4kF,QAAQN,IAAI;AAAA,UAAA,OACf;AACN/pF,iBAAKyF,IAAI2kF,UAAU,EAClBF,KAAKlqF,KAAKsD,SAASgnF,eAAeJ,KAClCC,KAAKnqF,KAAKsD,SAASgnF,eAAeH;AAE9BnqF,iBAAAyF,IAAI4kF,QAAQN,IAAAA;AAAAA,UAClB;AACOQ,iBAAAC,KAAKhpF,MAAMipF,QAAQzqF,KAAK8pF,SAAS3lF,CAAGqyD,EAAAA,QAAQ,OACpD;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,WAAWhrD,WAAwB5D;AAClC5H,SAAKsD,WAAWsE;AAChB,QAAIjI,aAAYK,KAAKL;AACrB,QAAI+qF,aAAa,EAChBC,QAAQ,EAAET,KAAKtiF,QAAQgjF,iBAAiBV,KAAKC,KAAMviF,QAAQgjF,iBAAiBT,IAC5EJ,GAAAA,MAAMniF,QAAQqiF,cACdY,OAAOr/E,UAAUzL,IACjB+qF,aAAa,MACbC,WAAWnjF,QAAQZ,KAGhB;AAAA,QAAAhH,KAAKyF,QAAQ,MAAM;AACtBzF,WAAKyF,MAAM,IAAI8kF,OAAOC,KAAKQ,IAAIx/E,WAAWk/E;IAAU,OAEhD;AACJ,UAAIjlF,MAAMzF,KAAKyF;AACf+F,gBAAUpL,YAAYJ,KAAKyF,IAAIwlF,KAAKC,cACpC1/E;AAAAA,gBAAUpL,YAAYJ,KAAKyF,IAAIwlF,KAAKE,cAAAA;AACpC9xE,iBAAW,WACV5T;AAAAA,YAAI2lF,WAAW,EAAC5/E,WAAWA,UAAUzL,GAAAA,CAAAA;AAAAA,SACnC,GACJ;AAAA,IAAA;AACAwqF,WAAOC,KAAKhpF,MAAM6pF,YAAYrrF,KAAKyF,KAAK,YAAY,SAASjE;AAC5D,YAAM8pF,WAAW,IAAIf,OAAOC,KAAKe;AAEjC,UAAK5rF,CAAAA,WAAU+B,OAAOkoB,YAAYjqB,WAAU+B,OAAO+T,iBAAiB;AACnE,YAAI+1E,QAAQhqF,OAAMiqF;AACTH,iBAAAI,QACR,EAAED,QAAUD,MACZ,GAAA,SAASG,SAASljD,QACjB;AAAA,cAAIA,UAAU8hD,OAAOC,KAAKoB,eAAeC,IAAI;AACpCL,oBAAAG,QAAQ,GAAGG,SAASC;AAC5BpsF,YAAAA,WAAU+V,YAAY,EACrBw0E,KAAKsB,MAAMtB,OACXC,KAAKqB,MAAMrB,OACX6B,gBAAgBL,QAAQ,GAAGM,mBAC3BlpF,YAAYpD,WAAUsG,SAAAA,EAAW9C,MACjCH,UAAUrD,WAAUwD,KAAKC,IAAIzD,WAAUsG,WAAW9C,MAAMxD,WAAU+B,OAAOsqB,WAAW;UACpF,OACK;AACEzV,oBAAAC,MAAM,0DAA0DiyB;UACzE;AAAA,QACD,CAAA;AAAA,MAEF;AAAA,IAAA,CAAA;AAAA,EAEF;AAAA,EAEA,QAAQj9B;AACA++E,WAAAC,KAAKhpF,MAAM0qF,uBAAuBjrF,MAAAA;AAClCspF,WAAAC,KAAKhpF,MAAM0qF,uBAAuBrsF,QAAAA;AAClC0qF,WAAAC,KAAKhpF,MAAM0qF,uBAAuB1gF,SACzC;AAAA,WAAOA,UAAUnL,YAAY;AAC5BmL,gBAAUnL,WAAWm0B;IACtB;AACAhpB,cAAUtL,YAAY;AAAA,EACvB;AAAA,EAEA,MAAMisF,eAAe3qF;AACpB,QAAIE,SAAS,EACZopB,OAAOtpB,OAAMsF,MACbmG,UAAU,CAAC,GACXxH,KAAK,CAAC,EAGH;AAAA,QAAAjE,OAAM0oF,OAAO1oF,OAAM2oF,KAAK;AAC3BzoF,aAAOuL,WAAW,EAAEi9E,KAAK1oF,OAAM0oF,KAAKC,KAAK3oF,OAAM2oF,IAAAA;AAAAA,IAAI,OAC7C;AACCzoF,aAAAuL,WAAW,EAAEi9E,KAAKlqF,KAAKsD,SAASgnF,eAAeJ,KAAKC,KAAKnqF,KAAKsD,SAASgnF,eAAeH,IAC9F;AAAA,IAAA;AACA,YAAMiC,sBAAEA,IAAAA,MAAgC7B,OAAOC,KAAK6B,cAAc;AAC9D,QAAA71B;AACJ,QAAIx2D,KAAKL,UAAUqmE,IAAIsmB,QAAQC,cAAc;AAC5C7qF,aAAO+D,MAAMzF,KAAKyF;AAClB+wD,MAAAA,UAASx2D,KAAKL,UAAUqmE,IAAIsmB,QAAQC,aAAa7qF,MAAM;AAAA,IAAA,OACjD;AACG80D,MAAAA,UAAA,IAAI41B,sBAAsB1qF,MAAAA;AACnC80D,MAAAA,QAAO/wD,MAAMzF,KAAKyF;AAAAA,IACnB;AACO+wD,IAAAA,QAAAg2B,OAAOxsF,KAAKyF,GAAAA;AAEf,QAAAjE,OAAM,2BAA2B,gBAAe;AACnDg1D,MAAAA,QAAOg2B,OAAO,IAAA;AAAA,IACf;AACAjC,WAAOC,KAAKhpF,MAAM6pF,YAAY70B,SAAQ,SAAS,MAAA;AAC9C,UAAIx2D,KAAKysF,YAAY;AACpBzsF,aAAKysF,WAAWC,MACjB;AAAA,MAAA;AACK1sF,WAAAysF,aAAa,IAAIlC,OAAOC,KAAKmC,WAAW,EAACC,UAAU5sF,KAAKsD,SAASupF,sBAAAA,CAAAA;AACtE7sF,WAAKysF,WAAWK,WAAW9sF,KAAKL,UAAU2zB,UAAUy5D,iBAAiBvrF,MACrExB,CAAAA;AAAAA,WAAKysF,WAAWhiD,KAAK,EACpBuiD,QAAQx2B,SACR/wD,KAAKzF,KAAKyF,IAAAA,CAAAA;AAAAA,IACV;AAEF,QAAIwnF,aAAa,EAACzrF,OAAAA,QAAAA,GAAUE,QAAQ80D,QAC/Bx2D,QAAAA;AAAAA,SAAA8pF,SAASjmF,KAAKopF,UAAAA;AAAAA,EACpB;AAAA,EAEA,kBAAkB7pE,SACjB;AAAA,aAASjf,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,UAAIif,WAAWpjB,KAAK8pF,SAAS3lF,CAAAA,EAAG3C,MAAMzB,IAAI;AACzCC,aAAK8pF,SAAS3lF,CAAAA,EAAGqyD,OAAO02B,WAAW;AACnCltF,aAAK8pF,SAAS3lF,GAAGqyD,OAAOg2B,OAAO;AAC/BxsF,aAAK8pF,SAAS3lF,CAAGqyD,EAAAA,OAAO22B,YAAY,IAC/BntF;AAAAA,aAAA8pF,SAAS3lF,CAAGqyD,EAAAA,SAAS;AACrBx2D,aAAA8pF,SAAS12E,OAAOjP,GAAE;AACvBA;AAAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,kBAAkB3C,QACjB;AAAA,aAAS2C,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,UAAGnE,KAAK8pF,SAAS3lF,CAAAA,EAAG3C,MAAMzB,MAAMyB,OAAMzB,IAAI;AACpCC,aAAA8pF,SAAS3lF,CAAG3C,EAAAA,QAAQA;AACzBxB,aAAK8pF,SAAS3lF,CAAG8I,EAAAA,SAASi9E,MAAM1oF,OAAM0oF;AACtClqF,aAAK8pF,SAAS3lF,CAAAA,EAAG8I,SAASk9E,MAAM3oF,OAAM2oF;AACtCnqF,aAAK8pF,SAAS3lF,CAAG2C,EAAAA,OAAOtF,OAAMsF;AAC1B,YAAAsmF,SAAS,IAAI7C,OAAOC,KAAK6C,OAAO7rF,OAAM0oF,KAAK1oF,OAAM2oF;AACrDnqF,aAAK8pF,SAAS3lF,CAAGqyD,EAAAA,OAAO22B,YAAYC,MACrC;AAAA,MAAA;AAAA,IACD;AAAA,EACD;AAAA,EAEA;AACK,QAAAptF,KAAK8pF,SAAS1lF,SAAS,GAAG;AAC7B,eAASD,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9CnE,aAAK8pF,SAAS3lF,GAAGqyD,OAAOg2B,OAAO;MAChC;AACAxsF,WAAK8pF,WAAW,CAAA;AAAA,IACjB;AAAA,EACD;AAAA,EAEA,QAAQwD,UAAkBC,WAAmBxD;AAC5C/pF,SAAKyF,IAAI2kF,UAAU,EAClBF,KAAKoD,UACLnD,KAAKoD;AAEDvtF,SAAAyF,IAAI4kF,QAAQN,IAClB;AAAA,EAAA;AAAA,EAEA,MAAMyD,eAAeC;AACpB,UAAMnC,WAAW,IAAIf,OAAOC,KAAKe;AACjC,QAAIt+E,WAAAA,MAAsB,IAAIw6B,QAASwC;AAC7BqhD,eAAAI,QACR,EAAEgC,SAAWD,OAAAA,GACb,SAAS9B,SAASljD,QAAAA;AACjB,YAAIA,UAAU8hD,OAAOC,KAAKoB,eAAeC,IAAI;AACpC5hD,kBAAA,EACPigD,KAAKyB,QAAQ,CAAGG,EAAAA,SAASC,SAAS7B,IAClCC,GAAAA,KAAKwB,QAAQ,CAAGG,EAAAA,SAASC,SAAS5B,IAClC,EAAA,CAAA;AAAA,QAAA,OACK;AACE5zE,kBAAAC,MAAM,0DAA0DiyB,MAAAA;AACxEwB,kBAAQ,CAAE,CAAA;AAAA,QACX;AAAA,MACD,CACD;AAAA,IAAA,CAAA;AAEM,WAAAh9B;AAAAA,EACR;;ACnMM,MAAM0gF,qBAAAA;AAAAA,EAKZ,YAAYhuF,YAAAA;AACXK,SAAKyF,MAAM;AACXzF,SAAK8pF,WAAW;AAChB9pF,SAAKL,YAAYA;AAAAA,EAClB;AAAA,EACA,aAAa6B,QACZ;AAAA,QAAIxB,KAAK8pF,YAAY9pF,KAAK8pF,SAAS1lF,SAAS,GAAG;AAC9C,eAASD,IAAI,GAAGA,IAAKnE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC/C,YAAI3C,OAAMzB,MAAOC,KAAK8pF,SAAS3lF,CAAG3C,EAAAA,MAAMzB,IAAI;AAC3CC,eAAK8pF,SAAS3lF,CAAAA,EAAGqyD,OAAOo3B,UACxB5tF;AAAAA,eAAK8pF,SAAS3lF,CAAAA,EAAGqyD,OAAOq3B,aACpB;AAAA,cAAArsF,OAAM0oF,OAAO1oF,OAAM2oF,KAAK;AACtBnqF,iBAAA8tF,QAAQtsF,OAAM0oF,KAAK1oF,OAAM2oF,KAAKnqF,KAAKsD,SAAS0mF,sBAAsBhqF,KAAKsD,SAAS2mF,YAAAA;AAAAA,UAAY,OAC3F;AACNjqF,iBAAK8tF,QAAQ9tF,KAAKsD,SAASgnF,eAAeJ,KAAKlqF,KAAKsD,SAASgnF,eAAeH,KAAKnqF,KAAKsD,SAAS0mF,sBAAsBhqF,KAAKsD,SAAS2mF,YACpI;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,WAAWz+E,WAAwB5D,SAAAA;AAClC,QAAIjI,aAAYK,KAAKL;AACjB,QAAAouF,aAAaluF,SAASC,cAAc;AACxCiuF,eAAWl9E,YAAY;AACvBk9E,eAAWhuF,KAAK;AACLguF,eAAAzrF,MAAMyO,QAAQvF,UAAUlJ,MAAMyO;AAC9Bg9E,eAAAzrF,MAAMwO,SAAStF,UAAUlJ,MAAMwO;AAC1CtF,cAAUpL,YAAY2tF,UAAAA;AAElB,QAAAtoF,MAAMuoF,EAAEvoF,IAAIsoF,YAAY,EAC3BpD,QAAQqD,EAAEvC,OAAO7jF,QAAQgjF,iBAAiBV,KAAKtiF,QAAQgjF,iBAAiBT,MACxEJ,MAAMniF,QAAQqiF,cACdvwB,UAAU,MAAA,CAAA;AAEXs0B,MAAEC,UAAU,qDAAqDC,MAAMzoF,GAAAA;AACnEA,QAAA0oF,GAAG,YAAYvmD,eAAe/hC,GACjC;AAAA,YAAMvC,WAAW,EAChBgX,QAAU,OACVutB,SAAS,EACR,mBAAoB,KAAA,EAAA;AAGtB,UAAI4Z,WAAiB2sC,MAAAA,MAAM,mDAAmDvoF,EAAEunF,OAAOlD,GAAWrkF,QAAAA,EAAEunF,OAAOjD,GAAmB7mF,gBAAAA,QAAAA,EAAUiyD,KAAK9T,eAAYA,UAAS5B,KAClK,CAAA;AAAA,UAAI4B,SAASisC,SAAS;AACjB,YAAAA,UAAUjsC,SAASisC,QAAQW;AAC/B1uF,QAAAA,WAAU+V,YAAY,EACrBw0E,KAAKrkF,EAAEunF,OAAOlD,KACdC,KAAKtkF,EAAEunF,OAAOjD,KACd6B,gBAAgB0B,SAChB3qF,YAAYpD,WAAUsG,SAAW9C,EAAAA,MACjCH,UAAUrD,WAAUwD,KAAKC,IAAIzD,WAAUsG,SAAAA,EAAW9C,MAAMxD,WAAU+B,OAAOsqB,WAAW,QAAA,EAAA,CAAA;AAAA,MACpF,OACK;AACEzV,gBAAAC,MAAM,0CAA0CirC,SAASjrC,KAClE;AAAA,MAAA;AAAA,IAAA;AAEDxW,SAAKyF,MAAMA;AACXzF,SAAKsD,WAAWsE;AAAAA,EACjB;AAAA,EAEA,QAAQ4D,WAAAA;AACPxL,SAAKyF,IAAI+uB,OAAAA;AACT,WAAOhpB,UAAUnL,YAAY;AAC5BmL,gBAAUnL,WAAWm0B,OACtB;AAAA,IAAA;AACAhpB,cAAUtL,YAAY;AAAA,EACvB;AAAA,EAEA,eAAesB;AACR,UAAA8sF,SAASN,EAAEnkE,KAAK,EACrB0kE,SAAS,+DACTC,UAAc,CAAC,IAAI,KACnBC,YAAc,CAAC,IAAI,EAAA,GACnBC,YAAc,CAAC,IAAI,KACnBC,cAAc,CAAC,GAAG,EAEnB,EAAA,CAAA;AAAA,QAAIC,cAAc,EACjBC,UAAU,KACVjC,UAAU5sF,KAAKsD,SAASupF,sBAAAA;AAEnB,UAAAiC,cAAcd,EAAEe,MAAMH,WAAAA,EAAa9B,WAAW9sF,KAAKL,UAAU2zB,UAAUy5D,iBAAiBvrF,MAAAA,CAAAA;AAC9F,UAAMwtF,WAAUhB,EAAEgB,QAAUlC,EAAAA,WAAWtrF,OAAMsF,IAE7C;AAAA,QAAImoF,eAAe,CAClBztF,OAAM0oF,KACN1oF,OAAM2oF,GAAAA;AAGP,QAAK3oF,CAAAA,OAAM0oF,QAAQ1oF,OAAM2oF,KAAK;AACd8E,qBAAA,CAACjvF,KAAKsD,SAASgnF,eAAeJ,KAAKlqF,KAAKsD,SAASgnF,eAAeH,GAAAA;AAAAA,IAChF;AACM,UAAA3zB,UAASw3B,EAAEx3B,OAAOy4B,cAAc,EACrCplE,MAAMykE,UACJY,UAAUJ,WAAAA,EAAaK,YAAYH,QAASd,EAAAA,MAAMluF,KAAKyF,GACpD;AAAA,UAAAwnF,aAAa,EAACzrF,eAAOg1D,QACtBx2D,QAAAA;AAAAA,SAAA8pF,SAASjmF,KAAKopF,UAAAA;AAAAA,EACpB;AAAA,EAEA,kBAAkB7pE,SACjB;AAAA,aAASjf,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,UAAIif,WAAWpjB,KAAK8pF,SAAS3lF,CAAAA,EAAG3C,MAAMzB,IAAI;AACzCC,aAAKyF,IAAI2pF,YAAYpvF,KAAK8pF,SAAS3lF,GAAGqyD,MACjCx2D;AAAAA,aAAA8pF,SAAS12E,OAAOjP,GAAE;AACvBA;AAAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,kBAAkB3C,QAAAA;AACjB,aAAS2C,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,UAAGnE,KAAK8pF,SAAS3lF,CAAAA,EAAG3C,MAAMzB,MAAMyB,OAAMzB,IAAI;AACpCC,aAAA8pF,SAAS3lF,CAAAA,EAAG3C,QAAQA;AACzB,YAAA,CAAKA,OAAM0oF,OAAQ1oF,CAAAA,OAAM2oF,KAAI;AAC5BnqF,eAAK8pF,SAAS3lF,CAAAA,EAAGqyD,OAAO64B,UAAU,CAACrvF,KAAKsD,SAASgnF,eAAeJ,KAAKlqF,KAAKsD,SAASgnF,eAAeH,GAAAA,CAAAA;AAAAA,QAAI,OAChG;AACDnqF,eAAA8pF,SAAS3lF,CAAGqyD,EAAAA,OAAO64B,UAAU,CAAC7tF,OAAM0oF,KAAK1oF,OAAM2oF;QACrD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,oBACC;AAAA,QAAGnqF,KAAK8pF,UAAU;AACjB,eAAS3lF,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9CnE,aAAKyF,IAAI2pF,YAAYpvF,KAAK8pF,SAAS3lF,CAAGqyD,EAAAA,MAAAA;AAAAA,MACvC;AACAx2D,WAAK8pF,WAAW,CACjB;AAAA,IAAA;AAAA,EACD;AAAA,EAEA,QAAQwD,UAAkBC,WAAmBxD,MAAAA;AAC5C/pF,SAAKyF,IAAIqoF,QAAQ,CAACR,UAAUC,YAAYxD,IACzC;AAAA,EAAA;AAAA,EAEA,qBAAqB0D,QAAAA;AACpB,UAAMnqF,WAAW,EAChBgX,QAAU,OACVutB,SAAS,EACR,mBAAoB;AAGtB,QAAI56B,WAAe,CAAA;AACnB,QAAIw0C,WAAiB2sC,MAAAA,MAAM,gDAAgDX,MAAsBnqF,gBAAAA,QAAAA,EAAUiyD,KAAK9T,eAAYA,UAAS5B,KACjI,CAAA;AAAA,QAAA4B,YAAYA,SAASr9C,QAAQ;AAChC6I,eAASi9E,MAAAA,CAAOzoC,SAAS,CAAGyoC,EAAAA;AAC5Bj9E,eAASk9E,MAAAA,CAAO1oC,SAAS,CAAG6tC,EAAAA;AAAAA,IAAA,OACtB;AACE/4E,cAAAC,MAAM,sDAAsDi3E,MAAAA,EAAAA;AAAAA,IACrE;AACO,WAAAxgF;AAAAA,EACR;AC3JM;AAAA,MAAMsiF;EAKZ,YAAY5vF;AACXK,SAAKyF,MAAM;AACXzF,SAAK8pF,WAAW,CAChB9pF;AAAAA,SAAKL,YAAYA;AAAAA,EAClB;AAAA,EACA,aAAa6B,QAAAA;AACZ,QAAIxB,KAAK8pF,YAAY9pF,KAAK8pF,SAAS1lF,SAAS,GAAG;AAC9C,eAASD,IAAI,GAAGA,IAAKnE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AACnC,cAAM4qF,QAAQ/uF,KAAK8pF,SAAS3lF,CAAGqyD,EAAAA,OAAOg5B;AAClC,YAAAT,MAAMU,UAAS;AACfV,gBAAMv6D;QACV;AACZ,YAAIhzB,OAAMzB,MAAOC,KAAK8pF,SAAS3lF,CAAAA,EAAG3C,MAAMzB,IAAI;AAC3CC,eAAK8pF,SAAS3lF,CAAAA,EAAGqyD,OAAOk5B,YAAAA;AACpB,cAAAluF,OAAM0oF,OAAO1oF,OAAM2oF,KAAK;AACtBnqF,iBAAA8tF,QAAQtsF,OAAM0oF,KAAK1oF,OAAM2oF,KAAKnqF,KAAKsD,SAAS0mF,sBAAsBhqF,KAAKsD,SAAS2mF;UAAY,OAC3F;AACNjqF,iBAAK8tF,QAAQ9tF,KAAKsD,SAASgnF,eAAeJ,KAAKlqF,KAAKsD,SAASgnF,eAAeH,KAAKnqF,KAAKsD,SAAS0mF,sBAAsBhqF,KAAKsD,SAAS2mF,YAAAA;AAAAA,UACpI;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,WAAWz+E,WAAwB5D;AAC5B,QAAIjI,aAAYK,KAAKL;AAE3BgwF,aAASC,cAAchoF,QAAQgoF;AACnB,UAAAnqF,MAAM,IAAIkqF,SAAS3E,IAAI,EACzBx/E,WACAm/E,QAAQ,CAAC/iF,QAAQgjF,iBAAiBT,KAAKviF,QAAQgjF,iBAAiBV,GAChEH,GAAAA,MAAOniF,QAAQqiF,eAAe,EAAA,CAAA;AAE9BxkF,QAAA0oF,GAAG,YAAWvmD,eAAe/hC,GAAAA;AAClC,UAAA47C,WAAiB2sC,MAAAA,MAAM,qDAAqDvoF,EAAEgqF,OAAO1F,OAAQtkF,EAAEgqF,OAAO3F,GAAyBtiF,sBAAAA,QAAQgoF,eAAer6B,KAAK9T,eAAYA,UAAS5B,KACpL,CAAA;AAAA,UAAI4B,SAASquC,UAAS;AACrB,YAAIpC,UAAUjsC,SAASquC,SAAS,CAAA,EAAGC;AACnCpwF,QAAAA,WAAU+V,YAAY,EACrBw0E,KAAKrkF,EAAEgqF,OAAO3F,KACdC,KAAKtkF,EAAEgqF,OAAO1F,KACd6B,gBAAgB0B,SAChB3qF,YAAYpD,WAAUsG,SAAAA,EAAW9C,MACjCH,UAAUrD,WAAUwD,KAAKC,IAAIzD,WAAUsG,SAAW9C,EAAAA,MAAMxD,WAAU+B,OAAOsqB,WAAW,QACpF,EAAA,CAAA;AAAA,MAAA,OACK;AACNzV,gBAAQC,MAAM,wCACf;AAAA,MAAA;AAAA,IAAA;AAEKxW,SAAKyF,MAAMA;AACXzF,SAAKsD,WAAWsE;AAAAA,EACvB;AAAA,EAEA,QAAQ4D,WAAAA;AACPxL,SAAKyF,IAAI+uB,OAAAA;AACH,WAAOhpB,UAAUnL,YAAY;AAClCmL,gBAAUnL,WAAWm0B,OACtB;AAAA,IAAA;AACMhpB,cAAUtL,YAAY;AAAA,EAC7B;AAAA,EAEA,eAAesB,QACR;AAAA,QAAIE,SAAS,CAClBF,OAAM2oF,KACN3oF,OAAM0oF,GAAAA;AAGP,QAAK1oF,CAAAA,OAAM0oF,QAAQ1oF,OAAM2oF,KAAK;AACpBzoF,eAAA,CAAC1B,KAAKsD,SAASgnF,eAAeH,KAAKnqF,KAAKsD,SAASgnF,eAAeJ,GAAAA;AAAAA,IAC1E;AAEM,UAAA6E,QAAQ,IAAIY,SAASK,MAAM,EAAE78E,QAAQ,IAAI88E,gBAAgB,MAAA,CAAA,EACpDC,YAAY,GAAGlwF,KAAKsD,SAASupF,qBAC7BsD,IAAAA,EAAAA,QAAQnwF,KAAKL,UAAU2zB,UAAUy5D,iBAAiBvrF,MAAAA,CAAAA;AACvD,UAAMg1D,UAAS,IAAIm5B,SAASS,SACvBC,UAAU3uF,MACV4uF,EAAAA,SAASvB,OACTb,MAAMluF,KAAKyF;AACV,UAAAwnF,aAAa,EAACzrF,OAAOg1D,QAAAA,QAAAA,QAAAA;AACtBx2D,SAAA8pF,SAASjmF,KAAKopF,UAC1B;AAAA,EAAA;AAAA,EAEA,kBAAkB7pE,SAAAA;AACjB,aAASjf,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,UAAIif,WAAWpjB,KAAK8pF,SAAS3lF,CAAG3C,EAAAA,MAAMzB,IAAI;AACzCC,aAAK8pF,SAAS3lF,CAAGqyD,EAAAA,OAAOhiC;AACPx0B,aAAA8pF,SAAS12E,OAAOjP,GAAE;AACnCA;AAAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,kBAAkB3C,QACjB;AAAA,aAAS2C,IAAI,GAAGA,IAAInE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC9C,UAAGnE,KAAK8pF,SAAS3lF,CAAAA,EAAG3C,MAAMzB,MAAMyB,OAAMzB,IAAI;AACpCC,aAAA8pF,SAAS3lF,CAAG3C,EAAAA,QAAQA;AACzB,YAAA,CAAKA,OAAM0oF,OAAQ1oF,CAAAA,OAAM2oF,KAAI;AAC5BnqF,eAAK8pF,SAAS3lF,CAAGqyD,EAAAA,OAAO65B,UAAU,CAACrwF,KAAKsD,SAASgnF,eAAeH,KAAKnqF,KAAKsD,SAASgnF,eAAeJ,GAAI,CAAA;AAAA,QAAA,OAChG;AACDlqF,eAAA8pF,SAAS3lF,CAAGqyD,EAAAA,OAAO65B,UAAU,CAAC7uF,OAAM2oF,KAAK3oF,OAAM0oF,GAAAA,CAAAA;AAAAA,QACrD;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA;AACC,aAAS/lF,IAAI,GAAGA,IAAGnE,KAAK8pF,SAAS1lF,QAAQD,KAAK;AAC7CnE,WAAK8pF,SAAS3lF,CAAAA,EAAGqyD,OAAOhiC,OACzB;AAAA,IAAA;AACAx0B,SAAK8pF,WAAW;EACjB;AAAA,EAEA,QAAQwD,UAAkBC,WAAmBxD;AAC5C/pF,SAAKyF,IAAI2kF,UAAU,CAACmD,WAAWD,QACpBttF,CAAAA;AAAAA,SAAAyF,IAAI4kF,QAAQN,IAAAA;AAAAA,EACxB;AAAA,EAEA,MAAMyD,eAAeC,QACpB;AAAA,QAAIhsC,iBAAiB2sC,MAAM,qDAAqDX,4BAA4BztF,KAAKsD,SAASssF,eAAer6B,KAAK9T,eAAYA,UAAS5B,KAAAA,CAAAA;AACnK,QAAI5yC,WAAe,CAAA;AACf,QAAAw0C,YAAYA,SAASquC,SAAS1rF,QAAQ;AACzC6I,eAASk9E,MAAM1oC,SAASquC,SAAS,GAAGnF,OAAO,CAAA;AAC3C19E,eAASi9E,MAAMzoC,SAASquC,SAAS,CAAA,EAAGnF,OAAO,CAAC;AAAA,IAAA,OACtC;AACEp0E,cAAAC,MAAM,sDAAsDi3E,MACrE,EAAA;AAAA,IAAA;AACO,WAAAxgF;AAAAA,EACR;;ACjID,SAAAsjF,SAAwB5wF;AAExB,MAAI6wF,aAAiC;AACrC,MAAIC,kBAA4B,CAChC;AAAA,QAAMC,WAA2C,EAChDC,WAAW,IAAI9G,iBAAiBlqF,UAAAA,GAChCixF,gBAAgB,IAAIjD,qBAAqBhuF,UACzCkxF,GAAAA,QAAQ,IAAItB,cAAc5vF,UAAAA,EAAAA;AAGxB,OAACA,WAAUqmE,KAAI;AACjBrmE,IAAAA,WAAUqmE,MAAM;EACjB;AACArmE,EAAAA,WAAUqmE,IAAIsmB,UAAU,EACvBwE,eAAe;AACP,WAAAJ,SAAS/wF,WAAU+B,OAAOqvF;EAClC,GACAxE,cAAc,SAAS7qF,QACtB;AAAA,WAAO,IAAI6oF,OAAOC,KAAK4F,OAAO1uF,MAAAA;AAAAA,EAC/B,GACAsvF,gBAAgB,MAChBN;AAED/wF,EAAAA,WAAUsxF,gBAAiB;AAC3BtxF,EAAAA,WAAUuxF,wBAAwB;AAClCvxF,EAAAA,WAAU+B,OAAOqvF,oBAAoB;AACrCpxF,EAAAA,WAAU+B,OAAOyvF,eAAe,EAC/BvG,kBAAkB,EACfV,KAAK,QACLC,KAAK,MAERG,GAAAA,gBAAgB,EACbJ,KAAK,IACLC,KAAK,GAERF,GAAAA,cAAc,GACdD,oBAAoB,IACpB6C,uBAAuB,KACvBuE,uBAAuB,MACvBC,wBAAwB,MACxBC,eAAe,YAAA;AAEZ,MAAA3xF,WAAU+B,OAAO6vF,sBAAsB;AAChC5xF,IAAAA,WAAA+B,OAAOyvF,aAAavG,mBAAmB,EAChDV,KAAKvqF,WAAU+B,OAAO6vF,qBAAqBrH,IAC3CC,GAAAA,KAAKxqF,WAAU+B,OAAO6vF,qBAAqBpH;EAE7C;AAEI,MAAAxqF,WAAU+B,OAAO8vF,oBAAoB;AAC9B7xF,IAAAA,WAAA+B,OAAOyvF,aAAa7G,iBAAiB,EAC9CJ,KAAKvqF,WAAU+B,OAAO8vF,mBAAmBtH,OACzCC,KAAKxqF,WAAU+B,OAAO8vF,mBAAmBrH,IAAAA,EAAAA;AAAAA,EAE3C;AAEAxqF,EAAAA,WAAU2f,GAAGmyE,iBAAiB;AAC9B9xF,EAAAA,WAAU2f,GAAGoyE,iBAAiB;AAC9B/xF,EAAAA,WAAU2f,GAAGqyE,wBAAwB;AACrChyF,EAAAA,WAAUwD,KAAKyuF,UAAU,SAASzuF,MAAMoqC,KAAK9tC;AAC5C,WAAQ,IAAI+E,KAAKrB,KAAK4B,QAAAA,CAAAA;AAAAA,EAAS;AAEhCpF,EAAAA,WAAU2zB,UAAUu+D,WAAW,SAASv8D,IAAIC,IAAI91B,MAAAA;AACxC,WAAA;AAAA,EAAA;AAERE,EAAAA,WAAU2zB,UAAUw+D,WAAW,SAASviF,OAAOC,KAAKhJ,IACnD;AAAA,QAAI7G,WAAU+B,OAAOkjB,OAAAA,CAAQpe,GAAG4D,QAAQ;AAChC,aAAAzK,WAAU2zB,UAAUoK,SAASluB,GAAAA,IAAO,cAAc7P,WAAU2zB,UAAUoK,SAASnuB,KAAAA;AAAAA,IAAK,WACjF/I,GAAG4D,QAAQ;AACd,aAAApK,KAAK09B,SAASl3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAM,IAAA,MAAMxG,KAAKoyC,WAAW7iC,KAAAA;AAAAA,IAAK,OAC5E;AACC,aAAA5P,WAAU2zB,UAAUoK,SAASnuB,KAAS,IAAA,cAAc5P,WAAU2zB,UAAUoK,SAASluB;IACzF;AAAA,EAAA;AAED7P,EAAAA,WAAU2zB,UAAUy+D,WAAW,SAASxiF,OAAOC,KAAKhJ,IACnD;AAAA,WAAOA,GAAGM;AAAAA,EAAA;AAEDnH,EAAAA,WAAA2zB,UAAUy5D,mBAAmB,SAASvrF,QAAAA;AACrC,WAAA,6BAA6BA,OAAMsF;4BAClBtF,OAAMwqF,cAAAA;AAAAA,0BACRrsF,WAAU2zB,UAAUuf,oBAAoBrxC,OAAMuB,UAAAA,CAAAA;AAAAA,wBAChDpD,WAAU2zB,UAAUuf,oBAAoBrxC,OAAMwB,QAAS,CAAA;AAAA;AAAA,EAAA;AAGrErD,EAAAA,WAAAwD,KAAK6uF,YAAY,SAASp+E,GAAAA;AAC5B,WAAAA;AAAAA,EAAA;AAGR,WAASq+E,aAAatyF,aAAAA;AAERA,iBAAAA,YAAUqmE,IAAIsmB,QAAQwE,cAAAA;AACboB;EACvB;AACetqD,iBAAAuqD,qBAAqB3wF,QAAuBgvF,aAAAA;AAC1D,QAAI4B,cAAAA,MAAoB5B,YAAWhD,eAAehsF,OAAMwqF;AACxDxqF,IAAAA,OAAM0oF,MAAMkI,YAAYlI;AACxB1oF,IAAAA,OAAM2oF,MAAMiI,YAAYjI;AACxBqG,gBAAW6B,kBAAkBhtF,OAAO7D,OAAMzB,EAAAA,CAAAA;AAC1CywF,gBAAWrE,eAAe3qF,MAAAA;AACnB,WAAAA;AAAAA,EACR;AACS,WAAA8wF,gBAAgB1qF,SAAuB2qF,SAC/C;AAAA,QAAI3qF,QAAQwpF,uBAAuB;AAClC,UAAIzrD,UAAU6sD,aAAa;AAChB7sD,kBAAA6sD,YAAYC,mBAAmB,SAASxlF;AACzCslF,kBAAAzE,QAAQ7gF,SAASylF,OAAOpF,UAAUrgF,SAASylF,OAAOnF,WAAW3lF,QAAQoiF,sBAAuBpiF,QAAQqiF,YAAY;AAAA,QAAA,CAAA;AAAA,MAE1H;AAAA,IAAA,OACM;AACEsI,cAAAzE,QAAQlmF,QAAQgjF,iBAAiBV,KAAKtiF,QAAQgjF,iBAAiBT,KAAKviF,QAAQqiF,YAAAA;AAAAA,IACrF;AAAA,EACD;AACUtqF,EAAAA,WAAAgzF,wBAAwB,SAAS9sF,GAAAA;AACtC,QAAAtE,YAAYsE,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC;AACtD,QAAI3C,WAAU;AACb,UAAI6hB,UAAU7hB,UAAUkD,aAAa,GAAG9E,WAAU+B,OAAOwC;AACzDvE,MAAAA,WAAU2rB,aAAalI;IACxB;AACI,QAAA,CAACpjB,KAAK0B,OAAOkoB,YAAY5pB,KAAK0B,OAAO+T,oBAAoBlU,WAAW;AACvEvB,WAAK0V,YAAY,EAChB3S,YAAapD,WAAU+B,OAAOswF,WAC9BhvF,UAAUrD,WAAUwD,KAAKC,IAAKzD,WAAU+B,OAAOswF,WAAWryF,WAAU+B,OAAOsqB,WAAW,QAExF,EAAA,CAAA;AAAA,IAAA;AAAA,EAAA;AAGD,WAASkmE,wBAAAA;AACSzB,oBAAA5sF,KACjBlE,WAAUiG,YAAY,eAAc,SAAS7F,KAAGyG,IAAGosB,QAC9C;AAAA,UAAAggE,kBAAkBjzF,WAAUmG,SAAS/F,GACzC;AAAA,UAAI6yF,mBAAmBA,gBAAgB5G,kBAAkBxlF,GAAGwlF,gBAAgB;AAC3ErsF,QAAAA,WAAUuxF,wBAAwB;AAAA,MACnC;AACO,aAAA;AAAA,IAAA,CAELvxF,GAAAA,WAAUiG,YAAY,kBAAkB,CAAC7F,KAAIyB,WACzC;AAAA,YAAA,EAAAuB,YAAaC,SAAYxB,IAAAA;AAC/B,cAAM2O,UAACC,SAAsBzQ,IAAAA,WAAUsG,SACpC;AAAA,UAAAlD,WAAWgC,QAAYqL,IAAAA,SAASrL,aAAa/B,SAAS+B,QAAAA,IAAYoL,SAASpL,QAAU,GAAA;AACvF,YAAIyrF,YAAY;AACX,cAAA7wF,WAAU+B,OAAOyvF,aAAaE,0BAA0B7vF,OAAMwqF,kBAAmBrsF,CAAAA,WAAUsxF,eAAgB;AAC7GkB,iCAAqB3wF,QAAOgvF,UAAAA;AAAAA,UAAU,OACjC;AACNA,uBAAWqC,kBAAkBrxF,MAC9B;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AACA7B,MAAAA,WAAUsxF,gBAAiB;AACpB,aAAA;AAAA,IAAA,CAAA,GAERtxF,WAAUiG,YAAY,mBAAmB,SAAS0jD,QAAOzV;AACpD,UAAAi/C,aAAanzF,WAAUmG,SAAS+tC,MAAAA;AACpC28C,+CAAY6B,kBAAkB/oC;AAC9BknC,+CAAYrE,eAAe2G;AAAAA,IAAU,CAEnCnzF,GAAAA,WAAUiG,YAAY,gBAAgB,CAAC7F,KAAIyB,WACvC;AAAA,YAAA,EAAAuB,YAAaC,SAAYxB,IAAAA;AAC/B,cAAM2O,UAACC,SAAsBzQ,IAAAA,WAAUsG,SACpC;AAAA,UAAAlD,WAAWgC,QAAYqL,IAAAA,SAASrL,aAAa/B,SAAS+B,QAAAA,IAAYoL,SAASpL,QAAU,GAAA;AAClF,YAAIyrF,YAAY;AACpB,cAAI7wF,WAAU+B,OAAOyvF,aAAaE,0BAA0B7vF,OAAMwqF,kBAAkBrsF,WAAUuxF,uBAAuB;AACpHiB,iCAAqB3wF,QAAOgvF,UAAAA;AAC5B7wF,YAAAA,WAAUuxF,wBAAwB;AAAA,UAAA,OAC5B;AACNV,uBAAWrE,eAAe3qF,MAAAA;AAC1BgvF,uBAAWuC,aAAavxF,MAAAA;AAAAA,UACzB;AAAA,QACD;AAAA,MACD;AAAA,IAAA,CAAA,GAEE7B,WAAUiG,YAAY,WAAW,SAAU7F,KAAI8F;AAC3C,YAAArE,SAAQ7B,WAAUmG,SAAS/F,GAAAA;AACjC,UAAIywF,cAAchvF;AAAOgvF,mBAAWuC,aAAavxF;AAC1C,aAAA;AAAA,IAAA,IAEL7B,WAAUiG,YAAY,uBAAuB,CAAC7F,KAAIyB,WACpD;AAAA,UAAIgvF,YAAY;AACfA,mBAAW6B,kBAAkBtyF,GAC9B;AAAA,MAAA;AACO,aAAA;AAAA,IAAA,CAAA,CAAA;AAAA,EAGT;AACA,WAASizF;AACRvC,oBAAgB9sF,QAAQ5D,CAAAA,QAAMJ,WAAUujB,YAAYnjB;AACpD0wF,sBAAkB,CAAA;AAAA,EACnB;AAEU9wF,EAAAA,WAAAiG,YAAY,oBAAoB,WAAA;AAEtC,QAAAjG,WAAU+B,OAAOuxF,6BAA+B;AAClDtzF,MAAAA,WAAU+B,OAAOyvF,aAAalH,eAAetqF,WAAU+B,OAAOuxF;AAAAA,IAC/D;AACG,QAAAtzF,WAAU+B,OAAOwxF,2BAAsC,QAAA;AACzDvzF,MAAAA,WAAU+B,OAAOyvF,aAAanH,qBAAqBrqF,WAAU+B,OAAOwxF;AAAAA,IACrE;AACG,QAAAvzF,WAAU+B,OAAOyxF,6BAAuC,QAAA;AAC1DxzF,MAAAA,WAAU+B,OAAOyvF,aAAatE,wBAAwBltF,WAAU+B,OAAOyxF;AAAAA,IACxE;AACG,QAAAxzF,WAAU+B,OAAO0xF,8BAAwC,QAAA;AAC3DzzF,MAAAA,WAAU+B,OAAOyvF,aAAaC,wBAAwBzxF,WAAU+B,OAAO0xF;AAAAA,IACxE;AACG,QAAAzzF,WAAU+B,OAAOqvF,sBAAgC,QAAA;AACnDpxF,MAAAA,WAAU+B,OAAOyvF,aAAaG,gBAAgB3xF,WAAU+B,OAAOqvF;AAAAA,IAChE;AACG,QAAApxF,WAAU+B,OAAO2xF,aAAAA,QAAuB;AAC1C1zF,MAAAA,WAAU+B,OAAOyvF,aAAanqF,OAAOrH,WAAU+B,OAAO2xF;AAAAA,IACvD;AACG,QAAA1zF,WAAU+B,OAAO4xF,+BAAAA,QAAyC;AAC5D3zF,MAAAA,WAAU+B,OAAOyvF,aAAaE,yBAAyB1xF,WAAU+B,OAAO4xF;AAAAA,IACzE;AACA3zF,IAAAA,WAAUqmE,IAAIsmB,QAAQ0E,iBAAiBrxF,WAAU+B,OAAOqvF;AAEpD,QAAAtrF,MAAM5F,SAASC,cAAc,KAAA;AACjC2F,QAAIoL,YAAY;AAChBpL,QAAI1F,KAAK;AACT0F,QAAInD,MAAMod,UAAU;AACpBja,QAAInD,MAAM64C,SAAS;AACTx7C,IAAAA,WAAA4kB,KAAKnkB,YAAYqF,GAE3B;AAAA,UAAMqnC,MAAMntC,WAAU+X;AACZ/X,IAAAA,WAAA+X,cAAc,SAAS/N,KAAKorC,MACjC;AAAA,UAAA/0C,KAAK4M,SAAS,OAAO;AACX2mF,qBAAAA;AACT,YAAAxzC,SAASpgD,WAAU80C;AACvB,YAAI+7C,YAAY;AACfA,qBAAWgD;AACXzzC,iBAAOp8C,QAASnC,CAAAA,WAAUgvF,yCAAYrE,eAAe3qF;QACtD;AAAA,MACD;AACQ,eAAAsrC,IAAI1+B,MAAMpO,MAAMiU,SAAAA;AAAAA,IAAS;AAGxBtU,IAAAA,WAAA4wF,WAAW,SAAS9wF,MAC7BE;AAAAA,MAAAA,WAAUoM,KAAK2d,aAAa,GAAGpnB,MAAMyO,QAASpR,WAAU2f,GAAGmyE,iBAAiB9xF,WAAU2f,GAAGqyE,wBAAwB,IAAK;AACtHhyF,MAAAA,WAAUyM,YAAYzM,WAAU+B,OAAOswF,aAAcryF,WAAUsM;AACrDtM,MAAAA,WAAAwM,YAAYxM,WAAU+B,OAAO+xF,WAAW9zF,WAAUwD,KAAKC,IAAIzD,WAAUsM,aAAAA,GAAgB,GAAG,MAClGtM;AAAAA,MAAAA,WAAUgN,cAAc;AACxBw8D,oBAAc1pE,IACV;AAAA,UAAAi0F,eAAe7zF,SAAS2kB,eAAe;AAC3CmvE,kBAAY,cAAA;AAGZ,UAAIl0F,QAAQi0F,cAAc;AACzBjuF,YAAInD,MAAMod,UAAU;AACP6zE;AAEb,YAAI5zF,WAAU+B,OAAOqvF,qBAAqBpxF,WAAUqmE,IAAIsmB,QAAQ0E,gBAAgB;AAC/ER,mDAAYoD,QAAQF;AACpBzB,uBAAatyF,UACb6wF;AAAAA,mDAAYqD,WAAWH,cAAc/zF,WAAU+B,OAAOyvF;AAAAA,QAAY,OAC5D;AACNX,mDAAYoD,QAAQF;AACpBzB,uBAAatyF;AACb6wF,mDAAYqD,WAAWH,cAAc/zF,WAAU+B,OAAOyvF;AACrDxxF,UAAAA,WAAUqmE,IAAIsmB,QAAQ0E,iBAAiBrxF,WAAU+B,OAAOqvF;AAAAA,QAC1D;AACA,YAAGP,YAAY;AACE8B,0BAAA3yF,WAAU+B,OAAOyvF,cAAcX;QAChD;AAAA,MAAA,OACM;AACN/qF,YAAInD,MAAMod,UAAU;AACpB/f,QAAAA,WAAUoM,KAAK2d,aAAa,GAAGpnB,MAAMyO,QAAQ;AAC5C,YAAIy/E,cAAckD,cAAe;AACjClD,qBAAWoD,QAAQF,YAAAA;AACNlD,uBAAA;AACb7wF,UAAAA,WAAUqmE,IAAIsmB,QAAQ0E,iBAAiBrxF,WAAU+B,OAAOqvF;AAAAA,QACtD;AACqBiC,8BAAAA;AAAAA,MACzB;AAAA,IAAA;AAGD,aAASW,YAAYG,SAChBruF;AAAAA,UAAAA,OAAM5F,SAAS2kB,eAAesvE,OAClC;AAAA,UAAIruF,MAAK;AACR,cAAM8Z,aAAa5f,WAAUqE,WAAWgb,cAAc,kBAAoB8B,EAAAA;AACtE,YAAAhQ,SAASnR,WAAUqE,WAAWgb,cAAc,iBAAiB8B,eAAenhB,WAAUqE,WAAWgb,cAAc,iBAAA,EAAmB8B;AACtI,YAAIhQ,SAAS;AACHA,mBAAA;AACN,YAAAC,QAAQpR,WAAUwmB,KAAKxmB,WAAU2f,GAAGmyE,iBAAiB9xF,WAAU2f,GAAGqyE,wBAAwB;AAC9F,YAAI5gF,QAAQ;AACHA,kBAAA;AACTtL,aAAInD,MAAMwO,SAASA,SAAS;AAC5BrL,aAAInD,MAAMyO,QAAQA,QAAQ;AAC1BtL,aAAInD,MAAM2K,WAAW;AACrBxH,aAAInD,MAAMC,MAAMgd,aAAa;AACzB,YAAA5f,WAAU+B,OAAOkjB,KAAK;AACzBnf,eAAInD,MAAMyxF,cAAep0F,WAAU2f,GAAGmyE,iBAAiB9xF,WAAU2f,GAAGqyE,wBAAwB,IAAK;AAAA,QAAA,OAC3F;AACNlsF,eAAInD,MAAMG,aAAc9C,WAAU2f,GAAGmyE,iBAAiB9xF,WAAU2f,GAAGqyE,wBAAwB,IAAK;AAAA,QACjG;AACAlsF,aAAInD,MAAM0xF,YAAar0F,WAAU2f,GAAGC,aAAa,IAAK;AAAA,MACvD;AAAA,IACD;AACA,aAASg0E;AAEJ,UAAAxzC,SAASpgD,WAAU80C,mBAChBsL;AAAAA,aAAAvb,KAAK,SAASroB,GAAGC,GACvB;AAAA,YAAGD,EAAEpZ,WAAWgC,QAAAA,KAAWqX,EAAErZ,WAAWgC,QAAAA;AACvC,iBAAOoX,EAAEpc,KAAGqc,EAAErc,KAAG;AAClB,eAAOoc,EAAEpZ,aAAWqZ,EAAErZ,aAAW,IAAA;AAAA,MAAE,CAIhC;AAAA,UAAA84C,WAAWl8C,WAAUioB,SAASsX;AAE9B,UAAAh8B,OAAO,UAAQ24C,WAAS;AAC5B,eAAS13C,IAAI,GAAGA,IAAI47C,OAAO37C,QAAQD,KAAK;AACnC,YAAAqC,KAAKu5C,OAAO57C,CAAAA;AAChB,YAAIouC,cAAe/rC,GAAGzG,MAAMJ,WAAUs0F,qBAAsB,2BAA2B;AACvF,YAAIx2C,WAAYj3C,GAAG40C,QAAS,sCAAsC50C,GAAG40C,QAAQ,MAAO;AACpF,YAAIA,QAAS50C,GAAGu1C,YAAa,iCAAiCv1C,GAAGu1C,YAAY,MAAO;AAEpF,YAAIF,YAAWl8C,WAAUioB,SAASuX,iBAAiB34B,EAAAA;AAC/C,YAAA0tF,iBAAiBv0F,WAAUioB,SAASwX,oBAExCl8B;AAAAA,gBAAQ,UAAQ24C,YAAS,aAAatJ,cAAc,iBAAiB/rC,GAAGzG,KAAK,OAAKJ,WAAU+B,OAAOwC,kBAAgB,OAAKsC,GAAGzG,KAAG,cAAc09C,WAAgBrC,SAAc50C,GAAGy0C,eAAe,MAAM,cAAct7C,WAAU2f,GAAGmyE,iBAAiB9xF,WAAU2f,GAAGqyE,wBAAwB,KAAK,wDAAwDhyF,WAAU2f,GAAGmyE,iBAAiB,WAAW9xF,WAAU2zB,UAAUw+D,SAAStrF,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAM;AACxbtD,gBAAQ,QAAQgxF,cAGhBhxF;AAAAA;AAAAA;AAAAA,gBAAQ,iDAAiDvD,WAAU2f,GAAGqyE,wBAAwBhyF,WAAU2f,GAAGoyE,kBAAkB,UAAU/xF,WAAU2zB,UAAUy+D,SAASvrF,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAM,IAAA;AAAA,MACvM;AACQtD,cAAA,sCAAoCvD,WAAU+B,OAAOkjB,MAAM,aAAa,cAAcjlB,WAAU2f,GAAGmyE,iBAAiB,KAAK;AAGjI9xF,MAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAGuhB,YAAY;AAC9C3tB,MAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAG7L,YAAYgD;AAG9C,UAAIiR,IAAIxU,WAAUoM,KAAK,cAAA,EAAgB,GAAG1L,WAAWwR;AAEjD,UAAAk4D,cAAcpqE,WAAUm3B,mBAC5B;AAAA,UAAGizC,aAAY;AACdA,oBAAY7pE,YAAUP,WAAU2zB,UAAU3zB,WAAUiN,QAAQ,OAAA,EAASjN,WAAUyM,WAAWzM,WAAUwM,WAAWxM,WAAUiN;MAC1H;AAEAjN,MAAAA,WAAUg0C,YAAY,CACtB;AAAA,eAASxvC,IAAI,GAAGA,IAAIgQ,EAAE/P,SAAS,GAAGD,KAAK;AACtCxE,QAAAA,WAAUg0C,UAAUxvC,CAAKgQ,IAAAA,EAAEhQ;MAC5B;AAAA,IACD;AACA,aAASglE,cAAc1pE,MAAAA;AACtB,UAAIA,MAAM;AACH,cAAA2pE,IAAIzpE,WAAU+nB,OAAOC;AACjBhoB,QAAAA,WAAAoM,KAAK,gBAAA,EAAkB,GAAG7L,YAAY,8CAClCP,WAAU2f,GAAGmyE,iBAAiB9xF,WAAU2f,GAAGqyE,wBAAwB,KACpE,oDACAhyF,WAAU2f,GAAGmyE,iBAAiB,UAAUroB,EAAEjmE,OAC1C,2DACAxD,WAAU2f,GAAGqyE,wBAAwB,UAAUvoB,EAAEnK,cAAc;AAC5Et/D,QAAAA,WAAUgN,cAAc;AACxBhN,QAAAA,WAAUslB,UAAAA;AAAAA,MACX;AAAA,IACD;AAEUtlB,IAAAA,WAAAiG,YAAY,mBAAmB,SAAU7F,KAClDwc;AAAAA,YAAM;AACN,aAAOguE,OAAOC,KAAK6C,OAAO,UAAA;IAAoB,CAG3C;AAAA,QAAA8G,uBAAuBvsD,eAAepmC;AACzC,UAAIgvF,YAAW;AACd,cAAM4B,cAAAA,MAAoB5B,WAAWhD,eAAehsF,OAAMwqF,cACtD;AAAA,YAAAoG,YAAYlI,OAAOkI,YAAYjI,KAAK;AACjC3oF,UAAAA,OAAA0oF,OAAOkI,YAAYlI;AACnB1oF,UAAAA,OAAA2oF,MAAAA,CAAOiI,YAAYjI;AAAAA,QAAA,OACnB;AACNxqF,UAAAA,WAAUiL,UAAU,mBAAmB,CAACpJ,OAAMzB,EAC9CyB,CAAAA;AAAAA,UAAAA,OAAM2oF,MAAMxqF,WAAU+B,OAAOyvF,aAAa7G,eAAeH;AACzD3oF,UAAAA,OAAM0oF,MAAMvqF,WAAU+B,OAAOyvF,aAAa7G,eAAeJ;AAAAA,QAC1D;AACAvqF,QAAAA,WAAUsxF,gBAAgB;AAC1BtxF,QAAAA,WAAUiL,UAAU,kBAAkB,CAACpJ,OAAMzB,IAAIyB,MAClD,CAAA;AAAA,MAAA;AAAA,IAAA;AAED,QAAI4yF,SAAS,SAAS95E,QAAQT,QAAQohD,QAAQniD,QAAAA;AAC7CO,iBAAW,WACV;AAAA,YAAG1Z,WAAU8gB,YAAW;AAChB,iBAAA;AAAA,QACR;AACA,YAAI4zE,MAAM/5E,OAAOlM,MAAMyL,QAAQohD;AAC/B3gD,iBAAST,SAASohD,SAAS;AACpB,eAAAo5B;AAAAA,MAAA,GACLv7E,UAAS,CAAC;AAAA,IAAA;AAEdnZ,IAAAA,WAAU20F,uBAAuB;AACvB30F,IAAAA,WAAAiG,YAAY,kBAAkB,SAASpE,QAAAA;AAC5C,UAAAA,OAAM0oF,OAAO1oF,OAAM2oF,KAAK;AACrB3oF,QAAAA,OAAA0oF,MAAO1oF,CAAAA,OAAM0oF;AACb1oF,QAAAA,OAAA2oF,OAAO3oF,OAAM2oF;AAAAA,MACpB;AACI,UAAAxqF,WAAU+B,OAAOyvF,aAAaE,0BAA0B7vF,OAAMwqF,kBAAAA,CAAmBxqF,OAAM0oF,OAAQ1oF,CAAAA,OAAM2oF,KAAK;AAC7GxqF,QAAAA,WAAU20F,wBAAwB;AAClCF,eAAOD,sBAAsBn0F,MAAM,CAACwB,MAAQ7B,GAAAA,WAAU20F;MACvD;AACO,aAAA;AAAA,IAAA,CACP;AAAA,EAAA,CAAA;AAGF;ACtZe,SAAQC,QAAC50F,YAExB;AAAA,QAAM60F,mBAAmB70F,WAAUooB,qBAAAA;AAGnCpoB,EAAAA,WAAU+B,OAAO+yF,eAAe,EAC/BC,aAAa;AAEd/0F,EAAAA,WAAUg1F,wBAAwB;AAClCh1F,EAAAA,WAAUmc,iBAAiB,SAASlc,KAAKg1F,OAAOC,YAC/C;AAAA,QAAI9O,MAAM;AACV,QAAI5iF,OAAOvD,IAAIuD,QAASxD,WAAUsM,aAClC;AAAA,QAAA,OAAW9I,QAAQ;AAClBA,aAAOnD,KAAKszB,UAAUsc,SAASzsC,IAEhC;AAAA,QAAA,CAAKyxF,OAAO;AACX,UAAIE,OAAOl1F,IAAI4L;AACf,UAAImhB,MAAM/sB,IAAIqN;AAEd,UAAA,OAAW6nF,QAAQ;AAClBA,eAAOj1F,SAAS2kB,eAAeswE;AAEhC,UAAWnoE,OAAAA,OAAO;AACjBA,cAAM9sB,SAAS2kB,eAAemI,GAC/B;AAAA,UAAIA,QAAeA,OAAAA,IAAInqB,QAAQ,eAAsBmqB,OAAAA,IAAI9F,SAAS,cAAc;AAC/E,YAAIkuE,OAAOp1F,WAAU8tB,YAAY8X,UAAU5Y;AAC3CA,cAAM,EACLpqB,KAAKwyF,KAAKxyF,MAAMoqB,IAAI7L,cACpBte,MAAMuyF,KAAKvyF,KAAAA;AAAAA,MAEZ;AACD,UAAKsyF,CAAAA;AACJA,eAAOn1F,WAAUq1F,cAAcroE;AAEhCo5D,YAAM/lF,KAAKi1F,iBAAiBH,MAAM3xF,MAAMvD,GAExC;AAAA,UAAA,CAAKmmF,IAAItoE,iBAAiB;AACzBsoE,YAAItoE,kBAAkB;AACtB+2E,yBAAiBtsE,OAAO69D,KAAK,UAAS,SAAUlgF;AAC/C,cAAI2P,MAAM3P,EAAEE,UAAUF,EAAEksB;AAExB,cAAImjE,OAAOv1F,WAAU8tB;AACrB,cAAIynE,KAAKlvF,QAAQwP,KAAK,iBAAoB,GAAA;AACzC,gBAAK0/E,CAAAA,KAAKlvF,QAAQwP,KAAK,YAAA,KAAA,CAAkB0/E,KAAKlvF,QAAQwP,KAAK,gBAAgB;AAE1E,kBAAI2/E,WAAWD,KAAKlvF,QAAQwP,KAAK,kBAAA;AACjC,kBAAI4/E,gBAAgBD,SAAS1wF,aAAa,gBAC1C;AAAA,kBAAIi9D,UAAU/hE,WAAU2zB,UAAUmG,WAAW27D,aAAAA;AAE7Cz1F,cAAAA,WAAU01F,eAAer1F,IAAAA;AACzBL,cAAAA,WAAU21F,aAAat1F,MAAM0hE,SAAS,oBAAA;AACtC1hE,mBAAKu1F,aAAa7zB;AAClB,kBAAI1hE,KAAKw1F,KAAK33E;AAAS7d,qBAAKw1F,KAAK33E,QAAQzH,KAAKzW,YAAW+hE,SAAS1hE,IAAAA;AAAAA,YAClE;AAAA,UACD;AAAA,QACD,GAAE6iB,KAAKkjE,GACR,CAAA;AAAA,MAAA;AAAA,IAEH,OAAQ;AACNA,YAAM/lF,KAAKi1F,iBAAiBL,MAAMnnF,YAAYtK,MAAMvD,KAAKg1F,KACzDj1F;AAAAA,MAAAA,WAAU01F,eAAetP,GAAAA;AAAAA,IACzB;AAED,QAAIpmF,WAAU+B,OAAO+yF,aAAaC,aAAa;AAC9C,UAAInlF,QAAQ5P,WAAUwD,KAAK+pC,YAAY/pC,IACvC;AAAA,UAAIqM,MAAM7P,WAAUwD,KAAKC,IAAImM,OAAO,GAAG,OACvC;AAAA,UAAI5F,MAAM3J,KAAK+1C,UAAUxmC,OAAOC,GAChC;AAAA,UAAIqlC,SAAS70C,KAAK,YAAYA,KAAK4M,KAAAA;AACnC,UAAI6oF,cAAc,CAAA;AAClB,eAAStxF,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAIqC,KAAKmD,IAAIxF,CAAAA;AACb,YAAI0wC,UAAWA,CAAAA,OAAOruC,GAAGzG,IAAIyG;AAC5B;AACD,YAAIoN,IAAIpN,GAAGzD;AACX,YAAI6Q,EAAE7O,QAAAA,IAAYwK,MAAMxK,QAAAA;AACvB6O,cAAIrE;AACLqE,YAAIjU,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKoP,EAAE7O,QACxC,CAAA,CAAA;AAAA,eAAO6O,IAAIpN,GAAGxD,UAAU;AACvB,cAAIyyF,CAAAA,YAAAA,CAAa7hF,IAAI;AACpB6hF,wBAAAA,CAAa7hF,CAAK,IAAA;AAClB5T,iBAAKs1F,aAAavP,KAAKnyE,GAAG,gBAC1B;AAAA,UAAA;AACDA,cAAI5T,KAAKmD,KAAKC,IAAIwQ,GAAG,GAAG,KACxB;AAAA,cAAIA,EAAE7O,QAAayK,KAAAA,IAAIzK;AACtB;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAED/E,SAAK01F,yBAAyB3P,GAAAA;AAE9BA,QAAIyP,OAAO51F;AACX,QAAIA,IAAI+1F,QAAAA,CAASd;AAChB70F,WAAK20F,sBAAsB9wF,KAAKkiF,GAAAA;AAEjC,SAAIA,IAAIyP,KAAKI,iBAAgB;AAC5B7P,UAAIyP,KAAKI,kBAAkBj2F,WAAUiG,YAAY,SAAS,SAASiwF,gBAClEl2F;AAAAA,QAAAA,WAAUm2F,eAAe/P,KAAKA,IAAIyP,KAAKryF,IAAAA;AAAAA,MAC1C;IACE;AAED,QAAGnD,KAAK0B,OAAO8f,uBAAuBxhB,KAAK0B,OAAO+iB,2BAA0B;AAC3EshE,UAAIjpE,aAAa,QAAQ;IACzB;AAED,WAAOipE;AAAAA,EACR;AACApmF,EAAAA,WAAUq1F,gBAAgB,SAASroE;AAClC,QAAK3sB,CAAAA,KAAKkmF,YAAY;AACrBlmF,WAAKkmF,aAAarmF,SAASC,cAAc,KACzCE;AAAAA,WAAKkmF,WAAWr1E,YAAY;AAC5BlR,MAAAA,WAAU6B,MAAMxB,KAAKkmF,YAAY,SAAS,SAASrgF,GAAKA;AAAAA,UAAE8jB,eAAe;AAAA,MAAO,CAAA;AAChF9pB,eAASM,KAAKC,YAAYJ,KAAKkmF,UAC/B;AAAA,IAAA;AAED,QAAGv5D,IAAInqB,MAAK;AACXxC,WAAKkmF,WAAW5jF,MAAME,OAAOmqB,IAAInqB,OAAO;AAAA,IACxC;AACD,QAAGmqB,IAAI9F,OAAM;AACZ7mB,WAAKkmF,WAAW5jF,MAAMukB,QAAQ8F,IAAI9F,QAAQ;AAAA,IAC1C;AACD,QAAG8F,IAAIpqB,KAAI;AACVvC,WAAKkmF,WAAW5jF,MAAMC,MAAMoqB,IAAIpqB,MAAM;AAAA,IACtC;AACD,QAAGoqB,IAAIuV,QAAO;AACbliC,WAAKkmF,WAAW5jF,MAAM4/B,SAASvV,IAAIuV,SAAS;AAAA,IAC5C;AAEDliC,SAAKkmF,WAAW6P,WAAW,oBAAIvxF;AAE/B,WAAOxE,KAAKkmF;AAAAA,EACb;AACAvmF,EAAAA,WAAUq2F,kBAAkB,SAASjQ,KAAK5iF,MACzC;AAAA,QAAA,OAAWA,QAAQ;AAClBA,aAAOxD,WAAU2zB,UAAUsc,SAASzsC,IAErC;AAAA,QAAA,CAAIA,QAAQ4iF,IAAI55E,aAAAA,CAAchJ,QAAQ4iF,IAAI35E;AACzC,aAAO;AAER,QAAI2sB,QAAQgtD,IAAI/mE,cAAc,gBAAkBnN,EAAAA,WAAW;AAE3D,QAAIokF,UAAU;AACd,QAAIC,MAAM,IAAI1xF,KAAKuhF,IAAI35E,SACvB;AAAA,WAAA,CAAOpM,KAAKmD,KAAKC,IAAI8yF,KAAK,GAAG,YAAY/yF,MAAK;AAC7C+yF,YAAMl2F,KAAKmD,KAAKC,IAAI8yF,KAAK,GAAG,MAC5BD;AAAAA;AAAAA,IACA;AAED,QAAI57C,KAAK16C,WAAU+B,OAAOurC;AAC1B,QAAIztC,OAAO2D,KAAK4F,OAAasxC,MAAAA,KAAK,IAAI,OAAOA,KAAK,IAAI;AAEtD,UAAM87C,UAAUp9D,MAAM/Z,cAAc,gCAAgCi3E,UAAU,oCAAoCz2F,MAAM,CAAA,GAAA;AACxH,QAAG22F,SAAS;AACX,aAAOA,QAAQ91F;AAAAA,IACjB,OAAQ;AACN,aAAO;AAAA,IACP;AAAA,EACF;AACAV,EAAAA,WAAU21F,eAAe,SAASvP,KAAK5iF,MAAMF,KAC5C;AAAA,QAAIsK,MAAMvN,KAAKg2F,gBAAgBjQ,KAAK5iF,IACpC;AAAA,QAAA,CAAIoK;AACH;AAEDA,QAAIsD,aAAa,MAAM5N;AAAAA,EACxB;AACAtD,EAAAA,WAAU01F,iBAAiB,SAAStP,KAAK5iF,MAAMF,KAC9CE;AAAAA,WAAOA,QAAQ4iF,IAAIwP;AACnBtyF,UAAMA,OAAO;AACb,QAAKE,CAAAA;AAAM;AACX,QAAIsgB,MAAKzjB,KAAKg2F,gBAAgBjQ,KAAK5iF,IACnC;AAAA,QAAA,CAAIsgB;AACH;AACDA,IAAAA,IAAG5S,aAAa4S,IAAG5S,aAAa,IAAImZ,QAAQ+S,OAAO95B,KAAK,GAAA,CAAA;AAAA,EACzD;AACAtD,EAAAA,WAAUy2F,iBAAiB,SAASrlF,OACnC;AAAA,QAAI0kB,OAAQ1kB,SAAS;AACrB,QAAIvO,OAAO;AAEX,QAAI6zF,gBAAgBx2F,SAASC,cAAc,KAAA;AAC3C,QAAIw2F,aAAat2F,KAAKmD,KAAK6B,WAAWrF,WAAUsM,aAChD,CAAA;AAAA,aAAS9H,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3BnE,WAAK0Q,MAAMvM,CAAKgN,IAAAA,KAAK8D,MAAMwgB,QAAQ,IAAItxB,EACvCnE;AAAAA,WAAKy0B,iBAAiBtwB,GAAG3B,MAAM8zF,YAAYD,aAC3CC;AAAAA,mBAAat2F,KAAKmD,KAAKC,IAAIkzF,YAAY,GAAG;AAC1C7gE,cAAQz1B,KAAK0Q,MAAMvM,CACnB3B;AAAAA,cAAQxC,KAAK0Q,MAAMvM,CAAAA;AAAAA,IACnB;AACDkyF,kBAAc13C,UAAU9tC,aAAa;AACrC,WAAOwlF;AAAAA,EACR;AACA12F,EAAAA,WAAUm2F,iBAAiB,SAASl2F,KAAKm2B,IAAAA;AACxCn2B,QAAI41F,KAAKryF,OAAO4yB;AAChB/1B,SAAK8b,eAAelc,IAAI41F,MAAM51F,KAAK,IACpC;AAAA,EAAA;AACAD,EAAAA,WAAU42F,mBAAmB,CAAC,UAAU,QACxC52F;AAAAA,EAAAA,WAAUs1F,mBAAmB,SAASr1F,KAAKm2B,IAAIy/D,MAAMgB;AAEpD,QAAIC,KAAK92F,WAAU2zB;AACnB,QAAIgZ,OAAOtsC,KAAK0Q;AAChB1Q,SAAK0Q,QAAQ;AACb,QAAIgmF,QAAQ12F,KAAK4M;AACjB5M,SAAK4M,QAAQ;AACb,QAAI+pF,QAAQ32F,KAAKwtB;AACjBxtB,SAAKwtB,SAAS,EAAC1c,QAAQ,EAAA;AACvB,QAAI8lF,QAAQ,IAAIpyF,KAAKxE,KAAKoM;AAC1B,QAAIyqF,QAAQ,IAAIryF,KAAKxE,KAAKmM;AAC1B,QAAI2qF,QAAQ,IAAItyF,KAAK7E,WAAUkV,KAC/B;AAAA,QAAIkiF,QAAQN,GAAGn9D;AACf,QAAI09D,QAAQh3F,KAAK8tB;AAAmB9tB,SAAK8tB,oBAAoB;AAC7D2oE,OAAGn9D,YAAYm9D,GAAGxjD;AAElBld,SAAK/1B,KAAKmD,KAAK+pC,YAAYnX,EAAAA;AAC3B,QAAIsgE,gBAAgBr2F,KAAKo2F,eAAex2F,IAAIohB,cAAc,IAAIhhB,KAAK0B,OAAO+yF,aAAawC,OAAAA;AAEvF,QAAIrjF;AACJ,QAAI4iF,UAAS;AACZ5iF,UAAI4iF;AAAAA,IACN,OAAQ;AACN5iF,UAAI/T,SAASC,cAAc,KAC3B8T;AAAAA,QAAE/C,YAAY;AAAA,IACd;AACD+C,MAAEkJ,aAAa,QAAQ9c,KAAKyxC,SAASG,WAAW7b,EAChDniB,CAAAA;AAAAA,MAAE1T,YAAY,iEAEXP,WAAU+B,OAAOkjB,MAAM,oBAAoB,QAC5C,iCAA+ByxE,gBAAgBA,cAAcn2F,YAAY,MAAI;AAG/E,QAAI4jB,SAASlQ,EAAEoL,cAAc,iBAC7B;AAAA,QAAIk4E,aAAatjF,EAAEoL,cAAc;AACjC,QAAI7e,OAAOyT,EAAEoL,cAAc;AAE3B8E,WAAO5jB,YAAYF,KAAKszB,UAAUyf,eAAehd;AACjD,QAAIy/D,KAAK53E,YAAY;AACpB,UAAIu5E,yBAAyB,SAASr5E,UAAUkR,MAC/C;AAAA,YAAI7rB,OAAOxD,WAAUwD,KAAKC,IAAI0a,SAASjJ,OAAOma,MAAM,OAAA;AACpDrvB,QAAAA,WAAUm2F,eAAeh4E,UAAU3a;AACnC,YAAIxD,WAAUkV,MAAM+D,SAAAA,KAAckF,SAASjJ,MAAM+D,SAAAA,KAAcjZ,WAAUkV,MAAM8D,YAAAA,KAAiBmF,SAASjJ,MAAM8D,YAAAA,GAAe;AAC7HhZ,UAAAA,WAAU+1F,yBAAyB53E,QACnC;AAAA,QAAA;AAAA,MACJ;AAEE,UAAIs5E,iBAAiB,CAAC,uBAAuB,qBAAA;AAC7C,UAAIC,YAAY,CAAC,uCAAuC,iDAAA;AACxD,UAAIC,QAAQ,CAAA,IAAK,CACjB;AAAA,UAAIz5E,UAAU,SAASmR;AACtB,eAAO,WAAA;AACN,cAAIwmE,KAAKG,MAAM;AACd,gBAAI7tB,YAAYnoE,WAAUg1F;AAC1B,qBAAS3lF,IAAI,GAAGA,IAAI84D,UAAU1jE,QAAQ4K,KAAK;AAC1CmoF,qCAAuBrvB,UAAU94D,IAAIggB,IACrC;AAAA,YAAA;AAAA,UACN,OAAW;AACN,gBAAIrvB,WAAU+B,OAAOkjB,KAAK;AACzBoK,qBAAAA,CAAQA;AAAAA,YACR;AACDmoE,mCAAuBvjF,GAAGob,IAC1B;AAAA,UAAA;AAAA,QACL;AAAA,MACA;AACE,UAAIrH,SAAS,CAAChoB,WAAU+nB,OAAOC,OAAOgM,MAAMh0B,WAAU+nB,OAAOC,OAAO9I,IACpE;AAAA,eAAS6U,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B,YAAI6jE,QAAQ13F,SAASC,cAAc,KAEnCy3F;AAAAA,cAAM1mF,YAAYumF,eAAe1jE,CAAAA;AAEjC/zB,QAAAA,WAAUioB,SAASgM,wBAAwB2jE,OAAO5vE,OAAO+L,CAAAA,CAAAA;AAEzD6jE,cAAMj1F,MAAMi5C,UAAU87C,UAAU3jE,CAAAA;AAChC6jE,cAAMr3F,YAAYF,KAAKu2F,iBAAiB7iE,CACxC5P;AAAAA,eAAO1jB,YAAYm3F,KAAAA;AACnB/C,yBAAiBtsE,OAAOqvE,OAAO,SAAS15E,QAAQy5E,MAAM5jE;MACtD;AAAA,IACD;AACD9f,MAAEiB,QAAQ,IAAIrQ,KAAKuxB,EAAAA;AAEnBniB,MAAE5O,cAAc+wB,GAAGhtB,YAAY/I,KAAK0B,OAAOurC,kBAAkB,IAAI,KAAK,KAAK;AAE3E,QAAI3X,KAAK1hB,EAAExH,YAAYpM,KAAKmD,KAAK6B,WAAW+wB,EAAAA;AAC5CniB,MAAEzH,YAAYnM,KAAKmD,KAAKC,IAAIwQ,EAAExH,WAAW,GAAG,MAAA;AAE5CpM,SAAKq3B,mBAAmBl3B,MAAM41B,IAAIT,IAAI;AAEtC,QAAKkhE,CAAAA;AACJ52F,UAAIQ,YAAYwT,CAAAA;AAEjBsjF,eAAW50F,MAAMwO,SAAUomF,WAAWrlF,WAAW,GAAGiP,eAAe,IAAK;AAExE,QAAIwe,WAAW3/B,WAAU+O,IAAAA;AACzB/O,IAAAA,WAAUioB,SAASyX,cAAcvb,QAAQwb,QAAAA;AACzC3/B,IAAAA,WAAUioB,SAAS2X,YAAY3rB,EAAEoL,cAAc,mBAAmBsgB,QAClE3/B;AAAAA,IAAAA,WAAUioB,SAAS4X,WAAW03D,UAAAA;AAE9B,QAAIM,aAAaN,WAAWjzF,iBAAiB,gBAAA;AAC7C,aAAQE,IAAI,GAAGA,IAAIqzF,WAAWpzF,QAAQD,KAAI;AACzCxE,MAAAA,WAAUioB,SAAS+X,gBAAgB63D,WAAWrzF,CAAAA,CAAAA;AAAAA,IAC9C;AACD,QAAIszF,WAAWt3F,KAAK8D,iBAAiB,qBAAA;AACrC,QAAIs/D,YAAY,IAAI/+D,KAAK8wB,EAAAA;AACzB,aAAQnxB,IAAI,GAAGA,IAAIszF,SAASrzF,QAAQD,KAAI;AAEvCxE,MAAAA,WAAUioB,SAAS6X,eAAeg4D,SAAStzF,CAAAA,GAAI,IAAIK,KAAK++D,SAAAA,CAAAA;AACxDA,kBAAY5jE,WAAUwD,KAAKC,IAAImgE,WAAW,GAAG,KAC7C;AAAA,IAAA;AAED5jE,IAAAA,WAAUioB,SAASyX,cAAcvb,QAAQwb,QAAAA;AAGzCt/B,SAAK0Q,QAAQ47B;AACbtsC,SAAK4M,QAAQ8pF;AACb12F,SAAKwtB,SAASmpE;AACd32F,SAAKoM,YAAYwqF;AACjB52F,SAAKmM,YAAY0qF;AACjBl3F,IAAAA,WAAUkV,QAAQiiF;AAClBL,OAAGn9D,YAAYy9D;AACf/2F,SAAK8tB,oBAAoBkpE;AACzB,WAAOpjF;AAAAA,EACR;AACAjU,EAAAA,WAAUge,kBAAkB,SAASooE,KAAKpsE,OACzC;AAAA,QAAA,CAAKosE,OAAO/lF,KAAKkmF,cAAclmF,KAAKkmF,WAAW7lF,YAAY;AAC1D,UAAIsZ,UAAS,oBAAKnV,QAAQO,YAAY/E,KAAKkmF,WAAW6P,SAAShxF,QAAY,IAAA;AAC1EghF,cAAM/lF,KAAKkmF,WAAW7lF;AAAAA,IACvB;AACD,SAAK0lF;AAAK;AACVyO,qBAAiBxsE,UAEjB+9D;AAAAA,QAAI7lF,YAAY;AAChB,QAAI6lF,IAAIt4E;AACPs4E,UAAIt4E,WAAWC,YAAYq4E;AAC5B,QAAI/lF,KAAKkmF;AACRlmF,WAAKkmF,WAAW5jF,MAAMC,MAAM;AAE7B,QAAGwjF,IAAIyP,QAAQzP,IAAIyP,KAAKI;AACvBj2F,MAAAA,WAAUujB,YAAY6iE,IAAIyP,KAAKI;EACjC;AACAj2F,EAAAA,WAAU+d,oBAAoB,WAC7B;AAAA,QAAI1d,KAAKkmF,cAAcjwD,SAASj2B,KAAKkmF,WAAW5jF,MAAMC,KAAK,EAAA,IAAM;AAChE,aAAOvC,KAAKkmF;AACb,WAAO;AAAA,EACR;AAEAvmF,EAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzCjG,IAAAA,WAAU6B,MAAM3B,SAASM,MAAM,SAAS,WAAA;AAAaR,MAAAA,WAAUge,gBAAAA;AAAAA,IAAkB;EAClF,GAAG,EAACyE,MAAM,KAIVziB,CAAAA;AAAAA,EAAAA,WAAU6jD,YAAYtQ,gBAAgB,EACrC9rC,QAAQ,SAASg9C;AAChB,QAAIlhD,OAAO;AAEX,QAAIU,MAAMjE,WAAU+B;AACpB,QAAIijD,KAAK3kD,KAAKmD,KAAKyF,UAAUjJ,WAAUsM;AAEvC,QAAI24C,OAAO,KAAK,IAAI5b,QAAQ;AAC5B,QAAIplC,IAAIihD,mBAAmB;AAC1B7b,cAAQ,KAAKplC,IAAI0I;AACjBs4C,aAAO,KAAKhhD,IAAI2I,YAAY;AAAA,IAC5B;AACDo4C,OAAGl6C,SAASu+B,QAAQ,EAAA;AAEpBob,QAAIgB,eAAe,CAAA;AACnBliD,YAAQ;AACR,aAASiB,IAAI6kC,OAAO7kC,IAAIygD,MAAMzgD,KAAKnE,KAAK0B,OAAOsqB,YAAY,GAAG;AAC7D,UAAIm4B,OAAOnkD,KAAKszB,UAAU6e,YAAYwS;AACtCzhD,cAAQ,oBAAoBiB,IAAI,OAAOggD,OAAO;AAC9CC,UAAIgB,aAAavhD,KAAKM,CAAAA;AACtBwgD,WAAK3kD,KAAKmD,KAAKC,IAAIuhD,IAAI3kD,KAAK0B,OAAOsqB,WAAW;IAC9C;AACD9oB,YAAQ;AAIR,WAAO,wDAAwDA,OAAO,2EAA2EA,OAAO;AAAA,EACxJ,GACDygD,WAAW,SAAS78B,MAAMzI,OAAO7X,IAAI9E,QAAAA;AAEpC,QAAIg2F,SAAS5wE,KAAKQ,qBAAqB,OAAA;AACvC,QAAIqwE,UAAU7wE,KAAKQ,qBAAqB,QACxC;AAAA,QAAIvkB,YACHC;AAED,QAAI2gB,aAAa,SAASi0E,KAAKz0F,MAAM00F,QAAAA;AACpCl4F,MAAAA,WAAU6B,MAAMo2F,KAAK,SAAS,WAAA;AAC7Bj4F,QAAAA,WAAUge,gBAAgB,MAAM;AAChChe,QAAAA,WAAUmc,eAAe,EACxB7O,UAAU2qF,KACVz0F,MAAM,IAAIqB,KAAKxE,KAAK6U,KAAAA,GACpB+I,YAAY,MACZC,SAAS,SAASi6E,UACjBF;AAAAA,cAAIv5E,QAAQ1e,WAAU2zB,UAAU4f,cAAc4kD,QAAAA;AAC9CF,cAAI/iF,QAAQ,IAAIrQ,KAAKszF,QACrBn4F;AAAAA,UAAAA,WAAUge,gBACV;AAAA,cAAIhe,WAAU+B,OAAOqqB,kBAAkBpsB,WAAU+B,OAAOikD,iBAAiBkyC,WAAW,GAAG;AACtFE,mCACA;AAAA,UAAA;AAAA,QACD;MAEN,CACA;AAAA,IAAA;AAEE,QAAIp4F,WAAU+B,OAAO4jD,UAAU;AAC9B,UAAA,CAAKx+B,KAAKy+B,WAAW;AACpB,YAAIriD,OAAO,qFAAqFvD,WAAU+nB,OAAOC,OAAO29B,WAAW;AACnI,YAAK3lD,CAAAA,WAAU+B,OAAOquC;AACrB7sC,iBAAO4jB,KAAK83B,gBAAgB1+C,YAAYgD;AACzC4jB,aAAK83B,gBAAgB1+C,YAAYgD;AACjC4jB,aAAKy+B,YAAY;AAAA,MACjB;AACD,UAAIthB,QAAQnd,KAAK83B,gBAAgBt3B,qBAAqB,OAAS,EAAA,CAAA;AAE/D,UAAI0wE,iBAAkBr4F,WAAUwD,KAAK+sB,UAAU1pB,GAAGzD,gBAAgB,KAAKpD,WAAUwD,KAAK+sB,UAAU1pB,GAAGxD,QAAc,MAAA;AACjHihC,YAAMuhB,UAAUwyC;AAEhBL,cAAQ,CAAGlyC,EAAAA,WAAWxhB,MAAMuhB;AAC5BmyC,cAAQ,CAAGlyC,EAAAA,WAAWxhB,MAAMuhB;AAE5B,UAAA,CAAKvhB,MAAMxmB,iBAAiB;AAC3BwmB,cAAMxmB,kBAAkB;AACxB9d,QAAAA,WAAU6B,MAAMyiC,OAAO,SAAS,WAAA;AAC/B,cAAIA,MAAMuhB,YAAY,MAAM;AAC3B,gBAAI5lD,MAAM,CAAA;AACVD,YAAAA,WAAU6jD,YAAYtQ,cAAcuQ,UAAU38B,MAAMlnB,GAEpDmD;AAAAA,yBAAapD,WAAUwD,KAAKyF,UAAUhJ,IAAImD,UAC1CC;AAAAA,uBAAWrD,WAAUwD,KAAKyF,UAAUhJ,IAAIoD,QAAAA;AAExC,iBAAKA,YAAaD,CAAAA,cAAAA,CAAgBC,aAAaD,eAAeyD,GAAGxD,SAASqJ,SAAe,MAAA,KAAK7F,GAAGxD,SAAS2K,iBAAiB;AAC1H3K,yBAAWrD,WAAUwD,KAAKC,IAAIJ,UAAU,GAAG,KAAA;AAAA,UAC5C;AAED,cAAIuM,QAAQxM,cAAcyD,GAAGzD;AAC7B,cAAIyM,MAAMxM,YAAYwD,GAAGxD;AACzBi1F,yBAAeP,OAAO,IAAInoF,KAC1B0oF;AAAAA,yBAAeP,OAAO,CAAIloF,GAAAA,GAAAA;AAC1BmoF,kBAAQ,CAAGt5E,EAAAA,QAAQ9O,MAAMlD,SAAAA,IAAa,KAAKkD,MAAM5B,WAAAA;AACjDgqF,kBAAQ,CAAGt5E,EAAAA,QAAQ7O,IAAInD,SAAa,IAAA,KAAKmD,IAAI7B,WAAAA;AAE7CgqF,kBAAQ,CAAGlyC,EAAAA,WAAWxhB,MAAMuhB;AAC5BmyC,kBAAQ,GAAGlyC,WAAWxhB,MAAMuhB;AAAAA,QAEjC,CAAA;AAAA,MACI;AAAA,IACD;AACD,QAAI7lD,WAAU+B,OAAOqqB,kBAAkBpsB,WAAU+B,OAAOikD,eAAe;AAEtE,UAAIoyC,yBAAyB,WAC5B;AAAA,YAAA,EAAMp4F,WAAU+B,OAAOikD,iBAAiBhmD,WAAU+B,OAAOqqB,iBAAgB;AAExE;AAAA,QACA;AACDhpB,qBAAapD,WAAUwD,KAAKC,IAAIs0F,OAAO,GAAG7iF,OAAO8iF,QAAQ,CAAGt5E,EAAAA,OAAO;AACnErb,mBAAW,IAAIwB,KAAKzB,WAAW03B,QAAAA,IAAa96B,WAAU+B,OAAOqqB,iBAAiB,KAAK,GAAA;AAEnF2rE,eAAO,CAAGr5E,EAAAA,QAAQ1e,WAAU2zB,UAAU4f,cAAclwC;AACpD00F,eAAO,CAAA,EAAG7iF,QAAQlV,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKxB,QAEpD20F,CAAAA;AAAAA,gBAAQ,GAAGt5E,QAAQrb,SAASqJ,SAAa,IAAA,KAAKrJ,SAAS2K,WAC3D;AAAA,MAAA;AAEG,WAAIgqF,QAAQ,CAAA,EAAGl6E,iBAAgB;AAC9Bk6E,gBAAQ,CAAGz7D,EAAAA,iBAAiB,UAAU67D,sBACtC;AAAA,MAAA;AAAA,IACD;AAED,aAASE,eAAeL,KAAKz0F,MAAM00F,QAAAA;AAClCl0E,iBAAWi0E,KAAKz0F,MAAM00F,MACtBD;AAAAA,UAAIv5E,QAAQ1e,WAAU2zB,UAAU4f,cAAc/vC,IAC9Cy0F;AAAAA,UAAI/iF,QAAQlV,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKrB,IAC9C,CAAA;AAAA,IAAA;AAED80F,mBAAeP,OAAO,CAAA,GAAIlxF,GAAGzD,YAAY;AACzCk1F,mBAAeP,OAAO,IAAIlxF,GAAGxD,UAAU;AACvC2gB,iBAAa,WAAA;AAAA,IAAW;AAExB,aAASu0E,eAAe/0F,MACvB;AAAA,UAAI0iD,cAAcnkD,OAAO0jD;AACzB,UAAIU,eAAe3iD,KAAKkJ,SAAa,IAAA,KAAKlJ,KAAKwK,WAC/C;AAAA,UAAIo4C,cAAcD;AAClB,UAAIE,cAAc;AAElB,eAASh3C,IAAI,GAAGA,IAAI62C,YAAYzhD,QAAQ4K,KAAK;AAC5C,YAAIi3C,MAAMJ,YAAY72C,CACtB;AAAA,YAAIi3C,QAAQH,cAAc;AACzBE,wBAAc;AACd;AAAA,QACA;AACD,YAAIC,MAAMH;AACTC,wBAAcE;AAAAA,MACf;AAED,YAAKD,eAAeD;AACnB;AAED,aAAO,cAAgBD,eAAeC;AAAAA,IACtC;AAED4xC,YAAQ,GAAGt5E,QAAQ65E,eAAe1xF,GAAGzD,UACrC40F;AAAAA,YAAQ,CAAGt5E,EAAAA,QAAQ65E,eAAe1xF,GAAGxD,QAAAA;AAAAA,EAErC,GACDygD,WAAW,SAAS38B,MAAMtgB,IACzB;AAAA,QAAIkxF,SAAS5wE,KAAKQ,qBAAqB,OACvC;AAAA,QAAIqwE,UAAU7wE,KAAKQ,qBAAqB;AAExC9gB,OAAGzD,aAAapD,WAAUwD,KAAKC,IAAIs0F,OAAO,CAAA,EAAG7iF,OAAO8iF,QAAQ,CAAA,EAAGt5E,OAAO,QACtE7X;AAAAA,OAAGxD,WAAWrD,WAAUwD,KAAKC,IAAIs0F,OAAO,GAAG7iF,OAAO8iF,QAAQ,GAAGt5E,OAAO,QAAA;AAEpE,QAAI7X,GAAGxD,YAAYwD,GAAGzD;AACrByD,SAAGxD,WAAWrD,WAAUwD,KAAKC,IAAIoD,GAAGzD,YAAYpD,WAAU+B,OAAOsqB,WAAW,QAAA;AAC7E,WAAO,EACNjpB,YAAY,IAAIyB,KAAKgC,GAAGzD,UACxBC,GAAAA,UAAU,IAAIwB,KAAKgC,GAAGxD;EAEvB,GACDs3B,OAAO,SAASxT,MACf;AAAA,EAAA,EAAA;AAEFnnB,EAAAA,WAAUw4F,eAAe,SAASr6E,UAAUs6E,UAAAA;AAC3C,QAAIjwC,SAAS,WAAA;AACZ,UAAIhlD,OAAOxD,WAAUkV;AACrB,UAAIwjF,UAAU,IAAI7zF,KAAKrB,KAAK4B,QAC5B,CAAA;AAAA,UAAIqzF;AAAUC,kBAAUD,SAASC,OACjCA;AAAAA,cAAQlrD,QAAQ,CAChBxtC;AAAAA,MAAAA,WAAUm2F,eAAeh4E,UAAUu6E,OAAAA;AACnC,aAAO;AAAA,IACT;AAEC14F,IAAAA,WAAUiG,YAAY,gBAAgBuiD,MACtCxoD;AAAAA,IAAAA,WAAUiG,YAAY,SAASuiD,MAAAA;AAC/BxoD,IAAAA,WAAUiG,YAAY,gBAAgBuiD,MACtCxoD;AAAAA,IAAAA,WAAUiG,YAAY,kBAAkBuiD,MAAAA;AACxCxoD,IAAAA,WAAUiG,YAAY,kBAAkBuiD;AACxCA,WACD;AAAA,EAAA;AAEAxoD,EAAAA,WAAU+1F,2BAA2B,SAAS53E,UAC7C;AAAA,QAAIie,QAAQp8B,WAAUsG,SAAAA;AACtB,QAAI+uB,OAAO+G,MAAM5rB;AACjB,QAAI8kB,KAAK8G,MAAM3rB;AACf,QAAI3Q,OAAOs8B,MAAMt8B;AAEjB,QAAIytC,cAAcvtC,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKsZ,SAASjJ,KAC/D,CAAA;AAAA,QAAIyjF,YAAY34F,WAAUwD,KAAKC,IAAI8pC,aAAa,GAAG,OAEnD;AAAA,QAAIqrD,cAAc,EACjBv3D,OAAQ,MACR7lB,MAAO,MACPJ,QAAS,MACTC,MAAO,KAGR;AAAA,QAAGu9E,YAAY94F,IAAUu1B,KAAAA,KAAKjwB,aAAamoC,YAAYnoC,QAAAA,KAAakwB,GAAGlwB,QAAAA,KAAauzF,UAAUvzF,QAAW,GAAA;AACxG;AAAA,IACA;AAED,QAAIk7E,UAAUjrD;AACd,WAAMirD,QAAQl7E,QAAAA,IAAYkwB,GAAGlwB,QAAU,GAAA;AACtC,UAAImoC,YAAYnoC,QAAAA,KAAak7E,QAAQl7E,QAAauzF,KAAAA,YAAYrY,SAAS;AACtEtgF,QAAAA,WAAU21F,aAAax3E,UAAUmiE,SAAS,oBAC1C;AAAA,MAAA;AACDA,gBAAUtgF,WAAUwD,KAAKC,IAAI68E,SAAS,GAAG,KACzC;AAAA,IAAA;AAAA,EACF;AAEAtgF,EAAAA,WAAUiG,YAAY,iBAAiB,WACtCjG;AAAAA,IAAAA,WAAUge,gBAAgB,MAAM;EACjC,CAEAhe;AAAAA,EAAAA,WAAUiG,YAAY,aAAa,WAAA;AAClCjG,IAAAA,WAAUge,gBACX;AAAA,EAAA,CAAA;AAEA;AC7jBe,SAAQ66E,YAAC74F,YAExBA;AAAAA,EAAAA,WAAUiG,YAAY,oBAAmB,WAAA;AACxCjG,IAAAA,WAAU2f,GAAGgG,eAAe;AAE5B,QAAIwnB,MAAMntC,WAAUgY;AACpBhY,IAAAA,WAAUgY,mBAAiB,WAAA;AAC1B,UAAIlG,OAAOzR,KAAK+L,KAAK,cAAA,EAAgB;AACrC0F,WAAKpR,WAAW8tE,SAAS;AAEzBrhC,UAAI1+B,MAAMzO,YAAUsU,SAAAA;AAIpB,UAAInD,SAASmlB,SAASxkB,KAAKnP,MAAMwO;AACjCW,WAAKnP,MAAMwO,SAAO;AAClBW,WAAKnP,MAAMwO,SAAOW,KAAK0lC,eAAa;AAEpCn3C,WAAKukB,KAAKjiB,MAAMwO,SAAS9Q,KAAKukB,KAAKnE,eAAe3O,KAAK0lC,eAAermC,SAAS;AAAA,IACjF;AAEC,QAAI2nF,QAAM94F,WAAU03B;AACpB13B,IAAAA,WAAU03B,qBAAmB,SAASlb,GAAEC,GAAE1S,GAAEkK;AAC3C,UAAIuW,QAAQ,EAAC/J,cAAa,IAAA;AAC1Bq4E,YAAMrqF,MAAMzO,YAAU,CAACwqB,OAAM/N,GAAE1S,GAAEkK,CAAAA,CAAAA;AACjCuI,QAAEjc,YAAYiqB,MAAMjqB;AAAAA,IACtB;AAAA,EAEA;AAEA;AC5Be,SAAQw4F,wBAAC/4F,YACvB8wE;AAAAA,iBAAel0D,MAAM,gBAAgB5c,WAAU8a,MAChD;AAAA;ACJe,SAAQk+E,YAACh5F,YAAAA;AAGxB,WAASi5F,gBAAgB35C,QAAQv9C;AAChC,QAAIkd,QAAQjf,WAAUooC,KAAKa,MAAM,eAAeqW,OAAO1U;AACvD,QAAI17B,MAAM,CAAA;AACV,aAAS1K,IAAI,GAAGA,IAAIya,MAAMxa,QAAQD,KAAK;AACtC0K,UAAI+P,MAAMza,CAAAA,EAAGM,aAAa/C,OAAOU,WAAW;AAAA,IAC5C;AACD,WAAOyM;AAAAA,EACR;AAEA,WAASgqF,iBAAiB55C,QAAQv9C,QACjC;AAAA,QAAA;AACC,UAAIkd,QAAQ8F,KAAKujB,MAAMgX,OAAO1U,OAAOluB;AACrC,UAAIxN,MAAM,CAAA;AACV,eAAS1K,IAAI,GAAGA,IAAIya,MAAMxa,QAAQD,KAAK;AACtC,YAAIg8C,SAASvhC,MAAMza,CAEnB0K;AAAAA,YAAIsxC,OAAO9hC,SAAS8hC,OAAOjrC,OAAOirC,OAAOpgD,EAAAA,IAAM;AAAA,MAC/C;AACD,aAAO8O;AAAAA,IACP,SAAMhJ,GACN;AAAA,aAAO;AAAA,IACP;AAAA,EACF;AAEAlG,EAAAA,WAAU6jD,YAAY,iBAAe,EACpCp8C,QAAO,SAASg9C,KACf;AAAA,QAAInhD,MAAM,+CAA6CmhD,IAAIhqC;AAC3D,QAAA,CAAA,CAAKgqC,IAAIkuB,UAAS;AACjBrvE,aAAO;AAAA,IACP;AAED,QAAI61F,UAAU,iBAAe71F,MAAI,0CAAwCmhD,IAAItzC,SAAO;AACpF,aAAS3M,IAAE,GAAGA,IAAEigD,IAAIx8C,QAAQxD,QAAQD,KAAK;AACxC20F,iBAAW,0CAAwC10C,IAAIx8C,QAAQzD,GAAG+Q,MAAI,QAAMkvC,IAAIx8C,QAAQzD,GAAGsjB,QAAM;AAAA,IACjG;AACDqxE,eAAW;AACX,WAAOA;AAAAA,EACP,GACDn1C,WAAU,SAAS78B,MAAKzI,OAAM7X,IAAG9E;AAEhC,QAAIq3F,YAAYjyE,KAAKQ,qBAAqB,OAAA;AAC1C,aAAQnjB,IAAE,GAAEA,IAAE40F,UAAU30F,QAAOD,KAAK;AACnC40F,gBAAU50F,CAAAA,EAAGqhD,UAAU;AAAA,IACvB;AAED,aAASwzC,aAAanqF;AACrB,UAAIkqF,aAAYjyE,KAAKQ,qBAAqB,OAAA;AAC1C,eAAQnjB,KAAE,GAAEA,KAAE40F,WAAU30F,QAAQD,MAAK;AACpC40F,QAAAA,WAAU50F,EAAAA,EAAGqhD,UAAa32C,CAAAA,CAAAA,IAAIkqF,WAAU50F,EAAGka,EAAAA,KAAAA;AAAAA,MAC3C;AAAA,IACD;AAED,QAAI46E,OAAO,CAAA;AACX,QAAIzyF,GAAG9E,OAAOU,MAAS,GAAA;AACtB,UAAIupF,WAAWnlF,GAAG9E,OAAOU,MAAU,IAAA,IAAIkD,MAAM5D,OAAOw3F,aAAav5F,WAAU+B,OAAO6D,qBAAqB,GACvG;AAAA,eAASpB,IAAI,GAAGA,IAAIwnF,QAAQvnF,QAAQD,KAAK;AACxC80F,aAAKtN,QAAQxnF,CAAAA,CAAAA,IAAM;AAAA,MACnB;AACD60F,mBAAaC,IAChB;AAAA,IAAA,OAAS;AACN,UAAIt5F,WAAU0pB,eAAe3nB,OAAOy3F;AACnC;AACD,UAAIC,aAAav5F,SAASC,cAAc;AACxCs5F,iBAAWvoF,YAAY;AACvBuoF,iBAAW92F,MAAMi5C,UAAU;AAC3Bz0B,WAAK1mB,YAAYg5F,UAAAA;AAEjB,UAAIzxD,OAAM,CACTjmC,OAAOy3F,YACNz3F,OAAOy3F,WAAWpnF,QAAQ,GAAA,KAAA,KAAa,MAAM,KAC9C,mBAAmBrQ,OAAOU,SAAS,MAAMoE,GAAGzG,KAAK,UAAUJ,WAAU+O,IACpEoB,CAAAA,EAAAA,KAAK;AAEPnQ,MAAAA,WAAUooC,KAAK0B,IAAI9B,MAAK,SAASsX;AAChC,YAAIr3C,UAAUixF,iBAAiB55C,MAAAA;AAC/B,aAAIr3C,SAAQ;AACXA,oBAAUgxF,gBAAgB35C,QAAQv9C;QAClC;AACDs3F,qBAAapxF,OACbkf;AAAAA,aAAKpZ,YAAY0rF,UACrB;AAAA,MAAA,CAAA;AAAA,IACG;AAAA,EACD,GACD31C,WAAU,SAAS38B,MAAKtgB,IAAG9E,QAC1B;AAAA,QAAIo3F,UAAU,CACd;AAAA,QAAIC,YAAYjyE,KAAKQ,qBAAqB;AAC1C,aAAQnjB,IAAE,GAAEA,IAAE40F,UAAU30F,QAAOD,KAAK;AACnC,UAAG40F,UAAU50F,CAAGqhD,EAAAA;AACfszC,gBAAQj1F,KAAKk1F,UAAU50F,CAAGka,EAAAA,KAAAA;AAAAA,IAC3B;AACD,WAAOy6E,QAAQhpF,KAAKpO,OAAOw3F,aAAav5F,WAAU+B,OAAO6D,qBAAqB,GAAA;AAAA,EAC9E,GAED+0B,OAAM,SAASxT;EACd,EAGF;AAAA;ACpGe,SAAQuyE,YAAC15F;AAGvB,WAAS25F,OAAO15F;AACf,QAAIuU,IAAI;;AACRA,MAAEkE,YAAYzY;AACd,WAAOuU;AAAAA,EACP;AAED,MAAI24B,MAAMntC,WAAUszB;AACpBtzB,EAAAA,WAAUszB,QAAM,SAAS0U,MAAI3S;AAC5B2S,IAAAA,OAAIA,QAAK3nC,KAAKshD;AACd,QAAA,OAAW3Z,QAAO,UAAS;AAC1B,UAAIxzB,IAAImlF,OAAOt5F,KAAKozC,OAAAA;AACpB,eAASjvC,IAAE,GAAGA,IAAIwjC,KAAIvjC,QAAQD,KAAK;AAClCnE,aAAKozC,UAAQ,IAAIj/B;AACjB24B,YAAI12B,KAAKpW,MAAK2nC,KAAIxjC,CAAG6wB,GAAAA,IAAAA;AAAAA,MACrB;AAAA,IACD;AACA8X,UAAI1+B,MAAMpO,MAAKiU,SAAAA;AAAAA,EAClB;AAEA;ACtBe,SAAQslF,IAAC55F,YAAAA;AAEvB,MAAIiE,MAAM,EACT41F,QAAS,MAIV;AAAA,WAASC,SAASjzF,IACjB;AAAA,QAAI5G,MAAM,CAAA;AACV,aAASsV,OAAO1O;AACf,UAAI0O,IAAInD,QAAQ,GAAA,MAAS;AACxBnS,YAAIsV,OAAO1O,GAAG0O,GAAAA;AAEhB,SAAKtR,IAAI41F;AAAAA,aACD55F,IAAIG;AAEZ,WAAOH;AAAAA,EACP;AAED,MAAI85F;AACJ,WAAS9nE;AACRtY,iBAAaogF,YAAAA;AACbA,mBAAergF,WAAW,WAAA;AACzB,UAAG1Z,WAAU8gB,YAAW;AACvB,eAAO;AAAA,MACP;AACD9gB,MAAAA,WAAUiB;IACV,GAAC,CAAA;AAAA,EACF;AAED,WAAS+4F,gBAAgB5T,KACxBA;AAAAA,QAAI55D,WAAW;AACf45D,QAAI9wC,cAAc;AAElB8wC,QAAIn7E,UAAU,SAAS;EACvB;AACD,WAASgvF,iBAAiB7T,KACzBA;AAAAA,QAAI9wC,cAAc;AAClB,QAAI8wC,IAAI7yD;AACP6yD,UAAIpuE,iBACLouE;AAAAA,QAAI55D,WAAW;AAEf45D,QAAIn7E,UAAU,SAAS,CAAA,CAAA;AAAA,EACvB;AAGD,WAASivF,QAAQC,OAChB;AAAA,WAAOl2F,IAAI41F,SAASM,MAAM/5F,KAAK+5F,MAAMC;AAAAA,EACrC;AAEFp6F,EAAAA,WAAUq6F,WAAW,SAASj6C,QAAQr+C;AACrC,QAAIA;AAAQkC,YAAMlC;AAElBq+C,WAAOl9B,KAAK,UAAU,SAASi3E,OAAO7/B,MAAAA;AACrC,UAAI8/B,MAAMF,QAAQC;AAClB,UAAItzF,KAAK7G,WAAUwzC,QAAQ4mD,OAAOD,MAAMG,OAAAA;AACxCzzF,SAAGzG,KAAKg6F;AAERp6F,MAAAA,WAAUigD,YAAYp5C,EAAAA;AACtBorB,kBACF;AAAA,IAAA,CAAA;AACCmuB,WAAOl9B,KAAK,UAAU,SAASi3E,OAAOI,SAAAA;AACrC,UAAIH,MAAMF,QAAQC,KAClB;AAAA,UAAIn6F,WAAUwzC,QAAQ4mD,GAAAA;AACrBp6F,QAAAA,WAAUqrB,YAAY+uE,GAAAA;AAAAA,IACzB;AAEC,QAAII,QAAQ,CACZ;AAAA,aAASC;AACR,UAAGz6F,WAAU8gB,YAAW;AACvB,eAAO;AAAA,MACP;AACD,UAAI05E,MAAM/1F,QAAO;AAChBzE,QAAAA,WAAUsoC,MAAMkyD,OAAO,MACvBA;AAAAA,gBAAQ;MACR;AAAA,IACD;AAEDp6C,WAAOl9B,KAAK,OAAO,SAASi3E,OAAOI;AAClC,UAAIH,MAAMF,QAAQC,KAClB;AAAA,UAAA,CAAKn6F,WAAUwzC,QAAQ4mD,MAAK;AAC3B,YAAIvzF,KAAMszF,MAAMG,OAAAA;AAChBzzF,WAAGzG,KAAKg6F;AACRp6F,QAAAA,WAAUigD,YAAYp5C;AAEtB2zF,cAAMt2F,KAAK2C;AACX,YAAI2zF,MAAM/1F,UAAU;AACnBiV,qBAAW+gF,gBAAe,CAAA;AAAA,MAC3B;AAAA,IACH,CAECr6C;AAAAA,WAAOl9B,KAAK,WAAW,SAASjjB;AAC/B,UAAIA,eAAey6F,SAASC;AAC3BX,wBAAgBh6F,UACnB;AAAA,IAAA,CAAA;AACCogD,WAAOl9B,KAAK,QAAQ,SAASjjB,KAC5B;AAAA,UAAIA,eAAey6F,SAASC;AAC3BV,yBAAiBj6F,UAAAA;AAAAA,IACpB;AACCogD,WAAOl9B,KAAK,SAAS,SAASjjB,KAAAA;AAC7B,UAAIA,eAAey6F,SAASC;AAC3BV,yBAAiBj6F;IACpB,CAGCA;AAAAA,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAChD;AAAA,UAAIyG,KAAK,IAAIu5C,OAAO+5C,MAAMn6F,WAAUmG,SAAS/F;AAC7CJ,MAAAA,WAAUwzC,QAAQpzC,GAAMyG,IAAAA,GAAGyzF;AAC3Bt6F,MAAAA,WAAUwzC,QAAQpzC,KAAIA,KAAKA;AAE3B,aAAO;AAAA,IACT,CAAA;AAECJ,IAAAA,WAAUiG,YAAY,gBAAgB,SAAS7F,KAAAA;AAC9C,WAAKggD,OAAOtW,IAAI1pC,MAAI;AACnB,YAAI0R,OAAOgoF,SAAS95F,WAAUmG,SAAS/F,GAAAA,CAAAA;AACvC,YAAI+5F,QAAQ,IAAI/5C,OAAO+5C,MAAMroF,IAAAA;AAE7B,YAAIsoF,MAAMF,QAAQC,KAClB;AAAA,YAAIC,OAAOh6F;AACVC,eAAK4zC,cAAc7zC,KAAIg6F,GAAAA;AACxBh6C,eAAO38C,IAAI02F;AACX/5C,eAAO0qC,QAAQ,iBAAiBqP,KAChC;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CAAA;AACCn6F,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAAA;AAChD,UAAIyG,KAAKu5C,OAAOtW,IAAI1pC,GACpB;AAAA,UAAIoxD,MAAMsoC,SAAS95F,WAAUmG,SAAS/F,GAAAA,CAAAA;AAEtCyG,SAAG6lC,IAAI8kB,GAAAA;AACPpR,aAAO0qC,QAAQ,oBAAoBjkF,EAEnC;AAAA,aAAO;AAAA,IACT,CACC7G;AAAAA,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F;AAChD,UAAI+5F,QAAQ/5C,OAAOtW,IAAI1pC;AACvB,UAAI+5F,OAAM;AACT/5C,eAAO0qC,QAAQ,oBAAoBqP,KACnC/5C;AAAAA,eAAOvrB,OAAOz0B,GAAAA;AAAAA,MACd;AACD,aAAO;AAAA,IACT;EACA;AAEA;ACjJe,SAAQwmE,UAAC5mE,YAAAA;AAIvBA,EAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,QAAI20F,UAAO,IAAQC;AACnB,QAAI1tD,MAAMytD,QAAQE;AAClB,QAAIC;AACJH,YAAQE,WAAW,SAAS50F,GAC3B60F;AAAAA,mBAAa70F;AACb,aAAOinC,IAAI1+B,MAAMpO,MAAMiU;IAC1B;AAEE,aAAS0mF,QAAQC,kBAAkBC,aAAaC,kBAAkBC,YAEjE;AAAA,UAAIp7F,WAAUgL,WAAW,8BAA8BhL,WAAUiL,UAAU,0BAA0B,CAACgwF,kBAAkBC,aAAaC,kBAAkBC,YAAYL,UAClK,CAAA;AAAA;AAED,UAAIpuD,OAAO3sC,WAAUiG,YAAY,kBAAkB,SAAU7F;AAC5D,YAAKJ,CAAAA,WAAUiL,UAAU,oBAAoB,CAAC7K,KAAI66F,kBAAkBF,cAAc;AACjF16F,eAAKwK,aAAaxK,KAAKuK,WAAW;AAClCvK,eAAKgrB,YAAYjrB,GACjB;AAAA,QAAA;AAAA,MACL;AAEG,UAAIi7F,cAAcr7F,WAAUyG,cAAcs0F,UAAAA;AAC1C,UAAIO,aAAa,EAChBl4F,YAAY,IAAIyB,KAAKw2F,YAAY73F,IAAAA,EAAAA;AAIlC,UAAIxD,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AAC1D,YAAIsuF,eAAev7F,WAAU4L,OAAO5L,WAAUiN,KAAAA;AAC9CquF,mBAAWC,aAAa/4F,cAAc64F,YAAY30F;AAElD,YAAIsmB,MAAMhtB,WAAUw7F,sBAAsBT,UAC1CO;AAAAA,mBAAWl4F,aAAam4F,aAAaxhB,SAAS/sD,IAAI5F,CAAAA;AAClDk0E,mBAAWj4F,WAAWrD,WAAUwD,KAAKC,IAAI63F,WAAWl4F,YAAYm4F,aAAahtE,QAAQgtE,aAAa/sE,MAAAA;AAAAA,MAClG;AACD,UAAIxuB,WAAU2L,UAAU3L,WAAU2L,OAAO3L,WAAUiN,KAAAA,GAAQ;AAC1DquF,mBAAWt7F,WAAU2L,OAAO3L,WAAUiN,KAAAA,EAAOxK,UAAU44F,YAAY30F;AAAAA,MACnE;AAED1G,MAAAA,WAAU+V,YAAYulF,UAEtBt7F;AAAAA,MAAAA,WAAUujB,YAAYopB,IACtB;AAAA,IAAA;AAEDiuD,YAAQa,eAAez7F,WAAUoM,KAAK,cAAA,EAAgB,IAAI,EACzDsvF,OAAO,SAAST,kBAAkBC,aAAaC,kBAAkBC,YAChEJ;AAAAA,cAAQC,kBAAkBC,aAAaC,kBAAkBC,UACzD;AAAA,IAAA,GACDO,SAAS,SAASh2D,YAAYi2D;AAC7B,aAAOj2D;AAAAA,IACP,GACDk2D,UAAU,SAASl2D,YAClB;AAAA,aAAOtlC;AAAAA,IACP,EAGF,CAAA;AAAA,QAAGX,OAAOo8F,aAAa;AACtBp8F,aAAOo8F,YAAYC,QAAQ/7F,WAAUoM,KAAK,gBAAgB,CAAI,GAAA,EAC7D4vF,QAAQ,SAAUjiF,QAAQ3T,QAAQ6N,GAAG/N;AACpC,YAAI+1F,eAAev8F,OAAOo8F,YAAYI,UAAUniF;AAChDghF,qBAAa70F;AACb80F,gBAAQjhF,QAAQkiF,cAAc71F,QAAQF,EAAEE,UAAUF,EAAEksB,UAAAA;AAAAA,MACpD,GAED+pE,UAAU,SAAUpiF,QAAQ3T,QAAQF;AACnC,eAAOE;AAAAA,MACP,KACC,IACH;AAAA,IAAA;AAAA,EACH;AAEA;AC3Ee,SAAQg2F,IAACp8F,YAAAA;AAEvB,MAAImV,IAAI8Y,IACPouE,cAAc,IAAIj/D,OAAO,WAAW,GACpCk/D,GAAAA,iBAAiB,IAAIl/D,OAAO,aAAa,GAE1C;AAAA,WAASm/D,WAAWh1E,KAAAA;AACnB,WAAOA,IAAI8C,QAAQiyE,gBAAgB,IAAA,EAAMjyE,QAAQgyE,aAAa,EAAA;AAAA,EAC9D;AAED,WAASG,OAAOp1E,GAAG5T,QAClB4T;AAAAA,QAAIq1E,WAAWr1E,CAAAA;AACf5T,aAASipF,WAAWjpF,MAAAA;AACpB,SAAKiU,MAAMjU,MAAAA;AAAS4T,WAAK5T;AAEzB,QAAI2M,IAAIu8E,UAAUt1E;AAClBA,QAAIA,IAAIjH,EAAE/O,QAAQ+O,EAAE3B,OAAKrJ;AACzB,WAAOsS,MAAML,CAAAA,IAAG,SAAQ,MAAIA,IAAC;AAAA,EAC7B;AAED,WAASu1E,aAAav1E,GAAG5T,QAAQopF,SAChCx1E;AAAAA,QAAIq1E,WAAWr1E,CACf5T;AAAAA,aAASipF,WAAWjpF,MACpB;AAAA,QAAA,CAAKiU,MAAMjU,MAAWopF,KAAAA;AAASx1E,WAAK5T;AAEpC,QAAI2M,IAAIu8E,UAAUt1E;AAClBA,QAAIA,IAAIjH,EAAE/O,QAAQ+O,EAAE3B,OAAKrJ;AACzB,WAAOsS,MAAML,CAAAA,IAAG,SAAQ,MAAIA,KAAGjS,OAAKsS,MAAMjU,MAAAA,IAAQA,SAAO;AAAA,EACzD;AACD,WAASkpF,UAAUtrF;AAClB,QAAI+gB,IAAI;AACR,QAAIhO,SAASnkB,WAAUoM,KAAKywF,eAAe,CAAG3qF,EAAAA;AAC9C,QAAIvE,MAAMwW,OAAO,KAAKA,OAAO,CAAA,EAAGjS,aAAaiS,OAAO,GAAGjS;AACvD,aAAS1N,IAAI,GAAGA,IAAImJ,IAAIlJ,QAAQD,KAAK;AACpC,UAAIsf,MAAKnW,IAAInJ,GAAG7B,QAAQgL,IAAInJ,KAAKmJ,IAAInJ,CAAAA,EAAGsJ;AACxC,UAAIqS,IAAIs8E,WAAW34E,IAAGnhB,MAAMyO,KAC5B;AAAA,UAAIA,QAAQ+O,GAAE;AACb/O,iBAAU+O,IAAE;AACZgS,aAAIhS,IAAE;AAAA,MACN;AAEA;AAAA,IACD;AACD,WAAO,EAAE/O,OAAO+gB,GAAG3T,MAAMha,EACzB;AAAA,EAAA;AAED,WAASs4F,OAAOz1E,GAAAA;AACfA,QAAIo1E,WAAWp1E,CAAAA;AACf,QAAII,MAAMJ;AAAI,aAAO;AACrB,WAAO,MAAMA,IAAI4G;AAAAA,EACjB;AAED,WAAS8uE,UAAU51E,MAAMxkB;AACxB,YAAQrB,OAAOmgB,mBAAkBngB,OAAOmgB,iBAAiB0F,MAAM,IAAMxkB,EAAAA,KAAAA,IAASwkB,KAAK0c,eAAa1c,KAAK0c,aAAalhC,KAAAA,IAAO,SAAQ;AAAA,EACjI;AAED,WAASq6F,OAAO71E,MAAMsR,GACrB;AAAA,QAAIrR,IAAIkP,SAASnP,KAAKxkB,MAAME,MAAM,EAAA;AAElC,aAASsS,MAAK,GAAGA,MAAKnV,WAAU+Q,MAAMtM,QAAQ0Q,OAAM;AACnDiS,WAAKpnB,WAAU+Q,MAAMoE,GAAAA;AACrB,UAAIiS,IAAI;AAAG,eAAOjS;AAAAA,IAClB;AACD,WAAOsjB;AAAAA,EACP;AAED,WAASwkE,QAAQ91E,MAAMsR,GAAAA;AACtB,QAAIpR,IAAIiP,SAASnP,KAAKxkB,MAAMC,KAAK;AACjC,aAASqrB,MAAK,GAAGA,MAAKjuB,WAAU6tB,OAAOK,QAAQzpB,QAAQwpB;AACtD,UAAIjuB,WAAU6tB,OAAOK,QAAQD,GAAAA,IAAM5G;AAAG,eAAO4G;AAC9C,WAAOwK;AAAAA,EACP;AAED,WAASykE,UAAU1wC,KAAAA;AAClB,WAAOA,MAAM,MAAIA,MAAI,MAAM;AAAA,EAC3B;AACD,WAAS2wC,QAAQ3wC,KAChB;AAAA,WAAOA,MAAM,OAAKA,MAAI,MAAM;AAAA,EAC5B;AAED,WAAS4wC,QAAQ5wC,KAAK6wC,SAASl5E,QAAQm5E,QACtC;AAAA,QAAIv0D,MAAM,MAAIyjB,MAAI,eAAe6wC,UAAU;AAC3C,QAAIl5E;AACH4kB,aAAO,cAAc5kB,SAAS;AAC/B,QAAIm5E;AACHv0D,aAAO,cAAcu0D,SAAS;AAC/Bv0D,WAAO;AACP,WAAOA;AAAAA,EACP;AAED,WAASw0D,kBAAAA;AACR,QAAIx0D,MAAM;AAEV,QAAIjpC,OAAOE,WAAUiN;AACrB,QAAIjN,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAAA;AAClDnN,aAAQE,WAAU4L,OAAO5L,WAAUiN,KAAAA,EAAOxF,UAAU,SAAU,WAAW;AAC1EshC,WAAO,kBAAkBjpC,OAAO,cAAcE,WAAUoM,KAAKoxF,aAAa,GAAGj9F,YAAY;AAEzF,QAAIP,WAAUiN,SAAS,eAAe;AACrC,UAAIwwF,KAAKz9F,WAAUoM,KAAK2d,aAAa,CAAA,EAAGpC,qBAAqB,KAC7D;AAAA,eAASnjB,IAAI,GAAGA,IAAIi5F,GAAGh5F,QAAQD;AAC9B,YAAIi5F,GAAGj5F,CAAG0M,EAAAA,aAAa;AACtB63B,iBAAO,aAAawzD,WAAWkB,GAAGj5F,GAAGjE,SAAa,IAAA;AAAA,IACvD,WAAaP,WAAUiN,SAAS,YAAYjN,WAAUiN,SAAS,OAAO;AACnE,UAAIwwF,KAAKz9F,WAAUoM,KAAKywF,eAAe,GAAG3qF,WAAW,CAAA,EAAGA;AAExD62B,aAAO,aAAawzD,WAAWkB,GAAG,GAAGl9F,SAAa,IAAA,sBAAsBg8F,WAAWkB,GAAG,CAAA,EAAGl9F,SAAa,IAAA;AAAA,IACzG,WAAaP,WAAUiN,SAAS,QAAQ;AACrC,UAAIwwF,KAAKz9F,WAAUoM,KAAK2d,aAAa,GAAG7X;AACxC,eAAS1N,IAAI,GAAGA,IAAIi5F,GAAGh5F,QAAQD,KAAK;AACnCukC,eAAO,mBAAmBwzD,WAAWkB,GAAGj5F,CAAG6a,EAAAA,cAAc,mBAAmB9e,SAAa,IAAA;AACzFwoC,eAAO20D,gBAAgBD,GAAGj5F,CAAG6a,EAAAA,cAAc,kBAAkBnN,UAC7D62B;AAAAA,eAAO40D,UAAUF,GAAGj5F,CAAAA,EAAG6a,cAAc,gBAAA,CAAA;AACrC0pB,eAAO;AAAA,MACP;AAAA,IACJ,OAAS;AACNA,aAAO;AACP,UAAI00D,KAAKz9F,WAAUoM,KAAKywF,eAAe,CAAG3qF,EAAAA;AAC1C62B,aAAO20D,gBAAgBD,EAAAA;AACvB10D,aAAO;AAEP,UAAI60D,KAAK59F,WAAUoM,KAAK2d,aAAa,CAAA;AACrC,UAAI/pB,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AAC1D87B,eAAO;AACP,iBAASvkC,IAAI,GAAGA,IAAIo5F,GAAGl9F,WAAW6d,KAAK9Z,QAAQD,KAAK;AACnD,cAAIsf,MAAK85E,GAAGl9F,WAAW6d,KAAK/Z,CAC5BukC;AAAAA,iBAAO,mBAAmBwzD,WAAWz4E,IAAGxe,MAAM,CAAA,EAAG/E,aAAa;AAAA,QAC9D;AACDwoC,eAAO;AACP9a,aAAK2vE,GAAGl9F,WAAW6d,KAAK,CAAGjZ,EAAAA,MAAM,GAAG6b;AAAAA,MACpC,WAAUy8E,GAAGl9F,WAAW2iC,WAAW,SAAS;AAC5C0F,eAAO40D,UAAUC;MACrB,OAAU;AACNA,aAAKA,GAAG1rF,WAAW0rF,GAAG1rF,WAAWzN,SAAS,CAC1C;AAAA,eAAOm5F,GAAG1sF,UAAUkB,QAAQ;AAC3BwrF,eAAKA,GAAG3+C;AACT2+C,aAAKA,GAAG1rF;AAER62B,eAAO;AACP,iBAASvkC,IAAI,GAAGA,IAAIo5F,GAAGn5F,QAAQD;AAC9BukC,iBAAO,qBAAqBwzD,WAAWqB,GAAGp5F,GAAGjE,SAAa,IAAA;AAC3DwoC,eAAO;AACP9a,aAAK2vE,GAAG,CAAA,EAAGz8E;AAAAA,MACX;AAAA,IACD;AACD4nB,WAAO;AACP,WAAOA;AAAAA,EACP;AAED,WAAS40D,UAAUC,IAAAA;AAClB,QAAI70D,MAAM;AACV,QAAI5W,IAAIyrE,GAAGt5F,iBAAiB,IAAA;AAC5B,aAASE,IAAI,GAAGA,IAAI2tB,EAAE1tB,QAAQD,KAAK;AAClC,UAAI0D,OAAO;AACX,UAAI5C,QAAQ6sB,EAAE3tB,CAAGF,EAAAA,iBAAiB;AAElC,eAASyvB,IAAI,GAAGA,IAAIzuB,MAAMb,QAAQsvB;AACjC7rB,aAAKhE,KAAKoB,MAAMyuB,CAAG1U,EAAAA,cAAc,iBAAmB9e,EAAAA,SAAAA;AAErDwoC,aAAO,oBAAoBzjC,MAAM,GAAG6b,eAAe,gBAAgBo7E,WAAWr0F,KAAKiI,KAAK,GAAQ,CAAA,IAAA;AAChG8d,WAAK3oB,MAAM,CAAA,EAAG6b;AAAAA,IACd;AACD,WAAO4nB;AAAAA,EACP;AAED,WAAS20D,gBAAgBD,IAAAA;AACxB,QAAII,KACH90D,MAAM;AACP,QAAI/oC,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAAA,GAAQ;AAC1D,UAAIjN,WAAU4L,OAAO5L,WAAUiN,KAAAA,EAAO6wF;AACrCD,cAAMJ,GAAG,CAAGvrF,EAAAA;AAEburF,WAAKA,GAAG,CAAA,EAAGvrF;AAAAA,IACX;AAED,aAAS1N,IAAI,GAAGA,IAAIi5F,GAAGh5F,QAAQD;AAC9BukC,aAAO,wBAAwBwzD,WAAWkB,GAAGj5F,GAAGjE,SAAa,IAAA;AAC9D4U,SAAKsoF,GAAG,GAAGp8E;AAEX,QAAIw8E,KAAK;AACR,UAAIzsF,QAAQ;AACZ,UAAI2sF,YAAYN,GAAG,GAAGp8E;AACtB,UAAI28E,UAAU;AACd,eAASx5F,IAAI,GAAGA,IAAIq5F,IAAIp5F,QAAQD,KAAK;AACpCukC,eAAO,6BAA6Bi1D,UAAU,gBAAgBzB,WAAWsB,IAAIr5F,CAAAA,EAAGjE,aAAa;AAC7F6Q,iBAASysF,IAAIr5F,CAAG6c,EAAAA;AAChB,YAAIjQ,SAAS2sF,WAAW;AACvBA,uBAAcN,GAAGO,OAAWP,IAAAA,GAAGO,SAAS38E,cAAc;AACtD28E;AAAAA,QACA;AACD7oF,aAAK0oF,IAAI,CAAA,EAAGx8E;AAAAA,MACZ;AAAA,IACD;AACD,WAAO0nB;AAAAA,EACP;AAED,WAASk1D,SAASC,QAAAA;AACjB,QAAIn1D,MAAM;AACV,QAAI/+B,MAAMhK,WAAUg0C;AACpB,QAAIpoC,SAAS5L,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAE5D;AAAA,QAAIjN,WAAUiN,SAAS,YAAYjN,WAAUiN,SAAS,OAAO;AAE5D,eAASzI,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AACnBukC,eAAO,2BAA2BwzD,WAAWvyF,IAAIxF,GAAG0N,WAAW,CAAA,EAAG3R,aAAa,8BAA8Bg8F,WAAWvyF,IAAIxF,CAAG0N,EAAAA,WAAW,CAAG3R,EAAAA,SAAAA,IAAa;AAAA,IAE1K,WAAaP,WAAUiN,SAAS,eAAe;AAE5C,eAASzI,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AAC/BukC,eAAO,iBAAiB/+B,IAAIxF,CAAGsJ,EAAAA,WAAWhJ,aAAa,KAAA,IAAS,aAAay3F,WAAWvyF,IAAIxF,GAAGjE,SAAa,IAAA;AAAA,IAEhH,WAAaP,WAAUiN,SAAS,QAAQ;AAErC,UAAIjD,MAAMhK,WAAU80C,mBACpB;AAAA,eAAStwC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAIyP,IAAIjK,IAAIxF,GAAGpB;AACf,YAAI6Q,EAAE7O,QAAAA,IAAYpF,WAAUyM,UAAUrH,QAAAA;AACrC6O,cAAIjU,WAAUyM;AAEf,eAAOwH,IAAIjK,IAAIxF,CAAGnB,EAAAA,UAAU;AAC3B,cAAIw7C,IAAI5qC,EAAEgF,SAAa,IAAA,MAAMhF,EAAE+E,YAAgBhZ,IAAAA,WAAUyM,UAAUuM,YAAAA,KAAiBhZ,WAAUm+F,YAAYC;AAC1G,cAAIv+F,MAAMG,WAAUm+F,YAAYt/C,CAAK5qC,IAAAA,EAAExK,QAAY,IAAA;AACnD,cAAI40F,aAAaH,SAASnB,UAAU/8F,WAAU25E,eAAe1lE,IAAI,OAAW,IAAA;AAC5E,cAAI6pC,WAAWogD,SAASnB,UAAU/8F,WAAU25E,eAAe1lE,CAAI,GAAA,iBAAA,IAAqB;AAEpF80B,iBAAO,iBAAkBlpC,MAAM,IAAK,aAAa2R,KAAK8D,MAAMzV,MAAM,CAAK,IAAA,cAAcg/C,IAAI,wBAAwBf,WAAW,cAAcugD,aAAa;AACvJpqF,cAAIjU,WAAUwD,KAAKC,IAAIwQ,GAAG,GAAG,KAC7B;AAAA,cAAIA,EAAE7O,QAAAA,KAAapF,WAAUwM,UAAUpH,QAAAA;AACtC;AAAA,QACD;AAAA,MACD;AAAA,IACD,WAAUwG,UAAUA,OAAOnE,UAAU,QAAQ;AAC7C,UAAIuC,MAAMhK,WAAUoM,KAAK2d,aAAa,CAAGpC,EAAAA,qBAAqB,IAC9D;AAAA,eAASnjB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAI65F,aAAaH,SAASnB,UAAU/yF,IAAIxF,CAAAA,GAAI,WAAW;AACvD,YAAIs5C,WAAWogD,SAASnB,UAAU/yF,IAAIxF,CAAAA,GAAI,qBAAqB;AAC/DukC,eAAO,qCAAqC+U,WAAW,cAAcugD,aAAa,gBAAgB9B,WAAWvyF,IAAIxF,CAAAA,EAAGjE,aAAa;AAAA,MACjI;AAAA,IACJ,OAAS;AACN,eAASiE,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAI85F,IAAIC;AACR,YAAIv+F,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AAE1DqxF,eAAK9B,OAAOxyF,IAAIxF,GAAG7B,MAAME,IAAAA;AACzB07F,gBAAM/B,OAAOxyF,IAAIxF,CAAG6c,EAAAA,WAAAA,IAAa;AAAA,QACtC,OAAW;AAEN,cAAIm9E,YAAYx+F,WAAU+B,OAAOuuC,wBAAwB,IAAI;AAC7DguD,eAAK3B,aAAa3yF,IAAIxF,CAAAA,EAAG7B,MAAME,MAAM27F,WAAW,IAChDD;AAAAA,gBAAM5B,aAAa3yF,IAAIxF,CAAAA,EAAG7B,MAAMyO,OAAOotF,SAAAA,IAAW;AAAA,QAClD;AACD,YAAI/2E,MAAM82E,MAAM;AAAI;AACpB,YAAIE,KAAK3B,OAAO9yF,IAAIxF,GAAG7B,MAAMC,GAAAA;AAC7B,YAAI87F,MAAM5B,OAAO9yF,IAAIxF,CAAAA,EAAG7B,MAAMwO,MAE9B;AAAA,YAAIwtF,SAAS30F,IAAIxF,CAAAA,EAAG0M,UAAUvL,MAAM,KAAK,CAAG0kB,EAAAA,QAAQ,YAAY,EAChE;AAAA,YAAIs0E,WAAW;AAAoB;AAEnC,YAAIC,OAAO5+F,WAAUmG,SAAS6D,IAAIxF,GAAGM,aAAa9E,WAAU+B,OAAOwC,eACvD,CAAA;AAAA,YAAA,CAAKq6F;AAAM;AACvB,YAAI/+F,MAAM++F,KAAK5oD;AACf,YAAI6oD,OAAOD,KAAKzoD;AAChB,YAAI1xC,SAASm6F,KAAKxkD,WAAW;AAE7B,YAAIp6C,WAAUiN,SAAS,SAAS;AAC/ByxF,gBAAMpoE,SAAStsB,IAAIxF,CAAAA,EAAG2c,cAAc,EACpCs9E;AAAAA,eAAKnoE,SAAStsB,IAAIxF,CAAAA,EAAG7B,MAAMC,KAAK,EAAA,IAAM5C,WAAU2f,GAAGuG;AAEnDrmB,gBAAMm9F,OAAOhzF,IAAIxF,CAAI3E,GAAAA,GAAAA;AACrBg/F,iBAAO5B,QAAQjzF,IAAIxF,CAAIq6F,GAAAA,IAAAA;AAAAA,QAC5B,WAAe7+F,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AACjEpN,gBAAM;AACN,cAAIikB,MAAK9Z,IAAIxF,GAAGsJ,WAAWA,WAAWA;AACtC+wF,iBAAO/6E,IAAGmiE;AACV,cAAI6Y,UAAU7wE;AACdA,eAAKjkB,IAAIxF,CAAGsJ,EAAAA,WAAWqT;AACvBs9E,eAAK3B,OAAO9yF,IAAIxF,CAAAA,EAAG7B,MAAMC,GACzB67F;AAAAA,gBAAMA,KAAK;AACXxwE,eAAK6wE;AAAAA,QACV,OAAW;AACN,cAAI90F,IAAIxF,GAAGsJ,cAAc9N,WAAUoM,KAAK2d,aAAa,CAAA;AAAI;AACzD,cAAIlc,SAAS7N,WAAUoM,KAAK,gBAAgB,CAAG8F,EAAAA,WAAW;AAC1D,cAAIsB,SAASipF,WAAW5uF,OAAOqD,UAAUkB,QAAQ,kBAAA,KAAA,KAA4BvE,OAAOlL,MAAME,OAAO,CACjGy7F;AAAAA,gBAAM9B,OAAOxyF,IAAIxF,CAAAA,EAAGsJ,WAAWnL,MAAME,MAAM2Q,MAC3C;AAAA,QAAA;AAEDu1B,eAAO,oBAAoB81D,OAAO,YAAYh/F,MAAM,aAAa8+F,SAAS,UAAUL,KAAK,UAAUG,KAAK,cAAcF,MAAM,eAAeG,MAAM,YAAYj6F,SAAS;AAEtK,YAAIk6F,UAAU,SAAS;AACtB51D,iBAAO,sBAAsBwzD,WAAWvyF,IAAIxF,CAAG0N,EAAAA,WAAW,CAAG3R,EAAAA,SAAAA,IAAa;AAC1E,cAAI89F,aAAaH,SAASnB,UAAU/yF,IAAIxF,GAAG0N,WAAW,CAAA,GAAI,OAAW,IAAA;AACrE,cAAI4rC,WAAWogD,SAASnB,UAAU/yF,IAAIxF,CAAAA,EAAG0N,WAAW,CAAI,GAAA,iBAAA,IAAqB;AAC7E62B,iBAAO,4BAA4B+U,WAAW,cAAcugD,aAAa,gBAAgB9B,WAAWvyF,IAAIxF,CAAG0N,EAAAA,WAAW,CAAG3R,EAAAA,SAAAA,IAAa;AAAA,QAC3I,OAAW;AACN,cAAI89F,aAAaH,SAASnB,UAAU/yF,IAAIxF,CAAAA,GAAI,OAAW,IAAA;AACvD,cAAIs5C,WAAWogD,SAASnB,UAAU/yF,IAAIxF,CAAAA,GAAI,qBAAqB;AAC/DukC,iBAAO,4BAA4B+U,WAAW,cAAcugD,aAAa,gBAAgB9B,WAAWvyF,IAAIxF,CAAAA,EAAGjE,aAAa;AAAA,QACxH;AACDwoC,eAAO;AAAA,MACP;AAAA,IACA;AAEF,WAAOA;AAAAA,EACP;AAED,WAASg2D,MAAMnvF,OAAOC,KAAK/D,MAAMhM,MAAMqkB,QAAQm5E,QAC9C;AAAA,QAAIY,SAAS;AACb,QAAIp+F,QAAQ,aAAa;AACxBo+F,eAAS;AACTp+F,aAAO;AAAA,IACP;AAEDA,WAAOA,QAAQ;AAEf,QAAIipC,MAAM;AACV,QAAIn5B,OAAO;AAEV,UAAIovF,gBAAgBh/F,WAAUkV;AAC9B,UAAI+pF,gBAAgBj/F,WAAUiN;AAC9B4C,YAAM7P,WAAUwD,KAAKsI,OAAK,QAAA,EAAU+D;AACpCA,YAAM7P,WAAUwD,KAAK,SAAOsI,OAAK,MAAU9L,IAAAA,WAAUwD,KAAK,SAAOsI,OAAK,QAAQ+D,GAAO7P,IAAAA,WAAUwD,KAAKC,IAAIoM,KAAK,GAAG/D,IAAAA;AAEhHi9B,YAAMq0D,QAAQ,SAASt9F,MAAMqkB,QAAQm5E,MAAAA;AACrC,eAAS4B,YAAY,IAAIr6F,KAAK+K,SAASsvF,YAAarvF,CAAAA,KAAKqvF,YAAY7+F,KAAKmD,KAAKC,IAAIy7F,WAAW,GAAGpzF,IAAO,GAAA;AACvGzL,aAAKyX,eAAeonF,WAAWpzF,IAC/Bi9B;AAAAA,eAAOm0D,UAAU,MAAUK,IAAAA,gBAAAA,EAAkBlzE,QAAQ,KAAU,OAAO4zE,SAASC,MAAAA,IAAUf,QAAQ,MACjG;AAAA,MAAA;AACDp0D,aAAOo0D,QAAQ,OAAA;AAEf98F,WAAKyX,eAAeknF,eAAeC,aACtC;AAAA,IAAA,OAAS;AACNl2D,YAAMq0D,QAAQ,QAAQt9F,MAAMqkB,QAAQm5E,MAAUC,IAAAA,gBAAAA,EAAkBlzE,QAAQ,KAAU,GAAA,IAAO4zE,SAASC,MAAUf,IAAAA,QAAQ;IACpH;AACD,WAAOp0D;AAAAA,EACP;AACD/oC,EAAAA,WAAUm/F,aAAaJ;AACvB,WAASK,SAASr2D,KAAKf;AACtB,QAAIj5B,OAAM/O,WAAU+O,IAAAA;AACpB,QAAIkF,IAAI/T,SAASC,cAAc,KAC/B8T;AAAAA,MAAEtR,MAAMod,UAAU;AAClB7f,aAASM,KAAKC,YAAYwT,CAE1BA;AAAAA,MAAE1T,YAAY,eAAewO,OAAM,6CAA6Ci5B,OAAM;AACtF9nC,aAAS2kB,eAAe9V,MAAKrO,WAAWge,QAAQmpB,mBAAmBkB,GACnE7oC;AAAAA,aAAS2kB,eAAe9V,IAAKswF,EAAAA,OAAAA;AAC7BprF,MAAEnG,WAAWC,YAAYkG,CACzB;AAAA,EAAA;AAED,WAASqrF,OAAO1vF,OAAOC,KAAK/D,MAAMk8B,MAAKloC,MAAMqkB,QAAQm5E;AACpD,QAAIv0D,MAAM;AACV,QAAUjpC,OAAAA,QAAQ,UAAS;AAC1BipC,YAAMw2D,gBAAgBz/F,IAAAA;AAAAA,IACzB,OAAO;AACJipC,YAAMg2D,MAAMtwF,MAAMpO,MAAM,CAACuP,OAAOC,KAAK/D,MAAMhM,MAAMqkB,QAAQm5E,MACzD,CAAA;AAAA,IAAA;AAED8B,aAASr2D,KAAKf,IAAAA;AAAAA,EACd;AAED,WAASu3D,gBAAgBC,SACxB;AAAA,QAAIz2D,MAAM;AACV,aAAQvkC,IAAE,GAAGA,IAAIg7F,QAAQ/6F,QAAQD,KAAI;AACpCukC,aAAOy2D,QAAQh7F,CAAAA,EAAGuV,OAAOolF,WAAWK,QAAQh7F,GAAGoL,OAAO4vF,QAAQh7F,CAAGqL,EAAAA,KAAK2vF,QAAQh7F,CAAGsH,EAAAA,MAAM0zF,QAAQh7F,CAAG1E,EAAAA,MAAM0/F,QAAQh7F,CAAG2f,EAAAA,QAAQq7E,QAAQh7F,CAAAA,EAAG84F;IACtI;AACDv0D,WAAO;AACP,WAAOA;AAAAA,EACP;AAaD/oC,EAAAA,WAAUy/F,QAAQ,SAASz3D,MAAKloC,MAAMqkB,QAAQm5E,QAAAA;AAC7C,WAAOgC,OAAO7wF,MAAMpO,MAAM,CAAC,MAAM,MAAM,MAAM2nC,MAAKloC,MAAMqkB,QAAQm5E;EAClE;AACCt9F,EAAAA,WAAU0/F,aAAa,SAAS9vF,OAAOC,KAAK/D,MAAMk8B,MAAKloC,MAAMqkB,QAAQm5E;AACpE,QAAW1tF,OAAAA,SAAS,UAAU;AAC7BA,cAAQ5P,WAAU2zB,UAAUsc,SAASrgC,KACrCC;AAAAA,YAAM7P,WAAU2zB,UAAUsc,SAASpgC;IACnC;AAED,WAAOyvF,OAAO7wF,MAAMpO,MAAMiU,SAC5B;AAAA,EAAA;AAEA;ACvYe,SAAQqrF,WAAC3/F;AAExBA,EAAAA,WAAU+B,OAAOwvC,eAAe,CAAC,aAAa,aAC9CvxC;AAAAA,EAAAA,WAAU+B,OAAOoxB,oBAAoB;AACrCnzB,EAAAA,WAAU+B,OAAO69F,kBAAkB;AACnC5/F,EAAAA,WAAU2f,GAAGmG,aAAa;AAI1B,MAAI+5E,yBAAyB;AAC7B7/F,EAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,UAAM4F,YAAY7L,WAAUqE;AAC5B,QAAGwH,UAAUi0F,oBAAmB;AAC/B;AAAA,IACF,OAAM;AACJj0F,gBAAUi0F,qBAAqB;AAG/B9/F,MAAAA,WAAU6B,MAAMgK,WAAW,aAAa,SAAS3F,GAChD;AAAA,cAAMu1E,eAAev1E,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eAAAA,GAAAA;AAC3D,YAAIk3E,cAAc;AACjBokB,mCAAyB,EACxBz/F,IAAIq7E,aAAa32E,aAAa9E,WAAU+B,OAAOwC,eAAAA,GAC/C+I,UAAUyyF,2BAA2BtkB,YAAAA,EAAAA;AAAAA,QAEtC;AAAA,MACJ,CAAA;AACEz7E,MAAAA,WAAUiG,YAAY,aAAa;eAC3B4F,UAAUi0F;AAAAA,MAAkB;IAEpC;AAAA,EACF,CAAA;AAEA9/F,EAAAA,WAAUiG,YAAY,WAAW,SAAS7F,KAAAA;AACzC,SAAIJ,WAAU+B,OAAO69F,iBAAgB;AACpC;AAAA,IACA;AACD5/F,IAAAA,WAAUggG,cAAc5/F,GACxB;AAAA,WAAO;AAAA,EACR,CAEA;AAAA,GAAA,WAAA;AAGC,QAAIggD,SAAS,CAAC,gBAAgB,gBAAgB,cAAc,uBAAuB,cAAA;AACnF,QAAI6/C,kBAAkB,WAAA;AACrBjgG,MAAAA,WAAUkgG,cAAc,IAAA;AACxB,aAAO;AAAA,IACT;AACC,aAAS17F,IAAE,GAAGA,IAAE47C,OAAO37C,QAAQD,KAAI;AAClCxE,MAAAA,WAAUiG,YAAYm6C,OAAO57C,CAAAA,GAAIy7F;IACjC;AAAA,EACD;AAEDjgG,EAAAA,WAAU2zB,UAAUwsE,mBAAmB,SAASvwF,OAAOC,KAAKhJ,IAAAA;AAAK,WAAOA,GAAGM,KAAKk6C,OAAO,GAAE,EAAA;AAAA,EAAI;AAC7FrhD,EAAAA,WAAU2zB,UAAUysE,qBAAqB,SAASxwF,OAAOC,KAAKhJ,IAAAA;AAAK,WAAOA,GAAG6kB,WAAW;AAAA,EAAG;AAC3F1rB,EAAAA,WAAU2zB,UAAU0sE,kBAAkB,SAASzwF,OAAOC,KAAKhJ;AAC1D,QAAI7G,WAAU0K,cAAc7D,EAAAA,KAAO7G,WAAU+B,OAAOkjB,KAAI;AACvD,aAAOjlB,WAAU2zB,UAAUoK,SAASnuB,OAAOC,KAAKhJ,EAAAA,IAAM,MAAK7G,WAAU2zB,UAAUgf,aAAa9iC,KAAKD,OAAO/I;IACxG,WAAU7G,WAAU0K,cAAc7D,KAAK;AACvC,aAAO7G,WAAU2zB,UAAUoK,SAASnuB,OAAOC,KAAKhJ,EAAAA,IAAM,MAAK7G,WAAU2zB,UAAUgf,aAAa/iC,OAAOC,KAAKhJ,EAC1G;AAAA,IAAA,WAAY7G,WAAU+B,OAAOkjB,KAAK;AAChC,aAAOjlB,WAAU2zB,UAAUmc,UAAUjgC,KAAKD,OAAO/I;IACnD,OAAQ;AACN,aAAO7G,WAAU2zB,UAAUmc,UAAUlgC,OAAOC,KAAKhJ,EACjD;AAAA,IAAA;AAAA,EACF;AAEA7G,EAAAA,WAAUggG,gBAAgB,SAAS5/F,KAAAA;AAClC,QAAIA,OAAMC,KAAKigG;AAAoB;AACnCjgG,SAAK6/F,cAAc,IACnB;AAAA,QAAG7/F,KAAK4K,UAAU,qBAAqB,CAAC7K,GAAAA,CAAAA,MAAS,OAAM;AACtD;AAAA,IACA;AAED,QAAI4sB;AACJ,QAAG6yE,0BAA0BA,uBAAuBz/F,MAAMA,KAAG;AAC5D4sB,YAAM6yE,uBAAuBvyF;AAAAA,IAC/B,OAAQ;AACN0f,YAAM3sB,KAAKkgG,wBAAwBngG,GACnC;AAAA,IAAA;AAGD,QAAI4sB,KAAI;AACP3sB,WAAKmgG,kBAAkBngG,KAAKogG,iBAAiBzzE,GAAAA;AAC7C3sB,WAAKqgG,iBAAiBtgG,GAAAA;AACtBC,WAAKsgG,iBAAiB3zE,GAAAA;AAEtB3sB,WAAK4K,UAAU,eAAe,CAAC7K,GAAAA,CAAAA;AAAAA,IAC/B;AAAA,EACF;AAEA,GAAA,WAAA;AAEA,aAASwgG,YAAYp8C,MAAAA;AACpBA,aAAOA,QAAQ;AAEf,UAAItW,MAAMuuD,WAAWj4C,IACpBvvC,GAAAA,OAAOuvC,KAAK9Z,MAAM,KAAA,GAClBm2D;AAED,UAAI5rF,MAAM;AACTA,eAAOA,KAAK,CACZ;AAAA,MAAA;AAED,cAAQA,MACP;AAAA,QAAA,KAAK;AACJ4rF,yBAAe3yD,MAAM;AACrB;AAAA,QACD,KAAK;AACJ2yD,yBAAe3yD;AACf;AAAA,QACD;AACC2yD,yBAAe;AACf;AAAA,MAAA;AAGF,aAAOA;AAAAA,IACR;AAEA7gG,IAAAA,WAAUkgG,gBAAgB,SAASY,QAClC;AAAA,UAAIC,KAAK1gG,KAAKmgG;AACd,UAAI/8E,UAAUpjB,KAAKigG;AACnBjgG,WAAKigG,qBAAqB;AAE1B,UAAIS,MAAMA,GAAGjzF,YAAW;AACvB,YAAIsD,QAAQ2vF,GAAG1/E;AACf,YAAIrhB,WAAU+B,OAAOsvC,qBAAqB;AACzChxC,eAAK4K,UAAU,oBAAoB,CAACwY,OACpC,CAAA;AAAA,iBAAOs9E,GAAGjzF,WAAWC,YAAYgzF;QACjC;AAED,YAAIA,GAAGp+F,MAAMukB,SAAS;AACrB65E,aAAGp+F,MAAME,OAAQuO,CAAAA,QAAQ;AAAA;AAEzB2vF,aAAGp+F,MAAMukB,QAAS9V,CAAAA,QAAQ;AAE3B,YAAI0vF,QAAQ;AACXC,aAAGjzF,WAAWC,YAAYgzF,EAC7B;AAAA,QAAA,OAAO;AAEJ,cAAIp+F;AACJ,cAAGrB,OAAOmgB,kBAAiB;AAC1B9e,oBAAQrB,OAAOmgB,iBAAiBs/E,IAAI,IACxC;AAAA,UAAA,WAAYA,GAAGl9D,cAAa;AACxBlhC,oBAAQo+F,GAAGl9D;AAAAA,UACX;AACD,cAAI1qB,SAAQynF,YAAYj+F,MAAM,kBAAuBi+F,CAAAA,IAAAA,YAAYj+F,MAAM,qBACvE+W,CAAAA;AAAAA,qBAAW;AACV,gBAAGqnF,GAAGjzF,YAAW;AAChBizF,iBAAGjzF,WAAWC,YAAYgzF;YAC1B;AAAA,UACD,GAAE5nF;QACH;AAED9Y,aAAK4K,UAAU,oBAAoB,CAACwY,OACpC,CAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAEC,GAnED;AAqEAzjB,EAAAA,WAAU6B,MAAMP,QAAQ,WAAW,SAAS4E;AAC3C,QAAIA,EAAE61C,WAAW;AAChB/7C,MAAAA,WAAUkgG;EACZ,CAEAlgG;AAAAA,EAAAA,WAAU2gG,mBAAmB,SAAS3zE;AACrC,QAAI+zE,KAAK/gG,WAAUwgG;AACnBxgG,IAAAA,WAAU4kB,KAAKnkB,YAAYsgG,EAAAA;AAC3B,QAAI3vF,QAAQ2vF,GAAG1/E;AACf,QAAIlQ,SAAS4vF,GAAG5/E;AAEhB,QAAInhB,WAAU+B,OAAOsvC,qBAAoB;AACxC,UAAIxuC,OAAOmqB,IAAInqB,OAAOmqB,IAAI7X,MAAI/D,QAAQ4b,IAAI5b;AAC1C,UAAGpR,WAAUqC,QAAarC,KAAAA,WAAUqC,UAAU2+F,WAAU;AAEvD,YAAGhhG,WAAU+B,OAAOkjB,KAAI;AACvBpiB,kBAAQ7C,WAAUqC,QAAAA,EAAU2+F;AAAAA,QAChC,OAAQ;AACJn+F,kBAAQ7C,WAAUqC,QAAAA,EAAU2+F;AAAAA,QAC5B;AAAA,MAED;AAED,UAAI95E,QAAQrkB,OAAOuO;AACnB,UAAG8V,QAAQ5lB,OAAO8e,YAAW;AAC5Bvd,eAAOvB,OAAO8e,aAAahP;AAAAA,MAC3B;AACDvO,aAAO2O,KAAK5C,IAAI,GAAG/L,IAAAA;AAEnBk+F,SAAGp+F,MAAME,OAAOA,OAAO;AACvBk+F,SAAGp+F,MAAMC,MAAMoqB,IAAIpqB,OAAOoqB,IAAIiB,KAAG9c,SAAAA,CAAQ6b,IAAI7b,UAAU;AAAA,IACzD,OAAQ;AAEN,YAAM8vF,UAAUjhG,WAAUqE,WAAWgb,cAAc,eAAA,EAAiByH;AACpEi6E,SAAGp+F,MAAMC,MAAMq+F,UAAU,KAAK;AAC9B,UAAIj0E,IAAI7X,MAAM,GAAE;AACf4rF,WAAGp+F,MAAMukB,QAAQ;AACjB65E,WAAGp+F,MAAME,OAAQuO,CAAAA,QAAQ;AAEzBsI,mBAAW;AACVqnF,aAAGp+F,MAAME,OAAO;AAAA,QAChB,GAAC;MACL,OAAS;AACNk+F,WAAGp+F,MAAME,OAAO;AAChBk+F,WAAGp+F,MAAMukB,QAAS9V,CAAAA,QAAQ;AAE1BsI,mBAAW,WAAA;AACVqnF,aAAGp+F,MAAMukB,QAAQ;AAAA,QACjB,GAAC;MACF;AACD65E,SAAG7vF,YAAY6vF,GAAG7vF,UAAUmZ,QAAQ,gBAAe,IAAIA,QAAQ,iBAAgB,MAAI,cAAY2C,IAAI7X,MAAI,IAAE,SAAO;AAAA,IAChH;AAED4rF,OAAGG,kBAAkB,MAAA;AACpBC,wBAAkBJ,EAClBA;AAAAA,SAAGG,kBAAkB;AAAA,IAAI;AAE1BxnF,eAAW,MAAA;AACVynF,wBAAkBJ,EAAG;AAAA,IAAA,GACnB;EACJ;AAEA,WAASI,kBAAkBC,gBAC1B;AAAA,UAAMC,YAAYD,eAAe5+D;AACjC,UAAM8+D,gBAAgBthG,WAAUqE,WAAWm+B,sBAAAA;AAG3C,UAAM++D,eAAeD,cAAc/+D,SAAS8+D,UAAU9+D;AAGtD,QAAIg/D,eAAe,GAAG;AACrBH,qBAAez+F,MAAMC,MAAM,GAAG65F,WAAW2E,eAAez+F,MAAMC,GAAO2+F,IAAAA,YAAAA;AAAAA,IACrE;AAAA,EACF;AAEAvhG,EAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzCjG,IAAAA,WAAUkgG,cAAAA;AACV,QAAG7/F,KAAKmgG,iBAAgB;AACvB,UAAI/9D,MAAMpiC,KAAKmgG;AACf,UAAG/9D,IAAI30B,YAAW;AACjB20B,YAAI30B,WAAWC,YAAY00B,GAC3B;AAAA,MAAA;AACDpiC,WAAKmgG,kBAAkB;AAAA,IACvB;AAAA,EACF,CAAA;AACAxgG,EAAAA,WAAUwhG,+BAA+B,SAASt7F;AACjDlG,IAAAA,WAAUkgG,cAAAA;AAAAA,EACX;AACAlgG,EAAAA,WAAUygG,mBAAmB,WAC5B;AAAA,QAAA,CAAKpgG,KAAKmgG,iBAAgB;AAGzB,UAAIO,KAAK1gG,KAAKmgG,kBAAkBtgG,SAASC,cAAc,KAEvDE;AAAAA,WAAK4nB,SAAS2Z,cAAcm/D,EAAAA;AAE5BA,SAAG7vF,YAAY;AACf,UAAIlR,WAAUyhG;AACbV,WAAG7vF,aAAa;AACjB,UAAIlR,WAAU+B,OAAOkjB;AAAK87E,WAAG7vF,aAAa;AAE1C,UAAIgrC,WAAW77C,KAAK4nB,SAAS4Z,0BAC7B;AAAA,UAAIt+B,OAAO;AAAA;AAAA;AAAA;AAAA,kCAIqB24C,QAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAQhC34C,cAAQ;AACR,UAAI6mB,UAAUpqB,WAAU+B,OAAOwvC;AAC9B,eAAS/sC,IAAI,GAAGA,IAAI4lB,QAAQ3lB,QAAQD,KAAK;AACxC,YAAI03C,WAAW77C,KAAK4nB,SAAS8Z,0BAA0B1hC,KAAK0nB,OAAOC,OAAOoC,QAAQ5lB,CAClFjB,CAAAA,CAAAA;AAAAA,gBAAQ,QAAQ24C,QAAmC9xB,2BAAAA,QAAQ5lB,cAAcxE,WAAU+nB,OAAOC,OAAOoC,QAAQ5lB,CAAAA,CAAAA,CAAAA;AAAAA,gCAC7E4lB,QAAQ5lB,CAAAA,CAAAA,gBAAkBxE,WAAU+nB,OAAOC,OAAOoC,QAAQ5lB,CACtF,CAAA,CAAA;AAAA,MAAA;AAEFjB,cAAQ;AAERw9F,SAAGxgG,YAAYgD;AACfvD,MAAAA,WAAU6B,MAAMk/F,IAAI,SAAS,SAASl6F,IAAAA;AACrC7G,QAAAA,WAAU0hG,iBAAiB76F,GAAGT,UAAUS,GAAGurB;MAC9C,CACE;AAAA,UAAIpyB,WAAU+B,OAAOsvC,qBAAoB;AACxCrxC,QAAAA,WAAU6jB,gBAAgB7jB,WAAUoM,KAAK,gBAAgB,CAAI,GAAA,UAAUpM,WAAUwhG,4BACjFxhG;AAAAA,QAAAA,WAAU6B,MAAM7B,WAAUoM,KAAK,cAAgB,EAAA,CAAA,GAAI,UAAUpM,WAAUwhG,4BAAAA;AAAAA,MACvE;AAAA,IACD;AAED,WAAOnhG,KAAKmgG;AAAAA,EACb;AAEAxgG,EAAAA,WAAU0hG,mBAAmB,SAASv6E,MACrC;AAAA,QAAIsb,MAAMziC,WAAUwgG;AACpB,SAAKr5E,QAAQA,QAAQsb;AAAK;AAE1B,QAAGtb,KAAK9gB,QAAQ,0BAAyB;AACxCrG,MAAAA,WAAUkgG;AACV;AAAA,IACA;AAED,QAAI/1E,OAAOnqB,WAAUmS,cAAcgV,IAAAA;AACnC,QAAIgD,KAAK/X,QAAQ,gBAAa;AAC7B,UAAIhS,MAAKJ,WAAUsgG;AACnBtgG,MAAAA,WAAUsoB,OAAO8B,QAAQD,KAAKxkB,MAAM,GAAK,EAAA,CAAA,EAAG0kB,QAAQ,SAAQ,KAAKjqB,GACjE;AAAA,IAAA;AACAJ,MAAAA,WAAU0hG,iBAAiBv6E,KAAKrZ;EAClC;AAEA,WAASiyF,2BAA2Bh6F,SAAAA;AACnC,QAAIlD,OAAO;AACX,QAAID,MAAM;AAEV,QAAIukB,OAAOphB;AACX,WAAOohB,QAAQA,QAAQnnB,WAAU4kB,MAAK;AACrC/hB,cAAQskB,KAAK0b;AACbjgC,aAAOukB,KAAKL,YAAUK,KAAKwG;AAC3BxG,aAAOA,KAAK2b;AAAAA,IACZ;AACD,QAAG3b,MAAK;AACP,UAAIhS,KAAMtS,OAAOkD,QAAQsb,cAAY,IAAMrhB,WAAUwmB,KAAG,IAAK,IAAI;AACjE,UAAIyH,KAAMrrB,MAAMmD,QAAQob,eAAa,IAAMnhB,WAAUwjD,KAAG,IAAK,IAAI;AAEjE,aAAO,EAAE3gD,MAAWD,KAASuS,IAAO8Y,IACnC7c,OAAMrL,QAAQsb,aAAalQ,QAAOpL,QAAQob,aAC3C;AAAA,IAAA;AACD,WAAO;AAAA,EACR;AAEAnhB,EAAAA,WAAUugG,0BAA0B,SAASngG,KAC5C;AAAA,QAAIuhG,QAAQ3hG,WAAUi+C,iBAAiB79C;AACvC,WAAO2/F,2BAA2B4B;EACnC;AAEA3hG,EAAAA,WAAU0gG,mBAAoB,SAAStgG;AACtC,QAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,QAAI2gG,KAAK/gG,WAAUwgG;AAEnBxgG,IAAAA,WAAUsgG,qBAAqBlgG;AAI/B,QAAI+jB,SAAS,EACZiU,SAASp4B,WAAU2zB,UAAUwsE,iBAAiBt5F,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,GAC1ErD,MAAMxD,WAAU2zB,UAAU0sE,gBAAgBx5F,GAAGzD,YAAYyD,GAAGxD,UAAUwD;AAEvE,QAAI+6F,eAAeb,GAAG1hF,cAAc,sBAAA;AACpCuiF,iBAAarhG,YAAY,SAAS4jB,OAAOiU,OAAAA;AACzC,QAAIypE,YAAYd,GAAG1hF,cAAc,mBACjCwiF;AAAAA,cAAUthG,YAAY4jB,OAAO3gB;AAE7BxD,IAAAA,WAAUioB,SAAS6Z,gBAAgBi/D,IAAI,CAAC58E,OAAOiU,SAASjU,OAAO3gB,MAAM2M,KAAK,GAAA,CAAA;AAG1E,QAAI2xF,OAAOf,GAAG1hF,cAAc,qBAAA;AAC5B,UAAM0iF,cAAc/hG,WAAU2zB,UAAUysE,mBAAmBv5F,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EACvF;AAAA,QAAGk7F,aAAY;AACdD,WAAK/kF,UAAU8X,OAAO,YAAA;AACtBitE,WAAKvhG,YAAYwhG;AAAAA,IACnB,OAAM;AACJD,WAAK/kF,UAAUtZ,IAAI;IACnB;AAAA,EACF;AAGA;ACnXe,SAAQwmB,SAACjqB,YAExBA;AAAAA,EAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzC,QAAI+7F;AACJ,QAAIhiG,WAAU6jD,YAAYoF,WAAW;AACpC+4C,kCAA4BhiG,WAAU6jD,YAAYoF,UAAUjF;AAAAA,IAC5D;AACD,QAAIi+C,wBAAwBjiG,WAAU+B,OAAOyvC,aAAaljC,MAAAA;AAC1D,QAAI4zF,yBAAyBliG,WAAU+B,OAAO0vC,cAAcnjC,MAAAA;AAE5DtO,IAAAA,WAAUiG,YAAY,oBAAoB,SAAS7F,KAAAA;AAClD,UAAIC,KAAK0B,OAAOogG,iBAAiB9hG,KAAK8F,SAAS/F,GAAI6pB,EAAAA,UAAU;AAC5D5pB,aAAK0B,OAAO0mD,kBAAkB;AAAA,MAC9B,OACI;AACJpoD,aAAK0B,OAAO0mD,kBAAkB;AAC9BzoD,QAAAA,WAAU+B,OAAOyvC,eAAeywD,sBAAsB3zF,MACtDtO;AAAAA,QAAAA,WAAU+B,OAAO0vC,gBAAgBywD,uBAAuB5zF,MAGxD;AAAA,YAAGtO,WAAU6jD,YAAYoF,WAAW;AACnCjpD,UAAAA,WAAU6jD,YAAYoF,UAAUjF,YAAYg+C;AAAAA,QAC5C;AAAA,MACD;AAED,UAAIv9C,MAAMpkD,KAAK0B,OAAOi4B,SAAS92B;AAC/B,UAAI7C,KAAK0B,OAAO0mD,iBAAiB;AAChC,iBAASjkD,IAAI,GAAGA,IAAIigD,IAAIhgD,QAAQD,KAAK;AACpC,cAAIigD,IAAIjgD,CAAG6C,EAAAA,QAAQ,aAAa;AAC/B,gBAAIhH,KAAK0B,OAAO0mD,mBAAmBzoD,WAAU6jD,YAAYoF,WAAW;AACnEjpD,cAAAA,WAAU6jD,YAAYoF,UAAUjF,YAAY,SAAS78B,MAAMzI,OAAO7X,IACjE;AAAA,oBAAIu9D,UAAUpkE,WAAU8tB,YAAYznB,QAAQ8gB,MAAM,mBAAA;AAClD,oBAAIxkB,QAAQ;AACZyhE,wBAAQ/kD,cAAc,qBAAqBU,UAAUpd;AACrDyhE,wBAAQ/kD,cAAc,kBAAA,EAAoBU,UAAUpd;AACpDyhE,wBAAQzhE,MAAMod,UAAUpd;AAExB3C,gBAAAA,WAAU0oD,gBAAAA;AAAAA,cACjB;AAAA,YACM;AAAA,UACD;AAAA,QACD;AAED,YAAI05C,oBAAoB,CAAC,kBAAkB;AAC3C,YAAIC,gBAAgB,CAACriG,WAAU+B,OAAOyvC,cAAcxxC,WAAU+B,OAAO0vC,aACrE;AAAA,iBAASjtC,IAAI,GAAGA,IAAI49F,kBAAkB39F,QAAQD,KAAK;AAClD,cAAI89F,mBAAmBF,kBAAkB59F;AACzC,mBAAS6K,IAAI,GAAGA,IAAIgzF,cAAc59F,QAAQ4K,KAAK;AAC9C,gBAAIkzF,eAAeF,cAAchzF,CAAAA;AACjC,gBAAIM,QAAS;AACb,qBAASnF,IAAI,GAAGA,IAAI+3F,aAAa99F,QAAQ+F,KAAK;AAC7C,kBAAI+3F,aAAa/3F,MAAM83F,kBAAkB;AACxC3yF,wBAAQnF;AACR;AAAA,cACA;AAAA,YACD;AACD,gBAAImF,SAAU,IAAG;AAChB4yF,2BAAa9uF,OAAO9D,OAAO,CAAA;AAAA,YAC3B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAEDtP,WAAKg6B,cAAAA;AAEL,aAAO;AAAA,IACT,CAAA;AAEC,aAASmoE,YAAYh2C,KAAKv4C,GAAGwkB,GAAGtxB;AAC/B,UAAIs7F,OAAOxuF,EAAE0T,qBAAqB6kC,GAAAA;AAClC,UAAIk2C,OAAOjqE,EAAE9Q,qBAAqB6kC,GAAAA;AAClC,eAAShoD,IAAIk+F,KAAKj+F,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC1C,YAAIi0B,IAAIiqE,KAAKl+F,CAAAA;AACb,aAAK2C,MAAK;AACTsxB,YAAEqtB,WAAW;AAEb,cAAG7xC,EAAE4xC;AACJptB,cAAEotB,UAAU;AAAA,QACjB,OAAS;AACL,cAAIrxC,IAAItU,SAASC,cAAc,MAAA;AAC/BqU,YAAEtD,YAAY;AACdsD,YAAEjU,YAAY4G,KAAKs7F,KAAKj+F,CAAAA,CAAAA;AACxBi0B,YAAE3qB,WAAW8Y,aAAapS,GAAGikB,CAC7BA;AAAAA,YAAE3qB,WAAWC,YAAY0qB,CAAAA;AAAAA,QACzB;AAAA,MACD;AAAA,IACD;AAED,QAAI0U,MAAMntC,WAAU+mD;AACpB/mD,IAAAA,WAAU+mD,iBAAiB,WAE1B;AAAA,UAAI+B,KAAKzoD,KAAKsjD;AACd,UAAItjD,KAAK0B,OAAO0mD,iBAAiB;AAChCK,WAAGnmD,MAAMm1B,aAAa;AAGtBgxB,WAAGnmD,MAAMod,UAAU;AAAA,MACnB;AACD,UAAInX,MAAMukC,IAAI1+B,MAAMpO,MAAMiU,SAC1B;AAAA,UAAIjU,KAAK0B,OAAO0mD,iBAAiB;AAEhCK,WAAGnmD,MAAMm1B,aAAa;AACtBgxB,WAAGnmD,MAAMod,UAAU;AAAA,MACnB;AAED,UAAI1f,KAAK0B,OAAO0mD,iBAAiB;AAEhC,YAAIk6C,eAAetiG,KAAKsjD,YAAAA;AACxB,YAAIi/C,eAAeviG,KAAKwiG,cAAcF,aAAah+F,UAAU;AAC7Di+F,qBAAaxiG,KAAKJ,WAAU+O,IAAAA;AAC5B6zF,qBAAa1xF,aAAa;AAC1BsxF,oBAAY,YAAYG,cAAcC,cAAc,SAASpmF,GAAAA;AAC5D,iBAAOA,EAAEkC;AAAAA,QACb,CACG8jF;AAAAA,oBAAY,SAASG,cAAcC,cAAc;AACjDJ,oBAAY,UAAUG,cAAcC,cAAc,SAASpmF,GAC1D;AAAA,cAAA,CAAIA,EAAEvU,QAAQxD;AAAQ,mBAAO;AAC7B,iBAAO+X,EAAEvU,QAAQuJ,KAAK5C,IAAK4N,EAAE+pC,iBAAiB,GAAI,CAAA,CAAA,EAAIp/C;AAAAA,QAC1D,CAEGw7F;AAAAA,qBAAa70F,WAAW8Y,aAAag8E,cAAcD,YAEnDtiG;AAAAA,aAAKumD,UAAUg8C,YACf;AAAA,YAAI5iG,WAAU+mB;AACb/mB,UAAAA,WAAU+mB,UAAUjZ,WAAWC,YAAY/N,WAAU+mB,SAAAA;AACtD1mB,aAAK0mB,YAAY67E;AAEjB,YAAI5iG,WAAU+B,OAAOgvC;AACpB/wC,UAAAA,WAAU6B,MAAM+gG,aAAaliG,YAAY,aAAaV,WAAUgpD,aAAAA;AAEjEhpD,QAAAA,WAAUooD,sBACV/nD;AAAAA,aAAKqoD,gBACL;AAAA,MAAA;AACD,aAAO9/C;AAAAA,IACT;AAEC,QAAIwsC,OAAOp1C,WAAUynD;AACrBznD,IAAAA,WAAUynD,gBAAgB,WAAA;AACzB,UAAIpnD,KAAKwiG,aAAa;AACrBxiG,aAAKwiG,YAAY/0F,WAAWC,YAAY1N,KAAKwiG,WAC7CxiG;AAAAA,aAAKwiG,cAAcxiG,KAAK0mB,YAAY;AAAA,MACpC;AAED,aAAOquB,KAAK3mC,MAAMpO,MAAMiU,SAC1B;AAAA,IAAA;AAAA,EACA;AAGA;ACjJO,IAAIwuF,eAAe,CACtB,MACA,MACA,MACA,MACA,MACA,MACA;AAEJ,IAAIC,UAAyB;AACzB,WAASA,SAAQC,SAASvqE,GACtB;AAAA,QAAIA,MAAM;AACN,YAAM,IAAInmB,MAAM;AACpBjS,SAAK2iG,UAAUA;AACf3iG,SAAKo4B,IAAIA;AAAAA,EACZ;AACDsqE,EAAAA,SAAQE,UAAU,SAAU7rE;AACxB,WAAO,IAAI2rE,SAAQD,aAAa1wF,QAAQglB,GAChD,CAAA;AAAA,EAAA;AAGI2rE,EAAAA,SAAQrqF,UAAUwqF,MAAM,SAAUzqE,GAC9B;AAAA,WAAOp4B,KAAKo4B,MAAMA,IAAIp4B,OAAO,IAAI0iG,SAAQ1iG,KAAK2iG,SAASvqE;EAC/D;AAEIsqE,EAAAA,SAAQrqF,UAAUgI,SAAS,SAAUyiF,OACjC;AAAA,WAAO9iG,KAAK2iG,YAAYG,MAAMH,WAAW3iG,KAAKo4B,MAAM0qE,MAAM1qE;AAAAA,EAClE;AAEIsqE,EAAAA,SAAQrqF,UAAUC,WAAW,WACzB;AAAA,QAAI7O,IAAIg5F,aAAaziG,KAAK2iG;AAC1B,QAAI3iG,KAAKo4B;AACL3uB,WAAKzJ,KAAKo4B,IAAI,IAAI,MAAM,MAAM/yB,OAAOrF,KAAKo4B,CAAK3uB,IAAAA;AACnD,WAAOA;AAAAA,EACf;AACIi5F,EAAAA,SAAQrqF,UAAU0qF,eAAe,WAC7B;AAAA,WAAO/iG,KAAK2iG,YAAY,IAAI,IAAI3iG,KAAK2iG,UAAU;AAAA,EACvD;AACI,SAAOD;AACX;ACtCO,IAAIM,YAAY,SAAU3kF,OAAAA;AAC7B,SAAOA,UAAU,QAAQA,UAAUhQ;AACvC;AACO,IAAI40F,WAAW,SAAU5kF,OAC5B;AAAA,SAAA,OAAcA,UAAU;AAC5B;AACO,IAAI6kF,eAAe,SAAU7kF;AAChC,SAAcA,OAAAA,UAAU,YAAYokF,aAAaU,SAAS9kF,KAC9D;AAAA;AACO,IAAIpG,UAAUlK,MAAMkK;AAIpB,IAAI8sC,QAAQ,SAAUx1C,OAAOC;AAChC,MAAIA,QAAAA,QAAgB;AAAEA,UAAMD;AAAAA,EAAQ;AACpC,MAAI0E,UAAU7P,WAAW,GAAG;AACxBoL,UAAMD;AACNA,YAAQ;AAAA,EACX;AACD,MAAI6zF,OAAO,CACX;AAAA,WAASj/F,IAAIoL,OAAOpL,IAAIqL,KAAKrL;AACzBi/F,SAAKv/F,KAAKM,CAAAA;AACd,SAAOi/F;AACX;AAIO,IAAIC,SAAS,SAAUhlF,OAAOilF,OAAAA;AACjC,MAAIn/F,IAAI;AACR,MAAI8+C,QAAQ;AACZ,MAAIhrC,QAAQoG,QAAQ;AAChB,WAAOla,IAAIm/F,OAAOn/F;AACd8+C,YAAM9+C,CAAAA,IAAK,GAAGiH,OAAOiT,KAAAA;AAAAA,EAC5B,OACI;AACD,WAAOla,IAAIm/F,OAAOn/F;AACd8+C,YAAM9+C,CAAAA,IAAKka;AAAAA,EAClB;AACD,SAAO4kC;AACX;AACO,IAAIsgD,UAAU,SAAU7qC,MAAAA;AAC3B,MAAIzgD,QAAQygD,OAAO;AACf,WAAOA;AAAAA,EACV;AACD,SAAO,CAACA,IACZ;AAAA;AACO,SAAS8qC,SAAS9qC,MAAM+qC,cAAcC,WAAAA;AACzC,MAAIA,cAAmB,QAAG;AAAEA,gBAAY;AAAA,EAAM;AAC9C,MAAI3sE,MAAM1xB,OAAOqzD,IAAAA;AACjB+qC,iBAAeA,gBAAgB;AAC/B,MAAI1sE,IAAI3yB,SAASq/F,cAAc;AAC3B,WAAOp+F,OAAO0xB,GAAAA;AAAAA,EACjB;AACD0sE,iBAAeA,eAAe1sE,IAAI3yB;AAClC,MAAIq/F,eAAeC,UAAUt/F,QAAQ;AACjCs/F,iBAAaL,OAAOK,WAAWD,eAAeC,UAAUt/F,MAC3D;AAAA,EAAA;AACD,SAAOs/F,UAAUz1F,MAAM,GAAGw1F,YAAAA,IAAgBp+F,OAAO0xB,GACrD;AAAA;AAIO,IAAIzxB,QAAQ,SAAUyxB,KAAK4sE,KAAK91D;AACnC,MAAI+1D,SAAS7sE,IAAIzxB,MAAMq+F,GAAAA;AACvB,SAAO91D,MACD+1D,OAAO31F,MAAM,GAAG4/B,KAAKziC,OAAO,CAACw4F,OAAO31F,MAAM4/B,GAAAA,EAAK/9B,KAAK6zF,GACpDC,CAAAA,CAAAA,IAAAA;AACV;AAgBO,IAAIC,QAAQ,SAAU1nF,GAAGC,GAC5B;AAAA,MAAI0V,IAAI3V,IAAIC;AAEZ,SAAO0V,IAAI1V,IAAI,IAAI0V,IAAI1V,IAAI0V;AAC/B;AAIO,IAAIgyE,SAAS,SAAU3nF,GAAGC,GAAAA;AAC7B,SAAO,EAAE7O,KAAK4D,KAAK8D,MAAMkH,IAAIC,IAAI2nF,KAAKF,MAAM1nF,GAAGC,CAAAA,EAAAA;AACnD;AACO,IAAI4nF,QAAQ,SAAUpkG,KACzB;AAAA,SAAA,CAAQojG,UAAUpjG,GAAQA,KAAAA,IAAIwE,WAAW;AAC7C;AAQO,IAAI6/F,WAAW,SAAUrkG,KAC5B;AAAA,SAAA,CAAQokG,MAAMpkG,GAClB;AAAA;AAIO,IAAIujG,WAAW,SAAU/jD,KAAKl4B,KAAAA;AACjC,SAAO+8E,SAAS7kD,GAAAA,KAAQA,IAAIrtC,QAAQmV,GAAAA,MAAAA;AACxC;ACnHO,IAAIg9E,WAAW,SAAUl9E,GAAGw3B,GAAG5qC,GAAGsM,GAAG/b,GAAGsF,GAAAA;AAC3C,MAAIyW,MAAAA,QAAc;AAAEA,QAAI;AAAA,EAAI;AAC5B,MAAI/b,cAAc;AAAEA,QAAI;AAAA,EAAI;AAC5B,MAAIsF,MAAAA,QAAc;AAAEA,QAAI;AAAA,EAAI;AAC5B,SAAO,IAAIjF,KAAKA,KAAKioC,IAAIzlB,GAAGw3B,IAAI,GAAG5qC,GAAGsM,GAAG/b,GAAGsF,CAAAA,CAAAA;AAChD;AAMO,IAAI06F,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAA;AAI9D,IAAIC,UAAU,MAAO,KAAK,KAAK;AAI/B,IAAIC,UAAU;AAMd,IAAIC,eAAeJ,SAAS,MAAM,GAAG;AAKrC,IAAIK,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AASrC,IAAIC,aAAa,SAAUrpF,MAC9B;AAAA,SAAQA,OAAO,MAAM,KAAKA,OAAO,QAAQ,KAAMA,OAAO,QAAQ;AAClE;AACO,IAAIzC,SAAS,SAAU2F,OAAAA;AAC1B,SAAOA,iBAAiB7Z;AAC5B;AACO,IAAIigG,cAAc,SAAUpmF,OAAAA;AAC/B,SAAO3F,OAAO2F,KAAAA,KAAAA,CAAW+I,MAAM/I,MAAMoc,QAAAA,CAAAA;AACzC;AAUO,IAAIiqE,cAAc,SAAUC,OAAOC;AAGtC,MAAIC,UAAUF,MAAMlqE,QACpB;AAAA,MAAIqqE,UAAUF,MAAMnqE,QAAAA;AAEpB,MAAIsqE,eAAeF,UAAUC;AAE7B,SAAO3zF,KAAKI,MAAMwzF,eAAeX;AACrC;AAIO,IAAIY,YAAY,SAAU7hG;AAC7B,SAAOuhG,YAAYvhG,MAAMmhG,YAC7B;AAAA;AAIO,IAAIW,cAAc,SAAUC,SAC/B;AAAA,SAAO,IAAI1gG,KAAK8/F,aAAa7pE,YAAYyqE,UAAUd,OAAAA;AACvD;AACO,IAAIe,eAAe,SAAUhiG,MAAAA;AAChC,MAAI69B,QAAQ79B,KAAKooC;AACjB,SAAOvK,UAAU,KAAKwjE,WAAWrhG,KAAKqoC,eAChC,CAAA,IAAA,KACA24D,WAAWnjE,KACrB;AAAA;AAIO,IAAIokE,aAAa,SAAUjiG;AAC9B,SAAOohG,YAAYphG,KAAKuoC,UAAAA,CAAAA;AAC5B;AAIO,IAAI25D,aAAa,SAAUlqF,MAAM6lB,OAAAA;AACpC,MAAI79B,OAAO+gG,SAAS/oF,MAAM6lB,QAAQ,GAAG,CACrC;AAAA,SAAO,CAACokE,WAAWjiG,IAAAA,GAAOgiG,aAAahiG,IAC3C,CAAA;AAAA;AAIO,IAAImiG,UAAU,SAAUniG,MAAMghD,MAAAA;AACjCA,SAAOA,QAAQhhD;AACf,SAAO,IAAIqB,KAAKA,KAAKioC,IAAItpC,KAAKqoC,eAAkBroC,GAAAA,KAAKooC,eAAepoC,KAAKmoC,WAAAA,GAAc6Y,KAAK93C,SAAY83C,GAAAA,KAAKx2C,WAAcw2C,GAAAA,KAAKlY,cAAckY,KAAKohD,gBAAAA,CAAAA,CAAAA;AACvJ;AACO,IAAIrnB,QAAQ,SAAU/6E,MACzB;AAAA,MAAIqiG,QAAQ,IAAIhhG,KAAKrB,KAAKs3B,QAAAA,CAAAA;AAC1B,SAAO+qE;AACX;AACO,IAAIC,aAAa,SAAU9gG,OAC9B;AAAA,MAAI+gG,SAAS,CACb;AAAA,WAASvhG,IAAI,GAAGA,IAAIQ,MAAMP,QAAQD,KAAK;AACnCuhG,WAAO7hG,KAAKq6E,MAAMv5E,MAAMR,CAC3B,CAAA,CAAA;AAAA,EAAA;AACD,SAAOuhG;AACX;AAIO,IAAIlhE,OAAO,SAAU7/B,OACxBA;AAAAA,QAAM6/B,KAAK,SAAUroB,GAAGC;AACpB,WAAOD,EAAEse,QAAYre,IAAAA,EAAEqe;EAC/B,CACA;AAAA;AACO,IAAIkrE,oBAAoB,SAAUxhD,MAAMlZ,KAC3C;AAAA,MAAIA,QAAa,QAAG;AAAEA,UAAM;AAAA,EAAO;AACnC,MAAI9nC,OAAO,IAAIqB,KAAK2/C,IAAAA;AACpB,SAAO,CACHq/C,SAASrgG,KAAKqoC,eAAAA,EAAiBlzB,YAAY,GAAG,GAAA,GAC9CkrF,SAASrgG,KAAKooC,YAAAA,IAAgB,GAAG,GAAG,MACpCi4D,SAASrgG,KAAKmoC,cAAc,GAAG,GAAA,GAC/B,KACAk4D,SAASrgG,KAAK2oC,YAAe,GAAA,GAAG,MAChC03D,SAASrgG,KAAK4oC,iBAAiB,GAAG,GAAA,GAClCy3D,SAASrgG,KAAK6oC,cAAAA,GAAiB,GAAG,GAAA,GAClCf,MAAM,MAAM,EAAA,EACdn7B,KAAK,EACX;AAAA;AACO,IAAI81F,oBAAoB,SAAUC,OACrC;AAAA,MAAI55B,KAAK;AACT,MAAI65B,OAAO75B,GAAGrrB,KAAKilD;AACnB,MAAKC,CAAAA;AACD,UAAM,IAAI7zF,MAAM,wBAAwB7G,OAAOy6F;AACnD,SAAO,IAAIrhG,KAAKA,KAAKioC,IAAIxW,SAAS6vE,KAAK,IAAI,EAAK7vE,GAAAA,SAAS6vE,KAAK,CAAI,GAAA,EAAA,IAAM,GAAG7vE,SAAS6vE,KAAK,CAAI,GAAA,EAAA,GAAK7vE,SAAS6vE,KAAK,CAAA,GAAI,OAAO,GAAG7vE,SAAS6vE,KAAK,CAAI,GAAA,EAAA,KAAO,GAAG7vE,SAAS6vE,KAAK,CAAI,GAAA,EAAA,KAAO;AACvL;AACA,IAAIC,kBAAkB,SAAU5iG,MAAM6iG,UAElC;AAAA,MAAIC,UAAU9iG,KAAK8+D,eAAe,SAAS,EAAE+jC;AAE7C,SAAOC,QAAQj8E,QAAQ,KAAK,OAAO;AACvC;AACO,IAAIk8E,iBAAiB,SAAU/iG,MAAM6iG,UACxC;AAAA,MAAIG,gBAAgBC,KAAKC,iBAAiBC,gBAAkBN,EAAAA;AAE5D,MAAIO,gBAAgB,IAAI/hG,KAAKuhG,gBAAgB5iG,MAAMgjG,aACnD,CAAA;AAAA,MAAIK,iBAAiB,IAAIhiG,KAAKuhG,gBAAgB5iG,MAAM6iG,aAAa,QAAQA,aAAkB,SAAIA,WAAW,KAAA,CAAA;AAC1G,MAAIS,WAAWD,eAAe/rE,YAAY8rE,cAAc9rE,QAAAA;AACxD,SAAO,IAAIj2B,KAAKrB,KAAKs3B,QAAAA,IAAYgsE;AACrC;AC5JA,IAAIC,aAA4B,WAC5B;AAAA,WAASA,YAAWpsF,QAAQlB,MAAAA;AACxBpZ,SAAK8wB,UAAU;AACf9wB,SAAK+wB,UAAU;AACf/wB,SAAK84F,UAAU;AACf94F,SAAK+yD,QAAQ;AACb/yD,SAAKsa,SAASA;AACdta,SAAKoZ,OAAOA;AACZ,QAAIkB,WAAW,WAAW;AACtBta,WAAK+wB,UAAU3X,KAAKm0B,MACdn0B,KAAKuzD,SACL,IAAInoE,KAAK4U,KAAKuzD,OAAOlyC,QAAAA,IAAY,CACvCz6B;AAAAA,WAAK8wB,UAAU1X,KAAKm0B,MAAMn0B,KAAKutF,QAAQ,IAAIniG,KAAK4U,KAAKutF,MAAMlsE,QAAY,IAAA,CAAA;AAAA,IAC1E,WACQngB,WAAW,UAAU;AAC1Bta,WAAK+wB,UAAU3X,KAAKm0B,MAAMn0B,KAAKurC,KAAK,IAAIngD,KAAK4U,KAAKurC,GAAGlqB,QAAY,IAAA,CAAA;AAAA,IACpE,WACQngB,WAAW,SAAS;AACzBta,WAAK8wB,UAAU1X,KAAKm0B,MAAMn0B,KAAKurC,KAAK,IAAIngD,KAAK4U,KAAKurC,GAAGlqB,QAAAA,IAAY;IACpE;AAAA,EACJ;AASDisE,EAAAA,YAAWruF,UAAUuuF,SAAS,SAAUzjG,MAClCnD;AAAAA,MAAAA,KAAK+yD;AACP,QAAI8zC,WAAW7mG,KAAK8wB,WAAW3tB,OAAOnD,KAAK8wB;AAC3C,QAAIg2E,UAAU9mG,KAAK+wB,WAAW5tB,OAAOnD,KAAK+wB;AAC1C,QAAI/wB,KAAKsa,WAAW,WAAW;AAC3B,UAAIusF;AACA,eAAO;AACX,UAAIC;AACA,eAAO;AAAA,IACd,WACQ9mG,KAAKsa,WAAW,UAAU;AAC/B,UAAIwsF;AACA,eAAO;AAAA,IACd,WACQ9mG,KAAKsa,WAAW,SAAS;AAC9B,UAAIusF;AACA,eAAO;AACX7mG,WAAKoD,IAAID,IACT;AAAA,aAAO;AAAA,IACV;AACD,WAAOnD,KAAKoD,IAAID;EACxB;AAMIujG,EAAAA,YAAWruF,UAAUjV,MAAM,SAAUD;AACjCnD,SAAK84F,QAAQj1F,KAAKV,IAAAA;AAClB,WAAO;AAAA,EACf;AAOIujG,EAAAA,YAAWruF,UAAUkrC,WAAW;AAC5B,QAAIh7C,MAAMvI,KAAK84F;AACf,YAAQ94F,KAAKsa,QAAAA;AAAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,eAAO/R;AAAAA,MACX,KAAK;AAAA,MACL,KAAK;AAAA,MACL;AACI,eAAQA,IAAInE,SAASmE,IAAIA,IAAInE,SAAS,CAAA,IAAK;AAAA;EAE3D;AACIsiG,EAAAA,YAAWruF,UAAU6lE,QAAQ,WAAA;AACzB,WAAO,IAAIwoB,YAAW1mG,KAAKsa,QAAQta,KAAKoZ,IAChD;AAAA,EAAA;AACI,SAAOstF;AACX;ACrEA,IAAIK,gBAAgB,SAASnzF,GAAGwI;AAC9B2qF,kBAAgB9sF,OAAO+sF,kBAClB,EAAEC,WAAW,gBAAgBl5F,SAAS,SAAU6F,IAAGwI,IAAAA;AAAKxI,IAAAA,GAAEqzF,YAAY7qF;AAAAA,EAAE,KACzE,SAAUxI,IAAGwI;AAAK,aAASjS,KAAKiS;AAAG,UAAInC,OAAO5B,UAAUzJ,eAAewH,KAAKgG,IAAGjS;AAAIyJ,QAAAA,GAAEzJ,CAAAA,IAAKiS,GAAEjS,CAAAA;AAAAA;AAChG,SAAO48F,cAAcnzF,GAAGwI,CAC1B;AAAA;AAEO,SAAS8qF,UAAUtzF,GAAGwI,GAC3B;AAAA,MAAA,OAAWA,MAAM,cAAcA,MAAM;AACjC,UAAM,IAAI+qF,UAAU,yBAAyB9hG,OAAO+W,CAAK,IAAA,+BAAA;AAC7D2qF,gBAAcnzF,GAAGwI,CAAAA;AACjB,WAASgrF,KAAOpnG;AAAAA,SAAKuY,cAAc3E;AAAAA,EAAI;AACvCA,IAAEyE,YAAY+D,MAAM,OAAOnC,OAAOkgB,OAAO/d,CAAMgrF,KAAAA,GAAG/uF,YAAY+D,EAAE/D,WAAW,IAAI+uF;AACjF;AAEO,IAAIC,WAAW;AACpBA,aAAWptF,OAAOqtF,UAAU,SAASD,UAASlzF,GAC1C;AAAA,aAAS1K,GAAGtF,IAAI,GAAGi0B,IAAInkB,UAAU7P,QAAQD,IAAIi0B,GAAGj0B,KAAK;AACjDsF,UAAIwK,UAAU9P,CAAAA;AACd,eAASgG,KAAKV;AAAG,YAAIwQ,OAAO5B,UAAUzJ,eAAewH,KAAK3M,GAAGU,CAAAA;AAAIgK,YAAEhK,CAAKV,IAAAA,EAAEU;IAC7E;AACD,WAAOgK;AAAAA,EACV;AACD,SAAOkzF,SAASj5F,MAAMpO,MAAMiU,SAC9B;AAAA;AA6KO,SAASszF,cAActyE,IAAID,MAAMwyE,MAAAA;AACtC,MAAIA,QAAQvzF,UAAU7P,WAAW;AAAG,aAASD,IAAI,GAAGilE,IAAIp0C,KAAK5wB,QAAQs3D,KAAIv3D,IAAIilE,GAAGjlE,KAAK;AACjF,UAAIu3D,OAAQv3D,EAAAA,KAAK6wB,OAAO;AACpB,aAAK0mC;AAAIA,UAAAA,MAAK3tD,MAAMsK,UAAUpK,MAAMmI,KAAK4e,MAAM,GAAG7wB,CAClDu3D;AAAAA,QAAAA,IAAGv3D,KAAK6wB,KAAK7wB,CAAAA;AAAAA,MAChB;AAAA,IACJ;AACD,SAAO8wB,GAAG7pB,OAAOswD,OAAM3tD,MAAMsK,UAAUpK,MAAMmI,KAAK4e,IAAAA,CAAAA;AACpD;OAiG8ByyE,oBAAoB,aAAaA,kBAAkB,SAAUjxF,OAAOkxF,YAAY7gG,UAAAA;AAC5G,MAAIhB,IAAI,IAAIoM,MAAMpL,QAClB;AAAA,SAAOhB,EAAEuU,OAAO,mBAAmBvU,EAAE2Q,QAAQA,OAAO3Q,EAAE6hG,aAAaA,YAAY7hG;AACjF;AC3TA,IAAI8hG,qBAAoC,SAAUC,QAC9CV;AAAAA,YAAUS,qBAAoBC,MAC9B;AAAA,WAASD,oBAAmBrtF,QAAQlB,MAAMyuF;AACtC,QAAIC,QAAQF,OAAOxxF,KAAKpW,MAAMsa,QAAQlB,IAAAA,KAASpZ;AAC/C8nG,UAAMD,WAAWA;AACjB,WAAOC;AAAAA,EACV;AACDH,EAAAA,oBAAmBtvF,UAAUjV,MAAM,SAAUD;AACzC,QAAInD,KAAK6nG,SAAS1kG,MAAMnD,KAAK84F,QAAQ10F,MAAAA,GAAS;AAC1CpE,WAAK84F,QAAQj1F,KAAKV,IAClB;AAAA,aAAO;AAAA,IACV;AACD,WAAO;AAAA,EACf;AACI,SAAOwkG;AACX,EAAEjB,UClBF;AAAA,IAAIqB,UAAU,EACVC,UAAU,CACN,UACA,UACA,WACA,aACA,YACA,UACA,UAAA,GAEJC,YAAY,CACR,WACA,YACA,SACA,SACA,OACA,QACA,QACA,UACA,aACA,WACA,YACA,UAAA,GAEJC,QAAQ,EACJC,MAAM,oBACNtQ,QAAQ,gBACRuQ,cAAc,qBACdC,OAAO,WACP,UAAU,WACV,cAAc,eACd,WAAW,YACX,WAAW,YACX,aAAa,cACb,YAAY,aACZ,WAAW,YACXla,IAAI,aACJma,IAAI,UACJC,KAAK,SACLv/D,OAAO,WACPokC,QAAQ,YACRo7B,OAAO,WACP3F,KAAK,mCACLj+C,MAAM,UACN6jD,KAAK,SACL,WAAW,YACX5C,OAAO,cACP6C,QAAQ,kBACRC,SAAS,sBACTC,WAAW,wBACXC,UAAU,uBACVC,QAAQ,kBACRC,UAAU,oBACVC,QAAQ,kBACRC,SAAS,gBACTC,UAAU,iBACVC,OAAO,cACPC,OAAO,cACPC,KAAK,SACLC,MAAM,WACNC,MAAM,WACNC,QAAQ,eACRC,WAAW,qBACXC,SAAS,gBACTC,UAAU,iBACVC,UAAU,iBACVC,OAAO;AC5Df,IAAIxjE,WAAW,SAAU+Y,KAAKl4B;AAC1B,SAAOk4B,IAAIrtC,QAAQmV,GAAU,MAAA;AACjC;AACA,IAAI4iF,iBAAiB,SAAU/pG,KAAAA;AAAM,SAAOA,IAAGuY,SAAAA;;AAC/C,IAAIyxF,uBAAuB,SAAU5uF,MAAM6lB,OAAOxhC,KAAO;AAAA,SAAO,GAAG4L,OAAO41B,OAAO,KAAK51B,OAAO5L,KAAK,MAAM4L,OAAO+P,IAAAA;;AAS/G,IAAI6uF,SAAwB,WACxB;AAAA,WAASA,QAAOC,OAAOC,SAASC,UAAUC,eACtC;AAAA,QAAIF,YAAiB,QAAG;AAAEA,gBAAUJ;AAAAA,IAAiB;AACrD,QAAIK,aAAAA,QAAqB;AAAEA,iBAAWpC;AAAAA,IAAU;AAChD,QAAIqC,kBAAuB,QAAG;AAAEA,sBAAgBL;AAAAA,IAAuB;AACvE/pG,SAAK8G,OAAO,CACZ9G;AAAAA,SAAKmqG,WAAWA,YAAYpC;AAC5B/nG,SAAKkqG,UAAUA;AACflqG,SAAKoqG,gBAAgBA;AACrBpqG,SAAKiqG,QAAQA;AACbjqG,SAAK4H,UAAUqiG,MAAMriG;AACrB5H,SAAKqqG,cAAcJ,MAAMI;AACzB,QAAIrqG,KAAKqqG,YAAYC,YAAY;AAC7B,UAAIA,aAAa,CAAA,EAAGl/F,OAAOpL,KAAK4H,QAAQ0iG,UACxC;AAAA,UAAIC,cAAc,CAAGn/F,EAAAA,OAAOpL,KAAK4H,QAAQ2iG,WAAAA;AACzCD,iBAAW9lE,KAAK,SAAUroB,GAAGC,GAAAA;AAAK,eAAOD,IAAIC;AAAAA,MAAE;AAC/CmuF,kBAAY/lE,KAAK,SAAUroB,GAAGC,GAAAA;AAAK,eAAOA,IAAID;AAAAA,MAAE,CAEhDnc;AAAAA,WAAKsqG,aAAaA,WAAWl/F,OAAOm/F;AACpC,UAAKvqG,CAAAA,KAAKsqG,WAAWlmG;AACjBpE,aAAKsqG,aAAa;AAAA,IACzB;AACD,QAAItH,UAAUhjG,KAAKqqG,YAAYG,SAAAA,GAAY;AACvC,UAAIA,aAAavyF,QAAQjY,KAAKqqG,YAAYG,SACpC,IAAA,CAACxqG,KAAKqqG,YAAYG,SAAAA,IAClBxqG,KAAKqqG,YAAYG;AACvB,UAAI3iG,OAAOxC,OAAOmlG,SAClBxqG;AAAAA,WAAKwqG,YAAY,EACbC,UAAUD,UAAU31D,OAAO,SAAU8tD,SACjC;AAAA,eAAA,CAAQA,QAAQvqE;AAAAA,MACpC,CAAA,GACgBsyE,WAAWF,UAAU31D,OAAO,SAAU8tD,SAAAA;AAClC,eAAO5oF,QAAQ4oF,QAAQvqE;MAC3C,CACgBuyE,GAAAA,YAAY9iG,KAAKkK,QAAQ,IAAA,MAAA,MACrBlK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,gBACblK,KAAKkK,QAAQ,IAAA,MAAA,IACjB64F,YAAY/iG,KAAKkK,QAAQ,IAAW,MAAA,MAChClK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,aAErB;AAAA,UAAI84F,eAAe,SAAU1uF,GAAGC,GAC5B;AAAA,eAAOD,EAAEwmF,UAAUvmF,EAAEumF;AAAAA,MACrC;AACY3iG,WAAKwqG,UAAUC,SAASjmE,KAAKqmE,YAC7B7qG;AAAAA,WAAKwqG,UAAUE,UAAUlmE,KAAKqmE;AAC9B,UAAK7qG,CAAAA,KAAKwqG,UAAUC,SAASrmG;AACzBpE,aAAKwqG,UAAUC,WAAW;AAC9B,UAAA,CAAKzqG,KAAKwqG,UAAUE,UAAUtmG;AAC1BpE,aAAKwqG,UAAUE,YAAY;AAAA,IAClC,OACI;AACD1qG,WAAKwqG,YAAY;AAAA,IACpB;AAAA,EACJ;AAODR,EAAAA,QAAOc,qBAAqB,SAAUb,OAAAA;AAClC,QAAIc,aAAa;AACjB,QAAMd,EAAAA,MAAMriG,QAAQojG,QAAQhB,QAAOiB;AAC/B,aAAO;AACX,QAAIhB,MAAMI,YAAYxE,SAASoE,MAAMI,YAAYn1E;AAC7C,aAAO;AACX,aAAShgB,OAAO+0F,MAAMI,aAAa;AAC/B,UAAIhkE,SAAS,CAAC,WAAW,QAAQ,QAAQ,SAASnxB,GAC9C;AAAA,eAAO;AACX,UAAKmxB,CAAAA,SAAS2jE,QAAOiB,YAAYhB,MAAMriG,QAAQojG,IAAAA,GAAO91F;AAClD,eAAO;AAAA,IACd;AACD,WAAO61F;AAAAA,EACf;AACIf,EAAAA,QAAO3xF,UAAUyyF,qBAAqB,WAAA;AAClC,WAAOd,QAAOc,mBAAmB9qG,KAAKiqG,KAC9C;AAAA,EAAA;AAQID,EAAAA,QAAO3xF,UAAUC,WAAW,WACxB;AAAA,QAAI4xF,UAAUlqG,KAAKkqG;AACnB,UAAMlqG,KAAK4H,QAAQojG,QAAQhB,QAAOiB,cAAc;AAC5C,aAAOf,QAAQ,yDAClB;AAAA,IAAA;AACDlqG,SAAK8G,OAAO,CAACojG,QAAQ,OAAA,CAAA;AAGrBlqG,SAAKkrG,MAAMC,YAAYnrG,KAAK4H,QAAQojG,IAAAA,CAAAA,EAAAA;AACpC,QAAIhrG,KAAK4H,QAAQi+F,OAAO;AACpB7lG,WAAKoD,IAAI8mG,QAAQ;AACjB,UAAIrE,QAAQ7lG,KAAK4H,QAAQi+F;AACzB7lG,WAAKoD,IAAIpD,KAAKoqG,cAAcvE,MAAMr6D,kBAAkBxrC,KAAKmqG,SAASlC,WAAWpC,MAAMt6D,YAAAA,CAAAA,GAAgBs6D,MAAMv6D,WAAAA,CAAAA,CAAAA;AAAAA,IAC5G,WACQtrC,KAAK4H,QAAQstB,OAAO;AACzBl1B,WAAKoD,IAAI8mG,QAAQ,KACZ9mG,CAAAA,EAAAA,IAAIpD,KAAK4H,QAAQstB,MAAM5c,YACvBlV,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQstB,KAASg1E,IAAAA,QAAQ,WAAWA,QAAQ,MAAA,CAAA;AAAA,IACzE;AACD,QAAKlqG,CAAAA,KAAK8qG;AACN9qG,WAAKoD,IAAI8mG,QAAQ,iBAAA,CAAA;AACrB,WAAOlqG,KAAK8G,KAAKgJ,KAAK,EAC9B;AAAA,EAAA;AACIk6F,EAAAA,QAAO3xF,UAAUgzF,SAAS,WACtB;AAAA,QAAInB,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,WAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAAA,CAAAA;AACnCtY,SAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,QAAYyyC,IAAAA,QAAQ,WAAWA,QAAQ,MAAA,CAAA;AAAA,EACjF;AACIF,EAAAA,QAAO3xF,UAAUizF,WAAW,WACxB;AAAA,QAAIpB,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,WAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C;AACnCtY,SAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,QAC5ByyC,IAAAA,QAAQ,SACRA,IAAAA,QAAQ;EACtB;AACIF,EAAAA,QAAO3xF,UAAUkzF,QAAQ,WAAA;AACrB,QAAIrB,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,WAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SACnC,CAAA;AAAA,QAAItY,KAAKwqG,aAAaxqG,KAAKwqG,UAAUG,YAAY;AAC7C3qG,WAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,QAC5ByyC,IAAAA,QAAQ,cACRA,QAAQ,SAAA,CAAA;AAAA,IACjB,OACI;AACDlqG,WAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,YAAYyyC,QAAQ,MAAA,IAAUA,QAAQ,KAC3E,CAAA;AAAA,IAAA;AACD,QAAIlqG,KAAKqqG,YAAYmB,SAAS;AAC1BxrG,WAAKoD,IAAI8mG,QAAQ;AACjBlqG,WAAKyrG,SAAAA;AAAAA,IACR;AACD,QAAIzrG,KAAKsqG,YAAY;AACjBtqG,WAAK0rG,YACR;AAAA,IAAA,WACQ1rG,KAAKwqG,WAAW;AACrBxqG,WAAK2rG;IACR,WACQ3rG,KAAKqqG,YAAYuB,QAAQ;AAC9B5rG,WAAK6rG,QAAAA;AAAAA,IACR;AAAA,EACT;AACI7B,EAAAA,QAAO3xF,UAAUyzF,SAAS;AACtB,QAAI5B,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,WAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAAA,CAAAA,EAAYlV,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,YAAYyyC,QAAQ,OAAA,IAAWA,QAAQ,MAClH,CAAA;AAAA,IAAA;AACD,QAAIlqG,KAAKwqG,aAAaxqG,KAAKwqG,UAAUG,YAAY;AAC7C,UAAI3qG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,aAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,YAC5ByyC,QAAQ,UAAA,IACRA,QAAQ,SAAA,CAAA;AAAA,MACjB,OACI;AACDlqG,aAAKoD,IAAI8mG,QAAQ,IAAA,CAAA,EAAO9mG,IAAI8mG,QAAQ,UAAA,CAAA;AAAA,MACvC;AAAA,IACJ,WACQlqG,KAAKwqG,aAAaxqG,KAAKwqG,UAAUI,YAAY;AAClD5qG,WAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,QAAAA,IAAYyyC,QAAQ,MAAUA,IAAAA,QAAQ;IAC3E,OACI;AACD,UAAIlqG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,aAAKoD,IAAI8mG,QAAQ;AACrB,UAAIlqG,KAAKqqG,YAAYmB,SAAS;AAC1BxrG,aAAKoD,IAAI8mG,QAAQ,IACjBlqG,CAAAA;AAAAA,aAAKyrG;MACR;AACD,UAAIzrG,KAAKsqG,YAAY;AACjBtqG,aAAK0rG,YAAAA;AAAAA,MACR,WACQ1rG,KAAKwqG,WAAW;AACrBxqG,aAAK2rG,WACR;AAAA,MAAA;AACD,UAAI3rG,KAAKqqG,YAAYuB,QAAQ;AACzB5rG,aAAK6rG;MACR;AAAA,IACJ;AAAA,EACT;AACI7B,EAAAA,QAAO3xF,UAAU0zF,UAAU,WAAA;AACvB,QAAI7B,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAKqqG,YAAYmB,SAAS;AAC1B,UAAIxrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAYlV,CAAAA,EAAAA,IAAI8mG,QAAQ,QACvD,CAAA;AAAA,YAAIlqG,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,QAAAA;AACzBz3D,eAAKoD,IAAI8mG,QAAQ;MAIxB;AACDlqG,WAAKyrG;IACR,OACI;AACD,UAAIzrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAClC,CAAA;AAAA,MAAA;AACDtY,WAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,YAC5ByyC,QAAQ,QAAA,IACRA,QAAQ,OAAA,CAAA;AAAA,IACjB;AACD,QAAIlqG,KAAKsqG,YAAY;AACjBtqG,WAAK0rG;IACR,WACQ1rG,KAAKwqG,aAAaxqG,KAAKwqG,UAAUG,YAAY;AAClD3qG,WAAKoD,IAAI8mG,QAAQ,IAAO9mG,CAAAA,EAAAA,IAAI8mG,QAAQ,UAAA,CAAA;AAAA,IACvC,WACQlqG,KAAKwqG,WAAW;AACrBxqG,WAAK2rG;IACR;AAAA,EACT;AACI3B,EAAAA,QAAO3xF,UAAU2zF,SAAS,WACtB;AAAA,QAAI9B,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAKqqG,YAAYmB,SAAS;AAC1B,UAAIxrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C;AAC/BtY,aAAKoD,IAAI8mG,QAAQ,OAIpB,CAAA;AAAA,MAAA;AACDlqG,WAAKyrG,SACR;AAAA,IAAA,OACI;AACD,UAAIzrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAAA,CAAAA;AAAAA,MAClC;AACDtY,WAAKoD,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQ6vD,QAAYyyC,IAAAA,QAAQ,OAAWA,IAAAA,QAAQ;IAC5E;AACD,QAAIlqG,KAAKsqG,YAAY;AACjBtqG,WAAK0rG,YACR;AAAA,IAAA,WACQ1rG,KAAKwqG,WAAW;AACrBxqG,WAAK2rG;IACR;AACD,QAAI3rG,KAAK4H,QAAQqkG,WAAW;AACxBjsG,WAAKoD,IAAI8mG,QAAQ,QAAA,CAAA,EACZ9mG,IAAIpD,KAAKmjB,KAAKnjB,KAAK4H,QAAQqkG,WAAWjsG,KAAK6iG,KAAKqH,QAAQ,KACxD9mG,CAAAA,CAAAA,EAAAA,IAAI8mG,QAAQ,KACpB,CAAA;AAAA,IAAA;AACD,QAAIlqG,KAAK4H,QAAQskG,UAAU;AACvBlsG,WAAKoD,IAAI8mG,QAAQ,OACZ9mG,IAAIpD,KAAKorG,OAAOprG,KAAK4H,QAAQskG,SAAS9nG,MAAAA,IACrC8lG,QAAQ,OACRA,IAAAA,QAAQ,SACT9mG,IAAIpD,KAAKmjB,KAAKnjB,KAAK4H,QAAQskG,UAAU79F,QAAW67F,QAAQ,KAChE,CAAA,CAAA;AAAA,IAAA;AAAA,EACT;AACIF,EAAAA,QAAO3xF,UAAUqzF,cAAc,WAC3B;AAAA,QAAIxB,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAKwqG,aAAaxqG,KAAKwqG,UAAUC,UAAU;AAC3CzqG,WAAKoD,IAAI8mG,QAAQ,OACZ9mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKwqG,UAAUC,UAAUzqG,KAAKmsG,aAAajC,QAAQ,IAAA,CAAA,CAAA,EACjE9mG,IAAI8mG,QAAQ,KAAA,CAAA,EACZ9mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKsqG,YAAYtqG,KAAK6iG,KAAKqH,QAAQ;IACzD,OACI;AACDlqG,WAAKoD,IAAI8mG,QAAQ,QAAW9mG,CAAAA,EAAAA,IAAIpD,KAAKmjB,KAAKnjB,KAAKsqG,YAAYtqG,KAAK6iG,KAAKqH,QAAQ,KAAA,CAAA,CAAA;AAAA,IAChF;AAAA,EAET;AACIF,EAAAA,QAAO3xF,UAAUszF,aAAa;AAC1B,QAAIzB,UAAUlqG,KAAKkqG;AACnB,QAAIlqG,KAAKwqG,UAAUC,YAAAA,CAAazqG,KAAKwqG,UAAUG,YAAY;AACvD3qG,WAAKoD,IAAI8mG,QAAQ,IAAA,CAAA,EAAO9mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKwqG,UAAUC,UAAUzqG,KAAKmsG,WAAAA,CAAAA;AAAAA,IACvE;AACD,QAAInsG,KAAKwqG,UAAUE,WAAW;AAC1B,UAAI1qG,KAAKwqG,UAAUC;AACfzqG,aAAKoD,IAAI8mG,QAAQ,KAAA,CAAA;AACrBlqG,WAAKoD,IAAI8mG,QAAQ,QAAW9mG,CAAAA,EAAAA,IAAIpD,KAAKmjB,KAAKnjB,KAAKwqG,UAAUE,WAAW1qG,KAAKmsG,aAAajC,QAAQ,KAAA,CAAA,CAAA;AAAA,IACjG;AAAA,EACT;AACIF,EAAAA,QAAO3xF,UAAUwzF,UAAU;AACvB,QAAI3B,UAAUlqG,KAAKkqG;AACnBlqG,SAAKoD,IAAI8mG,QAAQ,OAAO9mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKqqG,YAAYuB,QAAQv9F,QAAW67F,QAAQ,KAC1F,CAAA,CAAA;AAAA,EAAA;AACIF,EAAAA,QAAO3xF,UAAUozF,WAAW;AACxBzrG,SAAKoD,IAAIpD,KAAKmjB,KAAKnjB,KAAK4H,QAAQ4jG,SAASxrG,KAAKosG,WAAWpsG,KAAKkqG,QAAQ,KAC9E,CAAA,CAAA;AAAA,EAAA;AACIF,EAAAA,QAAO3xF,UAAUwqF,MAAM,SAAUzqE,GAAAA;AAC7BA,QAAInC,SAASmC,EAAE9f,YAAY,EAC3B;AAAA,QAAIuqF;AACJ,QAAIqH,UAAUlqG,KAAKkqG;AACnB,QAAI9xE,MAAO;AACP,aAAO8xE,QAAQ,MAAA;AACnB,QAAImC,OAAOl7F,KAAKie,IAAIgJ,CAAAA;AACpB,YAAQi0E,MACJ;AAAA,MAAA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACDxJ,cAAMwJ,OAAOnC,QAAQ;AACrB;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AACDrH,cAAMwJ,OAAOnC,QAAQ,IACrB;AAAA;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AACDrH,cAAMwJ,OAAOnC,QAAQ,IACrB;AAAA;AAAA,MACJ;AACIrH,cAAMwJ,OAAOnC,QAAQ,IAAA;AAAA,IAAA;AAE7B,WAAO9xE,IAAI,IAAIyqE,MAAM,MAAMqH,QAAQ,MAAUrH,IAAAA;AAAAA,EACrD;AACImH,EAAAA,QAAO3xF,UAAU+zF,YAAY,SAAU5tD,GAAAA;AACnC,WAAOx+C,KAAKmqG,SAASlC,WAAWzpD,IAAI;EAC5C;AACIwrD,EAAAA,QAAO3xF,UAAU8zF,cAAc,SAAUG;AACrC,QAAI3J,UAAUM,SAASqJ,IAAAA,KAASA,OAAO,KAAK,IAAIA,KAAKvJ,aACrD;AAAA,YAASuJ,KAAKl0E,IAAIp4B,KAAK6iG,IAAIyJ,KAAKl0E,KAAK,MAAM,MACvCp4B,KAAKmqG,SAASnC,SAASrF;EACnC;AACIqH,EAAAA,QAAO3xF,UAAU+yF,SAAS,SAAUhzE,GAChC;AAAA,WAAOA,IAAI,QAAQ;AAAA,EAC3B;AACI4xE,EAAAA,QAAO3xF,UAAUjV,MAAM,SAAUqG;AAC7BzJ,SAAK8G,KAAKjD,KAAK,GACf7D;AAAAA,SAAK8G,KAAKjD,KAAK4F,CAAAA;AACf,WAAOzJ;AAAAA,EACf;AACIgqG,EAAAA,QAAO3xF,UAAU8K,OAAO,SAAUi8B,KAAKn4C,UAAUslG,YAAYC,OAAAA;AACzD,QAAI1E,QAAQ9nG;AACZ,QAAIwsG,UAAAA,QAAkB;AAAEA,cAAQ;AAAA,IAAM;AACtC,QAAA,CAAKv0F,QAAQmnC,GAAAA,GAAM;AACfA,YAAM,CAACA;IACV;AACD,QAAIqtD,YAAY,SAAUxpD,OAAOi2C,WAAWwT,gBAAAA;AACxC,UAAIvpF,OAAO;AACX,eAAShf,IAAI,GAAGA,IAAI8+C,MAAM7+C,QAAQD,KAAK;AACnC,YAAIA,MAAM,GAAG;AACT,cAAIA,MAAM8+C,MAAM7+C,SAAS,GAAG;AACxB+e,oBAAQ,MAAMupF,iBAAiB;AAAA,UAClC,OACI;AACDvpF,oBAAQ+1E,YAAY;AAAA,UACvB;AAAA,QACJ;AACD/1E,gBAAQ8/B,MAAM9+C,CAAAA;AAAAA,MACjB;AACD,aAAOgf;AAAAA,IACnB;AACQlc,eACIA,YACI,SAAU0lG,GAAAA;AACN,aAAOA,EAAEr0F,SAAAA;AAAAA,IAC7B;AACQ,QAAIs0F,eAAe,SAAUvuE,KACzB;AAAA,aAAOp3B,YAAYA,SAASmP,KAAK0xF,OAAOzpE,GAAAA;AAAAA,IACpD;AACQ,QAAIkuE,YAAY;AACZ,aAAOE,UAAUrtD,IAAI35C,IAAImnG,eAAeJ,OAAOD,UAAAA;AAAAA,IAClD,OACI;AACD,aAAOntD,IAAI35C,IAAImnG,YAAAA,EAAc98F,KAAK08F,QAAQ;IAC7C;AAAA,EACT;AACI,SAAOxC;AACX;ACnYA,IAAI6C,SAAwB,WACxB;AAAA,WAASA,QAAOC,OACZ9sG;AAAAA,SAAK+sG,OAAO;AACZ/sG,SAAK8sG,QAAQA;AAAAA,EAChB;AACDD,EAAAA,QAAOx0F,UAAU9I,QAAQ,SAAUzI,MAAAA;AAC/B9G,SAAK8G,OAAOA;AACZ9G,SAAK+sG,OAAO;AACZ,WAAO/sG,KAAKgtG;EACpB;AACIH,EAAAA,QAAOx0F,UAAU40F,SAAS,WAAA;AACtB,WAAOjtG,KAAK+sG,QAAQ/sG,KAAKktG,WAAW;AAAA,EAC5C;AACIL,EAAAA,QAAOx0F,UAAU20F,aAAa,WAAA;AAC1B,QAAIG;AACJ,QAAIC;AACJptG,SAAKktG,SAAS;AACdltG,SAAKqe,QAAQ;AACb,OAAG;AACC,UAAIre,KAAK+sG;AACL,eAAO;AACX,UAAIM,OAAAA;AACJF,aAAO;AACP,eAASG,UAAUttG,KAAK8sG,OAAO;AAC3BO,eAAOrtG,KAAK8sG,MAAMQ,MAClB;AAAA,YAAIjjE,QAAQgjE,KAAKzsD,KAAK5gD,KAAK8G,IAAAA;AAC3B,YAAIujC,OAAO;AACP,cAAI8iE,SAAS,QAAQ9iE,MAAM,CAAGjmC,EAAAA,SAAS+oG,KAAK,CAAA,EAAG/oG,QAAQ;AACnD+oG,mBAAO9iE;AACP+iE,yBAAaE;AAAAA,UAChB;AAAA,QACJ;AAAA,MACJ;AACD,UAAIH,QAAQ,MAAM;AACdntG,aAAK8G,OAAO9G,KAAK8G,KAAKk6C,OAAOmsD,KAAK,CAAA,EAAG/oG,MACrC;AAAA,YAAIpE,KAAK8G,SAAS;AACd9G,eAAK+sG,OAAO;AAAA,MACnB;AACD,UAAII,QAAQ,MAAM;AACdntG,aAAK+sG,OAAO;AACZ/sG,aAAKktG,SAAS;AACdltG,aAAKqe,QAAQ;AACb;AAAA,MACH;AAAA,IACb,SAAiB+uF,eAAe;AACxBptG,SAAKktG,SAASE;AACdptG,SAAKqe,QAAQ8uF;AACb,WAAO;AAAA,EACf;AACIN,EAAAA,QAAOx0F,UAAUuuF,SAAS,SAAUxsF,MAAAA;AAChC,QAAIpa,KAAKktG,WAAW9yF,MAAM;AACtB,UAAIpa,KAAKqe,OAAO;AACZ,YAAIkvF,IAAIvtG,KAAKqe;AACbre,aAAKgtG,WACL;AAAA,eAAOO;AAAAA,MACV;AACDvtG,WAAKgtG;AACL,aAAO;AAAA,IACV;AACD,WAAO;AAAA,EACf;AACIH,EAAAA,QAAOx0F,UAAUm1F,eAAe,WAAA;AAC5B,WAAOxtG,KAAK4mG,OAAO;EAC3B;AACIiG,EAAAA,QAAOx0F,UAAUo1F,SAAS,SAAUrzF,MAChC;AAAA,QAAIpa,KAAK4mG,OAAOxsF,IAAAA;AACZ,aAAO;AACX,UAAM,IAAInI,MAAM,cAAcmI,OAAO,gBAAgBpa,KAAKktG,MAClE;AAAA,EAAA;AACI,SAAOL;AACX,EACe;AAAA,SAASa,UAAU5mG,MAAMqjG,UAAAA;AACpC,MAAIA,aAAkB,QAAG;AAAEA,eAAWpC;AAAAA,EAAU;AAChD,MAAIngG,UAAU,CAAA;AACd,MAAI+lG,MAAM,IAAId,OAAO1C,SAASjC,MAAAA;AAC9B,MAAKyF,CAAAA,IAAIp+F,MAAMzI,IACX;AAAA,WAAO;AACX8mG,IACA;AAAA,SAAOhmG;AACP,WAASgmG,IAAAA;AAELD,QAAIF,OAAO;AACX,QAAIr1E,IAAIu1E,IAAIH,aACZ;AAAA,QAAIp1E;AACAxwB,cAAQ6vD,WAAWxhC,SAASmC,EAAE,IAAI,EACtC;AAAA,QAAIu1E,IAAIV,OACJ;AAAA,YAAM,IAAIh7F,MAAM,gBAAA;AACpB,YAAQ07F,IAAIT;MACR,KAAK;AACDtlG,gBAAQojG,OAAOE,MAAMK;AACrB,YAAIoC,IAAIX,WAAc,GAAA;AAClBa;AACAC,YACH;AAAA,QAAA;AACD;AAAA,MAGJ,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMY;AACrBlkG,gBAAQ4iG,YAAY,CAACU,MAAM6C,IAAI7C,MAAM8C,IAAI9C,MAAM+C,IAAI/C,MAAMgD,IAAIhD,MAAMiD;AACnER,YAAIX,WAAAA;AACJa;AACAC,UACA;AAAA;AAAA,MACJ,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMY;AACrB,YAAI6B,IAAIX,cAAc;AAClBoB,aAAAA;AACAP;AACAC,YACH;AAAA,QAAA;AACD;AAAA,MACJ,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMG;AACrB,YAAIsC,IAAIX,WAAc,GAAA;AAClBoB,aACAN;AAAAA,YAAAA;AAAAA,QACH;AACD;AAAA,MACJ,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMI;AACrB,YAAIqC,IAAIX,cAAc;AAClBoB,aAAAA;AACAN;QACH;AACD;AAAA,MACJ,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMa;AACrB,YAAI4B,IAAIX,cAAc;AAClBoB,aAAAA;AACAN;QACH;AACD;AAAA,MACJ,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMc;AACrB,YAAI2B,IAAIX,cAAc;AAClBoB,aAAAA;AACAN,YACH;AAAA,QAAA;AACD;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMY;AACrB,YAAI52F,MAAMy4F,IAAIT,OACTlsD,OAAO,GAAG,GACVrW,YACL/iC;AAAAA,gBAAQ4iG,YAAY,CAACU,MAAMh2F,GAC3B,CAAA;AAAA,YAAA,CAAKy4F,IAAIX,WACL;AAAA;AAEJ,eAAOW,IAAI/G,OAAO,UAAU;AACxB,cAAI+G,IAAIV,OAAAA;AACJ,kBAAM,IAAIh7F,MAAM;AACpB,cAAIo8F,MAAMC;AACV,cAAKD,CAAAA,KAAK;AACN,kBAAM,IAAIp8F,MAAM,uBAAuB07F,IAAIT,SAAS,oBAAA;AAAA,UACvD;AACDtlG,kBAAQ4iG,UAAU3mG,KAAKqnG,MAAMmD;AAC7BV,cAAIX,WAAAA;AAAAA,QACP;AACDa,WACAU;AAAAA,cAAAA;AACAT;AACA;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACDlmG,gBAAQojG,OAAOE,MAAMc;AACrBpkG,gBAAQ4jG,UAAU,CAACgD;AACnB,YAAKb,CAAAA,IAAIX,WACL;AAAA;AAEJ,eAAOW,IAAI/G,OAAO,UAAU;AACxB,cAAI+G,IAAIV,OACJ;AAAA,kBAAM,IAAIh7F,MAAM;AACpB,cAAIusC,IAAIgwD;AACR,cAAKhwD,CAAAA,GAAG;AACJ,kBAAM,IAAIvsC,MAAM,uBAAuB07F,IAAIT,SAAS,kBAAA;AAAA,UACvD;AACDtlG,kBAAQ4jG,QAAQ3nG,KAAK26C,CACrBmvD;AAAAA,cAAIX,WACP;AAAA,QAAA;AACDoB;AACAN,UACA;AAAA;AAAA,MACJ;AACI,cAAM,IAAI77F,MAAM,gBAE3B;AAAA,IAAA;AAAA,EAAA;AACD,WAASm8F,KAAAA;AACL,QAAIjgB,KAAKwf,IAAI/G,OAAO,IACpB;AAAA,QAAI2B,MAAMoF,IAAI/G,OAAO,KACrB;AAAA,QAAA,EAAMzY,MAAMoa;AACR;AACJ,OAAG;AACC,UAAI1F,MAAM4L,UACV;AAAA,UAAIJ,MAAMC,UAAAA;AACV,UAAI9vD,IAAIgwD,QAAAA;AAER,UAAI3L,KAAK;AAEL,YAAIwL,KAAK;AACLV,cAAIX,WAAAA;AACJ,eAAKplG,QAAQ4iG;AACT5iG,oBAAQ4iG,YAAY,CAAA;AACxB5iG,kBAAQ4iG,UAAU3mG,KAAKqnG,MAAMmD,GAAAA,EAAKxL,IAAIA,GACzC,CAAA;AAAA,QAAA,OACI;AACD,cAAKj7F,CAAAA,QAAQ0iG;AACT1iG,oBAAQ0iG,aAAa,CACzB1iG;AAAAA,kBAAQ0iG,WAAWzmG,KAAKg/F,GAAAA;AACxB8K,cAAI/G,OAAO,QAAA;AAAA,QACd;AAAA,MAEJ,WACQyH,KAAK;AACVV,YAAIX,WACJ;AAAA,YAAA,CAAKplG,QAAQ4iG;AACT5iG,kBAAQ4iG,YAAY,CACxB5iG;AAAAA,gBAAQ4iG,UAAU3mG,KAAKqnG,MAAMmD,GAChC,CAAA;AAAA,MAAA,WACQV,IAAIT,WAAW,cAAc;AAClCS,YAAIX,WACJ;AAAA,YAAA,CAAKplG,QAAQ4iG,WAAW;AACpB5iG,kBAAQ4iG,YAAY,CAACU,MAAM6C,IAAI7C,MAAM8C,IAAI9C,MAAM+C,IAAI/C,MAAMgD,IAAIhD,MAAMiD,EACtE;AAAA,QAAA;AAAA,MACJ,WACQR,IAAIT,WAAW,WAAW;AAC/BS,YAAIX,WAAAA;AACJ,YAAI50E,IAAIu1E,IAAIH;AACZ,YAAKp1E,CAAAA,GAAG;AACJ,gBAAM,IAAInmB,MAAM,uBAAuB07F,IAAIT,SAAS,wBAAA;AAAA,QACvD;AACDtlG,gBAAQskG,WAAW,CAACj2E,SAASmC,EAAE,CAAI,GAAA,EAAA,CAAA;AACnC,eAAOu1E,IAAI/G,OAAO,UAAU;AACxBxuE,cAAIu1E,IAAIH,aAAAA;AACR,eAAKp1E,GAAG;AACJ,kBAAM,IAAInmB,MAAM,uBAAuB07F,IAAIT,SAAS,qBACvD;AAAA,UAAA;AACDtlG,kBAAQskG,SAASroG,KAAKoyB,SAASmC,EAAE,CAAA,GAAI;QACxC;AAAA,MACJ,WACQomB,GAAG;AACRmvD,YAAIX,WAAAA;AACJ,aAAKplG,QAAQ4jG;AACT5jG,kBAAQ4jG,UAAU,CAAA;AACtB5jG,gBAAQ4jG,QAAQ3nG,KAAK26C,CACxB;AAAA,MAAA,OACI;AACD;AAAA,MACH;AAAA,IACJ,SAAQmvD,IAAI/G,OAAO,OAAY+G,KAAAA,IAAI/G,OAAO,KAAU+G,KAAAA,IAAI/G,OAAO,IACnE;AAAA,EAAA;AACD,WAASiH,KACL;AAAA,QAAIvF,KAAKqF,IAAI/G,OAAO,IACpB;AAAA,QAAA,CAAK0B;AACD;AACJ,OAAG;AACC,UAAIlwE,IAAIu1E,IAAIH,aAAAA;AACZ,WAAKp1E,GAAG;AACJ,cAAM,IAAInmB,MAAM,uBAAuB07F,IAAIT,SAAS,iBACvD;AAAA,MAAA;AACDtlG,cAAQgkG,SAAS,CAAC31E,SAASmC,EAAE,CAAA,GAAI;AACjC,aAAOu1E,IAAI/G,OAAO,OAAA,GAAU;AACxBxuE,YAAIu1E,IAAIH;AACR,YAAKp1E,CAAAA,GAAG;AACJ,gBAAM,IAAInmB,MAAM,uBAAuB07F,IAAIT,SAAS,iBAAA;AAAA,QACvD;AACDtlG,gBAAQgkG,OAAO/nG,KAAKoyB,SAASmC,EAAE,CAAI,GAAA,EAAA,CAAA;AAAA,MACtC;AAAA,IACb,SAAiBu1E,IAAI/G,OAAO,OAAY+G,KAAAA,IAAI/G,OAAO,IAC9C;AAAA,EAAA;AACD,WAAS4H,UAAAA;AACL,YAAQb,IAAIT,QAAAA;AAAAA,MACR,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX,KAAK;AACD,eAAO;AAAA,MACX;AACI,eAAO;AAAA,IAElB;AAAA,EAAA;AACD,WAASoB,YACL;AAAA,YAAQX,IAAIT,QACR;AAAA,MAAA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAOS,IAAIT,OAAOlsD,OAAO,GAAG,CAAA,EAAGrW;MACnC;AACI,eAAO;AAAA;EAElB;AACD,WAAS8jE,YACL;AAAA,YAAQd,IAAIT,QACR;AAAA,MAAA,KAAK;AACDS,YAAIX,WAAAA;AACJ;MACJ,KAAK;AACDW,YAAIX;AACJ,eAAO;AAAA,MACX,KAAK;AACDW,YAAIX;AACJ,eAAOW,IAAI/G,OAAO,MAAA,IAAA,KAAe;AAAA,MACrC,KAAK;AACD+G,YAAIX,WAAAA;AACJ,eAAOW,IAAI/G,OAAO,MAAW,IAAA,KAAI;AAAA,MACrC,KAAK;AACD,YAAI2G,IAAIt3E,SAAS03E,IAAItvF,MAAM,CAAA,GAAI,EAC/B;AAAA,YAAIkvF,YAAYA,IAAI;AAChB,gBAAM,IAAIt7F,MAAM,uBAAuBs7F,CAAAA;AAC3CI,YAAIX,WAAAA;AACJ,eAAOW,IAAI/G,OAAO,WAAW2G,IAAIA;AAAAA,MACrC;AACI,eAAO;AAAA,IAAA;AAAA,EAElB;AACD,WAASgB;AACLZ,QAAI/G,OAAO;AACX+G,QAAI/G,OAAO;AACX,QAAI/D,MAAM4L,UACV;AAAA,QAAA,CAAK5L;AACD;AACJj7F,YAAQ0iG,aAAa,CAACzH,GAAAA;AACtB8K,QAAIX,WACJ;AAAA,WAAOW,IAAI/G,OAAO,UAAU;AACxB/D,YAAM4L;AACN,UAAK5L,CAAAA,KAAK;AACN,cAAM,IAAI5wF,MAAM,uBAAuB07F,IAAIT,SAAS,qBAAA;AAAA,MACvD;AACDtlG,cAAQ0iG,WAAWzmG,KAAKg/F,GACxB8K;AAAAA,UAAIX,WACP;AAAA,IAAA;AAAA,EACJ;AACD,WAASc,IAAAA;AACL,QAAIH,IAAIT,WAAW,SAAS;AACxB,UAAI/pG,OAAOqB,KAAKyjC,MAAM0lE,IAAI7mG,IAAAA;AAC1B,WAAK3D;AACD,cAAM,IAAI8O,MAAM,6BAA6B07F,IAAI7mG,IAAAA;AACrDc,cAAQi+F,QAAQ,IAAIrhG,KAAKrB,IAC5B;AAAA,IAAA,WACQwqG,IAAI/G,OAAO,KAAQ,GAAA;AACxBh/F,cAAQstB,QAAQe,SAAS03E,IAAItvF,MAAM,CAAA,GAAI;AACvCsvF,UAAIF,OAAO,QAEd;AAAA,IAAA;AAAA,EACJ;AACL;ACrYO,IAAIiB;AAAAA,CACX,SAAWA;AACPA,EAAAA,WAAUA,WAAU,QAAY,IAAA,CAAA,IAAK;AACrCA,EAAAA,WAAUA,WAAU,aAAa,CAAK,IAAA;AACtCA,EAAAA,WAAUA,WAAU,QAAA,IAAY,CAAK,IAAA;AACrCA,EAAAA,WAAUA,WAAU,OAAA,IAAW,KAAK;AACpCA,EAAAA,WAAUA,WAAU,QAAY,IAAA,CAAA,IAAK;AACrCA,EAAAA,WAAUA,WAAU,UAAc,IAAA,CAAA,IAAK;AACvCA,EAAAA,WAAUA,WAAU,cAAc,CAAK,IAAA;AAC1C,GAAEA,cAAcA,YAAY,CAAE;AACxB,SAASC,qBAAqB3D;AACjC,SAAOA,OAAO0D,UAAUrD;AAC5B;ACkFA,IAAIuD,WAAW,SAAU9nG,MAAMqjG,UAAAA;AAC3B,MAAIA,aAAkB,QAAG;AAAEA,eAAWpC;AAAAA,EAAU;AAChD,SAAO,IAAImD,MAAMwC,UAAU5mG,MAAMqjG,QAAa97F,KAAAA,MAAAA;AAClD;AACA,IAAIiG,SAAS,CACT,SACA,SACA,YACA,aACA,cACA,SAEJ01F;AAAAA,OAAOiB,cAAc,CAAA;AACrBjB,OAAOiB,YAAYyD,UAAUrD,UAAU/2F;AACvC01F,OAAOiB,YAAYyD,UAAUpD,QAAAA,IAAYh3F;AACzC01F,OAAOiB,YAAYyD,UAAUnD,KAAAA,IAAS,CAAC,QAAUngG,EAAAA,OAAOkJ;AACxD01F,OAAOiB,YAAYyD,UAAU5C,MAAAA,IAAUx3F;AACvC01F,OAAOiB,YAAYyD,UAAU3C,OAAWz3F,IAAAA;AACxC01F,OAAOiB,YAAYyD,UAAU1C,MAAU,IAAA,CAAC,YAAY,WAAa5gG,EAAAA,OAAOkJ;AAIxE,IAAIu6F,SAAS,SAAU5E,OAAOC,SAASC,UAAUC,eAAAA;AAC7C,SAAO,IAAIJ,OAAOC,OAAOC,SAASC,UAAUC,eAAe9xF,SAC/D;AAAA;AACA,IAAIwyF,qBAAqBd,OAAOc;ACnHhC,IAAIgE,OAAsB,WACtB;AAAA,WAASA,MAAK7tE,MAAMC,QAAQksC,QAAQ2hC,aAAAA;AAChC/uG,SAAKihC,OAAOA;AACZjhC,SAAKkhC,SAASA;AACdlhC,SAAKotE,SAASA;AACdptE,SAAK+uG,cAAcA,eAAe;AAAA,EACrC;AACDD,EAAAA,MAAKz2F,UAAUhM,WAAW;AACtB,WAAOrM,KAAKihC;AAAAA,EACpB;AACI6tE,EAAAA,MAAKz2F,UAAU1K,aAAa;AACxB,WAAO3N,KAAKkhC;AAAAA,EACpB;AACI4tE,EAAAA,MAAKz2F,UAAU4zB,aAAa;AACxB,WAAOjsC,KAAKotE;AAAAA,EACpB;AACI0hC,EAAAA,MAAKz2F,UAAUktF,kBAAkB,WAAA;AAC7B,WAAOvlG,KAAK+uG;AAAAA,EACpB;AACID,EAAAA,MAAKz2F,UAAUoiB,UAAU,WAAA;AACrB,YAASz6B,KAAKihC,OAAO,KAAK,KAAKjhC,KAAKkhC,SAAS,KAAKlhC,KAAKotE,UAAU,MAC7DptE,KAAK+uG;AAAAA,EACjB;AACI,SAAOD;AACX,EAEA;AAAA,IAAIE,WAA0B,SAAUpH,QAAAA;AACpCV,YAAU8H,WAAUpH,MAAAA;AACpB,WAASoH,UAAS7zF,MAAM6lB,OAAOxhC,KAAKyhC,MAAMC,QAAQksC,QAAQ2hC;AACtD,QAAIjH,QAAQF,OAAOxxF,KAAKpW,MAAMihC,MAAMC,QAAQksC,QAAQ2hC,WAAgB/uG,KAAAA;AACpE8nG,UAAM3sF,OAAOA;AACb2sF,UAAM9mE,QAAQA;AACd8mE,UAAMtoG,MAAMA;AACZ,WAAOsoG;AAAAA,EACV;AACDkH,EAAAA,UAASC,WAAW,SAAU9rG,MAAAA;AAC1B,WAAO,IAAInD,KAAKmD,KAAKqoC,eAAkBroC,GAAAA,KAAKooC,gBAAgB,GAAGpoC,KAAKmoC,WAAcnoC,GAAAA,KAAK2oC,eAAe3oC,KAAK4oC,cAAAA,GAAiB5oC,KAAK6oC,cAAiB7oC,GAAAA,KAAK4B,YAAY,GAC3K;AAAA,EAAA;AACIiqG,EAAAA,UAAS32F,UAAU+sF,aAAa,WAC5B;AAAA,WAAOA,WAAW,IAAI5gG,KAAKxE,KAAKy6B,QACxC,CAAA,CAAA;AAAA,EAAA;AACIu0E,EAAAA,UAAS32F,UAAUoiB,UAAU,WACzB;AAAA,WAAO,IAAIj2B,KAAKA,KAAKioC,IAAIzsC,KAAKmb,MAAMnb,KAAKghC,QAAQ,GAAGhhC,KAAKR,KAAKQ,KAAKihC,MAAMjhC,KAAKkhC,QAAQlhC,KAAKotE,QAAQptE,KAAK+uG,WAAAA,CAAAA,EAAct0E;EAC9H;AACIu0E,EAAAA,UAAS32F,UAAUtP,SAAS,WAAA;AACxB,WAAO/I,KAAKR;AAAAA,EACpB;AACIwvG,EAAAA,UAAS32F,UAAUO,WAAW,WAAA;AAC1B,WAAO5Y,KAAKghC;AAAAA,EACpB;AACIguE,EAAAA,UAAS32F,UAAU62F,UAAU,WAAA;AACzB,WAAOlvG,KAAKmb;AAAAA,EACpB;AACI6zF,EAAAA,UAAS32F,UAAU82F,WAAW,SAAUC,OAAAA;AACpCpvG,SAAKmb,QAAQi0F;AAAAA,EACrB;AACIJ,EAAAA,UAAS32F,UAAUg3F,YAAY,SAAUrrC;AACrChkE,SAAKghC,SAASgjC;AACd,QAAIhkE,KAAKghC,QAAQ,IAAI;AACjB,UAAIsuE,UAAUn+F,KAAK8D,MAAMjV,KAAKghC,QAAQ,EAAA;AACtC,UAAIuuE,WAAW1L,MAAM7jG,KAAKghC,OAAO,EAAA;AACjChhC,WAAKghC,QAAQuuE;AACbvvG,WAAKmb,QAAQm0F;AACb,UAAItvG,KAAKghC,UAAU,GAAG;AAClBhhC,aAAKghC,QAAQ;AAAA,UACXhhC,KAAKmb;AAAAA,MACV;AAAA,IACJ;AAAA,EACT;AACI6zF,EAAAA,UAAS32F,UAAUm3F,YAAY,SAAU3nG,MAAM4nG,MAAAA;AAC3C,QAAIA,OAAOzvG,KAAKolG,WAAc,GAAA;AAC1BplG,WAAKR,OAASQ,EAAAA,KAAKolG,eAAe,KAAK,IAAIqK,SAAS5nG,OAAO;AAAA,IAC9D,OACI;AACD7H,WAAKR,OAASQ,EAAAA,KAAKolG,eAAeqK,QAAQ5nG,OAAO;AAAA,IACpD;AACD7H,SAAK0vG,OACb;AAAA,EAAA;AACIV,EAAAA,UAAS32F,UAAUs3F,WAAW,SAAU9nG,MACpC7H;AAAAA,SAAKR,OAAOqI;AACZ7H,SAAK0vG,OACb;AAAA,EAAA;AACIV,EAAAA,UAAS32F,UAAUu3F,WAAW,SAAUjiE,OAAOkiE,UAAUjE,QACrD;AAAA,QAAIiE,UAAU;AAEV7vG,WAAKihC,QAAQ9vB,KAAK8D,OAAO,KAAKjV,KAAKihC,QAAQ0M,KAASA,IAAAA;AAAAA,IACvD;AACD,eAAS;AACL3tC,WAAKihC,QAAQ0M;AACb,UAAImiE,KAAKhM,OAAO9jG,KAAKihC,MAAM,KAAK8uE,SAASD,GAAGviG,KAAKyiG,UAAUF,GAAG/L;AAC9D,UAAIgM,QAAQ;AACR/vG,aAAKihC,OAAO+uE;AACZhwG,aAAK2vG,SAASI,MACjB;AAAA,MAAA;AACD,UAAI/L,MAAM4H,MAAAA,KAAWzI,SAASyI,QAAQ5rG,KAAKihC,IACvC;AAAA;AAAA,IACP;AAAA,EACT;AACI+tE,EAAAA,UAAS32F,UAAU43F,aAAa,SAAU1wB,SAASswB,UAAUjE,QAAQsE,UACjE;AAAA,QAAIL,UAAU;AAEV7vG,WAAKkhC,UACD/vB,KAAK8D,OAAO,QAAQjV,KAAKihC,OAAO,KAAKjhC,KAAKkhC,WAAWq+C,OAAWA,IAAAA;AAAAA,IACvE;AACD,eAAS;AACLv/E,WAAKkhC,UAAUq+C;AACf,UAAIuwB,KAAKhM,OAAO9jG,KAAKkhC,QAAQ,KAAKivE,UAAUL,GAAGviG,KAAK6iG,YAAYN,GAAG/L;AACnE,UAAIoM,SAAS;AACTnwG,aAAKkhC,SAASkvE;AACdpwG,aAAK4vG,SAASO,SAAS,OAAOvE,MACjC;AAAA,MAAA;AACD,WAAK5H,MAAM4H,MAAAA,KAAWzI,SAASyI,QAAQ5rG,KAAKihC,IACvC+iE,OAAAA,MAAMkM,aAAa/M,SAAS+M,UAAUlwG,KAAKkhC,MAAU,IAAA;AACtD;AAAA,MACH;AAAA,IACJ;AAAA,EACT;AACI8tE,EAAAA,UAAS32F,UAAUg4F,aAAa,SAAUC,SAAST,UAAUjE,QAAQsE,UAAUK,UAC3E;AAAA,QAAIV,UAAU;AAEV7vG,WAAKotE,UACDj8D,KAAK8D,OAAO,SAASjV,KAAKihC,OAAO,OAAOjhC,KAAKkhC,SAAS,KAAKlhC,KAAKotE,WAC5DkjC,OAAAA,IAAWA;AAAAA,IACtB;AACD,eAAS;AACLtwG,WAAKotE,UAAUkjC;AACf,UAAIR,KAAKhM,OAAO9jG,KAAKotE,QAAQ,EAAKojC,GAAAA,YAAYV,GAAGviG,KAAKkjG,YAAYX,GAAG/L;AACrE,UAAIyM,WAAW;AACXxwG,aAAKotE,SAASqjC;AACdzwG,aAAKiwG,WAAWO,WAAW,OAAO5E,QAAQsE;MAC7C;AACD,WAAKlM,MAAM4H,MAAWzI,KAAAA,SAASyI,QAAQ5rG,KAAKihC,IAAAA,OACvC+iE,MAAMkM,QAAAA,KAAa/M,SAAS+M,UAAUlwG,KAAKkhC,aAC3C8iE,MAAMuM,QAAAA,KAAapN,SAASoN,UAAUvwG,KAAKotE,MAAU,IAAA;AACtD;AAAA,MACH;AAAA,IACJ;AAAA,EACT;AACI4hC,EAAAA,UAAS32F,UAAUq3F,SAAS,WACxB;AAAA,QAAI1vG,KAAKR,OAAO,IAAI;AAChB;AAAA,IACH;AACD,QAAIkxG,cAAcrL,WAAWrlG,KAAKmb,MAAMnb,KAAKghC,QAAQ,GAAG,CACxD;AAAA,QAAIhhC,KAAKR,OAAOkxG,aAAa;AACzB;AAAA,IACH;AACD,WAAO1wG,KAAKR,MAAMkxG,aAAa;AAC3B1wG,WAAKR,OAAOkxG;AAAAA,QACV1wG,KAAKghC;AACP,UAAIhhC,KAAKghC,UAAU,IAAI;AACnBhhC,aAAKghC,QAAQ;AACXhhC,UAAAA,KAAKmb;AACP,YAAInb,KAAKmb,OAAOkpF,SAAS;AACrB;AAAA,QACH;AAAA,MACJ;AACDqM,oBAAcrL,WAAWrlG,KAAKmb,MAAMnb,KAAKghC,QAAQ,GAAG,CACvD;AAAA,IAAA;AAAA,EACT;AACIguE,EAAAA,UAAS32F,UAAUjV,MAAM,SAAUwE,SAASioG,UACxC;AAAA,QAAI7E,OAAOpjG,QAAQojG,MAAMvzC,WAAW7vD,QAAQ6vD,UAAUg4C,OAAO7nG,QAAQ6nG,MAAM7D,SAAShkG,QAAQgkG,QAAQsE,WAAWtoG,QAAQsoG,UAAUK,WAAW3oG,QAAQ2oG;AACpJ,YAAQvF,MAAAA;AAAAA,MACJ,KAAK0D,UAAU1C;AACX,eAAOhsG,KAAKmvG,SAAS13C,QACzB;AAAA,MAAA,KAAKi3C,UAAU3C;AACX,eAAO/rG,KAAKqvG,UAAU53C;MAC1B,KAAKi3C,UAAU5C;AACX,eAAO9rG,KAAKwvG,UAAU/3C,UAAUg4C,IAAAA;AAAAA,MACpC,KAAKf,UAAUnD;AACX,eAAOvrG,KAAK2vG,SAASl4C,QACzB;AAAA,MAAA,KAAKi3C,UAAUrD;AACX,eAAOrrG,KAAK4vG,SAASn4C,UAAUo4C,UAAUjE,MAAAA;AAAAA,MAC7C,KAAK8C,UAAUpD;AACX,eAAOtrG,KAAKiwG,WAAWx4C,UAAUo4C,UAAUjE,QAAQsE,QACvD;AAAA,MAAA,KAAKxB,UAAUiC;AACX,eAAO3wG,KAAKqwG,WAAW54C,UAAUo4C,UAAUjE,QAAQsE,UAAUK,QAE7E;AAAA,IAAA;AAAA,EAAA;AACI,SAAOvB;AACX,EAAEF,IChLK;AAAA,SAAS8B,oBAAkBhpG,SAAAA;AAC9B,MAAI+qD,UAAU,CAAA;AACd,MAAI5sC,OAAO9L,OAAO8L,KAAKne,OAEvB;AAAA,WAASipG,KAAK,GAAGC,SAAS/qF,MAAM8qF,KAAKC,OAAO1sG,QAAQysG,MAAM;AACtD,QAAI37F,MAAM47F,OAAOD;AACjB,QAAK1N,CAAAA,SAAS4N,aAAa77F,GACvBy9C;AAAAA,cAAQ9uD,KAAKqR,GACjB;AAAA,QAAIwD,OAAO9Q,QAAQsN,UAAUuvF,YAAY78F,QAAQsN,OAAO;AACpDy9C,cAAQ9uD,KAAKqR,GAChB;AAAA,IAAA;AAAA,EACJ;AACD,MAAIy9C,QAAQvuD,QAAQ;AAChB,UAAM,IAAI6N,MAAM,sBAAsB0gD,QAAQ7iD,KAAK,IACtD,CAAA;AAAA,EAAA;AACD,SAAOu3F,SAAS,IAAIz/F,OACxB;AAAA;AACO,SAASopG,aAAappG,SAAAA;AACzB,MAAI6jB,OAAO47E,SAASA,SAAS,CAAA,GAAI4J,iBAAkBL,GAAAA,oBAAkBhpG;AACrE,MAAIo7F,UAAUv3E,KAAKylF,QAAAA;AACfzlF,SAAKu/E,OAAOE,MAAMc;AACtB,MAAMhJ,EAAAA,UAAUv3E,KAAKu/E,IAASE,KAAAA,MAAMC,YAAY1/E,KAAKu/E,QAAQ;AACzD,UAAM,IAAI/4F,MAAM,sBAAsB7G,OAAOqgB,KAAKu/E,MAAM,GAAK5/F,EAAAA,OAAOxD,QAAQojG,IAC/E,CAAA;AAAA,EAAA;AACD,OAAKv/E,KAAK0lF;AACN1lF,SAAK0lF,UAAU,IAAI3sG,MAAK,oBAAIA,QAAOwoC,gBAAgB,CAAA,CAAA;AACvD,OAAKg2D,UAAUv3E,KAAKgkF,OAAO;AACvBhkF,SAAKgkF,OAAOvE,MAAM6C,GAAGpL;AAAAA,EACxB,WACQM,SAASx3E,KAAKgkF;;OAGlB;AACDhkF,SAAKgkF,OAAOhkF,KAAKgkF,KAAK9M;AAAAA,EACzB;AACD,MAAIK,UAAUv3E,KAAK2lF,WAAW;AAC1B,QAAInO,SAASx3E,KAAK2lF;AACd3lF,WAAK2lF,WAAW,CAAC3lF,KAAK2lF,QAAAA;AAC1B,aAASjtG,IAAI,GAAGA,IAAIsnB,KAAK2lF,SAAShtG,QAAQD,KAAK;AAC3C,UAAIopG,IAAI9hF,KAAK2lF,SAASjtG,CACtB;AAAA,UAAIopG,MAAM,KAAOA,EAAAA,KAAAA,QAAaA,KAAK,MAAM;AACrC,cAAM,IAAIt7F,MAAM;MACnB;AAAA,IACJ;AAAA,EACJ;AACD,MAAM8H,EAAAA,QAAQ0R,KAAKygF,QACfjI,KAAAA,SAASx4E,KAAKygF,QAAAA,KACdjI,SAASx4E,KAAKwgF,SAAAA,KACdlyF,QAAQ0R,KAAK6+E,UAAAA,KACbrG,SAASx4E,KAAK6+E,UAAAA,KACdtH,UAAUv3E,KAAK++E,cACfxH,UAAUv3E,KAAKylF,YAAY;AAC3B,YAAQzlF,KAAKu/E,MACT;AAAA,MAAA,KAAKE,MAAMc;AACP,aAAKvgF,KAAK+/E;AACN//E,eAAK+/E,UAAU//E,KAAK0lF,QAAQ5lE,YAAgB,IAAA;AAChD9f,aAAK6+E,aAAa7+E,KAAK0lF,QAAQ7lE,WAAAA;AAC/B;AAAA,MACJ,KAAK4/D,MAAMa;AACPtgF,aAAK6+E,aAAa7+E,KAAK0lF,QAAQ7lE;AAC/B;AAAA,MACJ,KAAK4/D,MAAMY;AACPrgF,aAAK++E,YAAY,CAACpF,WAAW35E,KAAK0lF,OAAAA,CAAAA;AAClC;AAAA;EAEX;AAED,MAAInO,UAAUv3E,KAAK+/E,OAAAA,KAAAA,CAAavzF,QAAQwT,KAAK+/E,OAAAA,GAAU;AACnD//E,SAAK+/E,UAAU,CAAC//E,KAAK+/E;EACxB;AAED,MAAIxI,UAAUv3E,KAAKwgF,SAAAA,KAAAA,CACdh0F,QAAQwT,KAAKwgF,cACdhJ,SAASx3E,KAAKwgF,YAAY;AAC1BxgF,SAAKwgF,YAAY,CAACxgF,KAAKwgF,SAC1B;AAAA,EAAA;AAED,OAAKjJ,UAAUv3E,KAAK6+E,aAAa;AAC7B7+E,SAAK6+E,aAAa,CAClB7+E;AAAAA,SAAK8+E,cAAc,CAAA;AAAA,EACtB,WACQtyF,QAAQwT,KAAK6+E,UAAa,GAAA;AAC/B,QAAIA,aAAa,CAAA;AACjB,QAAIC,cAAc;AAClB,aAASpmG,IAAI,GAAGA,IAAIsnB,KAAK6+E,WAAWlmG,QAAQD,KAAK;AAC7C,UAAIopG,IAAI9hF,KAAK6+E,WAAWnmG,CACxB;AAAA,UAAIopG,IAAI,GAAG;AACPjD,mBAAWzmG,KAAK0pG;MACnB,WACQA,IAAI,GAAG;AACZhD,oBAAY1mG,KAAK0pG,CAAAA;AAAAA,MACpB;AAAA,IACJ;AACD9hF,SAAK6+E,aAAaA;AAClB7+E,SAAK8+E,cAAcA;AAAAA,EACtB,WACQ9+E,KAAK6+E,aAAa,GAAG;AAC1B7+E,SAAK8+E,cAAc,CAAC9+E,KAAK6+E,UAAAA;AACzB7+E,SAAK6+E,aAAa,CAAA;AAAA,EACrB,OACI;AACD7+E,SAAK8+E,cAAc,CAAA;AACnB9+E,SAAK6+E,aAAa,CAAC7+E,KAAK6+E,UAC3B;AAAA,EAAA;AAED,MAAItH,UAAUv3E,KAAKygF,QAAcj0F,KAAAA,CAAAA,QAAQwT,KAAKygF,QAAW,GAAA;AACrDzgF,SAAKygF,WAAW,CAACzgF,KAAKygF,QAAAA;AAAAA,EACzB;AAED,MAAKlJ,CAAAA,UAAUv3E,KAAK++E,SAAY,GAAA;AAC5B/+E,SAAK4lF,aAAa;AAAA,EACrB,WACQpO,SAASx3E,KAAK++E,SAAAA,GAAY;AAC/B/+E,SAAK++E,YAAY,CAAC/+E,KAAK++E,SAAAA;AACvB/+E,SAAK4lF,aAAa;AAAA,EACrB,WACQnO,aAAaz3E,KAAK++E,SAAAA,GAAY;AACnC/+E,SAAK++E,YAAY,CAAC9H,QAAQE,QAAQn3E,KAAK++E,SAAAA,EAAW7H;AAClDl3E,SAAK4lF,aAAa;AAAA,EACrB,WACQ5lF,KAAK++E,qBAAqB9H,SAAS;AACxC,QAAA,CAAKj3E,KAAK++E,UAAUpyE,KAAK3M,KAAKu/E,OAAOE,MAAMa,SAAS;AAChDtgF,WAAK++E,YAAY,CAAC/+E,KAAK++E,UAAU7H,OAAAA;AACjCl3E,WAAK4lF,aAAa;AAAA,IACrB,OACI;AACD5lF,WAAK4lF,aAAa,CAAC,CAAC5lF,KAAK++E,UAAU7H,SAASl3E,KAAK++E,UAAUpyE,CAC3D3M,CAAAA;AAAAA,WAAK++E,YAAY;AAAA,IACpB;AAAA,EACJ,OACI;AACD,QAAIA,YAAY,CAChB;AAAA,QAAI6G,aAAa,CAAA;AACjB,aAASltG,IAAI,GAAGA,IAAIsnB,KAAK++E,UAAUpmG,QAAQD,KAAK;AAC5C,UAAImoG,OAAO7gF,KAAK++E,UAAUrmG;AAC1B,UAAI8+F,SAASqJ,OAAO;AAChB9B,kBAAU3mG,KAAKyoG,IAAAA;AACf;AAAA,MACH,WACQpJ,aAAaoJ,IAAO,GAAA;AACzB9B,kBAAU3mG,KAAK6+F,QAAQE,QAAQ0J,IAAAA,EAAM3J;AACrC;AAAA,MACH;AACD,WAAK2J,KAAKl0E,KAAK3M,KAAKu/E,OAAOE,MAAMa,SAAS;AACtCvB,kBAAU3mG,KAAKyoG,KAAK3J;MACvB,OACI;AACD0O,mBAAWxtG,KAAK,CAACyoG,KAAK3J,SAAS2J,KAAKl0E,CACvC,CAAA;AAAA,MAAA;AAAA,IACJ;AACD3M,SAAK++E,YAAYvG,SAASuG,SAAaA,IAAAA,YAAY;AACnD/+E,SAAK4lF,aAAapN,SAASoN,UAAAA,IAAcA,aAAa;AAAA,EACzD;AAED,OAAKrO,UAAUv3E,KAAKmgF,MAAS,GAAA;AACzBngF,SAAKmgF,SAASngF,KAAKu/E,OAAOE,MAAMG,SAAS,CAAC5/E,KAAK0lF,QAAQrlE,YAAiB,CAAA,IAAA;AAAA,EAC3E,WACQm3D,SAASx3E,KAAKmgF,MAAS,GAAA;AAC5BngF,SAAKmgF,SAAS,CAACngF,KAAKmgF,MAAAA;AAAAA,EACvB;AAED,MAAK5I,CAAAA,UAAUv3E,KAAKykF,QAAW,GAAA;AAC3BzkF,SAAKykF,WACDzkF,KAAKu/E,OAAOE,MAAMI,WAAW,CAAC7/E,KAAK0lF,QAAQplE,cAAmB,CAAA,IAAA;AAAA,EACrE,WACQk3D,SAASx3E,KAAKykF,QAAAA,GAAW;AAC9BzkF,SAAKykF,WAAW,CAACzkF,KAAKykF,QAAAA;AAAAA,EACzB;AAED,MAAKlN,CAAAA,UAAUv3E,KAAK8kF,QAAAA,GAAW;AAC3B9kF,SAAK8kF,WACD9kF,KAAKu/E,OAAOE,MAAMyF,WAAW,CAACllF,KAAK0lF,QAAQnlE,mBAAmB;AAAA,EACrE,WACQi3D,SAASx3E,KAAK8kF,WAAW;AAC9B9kF,SAAK8kF,WAAW,CAAC9kF,KAAK8kF,QACzB;AAAA,EAAA;AACD,SAAO,EAAEe,eAAe7lF;AAC5B;AACO,SAAS8lF,aAAa9lF,MAAAA;AACzB,MAAI+lF,oBAAoB/lF,KAAK0lF,QAAQ12E,QAAY,IAAA;AACjD,OAAKk0E,qBAAqBljF,KAAKu/E,IAAO,GAAA;AAClC,WAAO,CACV;AAAA,EAAA;AACD,MAAIyG,UAAU,CAAA;AACdhmF,OAAKmgF,OAAOjoG,QAAQ,SAAUs9B,MAAAA;AAC1BxV,SAAKykF,SAASvsG,QAAQ,SAAUu9B,QAC5BzV;AAAAA,WAAK8kF,SAAS5sG,QAAQ,SAAUypE,QAC5BqkC;AAAAA,gBAAQ5tG,KAAK,IAAIirG,KAAK7tE,MAAMC,QAAQksC,QAAQokC;MAC5D,CACA;AAAA,IAAA,CAAA;AAAA,EACA,CACI;AAAA,SAAOC;AACX;AClMO,SAASC,YAAYC,WACxB;AAAA,MAAI/pG,UAAU+pG,UACTrsG,MAAM,IACNG,EAAAA,IAAImsG,WACJ/8D,OAAO,SAAU9tB;AAAK,WAAOA,MAAM;AAAA,EAAK,CAC7C;AAAA,SAAOsgF,SAASA,SAAS,CAAA,GAAIz/F,QAAQ,KAAKA,QAAQ,CAAA,CAAA;AACtD;AACO,SAASiqG,aAAaC,MACzB;AAAA,MAAIlqG,UAAU,CAAA;AACd,MAAImqG,kBAAkB,+CAA+CnxD,KAAKkxD,IAC1E;AAAA,MAAA,CAAKC,iBAAiB;AAClB,WAAOnqG;AAAAA,EACV;AACD,MAAIoqG,OAAOD,gBAAgB,IAAIZ,UAAUY,gBAAgB,CACzD;AAAA,MAAIC,MAAM;AACNpqG,YAAQoqG,OAAOA;AAAAA,EAClB;AACDpqG,UAAQupG,UAAUvL,kBAAkBuL,OACpC;AAAA,SAAOvpG;AACX;AACA,SAASgqG,UAAUD,WACfA;AAAAA,cAAYA,UAAU3nF,QAAQ,aAAa,EAC3C;AAAA,MAAA,CAAK2nF,UAAUvtG;AACX,WAAO;AACX,MAAI0f,SAAS,iBAAiB88B,KAAK+wD,UAAUhnE,YAC7C,CAAA;AAAA,MAAA,CAAK7mB,QAAQ;AACT,WAAOmuF,WAAWN,SACrB;AAAA,EAAA;AACD,MAAIz8F,MAAM4O,OAAO,CACjB;AAAA,UAAQ5O,IAAIy1B,YACR,GAAA;AAAA,IAAA,KAAK;AAAA,IACL,KAAK;AACD,aAAOsnE,WAAWN,SAAAA;AAAAA,IACtB,KAAK;AACD,aAAOE,aAAaF,SAAAA;AAAAA,IACxB;AACI,YAAM,IAAI1/F,MAAM,wBAAwB7G,OAAO8J,KAAK,MAAA,EAAQ9J,OAAOumG,SAE/E,CAAA;AAAA,EAAA;AAAA;AACA,SAASM,WAAWH,MAAAA;AAChB,MAAII,eAAeJ,KAAK9nF,QAAQ,YAAY;AAC5C,MAAIpiB,UAAUiqG,aAAaK,YAC3B;AAAA,MAAItzE,QAAQkzE,KAAK9nF,QAAQ,uBAAuB,EAAA,EAAI1kB,MAAM,GAC1Ds5B;AAAAA,QAAMj7B,QAAQ,SAAU25B,MAAAA;AACpB,QAAIwyE,KAAKxyE,KAAKh4B,MAAM,GAAA,GAAM4P,MAAM46F,GAAG,CAAA,GAAIzxF,QAAQyxF,GAAG,CAAA;AAClD,YAAQ56F,IAAIy1B,YAAAA,GAAAA;AAAAA,MACR,KAAK;AACD/iC,gBAAQojG,OAAO0D,UAAUrwF,MAAMssB,YAC/B,CAAA;AAAA;AAAA,MACJ,KAAK;AACD/iC,gBAAQ6nG,OAAO0C,KAAK9zF,MAAMssB,YAC1B,CAAA;AAAA;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,YAAIkD,MAAMukE,YAAY/zF,KACtB;AAAA,YAAIg0F,YAAYn9F,IAAIyN,YAAAA;AAGpB/a,gBAAQyqG,SAAAA,IAAaxkE;AACrB;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AACDjmC,gBAAQ4iG,YAAY8H,aAAaj0F,KACjC;AAAA;AAAA,MACJ,KAAK;AAAA,MACL,KAAK;AAED,YAAI8yF,UAAUU,aAAaC,IAC3BlqG;AAAAA,gBAAQoqG,OAAOb,QAAQa;AACvBpqG,gBAAQupG,UAAUA,QAAQA;AAC1B;AAAA,MACJ,KAAK;AACDvpG,gBAAQi+F,QAAQD,kBAAkBvnF;AAClC;AAAA,MACJ,KAAK;AACDzW,gBAAQspG,WAAWp3F,OAAOuE,KAC1B;AAAA;AAAA,MACJ;AACI,cAAM,IAAIpM,MAAM,6BAA6BiD,MAAM,GAEnE;AAAA,IAAA;AAAA,EAAA,CAAA;AACI,SAAOtN;AACX;AACA,SAASwqG,YAAY/zF;AACjB,MAAIA,MAAMtM,QAAQ,GAAU,MAAA,IAAG;AAC3B,QAAI0rB,SAASpf,MAAM/Y,MAAM;AACzB,WAAOm4B,OAAOh4B,IAAI8sG,qBAAAA;AAAAA,EACrB;AACD,SAAOA,sBAAsBl0F,KACjC;AAAA;AACA,SAASk0F,sBAAsBl0F,OAAAA;AAC3B,MAAI,aAAaqnB,KAAKrnB,QAAQ;AAC1B,WAAOvE,OAAOuE,KAAAA;AAAAA,EACjB;AACD,SAAOA;AACX;AACA,SAASi0F,aAAaj0F;AAClB,MAAIxW,OAAOwW,MAAM/Y,MAAM;AACvB,SAAOuC,KAAKpC,IAAI,SAAUjG,KAAAA;AACtB,QAAIA,IAAI4E,WAAW,GAAG;AAElB,aAAO+tG,KAAK3yG,GAAAA;AAAAA,IACf;AAED,QAAIg2E,QAAQh2E,IAAI6qC,MAAM,4BAAA;AACtB,QAAKmrC,CAAAA,SAASA,MAAMpxE,SAAS,GAAG;AAC5B,YAAM,IAAIouG,YAAY,2BAA2BpnG,OAAO5L,GAC3D,CAAA;AAAA,IAAA;AACD,QAAI44B,IAAIte,OAAO07D,MAAM,CACrB,CAAA;AAAA,QAAIi9B,WAAWj9B,MAAM,CAAA;AACrB,QAAI82B,OAAO6F,KAAKM,QAAU9P,EAAAA;AAC1B,WAAO,IAAID,QAAQ4J,MAAMl0E,CACjC;AAAA,EAAA,CAAA;AACA;AC7HA,IAAIs6E,eAA8B,WAC9B;AAAA,WAASA,cAAavvG,MAAM6uG,MAAAA;AACxB,QAAI5qF,MAAMjkB,KAAKs3B,QAAY,CAAA,GAAA;AACvB,YAAM,IAAIk4E,WAAW;IACxB;AACD3yG,SAAKmD,OAAOA;AACZnD,SAAKgyG,OAAOA;AAAAA,EACf;AACD/3F,SAAO24F,eAAeF,cAAar6F,WAAW,SAAS,EACnDoxB,KAAK,WAAA;AACD,WAAQzpC,CAAAA,KAAKgyG,QAAQhyG,KAAKgyG,KAAKrnE,kBAAkB;AAAA,EACpD,GACDkoE,YAAY,OACZC,cAAc,KAElBJ,CAAAA;AAAAA,EAAAA,cAAar6F,UAAUC,WAAW,WAAA;AAC9B,QAAIk2B,UAAUm3D,kBAAkB3lG,KAAKmD,KAAKs3B,QAAAA,GAAWz6B,KAAK+yG,KAAAA;AAC1D,SAAK/yG,KAAK+yG,OAAO;AACb,aAAO,SAAS3nG,OAAOpL,KAAKgyG,MAAM,GAAK5mG,EAAAA,OAAOojC;IACjD;AACD,WAAO,IAAIpjC,OAAOojC,OAAAA;AAAAA,EAC1B;AACIkkE,EAAAA,cAAar6F,UAAUoiB,UAAU,WAAA;AAC7B,WAAOz6B,KAAKmD,KAAKs3B;EACzB;AACIi4E,EAAAA,cAAar6F,UAAU26F,cAAc,WAAA;AACjC,QAAIhzG,KAAK+yG,OAAO;AACZ,aAAO/yG,KAAKmD;AAAAA,IACf;AACD,WAAO+iG,eAAelmG,KAAKmD,MAAMnD,KAAKgyG;EAC9C;AACI,SAAOU;AACX;AC5BO,SAASO,gBAAgBrrG,SAAAA;AAC5B,MAAIqiG,QAAQ;AACZ,MAAIkH,UAAU;AACd,MAAIprF,OAAO9L,OAAO8L,KAAKne,OAAAA;AACvB,MAAImpG,eAAc92F,OAAO8L,KAAKkrF,iBAAAA;AAC9B,WAAS9sG,IAAI,GAAGA,IAAI4hB,KAAK3hB,QAAQD,KAAK;AAClC,QAAI4hB,KAAK5hB,OAAO;AACZ;AACJ,SAAKg/F,SAAS4N,cAAahrF,KAAK5hB,CAAAA,CAAAA;AAC5B;AACJ,QAAI+Q,MAAM6Q,KAAK5hB,CAAGwmC,EAAAA,YAAAA;AAClB,QAAItsB,QAAQzW,QAAQme,KAAK5hB,CAAAA,CAAAA;AACzB,QAAI+uG,WAAW;AACf,SAAKlQ,UAAU3kF,KAAAA,KAAWpG,QAAQoG,KAAWA,KAAAA,CAAAA,MAAMja;AAC/C;AACJ,YAAQ8Q,KACJ;AAAA,MAAA,KAAK;AACDg+F,mBAAWhI,MAAMC,YAAYvjG,QAAQojG,IAAAA;AACrC;AAAA,MACJ,KAAK;AACD,YAAI/H,SAAS5kF,QAAQ;AACjB60F,qBAAW,IAAIxQ,QAAQrkF,KAAAA,EAAO/F,SACjC;AAAA,QAAA,OACI;AACD46F,qBAAW70F,MAAM/F;QACpB;AACD;AAAA,MACJ,KAAK;AAYDpD,cAAM;AACNg+F,mBAAW3P,QAAQllF,KACd5Y,EAAAA,IAAI,SAAU6mG,MACf;AAAA,cAAIA,gBAAgB5J,SAAS;AACzB,mBAAO4J;AAAAA,UACV;AACD,cAAIr0F,QAAQq0F,OAAO;AACf,mBAAO,IAAI5J,QAAQ4J,KAAK,CAAIA,GAAAA,KAAK;UACpC;AACD,iBAAO,IAAI5J,QAAQ4J,IAAAA;AAAAA,QACvC,GACqBh0F,SACL;AAAA;AAAA,MACJ,KAAK;AACD64F,kBAAUgC,aAAa90F,OAAOzW,QAAQoqG,IACtC;AAAA;AAAA,MACJ,KAAK;AACDkB,mBAAWvN,kBAAkBtnF,OAAAA,CAAQzW,QAAQoqG,IAC7C;AAAA;AAAA,MACJ;AACI,YAAI/5F,QAAQoG,QAAQ;AAChB,cAAI+0F,YAAY,CAAA;AAChB,mBAAS1/E,IAAI,GAAGA,IAAIrV,MAAMja,QAAQsvB,KAAK;AACnC0/E,sBAAU1/E,CAAAA,IAAKruB,OAAOgZ,MAAMqV,CAAAA,CAAAA;AAAAA,UAC/B;AACDw/E,qBAAWE,UAAU96F,SACxB;AAAA,QAAA,OACI;AACD46F,qBAAW7tG,OAAOgZ,KACrB;AAAA,QAAA;AAAA,IAAA;AAET,QAAI60F,UAAU;AACVjJ,YAAMpmG,KAAK,CAACqR,KAAKg+F,QAAAA,CAAAA;AAAAA,IACpB;AAAA,EACJ;AACD,MAAIpG,QAAQ7C,MACPxkG,IAAI,SAAUqqG,IACf;AAAA,QAAI56F,OAAM46F,GAAG,IAAIzxF,SAAQyxF,GAAG;AAC5B,WAAO,GAAG1kG,OAAO8J,MAAK,GAAA,EAAK9J,OAAOiT,OAAM/F;EAChD,CACSxI,EAAAA,KAAK;AACV,MAAIujG,aAAa;AACjB,MAAIvG,UAAU,IAAI;AACduG,iBAAa,SAASjoG,OAAO0hG;EAChC;AACD,SAAO,CAACqE,SAASkC,UAAAA,EAAYx+D,OAAO,SAAU9tB;AAAK,WAASA,CAAAA,CAAAA;AAAAA,EAAE,GAAIjX,KAAK,IAAA;AAC3E;AACA,SAASqjG,aAAahC,SAASa,MAAAA;AAC3B,OAAKb,SAAS;AACV,WAAO;AAAA,EACV;AACD,SAAO,YAAY,IAAIuB,aAAa,IAAIluG,KAAK2sG,OAAUa,GAAAA,IAAAA,EAAM15F;AACjE;AC7FA,SAASg7F,UAAU9wG,MAAMqkB,OAAAA;AACrB,MAAI9Y,MAAMkK,QAAQzV,IAAO,GAAA;AACrB,SAAKuL,MAAMkK,QAAQ4O;AACf,aAAO;AACX,QAAIrkB,KAAK4B,WAAWyiB,MAAMziB;AACtB,aAAO;AACX,WAAO5B,KAAK6lG,MAAM,SAAUllG,MAAMgB,GAAAA;AAAK,aAAOhB,KAAKs3B,QAAAA,MAAc5T,MAAM1iB,CAAGs2B,EAAAA,QAAAA;AAAAA,IAAY;EACzF;AACD,MAAIj4B,gBAAgBgC,MAAM;AACtB,WAAOqiB,iBAAiBriB,QAAQhC,KAAKi4B,QAAAA,MAAc5T,MAAM4T,QAC5D;AAAA,EAAA;AACD,SAAOj4B,SAASqkB;AACpB;AACA,IAAI0sF,QAAuB,WACvB;AAAA,WAASA;AACLvzG,SAAK4zE,MAAM;AACX5zE,SAAK2sE,SAAS,CACd3sE;AAAAA,SAAK2mG,QAAQ,CACb3mG;AAAAA,SAAKwzG,UAAU,CAClB;AAAA,EAAA;AAMDD,EAAAA,OAAMl7F,UAAUo7F,YAAY,SAAUC,MAAMr1F,OAAOjF,MAC/C;AAAA,QAAIiF,OAAO;AACPA,cAAQA,iBAAiB7Z,OAAO05E,MAAM7/D,KAASonF,IAAAA,WAAWpnF;IAC7D;AACD,QAAIq1F,SAAS,OAAO;AAChB1zG,WAAK4zE,MAAMv1D;AAAAA,IACd,OACI;AACDjF,WAAKu6F,SAASt1F;AACdre,WAAK0zG,IAAM7vG,EAAAA,KAAKuV,IACnB;AAAA,IAAA;AAAA,EACT;AAQIm6F,EAAAA,OAAMl7F,UAAUu7F,YAAY,SAAUF,MAAMt6F;AACxC,QAAIy6F,SAAS;AACb,QAAIC,WAAW16F,OAAOa,OAAO8L,KAAK3M,IAAQ,IAAA,CAAA;AAC1C,QAAI26F,gBAAgB,SAAUr7C,OAC1B;AAAA,eAASv0D,KAAI,GAAGA,KAAI2vG,SAAS1vG,QAAQD,MAAK;AACtC,YAAI+Q,MAAM4+F,SAAS3vG;AACnB,YAAKmvG,CAAAA,UAAUl6F,KAAKlE,GAAMwjD,GAAAA,MAAKxjD,OAAO;AAClC,iBAAO;AAAA,QACV;AAAA,MACJ;AACD,aAAO;AAAA,IACnB;AACQ,QAAI8+F,eAAeh0G,KAAK0zG,IACxB;AAAA,QAAIA,SAAS,OAAO;AAChBG,eAAS7zG,KAAK4zE;AAAAA,IACjB,WACQ37D,QAAQ+7F,YAAe,GAAA;AAG5B,eAAS7vG,IAAI,GAAGA,IAAI6vG,aAAa5vG,QAAQD,KAAK;AAC1C,YAAIu0D,OAAOs7C,aAAa7vG,CAAAA;AACxB,YAAI2vG,SAAS1vG,UAAU2vG,cAAcr7C,IACjC;AAAA;AACJm7C,iBAASn7C,KAAKi7C;AACd;AAAA,MACH;AAAA,IACJ;AACD,QAAKE,CAAAA,UAAU7zG,KAAK4zE,KAAK;AAGrB,UAAIqgC,aAAa,IAAIvN,WAAWgN,MAAMt6F;AACtC,eAASjV,IAAI,GAAGA,IAAInE,KAAK4zE,IAAIxvE,QAAQD,KAAK;AACtC,aAAK8vG,WAAWrN,OAAO5mG,KAAK4zE,IAAIzvE,CAAAA,CAAAA;AAC5B;AAAA,MACP;AACD0vG,eAASI,WAAW1wD,SAAAA;AACpBvjD,WAAKyzG,UAAUC,MAAMG,QAAQz6F,IAChC;AAAA,IAAA;AACD,WAAOnB,QAAQ47F,MAAAA,IACTpO,WAAWoO,MAAAA,IACXA,kBAAkBrvG,OACd05E,MAAM21B,UACNA;AAAAA,EAClB;AACI,SAAON;AACX,ECtFA;AAAA,IAAIW,WAAW3M,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,IAAIlE,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,IAAI,EAAK,GAAA,IAAA,GAAOA,OAAO,IAAI,EAAA,GAAK,OAAOA,OAAO,IAAI,KAAK,IAAOA,GAAAA,OAAO,GAAG,CAAA,GAAI;AACle,IAAI8Q,WAAW5M,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAA,GAAIlE,OAAO,GAAG,EAAA,GAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,IAAI,KAAK,IAAOA,GAAAA,OAAO,IAAI,EAAK,GAAA,IAAA,GAAOA,OAAO,IAAI,EAAA,GAAK,IAAOA,GAAAA,OAAO,GAAG,CAAI,GAAA,IAAA;AACle,IAAI+Q,MAAMrvD,MAAM,GAAG,EACnB;AAAA,IAAIsvD,MAAMtvD,MAAM,GAAG,EACnB;AAAA,IAAIuvD,MAAMvvD,MAAM,GAAG;AACnB,IAAIwvD,MAAMxvD,MAAM,GAAG;AACnB,IAAIyvD,cAAcjN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAA,GAAIgN,KAAK,IAAOF,GAAAA,KAAK,IAAOE,GAAAA,KAAK,OAAOD,KAAK,IAAA,GAAOC,KAAK,IAAOD,GAAAA,KAAK,OAAOC,KAAK,IAAA,GAAOA,KAAK,IAAA,GAAOD,KAAK,IAAOC,GAAAA,KAAK,OAAOD,KAAK,IAAA,GAAOC,KAAK,IAAOA,GAAAA,IAAItmG,MAAM,GAAG,IAAI,IAC7W;AAAA,IAAIwmG,cAAclN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,IAAIgN,KAAK,IAAA,GAAOH,KAAK,IAAA,GAAOG,KAAK,IAAOD,GAAAA,KAAK,OAAOC,KAAK,IAAA,GAAOD,KAAK,IAAOC,GAAAA,KAAK,IAAOA,GAAAA,KAAK,OAAOD,KAAK,IAAA,GAAOC,KAAK,IAAOD,GAAAA,KAAK,OAAOC,KAAK,IAAA,GAAOA,IAAItmG,MAAM,GAAG,CAAI,GAAA,IAAA;AAC7W,IAAIymG,OAAO3vD,MAAAA,KAAW,CACtB;AAAA,IAAI4vD,OAAO5vD,MAAAA,KAAW,CACtB;AAAA,IAAI6vD,OAAO7vD,MAAO,KAAI;AACtB,IAAI8vD,OAAO9vD,MAAO,KAAI;AACtB,IAAI+vD,eAAevN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAA,GAAIsN,MAAM,IAAOF,GAAAA,MAAM,IAAOE,GAAAA,MAAM,OAAOD,MAAM,IAAA,GAAOC,MAAM,IAAOD,GAAAA,MAAM,OAAOC,MAAM,IAAA,GAAOA,MAAM,IAAA,GAAOD,MAAM,IAAOC,GAAAA,MAAM,OAAOD,MAAM,IAAA,GAAOC,MAAM,IAAOA,GAAAA,KAAK5mG,MAAM,GAAG,IAAI,IAC3X;AAAA,IAAI8mG,eAAexN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,IAAIsN,MAAM,IAAA,GAAOH,MAAM,IAAA,GAAOG,MAAM,IAAOD,GAAAA,MAAM,OAAOC,MAAM,IAAA,GAAOD,MAAM,IAAOC,GAAAA,MAAM,IAAOA,GAAAA,MAAM,OAAOD,MAAM,IAAA,GAAOC,MAAM,IAAOD,GAAAA,MAAM,OAAOC,MAAM,IAAA,GAAOA,KAAK5mG,MAAM,GAAG,CAAI,GAAA,IAAA;AAC3X,IAAI+mG,YAAY,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA;AACxE,IAAIC,YAAY,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA;AACxE,IAAIC,WAAW,WAAA;AACX,MAAIC,WAAW,CAAA;AACf,WAAShxG,IAAI,GAAGA,IAAI,IAAIA;AACpBgxG,eAAWA,SAAS/pG,OAAO25C,MAAM,CACrC,CAAA;AAAA,SAAOowD;AACV,EALc;AClBR,SAASC,YAAYj6F,MAAMvT;AAC9B,MAAIytG,YAAYnR,SAAS/oF,MAAM,GAAG,CAClC;AAAA,MAAIm6F,UAAU9Q,WAAWrpF,IAAAA,IAAQ,MAAM;AACvC,MAAIo6F,cAAc/Q,WAAWrpF,OAAO,CAAK,IAAA,MAAM;AAC/C,MAAIq6F,cAAcxQ,UAAUqQ,SAC5B;AAAA,MAAII,cAAcrQ,WAAWiQ;AAC7B,MAAIp8F,SAASouF,SAASA,SAAS,EAAEiO,SAAkBC,aAA0BC,aAA0BC,YAAaA,GAAeC,cAAcv6F,IAAQ,CAAA,GAAA,EAAEw6F,SAAS,KACpK,CAAA;AAAA,MAAI3R,MAAMp8F,QAAQskG,WAAW;AACzB,WAAOjzF;AAAAA,EACV;AACDA,SAAO08F,UAAUtS,OAAO,GAAGiS,UAAU,CAAA;AACrC,MAAIM;AACJ,MAAIC;AACJ,MAAIC,UAAWF,YAAY/R,MAAM,IAAI4R,cAAc7tG,QAAQ6nG,MAAM,CACjE;AAAA,MAAIqG,WAAW,GAAG;AACdA,cAAU;AAGVD,eAAW58F,OAAOq8F,UAAUzR,MAAM4R,cAAc7tG,QAAQ6nG,MAAM,CACjE;AAAA,EAAA,OACI;AAGDoG,eAAWP,UAAUQ;AAAAA,EACxB;AACD,MAAIvoG,MAAM4D,KAAK8D,MAAM4gG,WAAW,CAAA;AAChC,MAAI9R,MAAMF,MAAMgS,UAAU,CAAA;AAC1B,MAAIE,WAAW5kG,KAAK8D,MAAM1H,MAAMw2F,MAAM;AACtC,WAASrwE,IAAI,GAAGA,IAAI9rB,QAAQskG,SAAS9nG,QAAQsvB,KAAK;AAC9C,QAAI0E,IAAIxwB,QAAQskG,SAASx4E,CAAAA;AACzB,QAAI0E,IAAI,GAAG;AACPA,WAAK29E,WAAW;AAAA,IACnB;AACD,QAAA,EAAM39E,IAAI,KAAKA,KAAK29E,WAAW;AAC3B;AAAA,IACH;AACD,QAAI5xG;AACJ,QAAIi0B,IAAI,GAAG;AACPj0B,UAAI2xG,WAAW19E,IAAI,KAAK;AACxB,UAAI09E,YAAYF,WAAW;AACvBzxG,aAAK,IAAIyxG;AAAAA,MACZ;AAAA,IACJ,OACI;AACDzxG,UAAI2xG;AAAAA,IACP;AACD,aAAS9mG,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBiK,aAAO08F,QAAQxxG,CAAK,IAAA;AACpBA;AACA,UAAI8U,OAAOk8F,SAAShxG,CAAAA,MAAOyD,QAAQ6nG;AAC/B;AAAA,IACP;AAAA,EACJ;AACD,MAAItM,SAASv7F,QAAQskG,UAAU,CAAI,GAAA;AAG/B,QAAI/nG,IAAI2xG,UAAUC,WAAW;AAC7B,QAAID,YAAYF;AACZzxG,WAAK,IAAIyxG;AACb,QAAIzxG,IAAImxG,SAAS;AAGb,eAAS5hF,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBza,eAAO08F,QAAQxxG,KAAK;AACpBA,aAAK;AACL,YAAI8U,OAAOk8F,SAAShxG,CAAAA,MAAOyD,QAAQ6nG;AAC/B;AAAA,MACP;AAAA,IACJ;AAAA,EACJ;AACD,MAAIqG,SAAS;AAOT,QAAIE,YAAAA;AACJ,QAAK7S,CAAAA,SAASv7F,QAAQskG,UAAW,EAAA,GAAI;AACjC,UAAI+J,eAAe7Q,WAAWlB,SAAS/oF,OAAO,GAAG,GAAG;AACpD,UAAI+6F,WAAWrS,MAAM,IAAIoS,aAAalxG,QAAY6C,IAAAA,QAAQ6nG,MAAM,CAChE;AAAA,UAAI0G,WAAW3R,WAAWrpF,OAAO,CAAK,IAAA,MAAM;AAC5C,UAAIi7F,SAAAA;AACJ,UAAIF,YAAY,GAAG;AACfA,mBAAW;AACXE,iBAASD,WAAWtS,MAAMoS,eAAeruG,QAAQ6nG,MAAM,CAAA;AAAA,MAC1D,OACI;AACD2G,iBAASd,UAAUQ;AAAAA,MACtB;AACDE,kBAAY7kG,KAAK8D,MAAM,KAAK4uF,MAAMuS,QAAQ,CAAK,IAAA,CAAA;AAAA,IAClD,OACI;AACDJ;IACH;AACD,QAAI7S,SAASv7F,QAAQskG,UAAU8J,SAAY,GAAA;AACvC,eAAS7xG,IAAI,GAAGA,IAAI2xG,SAAS3xG;AACzB8U,eAAO08F,QAAQxxG,CAAK,IAAA;AAAA,IAC3B;AAAA,EACJ;AACD,SAAO8U;AACX;AACA,SAASy8F,cAAcv6F,MAAAA;AACnB,MAAIm6F,UAAU9Q,WAAWrpF,IAAQ,IAAA,MAAM;AACvC,MAAIk6F,YAAYnR,SAAS/oF,MAAM,GAAG;AAClC,MAAImxF,OAAOlH,WAAWiQ,SAAAA;AACtB,MAAIC,YAAY,KAAK;AACjB,WAAO,EACHe,OAAOnC,UACPoC,UAAU7B,aACV8B,WAAWxB,cACXI,UAAUD,SAASjnG,MAAMq+F,IACzBkK,GAAAA,QAAQvB;EAEf;AACD,SAAO,EACHoB,OAAOlC,UACPmC,UAAU9B,aACV+B,WAAWzB,cACXK,UAAUD,SAASjnG,MAAMq+F,IAAAA,GACzBkK,QAAQxB,UAAAA;AAEhB;AC5HO,SAASyB,aAAat7F,MAAM6lB,OAAOs0E,SAASkB,QAAQrB,UAAUvtG,SAAAA;AACjE,MAAIqR,SAAS,EACTy9F,UAAUv7F,MACVw7F,WAAW31E,OACX41E,WAAW;AAEf,MAAIC,SAAS,CACb;AAAA,MAAIjvG,QAAQojG,SAASE,MAAMc,QAAQ;AAC/B,QAAIhI,MAAMp8F,QAAQ4jG,OAAAA,GAAU;AACxBqL,eAAS,CAAC,CAAC,GAAGvB;IACjB,OACI;AACD,eAAS5hF,IAAI,GAAGA,IAAI9rB,QAAQ4jG,QAAQpnG,QAAQsvB,KAAK;AAC7CsN,gBAAQp5B,QAAQ4jG,QAAQ93E,CAAAA;AACxBmjF,eAAOhzG,KAAK2yG,OAAOvoG,MAAM+yB,QAAQ,GAAGA,QAAQ,CAAA,CAAA;AAAA,MAC/C;AAAA,IACJ;AAAA,EACJ,WACQp5B,QAAQojG,SAASE,MAAMa,SAAS;AACrC8K,aAAS,CAACL,OAAOvoG,MAAM+yB,QAAQ,GAAGA,QAAQ;EAC7C;AACD,MAAIgjE,MAAM6S,MAAS,GAAA;AACf,WAAO59F;AAAAA,EACV;AAGDA,SAAO29F,YAAYvT,OAAO,GAAGiS,OAAAA;AAC7B,WAAS5hF,IAAI,GAAGA,IAAImjF,OAAOzyG,QAAQsvB,KAAK;AACpC,QAAI0vE,OAAOyT,OAAOnjF,CAClB;AAAA,QAAIsV,QAAQo6D,KAAK,CAAA;AACjB,QAAIx+C,OAAOw+C,KAAK,CAAK,IAAA;AACrB,aAASp0F,IAAI,GAAGA,IAAIpH,QAAQypG,WAAWjtG,QAAQ4K,KAAK;AAChD,UAAI7K;AACJ,UAAI2rG,KAAKloG,QAAQypG,WAAWriG,CAAIs9F,GAAAA,OAAOwD,GAAG,CAAI13E,GAAAA,IAAI03E,GAAG,CACrD;AAAA,UAAI13E,IAAI,GAAG;AACPj0B,YAAIygD,QAAQxsB,IAAI,KAAK;AACrBj0B,aAAK0/F,MAAMsR,SAAShxG,KAAKmoG,MAAM,CAAA;AAAA,MAClC,OACI;AACDnoG,YAAI6kC,SAAS5Q,IAAI,KAAK;AACtBj0B,aAAK0/F,MAAM,IAAIsR,SAAShxG,CAAKmoG,IAAAA,MAAM;MACtC;AACD,UAAItjE,SAAS7kC,KAAKA,KAAKygD;AACnB3rC,eAAO29F,UAAUzyG,CAAK,IAAA;AAAA,IAC7B;AAAA,EACJ;AACD,SAAO8U;AACX;ACjDO,SAAS69F,OAAO9vF,GAAG7T,QAAAA;AACtB,MAAIA,WAAAA,QAAmB;AAAEA,aAAS;AAAA,EAAI;AACtC,MAAIgJ,IAAI6K,IAAI;AACZ,MAAI5K,IAAIjL,KAAK8D,MAAM+R,IAAI;AACvB,MAAItd,IAAIsd,IAAI;AACZ,MAAIpT,IAAIzC,KAAK8D,MAAMmH,IAAI,CAAA;AACvB,MAAIvW,IAAIuW,IAAI;AACZ,MAAIxC,IAAIzI,KAAK8D,OAAOmH,IAAI,KAAK,EAAA;AAC7B,MAAI4yD,IAAI79D,KAAK8D,OAAOmH,IAAIxC,IAAI,KAAK,CAAA;AACjC,MAAIsG,IAAI/O,KAAK8D,MAAM,KAAKkH,IAAIC,IAAIxI,IAAIo7D,IAAI,EAAM,IAAA;AAC9C,MAAI7qE,IAAIgN,KAAK8D,MAAMvL,IAAI,CAAA;AACvB,MAAIsF,IAAItF,IAAI;AACZ,MAAI0/D,IAAIj4D,KAAK8D,MAAM,KAAK,IAAIpP,IAAI,IAAI1B,IAAI+b,IAAIlR,CAAK,IAAA;AACjD,MAAIwvC,IAAIrtC,KAAK8D,OAAOkH,IAAI,KAAK+D,IAAI,KAAKkpD,KAAK,GAC3C;AAAA,MAAIpoC,QAAQ7vB,KAAK8D,OAAOiL,IAAIkpD,IAAI,IAAI5qB,IAAI,OAAO,EAC/C;AAAA,MAAIh/C,OAAQ0gB,IAAIkpD,IAAI,IAAI5qB,IAAI,OAAO,KAAM;AACzC,MAAIr7C,OAAOqB,KAAKioC,IAAIzlB,GAAGga,QAAQ,GAAGxhC,MAAM2T,MAAAA;AACxC,MAAI4jG,YAAYvyG,KAAKioC,IAAIzlB,GAAG,GAAG,CAC/B;AAAA,SAAO,CAAC7V,KAAKyb,MAAMzpB,OAAO4zG,cAAc,MAAO,KAAK,KAAK;AAC7D;ACTA,IAAIC,WAA0B,WAE1B;AAAA,WAASA,UAASpvG,SACd5H;AAAAA,SAAK4H,UAAUA;AAAAA,EAClB;AACDovG,EAAAA,UAAS3+F,UAAU4+F,UAAU,SAAU97F,MAAM6lB;AACzC,QAAIp5B,UAAU5H,KAAK4H;AACnB,QAAIuT,SAASnb,KAAK02G,UAAU;AACxB12G,WAAKk3G,WAAW9B,YAAYj6F,MAAMvT,OACrC;AAAA,IAAA;AACD,QAAIq8F,SAASr8F,QAAQypG,gBAChBrwE,UAAUhhC,KAAK22G,aAAax7F,SAASnb,KAAK02G,WAAW;AACtD,UAAI5G,KAAK9vG,KAAKk3G,UAAU5B,UAAUxF,GAAGwF,SAASkB,SAAS1G,GAAG0G,QAAQrB,WAAWrF,GAAGqF;AAChFn1G,WAAKm3G,YAAYV,aAAat7F,MAAM6lB,OAAOs0E,SAASkB,QAAQrB,UAAUvtG,OAAAA;AAAAA,IACzE;AACD,QAAIo7F,UAAUp7F,QAAQspG,QAAW,GAAA;AAC7BlxG,WAAKo3G,aAAaN,OAAO37F,MAAMvT,QAAQspG;IAC1C;AAAA,EACT;AACIj3F,SAAO24F,eAAeoE,UAAS3+F,WAAW,YAAY,EAClDoxB,KAAK,WAAA;AACD,WAAOzpC,KAAKm3G,YAAYn3G,KAAKm3G,UAAUT,WAAW;AAAA,EACrD,GACD7D,YAAY,OACZC,cAAc;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,aAAa,EACnDoxB,KAAK,WAAA;AACD,WAAOzpC,KAAKm3G,YAAYn3G,KAAKm3G,UAAUR,YAAY;AAAA,EACtD,GACD9D,YAAY,OACZC,cAAc,KAElB74F,CAAAA;AAAAA,SAAO24F,eAAeoE,UAAS3+F,WAAW,WAAW,EACjDoxB,KAAK;AACD,WAAOzpC,KAAKk3G,SAAS5B;AAAAA,EACxB,GACDzC,YAAY,OACZC,cAAc,KAElB74F,CAAAA;AAAAA,SAAO24F,eAAeoE,UAAS3+F,WAAW,eAAe,EACrDoxB,KAAK,WACD;AAAA,WAAOzpC,KAAKk3G,SAAS1B;AAAAA,EACxB,GACD3C,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,UAAU,EAChDoxB,KAAK,WACD;AAAA,WAAOzpC,KAAKk3G,SAASV;AAAAA,EACxB,GACD3D,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,YAAY,EAClDoxB,KAAK,WAAA;AACD,WAAOzpC,KAAKk3G,SAAS/B;AAAAA,EACxB,GACDtC,YAAY,OACZC,cAAc;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,SAAS,EAC/CoxB,KAAK,WAAA;AACD,WAAOzpC,KAAKk3G,SAASb;AAAAA,EACxB,GACDxD,YAAY,OACZC,cAAc;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,WAAW,EACjDoxB,KAAK;AACD,WAAOzpC,KAAKk3G,SAASvB;AAAAA,EACxB,GACD9C,YAAY,OACZC,cAAc,KAElB74F,CAAAA;AAAAA,SAAO24F,eAAeoE,UAAS3+F,WAAW,aAAa,EACnDoxB,KAAK,WACD;AAAA,WAAOzpC,KAAKm3G,YAAYn3G,KAAKm3G,UAAUP,YAAY,CAAA;AAAA,EACtD,GACD/D,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,eAAe,EACrDoxB,KAAK,WACD;AAAA,WAAOzpC,KAAKk3G,SAAS3B;AAAAA,EACxB,GACD1C,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,YAAY,EAClDoxB,KAAK,WAAA;AACD,WAAOzpC,KAAKk3G,SAASZ;AAAAA,EACxB,GACDzD,YAAY,OACZC,cAAc;AAElB74F,SAAO24F,eAAeoE,UAAS3+F,WAAW,aAAa,EACnDoxB,KAAK,WAAA;AACD,WAAOzpC,KAAKk3G,SAASX;AAAAA,EACxB,GACD1D,YAAY,OACZC,cAAc;AAElBkE,EAAAA,UAAS3+F,UAAUg/F,UAAU,WAAA;AACzB,WAAO,CAACtyD,MAAM/kD,KAAKs1G,OAAU,GAAA,GAAGt1G,KAAKs1G,OAC7C;AAAA,EAAA;AACI0B,EAAAA,UAAS3+F,UAAUi/F,UAAU,SAAUC,GAAGv2E;AACtC,QAAIzxB,QAAQvP,KAAKw2G,OAAOx1E,QAAQ,CAChC;AAAA,QAAIxxB,MAAMxP,KAAKw2G,OAAOx1E;AACtB,QAAIqL,MAAMg3D,OAAO,MAAMrjG,KAAKs1G,OAC5B;AAAA,aAASnxG,IAAIoL,OAAOpL,IAAIqL,KAAKrL;AACzBkoC,UAAIloC,CAAKA,IAAAA;AACb,WAAO,CAACkoC,KAAK98B,OAAOC,GAAAA;AAAAA,EAC5B;AACIwnG,EAAAA,UAAS3+F,UAAUm/F,UAAU,SAAUr8F,MAAM6lB,OAAOxhC,KAAAA;AAEhD,QAAI6sC,MAAMg3D,OAAO,MAAMrjG,KAAKs1G,UAAU;AACtC,QAAInxG,IAAI6gG,UAAUd,SAAS/oF,MAAM6lB,OAAOxhC,GAAAA,CAAAA,IAAQQ,KAAKw1G;AACrD,QAAIjmG,QAAQpL;AACZ,aAASuvB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB2Y,UAAIloC,KAAKA;AACPA,QAAAA;AACF,UAAInE,KAAKm1G,SAAShxG,CAAOnE,MAAAA,KAAK4H,QAAQ6nG;AAClC;AAAA,IACP;AACD,WAAO,CAACpjE,KAAK98B,OAAOpL;EAC5B;AACI6yG,EAAAA,UAAS3+F,UAAUo/F,UAAU,SAAUt8F,MAAM6lB,OAAOxhC,KAAAA;AAChD,QAAI6sC,MAAMg3D,OAAO,MAAMrjG,KAAKs1G;AAC5B,QAAInxG,IAAI6gG,UAAUd,SAAS/oF,MAAM6lB,OAAOxhC,GAAAA,CAAAA,IAAQQ,KAAKw1G;AACrDnpE,QAAIloC,KAAKA;AACT,WAAO,CAACkoC,KAAKloC,GAAGA,IAAI,CAAA;AAAA,EAC5B;AACI6yG,EAAAA,UAAS3+F,UAAUq/F,WAAW,SAAUz2E,MAAMs2E,GAAGnqC,QAAQ2hC,aAAAA;AACrD,QAAIjH,QAAQ9nG;AACZ,QAAIqsC,MAAM;AACVrsC,SAAK4H,QAAQsoG,SAASvsG,QAAQ,SAAUu9B,QACpCmL;AAAAA,YAAMA,IAAIjhC,OAAO08F,MAAM6P,SAAS12E,MAAMC,QAAQksC,QAAQ2hC,WAClE,CAAA;AAAA,IAAA,CAAA;AACQvqE,SAAK6H,GAAAA;AACL,WAAOA;AAAAA,EACf;AACI2qE,EAAAA,UAAS3+F,UAAUs/F,WAAW,SAAU12E,MAAMC,QAAQq2E,GAAGxI,aAAAA;AACrD,QAAI1iE,MAAMrsC,KAAK4H,QAAQ2oG,SAAS9qG,IAAI,SAAU2nE,QAAU;AAAA,aAAO,IAAI0hC,KAAK7tE,MAAMC,QAAQksC,QAAQ2hC;IAAa,CAC3GvqE;AAAAA,SAAK6H;AACL,WAAOA;AAAAA,EACf;AACI2qE,EAAAA,UAAS3+F,UAAUu/F,WAAW,SAAU32E,MAAMC,QAAQksC,QAAQ2hC;AAC1D,WAAO,CAAC,IAAID,KAAK7tE,MAAMC,QAAQksC,QAAQ2hC;EAC/C;AACIiI,EAAAA,UAAS3+F,UAAUw/F,YAAY,SAAU7M,MACrC;AAAA,YAAQA;MACJ,KAAK0D,UAAU1C;AACX,eAAOhsG,KAAKq3G,QAAQx0F,KAAK7iB,IAAAA;AAAAA,MAC7B,KAAK0uG,UAAU3C;AACX,eAAO/rG,KAAKs3G,QAAQz0F,KAAK7iB,IAAAA;AAAAA,MAC7B,KAAK0uG,UAAU5C;AACX,eAAO9rG,KAAKw3G,QAAQ30F,KAAK7iB,IAAAA;AAAAA,MAC7B,KAAK0uG,UAAUnD;AACX,eAAOvrG,KAAKy3G,QAAQ50F,KAAK7iB,IAAAA;AAAAA,MAC7B;AACI,eAAOA,KAAKy3G,QAAQ50F,KAAK7iB,IAAAA;AAAAA,IAAAA;AAAAA,EAEzC;AACIg3G,EAAAA,UAAS3+F,UAAUy/F,aAAa,SAAU9M;AACtC,YAAQA,MAAAA;AAAAA,MACJ,KAAK0D,UAAUrD;AACX,eAAOrrG,KAAK03G,SAAS70F,KAAK7iB,IAAAA;AAAAA,MAC9B,KAAK0uG,UAAUpD;AACX,eAAOtrG,KAAK23G,SAAS90F,KAAK7iB,IAC9B;AAAA,MAAA,KAAK0uG,UAAUiC;AACX,eAAO3wG,KAAK43G,SAAS/0F,KAAK7iB,IAE1C;AAAA,IAAA;AAAA,EAAA;AACI,SAAOg3G;AACX,ECvLO;AAAA,SAASe,aAAa3G,UAAUK,SAASliG,OAAOC,KAAKwoG,IAAIC;AAC5D,MAAIC,UAAU,CACd;AAAA,WAASxkF,IAAI,GAAGA,IAAI09E,SAAShtG,QAAQsvB,KAAK;AACtC,QAAIykF,SAAc;AAClB,QAAIC,UAAe;AACnB,QAAIzrF,MAAMykF,SAAS19E;AACnB,QAAI/G,MAAM,GAAG;AACTwrF,eAAShnG,KAAK8D,MAAM0X,MAAM8kF,QAAQrtG,MAAAA;AAClCg0G,gBAAUvU,MAAMl3E,KAAK8kF,QAAQrtG,MAAAA;AAAAA,IAChC,OACI;AACD+zG,eAAShnG,KAAK8D,OAAO0X,MAAM,KAAK8kF,QAAQrtG,MAAAA;AACxCg0G,gBAAUvU,MAAMl3E,MAAM,GAAG8kF,QAAQrtG;IACpC;AACD,QAAIi0G,MAAM,CACV;AAAA,aAASrpG,IAAIO,OAAOP,IAAIQ,KAAKR,KAAK;AAC9B,UAAIkY,MAAM+wF,OAAOjpG,CACjB;AAAA,UAAA,CAAKg0F,UAAU97E,GACX;AAAA;AACJmxF,UAAIx0G,KAAKqjB,GAAAA;AAAAA,IACZ;AACD,QAAI/iB,IAAAA;AACJ,QAAIg0G,SAAS,GAAG;AACZh0G,UAAIk0G,IAAIpqG,MAAMkqG,QAAQ,CACzB;AAAA,IAAA,OACI;AACDh0G,UAAIk0G,IAAIF,MACX;AAAA,IAAA;AACD,QAAIh0D,OAAOstD,QAAQ2G;AACnB,QAAIj1G,OAAO8hG,YAAY+S,GAAGxC,cAAcrxG,CACxC;AAAA,QAAIoE,MAAM+8F,QAAQniG,MAAMghD;AAGxB,QAAKg/C,CAAAA,SAAS+U,SAAS3vG,GAAAA;AACnB2vG,cAAQr0G,KAAK0E,GAAAA;AAAAA,EACpB;AACDi8B,OAAK0zE,OAAAA;AACL,SAAOA;AACX;AC/BO,SAASI,KAAKrE,YAAYrsG,SAC7B;AAAA,MAAIupG,UAAUvpG,QAAQupG,SAASnG,OAAOpjG,QAAQojG,MAAMvzC,WAAW7vD,QAAQ6vD,UAAUouC,QAAQj+F,QAAQi+F,OAAOuL,WAAWxpG,QAAQwpG;AAC3H,MAAIl8E,QAAQttB,QAAQstB;AACpB,MAAIA,UAAU,KAAKuiC,aAAa,GAAG;AAC/B,WAAO8gD,WAAWtE,UAAAA;AAAAA,EACrB;AACD,MAAIuE,cAAcxJ,SAASC,SAASkC;AACpC,MAAI6G,KAAK,IAAIhB,SAASpvG,OAAAA;AACtBowG,KAAGf,QAAQuB,YAAYr9F,MAAMq9F,YAAYx3E;AACzC,MAAIywE,UAAUgH,YAAYT,IAAIQ,aAAa5wG,OAC3C;AAAA,aAAS;AACL,QAAIkoG,KAAKkI,GAAGH,UAAU7M,IAAAA,EAAMwN,YAAYr9F,MAAMq9F,YAAYx3E,OAAOw3E,YAAYh5G,GAAMy4G,GAAAA,SAASnI,GAAG,CAAIvgG,GAAAA,QAAQugG,GAAG,CAAItgG,GAAAA,MAAMsgG,GAAG,CAAA;AAC3H,QAAID,WAAW6I,mBAAmBT,QAAQ1oG,OAAOC,KAAKwoG,IAAIpwG,OAC1D;AAAA,QAAIq8F,SAASmN,QAAAA,GAAW;AACpB,UAAI8G,UAAUH,aAAa3G,UAAUK,SAASliG,OAAOC,KAAKwoG,IAAIC,MAC9D;AAAA,eAASvkF,IAAI,GAAGA,IAAIwkF,QAAQ9zG,QAAQsvB,KAAK;AACrC,YAAInrB,MAAM2vG,QAAQxkF;AAClB,YAAImyE,SAASt9F,MAAMs9F,OAAO;AACtB,iBAAO0S,WAAWtE,UAAAA;AAAAA,QACrB;AACD,YAAI1rG,OAAO4oG,SAAS;AAChB,cAAI6B,cAAc2F,eAAepwG,KAAKX,OACtC;AAAA,cAAA,CAAKqsG,WAAWrN,OAAOoM,cAAc;AACjC,mBAAOuF,WAAWtE,UACrB;AAAA,UAAA;AACD,cAAI/+E,OAAO;AAAA,cACLA;AACF,gBAAA,CAAKA,OAAO;AACR,qBAAOqjF,WAAWtE,UACrB;AAAA,YAAA;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ,OACI;AACD,eAASvgF,IAAInkB,OAAOmkB,IAAIlkB,KAAKkkB,KAAK;AAC9B,YAAIklF,aAAaX,OAAOvkF;AACxB,YAAKsvE,CAAAA,UAAU4V,aAAa;AACxB;AAAA,QACH;AACD,YAAIz1G,OAAO8hG,YAAY+S,GAAGxC,cAAcoD,UACxC;AAAA,iBAAS5pG,IAAI,GAAGA,IAAIyiG,QAAQrtG,QAAQ4K,KAAK;AACrC,cAAIm1C,OAAOstD,QAAQziG;AACnB,cAAIzG,MAAM+8F,QAAQniG,MAAMghD,IAAAA;AACxB,cAAI0hD,SAASt9F,MAAMs9F,OAAO;AACtB,mBAAO0S,WAAWtE,UAAAA;AAAAA,UACrB;AACD,cAAI1rG,OAAO4oG,SAAS;AAChB,gBAAI6B,cAAc2F,eAAepwG,KAAKX,OACtC;AAAA,gBAAA,CAAKqsG,WAAWrN,OAAOoM,WAAAA,GAAc;AACjC,qBAAOuF,WAAWtE,UACrB;AAAA,YAAA;AACD,gBAAI/+E,OAAO;AAAA,gBACLA;AACF,kBAAKA,CAAAA,OAAO;AACR,uBAAOqjF,WAAWtE,UACrB;AAAA,cAAA;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AACD,QAAIrsG,QAAQ6vD,aAAa,GAAG;AACxB,aAAO8gD,WAAWtE,UACrB;AAAA,IAAA;AAEDuE,gBAAYp1G,IAAIwE,SAASioG,QACzB;AAAA,QAAI2I,YAAYr9F,OAAOkpF,SAAS;AAC5B,aAAOkU,WAAWtE;IACrB;AACD,QAAA,CAAKtF,qBAAqB3D,IAAAA,GAAO;AAC7ByG,gBAAUuG,GAAGF,WAAW9M,IAAdgN,EAAoBQ,YAAYv3E,MAAMu3E,YAAYt3E,QAAQs3E,YAAYprC,QAAQ,CAC3F;AAAA,IAAA;AACD4qC,OAAGf,QAAQuB,YAAYr9F,MAAMq9F,YAAYx3E,KAAAA;AAAAA,EAC5C;AACL;AACA,SAAS63E,WAAWb,IAAIY,YAAYhxG,SAChC;AAAA,MAAI4jG,UAAU5jG,QAAQ4jG,SAASU,WAAWtkG,QAAQskG,UAAU1B,YAAY5iG,QAAQ4iG,WAAW0G,WAAWtpG,QAAQspG,UAAU5G,aAAa1iG,QAAQ0iG,YAAYC,cAAc3iG,QAAQ2iG,aAAa0B,YAAYrkG,QAAQqkG;AAChN,SAAShI,SAASuH,OAAarI,KAAAA,CAAAA,SAASqI,SAASwM,GAAG3B,MAAMuC,UACrD3U,CAAAA,KAAAA,SAASiI,cAAc8L,GAAGrC,QAAQiD,eAClC3U,SAASuG,SAAAA,KAAAA,CAAerH,SAASqH,WAAWwN,GAAG7C,SAASyD,UAAAA,CAAAA,KACxD3U,SAAS+T,GAAGpB,SAAAA,KAAAA,CAAeoB,GAAGpB,UAAUgC,UAAAA,KACxC1H,aAAa,QAAA,CAAS/N,SAAS6U,GAAGZ,YAAYwB,gBAC7C3U,SAASqG,UAAAA,KAAerG,SAASsG,WAC9BpH,MAAAA,CAAAA,SAASmH,YAAY0N,GAAG1B,SAASsC,UACjCzV,CAAAA,KAAAA,CAAAA,SAASoH,aAAayN,GAAGzB,UAAUqC,gBACvC3U,SAASgI,SAAAA,MACJ2M,aAAaZ,GAAG1C,YACbnS,SAAS8I,WAAW2M,aAAa,CACjCzV,KAAAA,CAAAA,SAAS8I,YAAY+L,GAAG1C,UAAUsD,UAClCA,KAAAA,cAAcZ,GAAG1C,WACbnS,CAAAA,SAAS8I,WAAW2M,aAAa,IAAIZ,GAAG1C,OACxCnS,KAAAA,CAAAA,SAAS8I,WAAY+L,CAAAA,GAAGzC,cAAcqD,aAAaZ,GAAG1C;AAC3E;AACA,SAASqD,eAAex1G,MAAMyE,SAAAA;AAC1B,SAAO,IAAI8qG,aAAavvG,MAAMyE,QAAQoqG,MAAMgB,YAChD;AAAA;AACA,SAASuF,WAAWtE,YAAAA;AAChB,SAAOA,WAAW1wD;AACtB;AACA,SAASm1D,mBAAmBT,QAAQ1oG,OAAOC,KAAKwoG,IAAIpwG,SAAAA;AAChD,MAAIioG,WAAW;AACf,WAASiJ,aAAavpG,OAAOupG,aAAatpG,KAAKspG,cAAc;AACzD,QAAIF,aAAaX,OAAOa,UACxBjJ;AAAAA,eAAWgJ,WAAWb,IAAIY,YAAYhxG;AACtC,QAAIioG;AACAoI,aAAOW,UAAAA,IAAc;AAAA,EAC5B;AACD,SAAO/I;AACX;AACA,SAAS4I,YAAYT,IAAIQ,aAAa5wG,SAClC;AAAA,MAAIojG,OAAOpjG,QAAQojG,MAAMY,SAAShkG,QAAQgkG,QAAQsE,WAAWtoG,QAAQsoG,UAAUK,WAAW3oG,QAAQ2oG;AAClG,MAAI5B,qBAAqB3D,OAAO;AAC5B,WAAOuG,aAAa3pG,OACvB;AAAA,EAAA;AACD,MAAKojG,QAAQE,MAAMG,UACfpH,SAAS2H,YACRzI,SAASyI,QAAQ4M,YAAYv3E,IAC7B+pE,KAAAA,QAAQE,MAAMI,YACXrH,SAASiM,QACR/M,KAAAA,CAAAA,SAAS+M,UAAUsI,YAAYt3E,MAAAA,KACnC8pE,QAAQE,MAAMyF,YACX1M,SAASsM,QAAAA,KAAAA,CACRpN,SAASoN,UAAUiI,YAAYprC,SAAU;AAC9C,WAAO;EACV;AACD,SAAO4qC,GAAGF,WAAW9M,MAAMwN,YAAYv3E,MAAMu3E,YAAYt3E,QAAQs3E,YAAYprC,QAAQorC,YAAYzJ,WACrG;AAAA;AC1HO,IAAIoD,OAAO,EACdpE,IAAI,IAAIrL,QAAQ,IAChBsL,IAAI,IAAItL,QAAQ,CAAA,GAChBuL,IAAI,IAAIvL,QAAQ,IAChBwL,IAAI,IAAIxL,QAAQ,CAChByL,GAAAA,IAAI,IAAIzL,QAAQ,IAChBqW,IAAI,IAAIrW,QAAQ,CAChBsW,GAAAA,IAAI,IAAItW,QAAQ,CAAA,EAAA;AAEb,IAAIuO,oBAAkB,EACzBjG,MAAM0D,UAAU1C,QAChBmF,SAAS,MACT15C,UAAU,GACVg4C,MAAM0C,KAAKpE,IACX74E,OAAO,MACP2wE,OAAO,MACPmM,MAAM,MACNZ,UAAU,MACV5F,SAAS,MACTlB,YAAY,MACZC,aAAa,MACb0B,WAAW,MACXC,UAAU,MACV1B,WAAW,MACX6G,YAAY,MACZzF,QAAQ,MACRsE,UAAU,MACVK,UAAU,MACVW,UAAU,KAEP;AAAA,IAAIH,cAAc92F,OAAO8L,KAAKkrF,iBAOrC;AAAA,IAAI/F,QAAuB,WACvB;AAAA,WAASA,OAAMtjG,SAASqxG,SAAAA;AACpB,QAAIrxG,YAAAA,QAAoB;AAAEA,gBAAU,CAAE;AAAA,IAAG;AACzC,QAAIqxG,YAAiB,QAAG;AAAEA,gBAAU;AAAA,IAAQ;AAE5Cj5G,SAAKk5G,SAASD,UAAU,OAAO,IAAI1F;AAEnCvzG,SAAKqqG,cAAcuG,oBAAkBhpG;AACrC,QAAI0pG,gBAAgBN,aAAappG,OAAS0pG,EAAAA;AAC1CtxG,SAAK4H,UAAU0pG;AAAAA,EAClB;AACDpG,EAAAA,OAAMwC,YAAY,SAAU5mG,MAAMqjG,UAC9B;AAAA,WAAOuD,UAAU5mG,MAAMqjG,QAAAA;AAAAA,EAC/B;AACIe,EAAAA,OAAM0D,WAAW,SAAU9nG,MAAMqjG;AAC7B,WAAOyE,SAAS9nG,MAAMqjG,QAC9B;AAAA,EAAA;AACIe,EAAAA,OAAMiO,aAAa,SAAUpiF,KACzB;AAAA,WAAO,IAAIm0E,OAAMA,OAAMwG,YAAY36E,GAAQ1oB,KAAAA,MAAAA;AAAAA,EACnD;AACI68F,EAAAA,OAAM7yF,UAAU+gG,QAAQ,SAAUnF;AAC9B,WAAOqE,KAAKrE,YAAYj0G,KAAK4H,OAAAA;AAAAA,EACrC;AACIsjG,EAAAA,OAAM7yF,UAAUu7F,YAAY,SAAUF,MAAMt6F,MACxC;AAAA,QAAA,CAAKpZ,KAAKk5G;AACN,aAAO;AACX,WAAOl5G,KAAKk5G,OAAOtF,UAAUF,MAAMt6F,IAC3C;AAAA,EAAA;AACI8xF,EAAAA,OAAM7yF,UAAUo7F,YAAY,SAAUC,MAAMr1F,OAAOjF,MAC/C;AAAA,QAAA,CAAKpZ,KAAKk5G;AACN;AACJ,WAAOl5G,KAAKk5G,OAAOzF,UAAUC,MAAMr1F,OAAOjF,IAClD;AAAA,EAAA;AAOI8xF,EAAAA,OAAM7yF,UAAUu7D,MAAM,SAAUi0B,UAC5B;AAAA,QAAIA,UAAU;AACV,aAAO7nG,KAAKo5G,MAAM,IAAIzR,mBAAmB,OAAO,CAAE,GAAEE,QAAAA,CAAAA;AAAAA,IACvD;AACD,QAAI5uF,SAASjZ,KAAK4zG,UAAU;AAC5B,QAAI36F,WAAW,OAAO;AAClBA,eAASjZ,KAAKo5G,MAAM,IAAI1S,WAAW,OAAO,CAAE,CAC5C1mG,CAAAA;AAAAA,WAAKyzG,UAAU,OAAOx6F,MAAAA;AAAAA,IACzB;AACD,WAAOA;AAAAA,EACf;AASIiyF,EAAAA,OAAM7yF,UAAUm7F,UAAU,SAAU7M,OAAOh6B,QAAQp/B,KAAKs6D,UACpD;AAAA,QAAIt6D,gBAAgB;AAAEA,YAAM;AAAA,IAAQ;AACpC,SAAKk3D,YAAYkC,KAAAA,KAAAA,CAAWlC,YAAY93B,MAAAA,GAAS;AAC7C,YAAM,IAAI16D,MAAM,yCACnB;AAAA,IAAA;AACD,QAAImH,OAAO,EACPuzD,QACAg6B,OACAp5D;AAEJ,QAAIs6D,UAAU;AACV,aAAO7nG,KAAKo5G,MAAM,IAAIzR,mBAAmB,WAAWvuF,MAAMyuF;IAC7D;AACD,QAAI5uF,SAASjZ,KAAK4zG,UAAU,WAAWx6F,IAAAA;AACvC,QAAIH,WAAW,OAAO;AAClBA,eAASjZ,KAAKo5G,MAAM,IAAI1S,WAAW,WAAWttF,IAAAA,CAAAA;AAC9CpZ,WAAKyzG,UAAU,WAAWx6F,QAAQG,IACrC;AAAA,IAAA;AACD,WAAOH;AAAAA,EACf;AAQIiyF,EAAAA,OAAM7yF,UAAUs0D,SAAS,SAAUhoB,IAAIpX;AACnC,QAAIA,QAAAA,QAAgB;AAAEA,YAAM;AAAA,IAAQ;AACpC,SAAKk3D,YAAY9/C,EAAAA,GAAK;AAClB,YAAM,IAAI1yC,MAAM,wCACnB;AAAA,IAAA;AACD,QAAImH,OAAO,EAAEurC,IAAQpX,IACrB;AAAA,QAAIt0B,SAASjZ,KAAK4zG,UAAU,UAAUx6F,IAAAA;AACtC,QAAIH,WAAW,OAAO;AAClBA,eAASjZ,KAAKo5G,MAAM,IAAI1S,WAAW,UAAUttF,IAAAA,CAAAA;AAC7CpZ,WAAKyzG,UAAU,UAAUx6F,QAAQG,IACpC;AAAA,IAAA;AACD,WAAOH;AAAAA,EACf;AAQIiyF,EAAAA,OAAM7yF,UAAUsuF,QAAQ,SAAUhiD,IAAIpX;AAClC,QAAIA,QAAAA,QAAgB;AAAEA,YAAM;AAAA,IAAQ;AACpC,SAAKk3D,YAAY9/C,EAAAA,GAAK;AAClB,YAAM,IAAI1yC,MAAM,uCACnB;AAAA,IAAA;AACD,QAAImH,OAAO,EAAEurC,IAAQpX,IACrB;AAAA,QAAIt0B,SAASjZ,KAAK4zG,UAAU,SAASx6F,IAAAA;AACrC,QAAIH,WAAW,OAAO;AAClBA,eAASjZ,KAAKo5G,MAAM,IAAI1S,WAAW,SAASttF,IAAAA,CAAAA;AAC5CpZ,WAAKyzG,UAAU,SAASx6F,QAAQG,IACnC;AAAA,IAAA;AACD,WAAOH;AAAAA,EACf;AAKIiyF,EAAAA,OAAM7yF,UAAU6c,QAAQ,WACpB;AAAA,WAAOl1B,KAAK4zE,IAAMxvE,EAAAA;AAAAA,EAC1B;AAOI8mG,EAAAA,OAAM7yF,UAAUC,WAAW,WAAA;AACvB,WAAO26F,gBAAgBjzG,KAAKqqG;EACpC;AAKIa,EAAAA,OAAM7yF,UAAUw2F,SAAS,SAAU3E,SAASC,UAAUC;AAClD,WAAOyE,OAAO7uG,MAAMkqG,SAASC,UAAUC;EAC/C;AACIc,EAAAA,OAAM7yF,UAAUghG,2BAA2B;AACvC,WAAOvO,mBAAmB9qG;EAClC;AAKIkrG,EAAAA,OAAM7yF,UAAU6lE,QAAQ,WAAA;AACpB,WAAO,IAAIgtB,OAAMlrG,KAAKqqG,WAAAA;AAAAA,EAC9B;AAEIa,EAAAA,OAAMC,cAAc,CAChB,UACA,WACA,UACA,SACA,UACA,YACA,UAAA;AAEJD,EAAAA,OAAMc,SAAS0C,UAAU1C;AACzBd,EAAAA,OAAMa,UAAU2C,UAAU3C;AAC1Bb,EAAAA,OAAMY,SAAS4C,UAAU5C;AACzBZ,EAAAA,OAAMK,QAAQmD,UAAUnD;AACxBL,EAAAA,OAAMG,SAASqD,UAAUrD;AACzBH,EAAAA,OAAMI,WAAWoD,UAAUpD;AAC3BJ,EAAAA,OAAMyF,WAAWjC,UAAUiC;AAC3BzF,EAAAA,OAAM6C,KAAKoE,KAAKpE;AAChB7C,EAAAA,OAAM8C,KAAKmE,KAAKnE;AAChB9C,EAAAA,OAAM+C,KAAKkE,KAAKlE;AAChB/C,EAAAA,OAAMgD,KAAKiE,KAAKjE;AAChBhD,EAAAA,OAAMiD,KAAKgE,KAAKhE;AAChBjD,EAAAA,OAAM6N,KAAK5G,KAAK4G;AAChB7N,EAAAA,OAAM8N,KAAK7G,KAAK6G;AAChB9N,EAAAA,OAAMwG,cAAcA;AACpBxG,EAAAA,OAAM+H,kBAAkBA;AACxB,SAAO/H;AACX;AClOO,SAASoO,QAAQrF,YAAYsF,QAAQC,SAASC,QAAQC,SAAS1H,MAAAA;AAClE,MAAI2H,cAAc,CAAA;AAClB,MAAIC,UAAU3F,WAAWrN;AACzB,WAASiT,WAAWlT,OAAOh6B;AACvB6sC,YAAQ71G,QAAQ,SAAUsmG,OACtBA;AAAAA,YAAMuJ,QAAQ7M,OAAOh6B,QAAQ,IAAMhpE,EAAAA,QAAQ,SAAUR,MACjDw2G;AAAAA,oBAAY7/F,OAAO3W,IAAS,CAAA,IAAA;AAAA,MAC5C;IACA,CACK;AAAA,EAAA;AACDu2G,UAAQ/1G,QAAQ,SAAUR,MACtB;AAAA,QAAI22G,aAAY,IAAIpH,aAAavvG,MAAM6uG,IAAMgB,EAAAA,YAAAA;AAC7C2G,gBAAY7/F,OAAOggG,eAAc;AAAA,EACzC,CAAA;AACI7F,aAAWrN,SAAS,SAAUzjG;AAC1B,QAAIwhD,KAAK7qC,OAAO3W,IAAAA;AAChB,QAAIikB,MAAMu9B,EAAAA;AACN,aAAOi1D,QAAQxjG,KAAKpW,MAAMmD,IAC9B;AAAA,QAAA,CAAKw2G,YAAYh1D,EAAAA,GAAK;AAClBk1D,iBAAW,IAAIr1G,KAAKmgD,KAAK,CAAA,GAAI,IAAIngD,KAAKmgD,KAAK,CAC3C,CAAA;AAAA,UAAA,CAAKg1D,YAAYh1D,EAAK,GAAA;AAClBg1D,oBAAYh1D,EAAM,IAAA;AAClB,eAAOi1D,QAAQxjG,KAAKpW,MAAMmD,IAAAA;AAAAA,MAC7B;AAAA,IACJ;AACD,WAAO;AAAA,EACf;AACI,MAAI8wG,WAAW35F,WAAW,WAAW;AACjCu/F,eAAW5F,WAAW76F,KAAKutF,OAAOsN,WAAW76F,KAAKuzD,MAAAA;AAClDsnC,eAAWrN,SAAS,SAAUzjG,MAC1B;AAAA,UAAIwhD,KAAK7qC,OAAO3W,IAAAA;AAChB,WAAKw2G,YAAYh1D,EAAAA,GAAK;AAClBg1D,oBAAYh1D,EAAAA,IAAM;AAClB,eAAOi1D,QAAQxjG,KAAKpW,MAAMmD;MAC7B;AACD,aAAO;AAAA,IACnB;AAAA,EACK;AACD,WAASgB,IAAI,GAAGA,IAAIs1G,OAAOr1G,QAAQD,KAAK;AACpC,QAAI21G,YAAY,IAAIpH,aAAa+G,OAAOt1G,CAAI6tG,GAAAA,IAAAA,EAAMgB;AAClD,QAAKiB,CAAAA,WAAWrN,OAAO,IAAIpiG,KAAKs1G,UAAUr/E,QAAAA,CAAAA,CAAAA;AACtC;AAAA,EACP;AACD8+E,SAAO51G,QAAQ,SAAUsmG,OAAAA;AACrBqO,SAAKrE,YAAYhK,MAAMriG,OAC/B;AAAA,EAAA,CAAA;AACI,MAAIW,MAAM0rG,WAAWnb;AACrBt0D,OAAKj8B,GAAAA;AACL,UAAQ0rG,WAAW35F,QAAAA;AAAAA,IACf,KAAK;AAAA,IACL,KAAK;AACD,aAAO/R;AAAAA,IACX,KAAK;AACD,aAASA,IAAInE,UAAUmE,IAAIA,IAAInE,SAAS,CAAO,KAAA;AAAA,IACnD,KAAK;AAAA,IACL;AACI,aAASmE,IAAInE,UAAUmE,IAAI,CAAA,KAAO;AAAA;AAE9C;ACnDA,IAAI0oG,kBAAkB,EAClBE,SAAS,MACTj3E,OAAO,OACP6/E,QAAQ,OACRC,UAAU,OACVC,YAAY,OACZjI,MAAM,KAAA;AAEH,SAASkI,WAAWzwG,GAAG7B,SAC1B;AAAA,MAAIuyG,YAAY,CAChB;AAAA,MAAIC,YAAY,CAChB;AAAA,MAAIC,aAAa,CACjB;AAAA,MAAIC,aAAa,CAAA;AACjB,MAAIC,gBAAgB1I,aAAapoG;AACjC,MAAI0nG,UAAUoJ,cAAcpJ;AAC5B,MAAIa,OAAOuI,cAAcvI;AACzB,MAAIwI,QAAQC,eAAehxG,GAAG7B,QAAQmyG;AACtCS,QAAM72G,QAAQ,SAAUmuG,MAAAA;AACpB,QAAIhC;AACJ,QAAA,CAAKgC;AACD;AACJ,QAAI4I,KAAKC,cAAc7I,IAAAA,GAAO13F,OAAOsgG,GAAGtgG,MAAMwgG,QAAQF,GAAGE,OAAOv8F,QAAQq8F,GAAGr8F;AAC3E,YAAQjE,KAAKuwB,YAAAA,GAAAA;AAAAA,MACT,KAAK;AACD,YAAIiwE,MAAMx2G,QAAQ;AACd,gBAAM,IAAI6N,MAAM,2BAA2B7G,OAAOwvG,MAAM9qG,KAAK,GAAA,CAAA,CAAA;AAAA,QAChE;AACDqqG,kBAAUt2G,KAAK6tG,YAAYI,IAC3B,CAAA;AAAA;AAAA,MACJ,KAAK;AACD,YAAI+I,MAAM/K,KAAK,4BAA4BlvD,KAAKkxD,IAAAA,OAAW,QAAQhC,OAAY,SAAIA,KAAK,CAAA,GAAIgL,YAAYD,GAAG,CAAA;AAC3G,YAAIC,aAAc9I,CAAAA,MAAM;AACpBA,iBAAO8I;AAAAA,QACV;AACDV,oBAAYA,UAAUhvG,OAAO2vG,WAAW18F,OAAOu8F,KAC/C,CAAA;AAAA;AAAA,MACJ,KAAK;AACD,YAAIA,MAAMx2G,QAAQ;AACd,gBAAM,IAAI6N,MAAM,4BAA4B7G,OAAOwvG,MAAM9qG,KAAK,GAAA,CAAA,CAAA;AAAA,QACjE;AACDuqG,mBAAWx2G,KAAK6tG,YAAYrzF,KAAAA,CAAAA;AAC5B;AAAA,MACJ,KAAK;AACDi8F,qBAAaA,WAAWlvG,OAAO2vG,WAAW18F,OAAOu8F;AACjD;AAAA,MACJ,KAAK;AACD;AAAA,MACJ;AACI,cAAM,IAAI3oG,MAAM,2BAA2BmI,IAAAA;AAAAA,IAAAA;AAAAA,EAE3D;AACI,SAAO,EACH+2F,SACAa,MACAmI,WACAC,WACAC,YACAC;AAER;AACA,SAASU,UAAUvxG,GAAG7B,SAAAA;AAClB,MAAIkoG,KAAKoK,WAAWzwG,GAAG7B,OAAAA,GAAUuyG,YAAYrK,GAAGqK,WAAWC,YAAYtK,GAAGsK,WAAWC,aAAavK,GAAGuK,YAAYC,aAAaxK,GAAGwK,YAAYnJ,UAAUrB,GAAGqB,SAASa,OAAOlC,GAAGkC;AAC7K,MAAIiH,UAAUrxG,QAAQsyB,UAAU;AAChC,MAAItyB,QAAQqyG,YAAY;AACpBryG,YAAQoyG,WAAW;AACnBpyG,YAAQmyG,SAAS;AAAA,EACpB;AACD,MAAInyG,QAAQoyG,YACRG,UAAU/1G,SAAS,KACnBg2G,UAAUh2G,UACVi2G,WAAWj2G,UACXk2G,WAAWl2G,QAAQ;AACnB,QAAI62G,SAAS,IAAIC,SAASjC,OAAAA;AAC1BgC,WAAO9J,QAAQA,OAAAA;AACf8J,WAAOjJ,KAAKA,QAAQ3jG;AACpB8rG,cAAUx2G,QAAQ,SAAUujB,MAAAA;AACxB+zF,aAAOhR,MAAM,IAAIiB,MAAMiQ,kBAAkBj0F,MAAKiqF,SAASa,IAAOiH,GAAAA,OAAAA,CAAAA;AAAAA,IAC1E,CACQmB;AAAAA,cAAUz2G,QAAQ,SAAUR,MAAAA;AACxB83G,aAAOG,MAAMj4G,IAAAA;AAAAA,IACzB;AACQk3G,eAAW12G,QAAQ,SAAUujB,MAAAA;AACzB+zF,aAAOI,OAAO,IAAInQ,MAAMiQ,kBAAkBj0F,MAAKiqF,SAASa,IAAOiH,GAAAA,OAAAA,CAAAA;AAAAA,IAC3E,CACQqB;AAAAA,eAAW32G,QAAQ,SAAUR,MAAAA;AACzB83G,aAAOK,OAAOn4G,IAAAA;AAAAA,IAC1B;AACQ,QAAIyE,QAAQqyG,cAAcryG,QAAQupG;AAC9B8J,aAAOG,MAAMjK;AACjB,WAAO8J;AAAAA,EACV;AACD,MAAI/zF,MAAMizF,UAAU,CAAA,KAAM,CAAA;AAC1B,SAAO,IAAIjP,MAAMiQ,kBAAkBj0F,KAAKA,IAAIiqF,WAAWvpG,QAAQupG,WAAWA,SAASjqF,IAAI8qF,QAAQpqG,QAAQoqG,QAAQA,IAAAA,GAAOiH;AAC1H;AACO,SAASsC,SAAS9xG,GAAG7B;AACxB,MAAIA,YAAAA,QAAoB;AAAEA,cAAU,CAAE;AAAA,EAAG;AACzC,SAAOozG,UAAUvxG,GAAGmnG,kBAAkBhpG,OAAAA,CAAAA;AAC1C;AACA,SAASuzG,kBAAkBj0F,KAAKiqF,SAASa,MAAAA;AACrC,SAAO3K,SAASA,SAAS,CAAE,GAAEngF,MAAM,EAAEiqF,SAAkBa,KAAMA,CAAAA;AACjE;AACA,SAASpB,kBAAkBhpG,SACvB;AAAA,MAAI+qD,UAAU,CACd;AAAA,MAAI5sC,OAAO9L,OAAO8L,KAAKne,OACvB;AAAA,MAAImpG,eAAc92F,OAAO8L,KAAKkrF;AAC9BlrF,OAAKpiB,QAAQ,SAAUuR,KACnB;AAAA,QAAA,CAAKiuF,SAAS4N,cAAa77F;AACvBy9C,cAAQ9uD,KAAKqR;EACzB,CACI;AAAA,MAAIy9C,QAAQvuD,QAAQ;AAChB,UAAM,IAAI6N,MAAM,sBAAsB0gD,QAAQ7iD,KAAK,IACtD,CAAA;AAAA,EAAA;AACD,SAAOu3F,SAASA,SAAS,CAAA,GAAI4J,kBAAkBrpG,OACnD;AAAA;AACA,SAAS4zG,YAAY1J,MAAAA;AACjB,MAAIA,KAAK//F,QAAQ,GAAU,MAAA,IAAG;AAC1B,WAAO,EACHqI,MAAM,SACNiE,OAAOyzF;EAEd;AACD,MAAIhC,KAAKxqG,MAAMwsG,MAAM,KAAK,CAAA,GAAI13F,OAAO01F,GAAG,CAAA,GAAIzxF,QAAQyxF,GAAG,CAAA;AACvD,SAAO,EACH11F,MACAiE;AAER;AACA,SAASs8F,cAAc7I,MACnB;AAAA,MAAIhC,KAAK0L,YAAY1J,OAAO13F,OAAO01F,GAAG11F,MAAMiE,QAAQyxF,GAAGzxF;AACvD,MAAIu8F,QAAQxgG,KAAK9U,MAAM;AACvB,MAAKs1G,CAAAA;AACD,UAAM,IAAI3oG,MAAM;AACpB,SAAO,EACHmI,MAAMwgG,MAAM,GAAGjwE,YACfiwE,GAAAA,OAAOA,MAAM3sG,MAAM,CAAA,GACnBoQ,MAER;AAAA;AACA,SAASo8F,eAAehxG,GAAGswG,QACvB;AAAA,MAAIA,mBAAmB;AAAEA,aAAS;AAAA,EAAQ;AAC1CtwG,MAAIA,KAAKA,EAAEozB,KACX;AAAA,MAAA,CAAKpzB;AACD,UAAM,IAAIwI,MAAM,sBAGpB;AAAA,MAAA,CAAK8nG,QAAQ;AACT,WAAOtwG,EAAEnE,MAAM;EAClB;AACD,MAAIk1G,QAAQ/wG,EAAEnE,MAAM,IACpB;AAAA,MAAInB,IAAI;AACR,SAAOA,IAAIq2G,MAAMp2G,QAAQ;AAErB,QAAI0tG,OAAQ0I,MAAMr2G,CAAAA,IAAKq2G,MAAMr2G,CAAG6lB,EAAAA,QAAQ,SAAS,EACjD;AAAA,QAAA,CAAK8nF,MAAM;AACP0I,YAAMpnG,OAAOjP,GAAG;IACnB,WACQA,IAAI,KAAK2tG,KAAK,OAAO,KAAK;AAC/B0I,YAAMr2G,IAAI,MAAM2tG,KAAK7jG,MAAM;AAC3BusG,YAAMpnG,OAAOjP,GAAG,CACnB;AAAA,IAAA,OACI;AACDA,WAAK;AAAA,IACR;AAAA,EACJ;AACD,SAAOq2G;AACX;AACA,SAASiB,iBAAiBb,OAAAA;AACtBA,QAAMj3G,QAAQ,SAAU+3G,MACpB;AAAA,QAAA,CAAK,+BAA+Bh2E,KAAKg2E,IAAAA,GAAO;AAC5C,YAAM,IAAIzpG,MAAM,oCAAoCypG;IACvD;AAAA,EACT,CAAA;AACA;AACA,SAASX,WAAWY,UAAUf,OAC1Ba;AAAAA,mBAAiBb,KACjB;AAAA,SAAOe,SAASr2G,MAAM,GAAA,EAAKG,IAAI,SAAU+oC,SAAAA;AAAW,WAAOo3D,kBAAkBp3D,OAAAA;AAAAA,EAAW,CAC5F;AAAA;ACnLA,SAASotE,mBAAmBC,WAAAA;AACxB,MAAI/T,QAAQ9nG;AACZ,SAAO,SAAU87G,OAAAA;AACb,QAAIA,UAAUztG,QAAW;AACrBy5F,YAAM,IAAI18F,OAAOywG,SAAAA,CAAAA,IAAcC;AAAAA,IAClC;AACD,QAAIhU,MAAM,IAAI18F,OAAOywG,SAAgBxtG,CAAAA,MAAAA,QAAW;AAC5C,aAAOy5F,MAAM,IAAI18F,OAAOywG,SAAAA,CAAAA;AAAAA,IAC3B;AACD,aAAS13G,IAAI,GAAGA,IAAI2jG,MAAMyR,OAAOn1G,QAAQD,KAAK;AAC1C,UAAI43G,UAAUjU,MAAMyR,OAAOp1G,CAAAA,EAAGkmG,YAAYwR,SAC1C;AAAA,UAAIE,SAAS;AACT,eAAOA;AAAAA,MACV;AAAA,IACJ;AAAA,EACT;AACA;AACA,IAAIb,WAA0B,SAAUtT;AACpCV,YAAUgU,WAAUtT,MAOpB;AAAA,WAASsT,UAASjC,SACd;AAAA,QAAIA,oBAAoB;AAAEA,gBAAU;AAAA,IAAQ;AAC5C,QAAInR,QAAQF,OAAOxxF,KAAKpW,MAAM,IAAIi5G,OAAAA,KAAYj5G;AAC9C8nG,UAAMqJ,UAAUyK,mBAAmBxtG,MAAM05F,OAAO,CAAC,SAAA,CAAA;AACjDA,UAAMkK,OAAO4J,mBAAmBxtG,MAAM05F,OAAO,CAAC,MAC9CA,CAAAA;AAAAA,UAAMyR,SAAS,CACfzR;AAAAA,UAAM2R,SAAS,CACf3R;AAAAA,UAAM0R,UAAU,CAChB1R;AAAAA,UAAM4R,UAAU,CAAA;AAChB,WAAO5R;AAAAA,EACV;AACDoT,EAAAA,UAAS7iG,UAAU+gG,QAAQ,SAAUnF,YACjC;AAAA,WAAOqF,QAAQrF,YAAYj0G,KAAKu5G,QAAQv5G,KAAKw5G,SAASx5G,KAAKy5G,QAAQz5G,KAAK05G,SAAS15G,KAAKgyG,KAC9F,CAAA;AAAA,EAAA;AAMIkJ,EAAAA,UAAS7iG,UAAU4xF,QAAQ,SAAUA,OACjC+R;AAAAA,aAAS/R,OAAOjqG,KAAKu5G,MAAAA;AAAAA,EAC7B;AAMI2B,EAAAA,UAAS7iG,UAAUgjG,SAAS,SAAUpR;AAClC+R,aAAS/R,OAAOjqG,KAAKw5G,OAC7B;AAAA,EAAA;AAMI0B,EAAAA,UAAS7iG,UAAU+iG,QAAQ,SAAUj4G,MAAAA;AACjC84G,aAAS94G,MAAMnD,KAAKy5G;EAC5B;AAMIyB,EAAAA,UAAS7iG,UAAUijG,SAAS,SAAUn4G,MAClC84G;AAAAA,aAAS94G,MAAMnD,KAAK05G;EAC5B;AAMIwB,EAAAA,UAAS7iG,UAAU6jG,SAAS;AACxB,WAAOl8G,KAAKu5G,OAAO9zG,IAAI,SAAUI;AAAK,aAAO01G,SAAS11G,EAAEyS,SAAAA,CAAAA;AAAAA,IAAc;EAC9E;AAMI4iG,EAAAA,UAAS7iG,UAAU8jG,UAAU,WAAA;AACzB,WAAOn8G,KAAKw5G,QAAQ/zG,IAAI,SAAUI;AAAK,aAAO01G,SAAS11G,EAAEyS,SAAc,CAAA;AAAA,IAAA,CAAA;AAAA,EAC/E;AAMI4iG,EAAAA,UAAS7iG,UAAU+jG,SAAS,WAAA;AACxB,WAAOp8G,KAAKy5G,OAAOh0G,IAAI,SAAUI,GAAAA;AAAK,aAAO,IAAIrB,KAAKqB,EAAE40B,QAAAA,CAAAA;AAAAA,IAAa;EAC7E;AAMIygF,EAAAA,UAAS7iG,UAAUgkG,UAAU,WAAA;AACzB,WAAOr8G,KAAK05G,QAAQj0G,IAAI,SAAUI;AAAK,aAAO,IAAIrB,KAAKqB,EAAE40B,QAAAA,CAAAA;AAAAA,IAAa;EAC9E;AACIygF,EAAAA,UAAS7iG,UAAUtT,UAAU;AACzB,QAAIkU,SAAS;AACb,QAAKjZ,CAAAA,KAAKu5G,OAAOn1G,UAAUpE,KAAKs8G,UAAU;AACtCrjG,eAASA,OAAO7N,OAAO6nG,gBAAgB,EAAE9B,SAASnxG,KAAKs8G,SAC1D,CAAA,CAAA;AAAA,IAAA;AACDt8G,SAAKu5G,OAAO51G,QAAQ,SAAUsmG,OAAAA;AAC1BhxF,eAASA,OAAO7N,OAAO6+F,MAAM3xF,SAAWhT,EAAAA,MAAM,IAC1D,CAAA;AAAA,IAAA,CAAA;AACQtF,SAAKw5G,QAAQ71G,QAAQ,SAAU03G,QAC3BpiG;AAAAA,eAASA,OAAO7N,OAAOiwG,OAClB/iG,SACAhT,EAAAA,MAAM,MACNG,IAAI,SAAUqsG;AAAQ,eAAOA,KAAK9nF,QAAQ,WAAW,SAAA;AAAA,OACrD6qB,EAAAA,OAAO,SAAUi9D,MAAQ;AAAA,eAAA,CAAQ,WAAWpsE,KAAKosE,IAAAA;AAAAA,MAAQ;IAC1E,CACQ;AAAA,QAAI9xG,KAAKy5G,OAAOr1G,QAAQ;AACpB6U,aAAOpV,KAAK04G,eAAe,SAASv8G,KAAKy5G,QAAQz5G,KAAKgyG,KACzD,CAAA,CAAA;AAAA,IAAA;AACD,QAAIhyG,KAAK05G,QAAQt1G,QAAQ;AACrB6U,aAAOpV,KAAK04G,eAAe,UAAUv8G,KAAK05G,SAAS15G,KAAKgyG,KAC3D,CAAA,CAAA;AAAA,IAAA;AACD,WAAO/4F;AAAAA,EACf;AAOIiiG,EAAAA,UAAS7iG,UAAUC,WAAW,WAC1B;AAAA,WAAOtY,KAAK+E,QAAU+K,EAAAA,KAAK;EACnC;AAIIorG,EAAAA,UAAS7iG,UAAU6lE,QAAQ,WAAA;AACvB,QAAIs+B,MAAM,IAAItB,UAAWl7G,CAAAA,CAAAA,KAAKk5G;AAC9Bl5G,SAAKu5G,OAAO51G,QAAQ,SAAU0pG,MAAAA;AAAQ,aAAOmP,IAAIvS,MAAMoD,KAAKnvB,MAAAA,CAAAA;AAAAA,IAAW;AACvEl+E,SAAKw5G,QAAQ71G,QAAQ,SAAU0pG,MAAAA;AAAQ,aAAOmP,IAAInB,OAAOhO,KAAKnvB,MAAAA,CAAAA;AAAAA,IAAW;AACzEl+E,SAAKy5G,OAAO91G,QAAQ,SAAUR,MAAAA;AAAQ,aAAOq5G,IAAIpB,MAAM,IAAI52G,KAAKrB,KAAKs3B,QAAc,CAAA,CAAA;AAAA,IAAA,CAAA;AACnFz6B,SAAK05G,QAAQ/1G,QAAQ,SAAUR,MAAAA;AAAQ,aAAOq5G,IAAIlB,OAAO,IAAI92G,KAAKrB,KAAKs3B;IAAc,CACrF;AAAA,WAAO+hF;AAAAA,EACf;AACI,SAAOtB;AACX,EAAEhQ,KAEF;AAAA,SAAS8Q,SAAS/R,OAAOnwE,YAAAA;AACrB,MAAMmwE,EAAAA,iBAAiBiB,QAAQ;AAC3B,UAAM,IAAI/D,UAAU9hG,OAAO4kG,SAAS,wBACvC;AAAA,EAAA;AACD,MAAK9G,CAAAA,SAASrpE,WAAWr0B,IAAIJ,MAAAA,GAASA,OAAO4kG,KAAS,CAAA,GAAA;AAClDnwE,eAAWj2B,KAAKomG,KAAAA;AAAAA,EACnB;AACL;AACA,SAASgS,SAAS94G,MAAM22B;AACpB,MAAM32B,EAAAA,gBAAgBqB,OAAO;AACzB,UAAM,IAAI2iG,UAAU9hG,OAAOlC,IAAQ,IAAA,uBAAA;AAAA,EACtC;AACD,MAAKggG,CAAAA,SAASrpE,WAAWr0B,IAAIqU,MAAAA,GAASA,OAAO3W,IAAAA,CAAAA,GAAQ;AACjD22B,eAAWj2B,KAAKV;AAChBqhC,SAAK1K,UAAAA;AAAAA,EACR;AACL;AACA,SAASyiF,eAAe17D,OAAOu7D,QAAQpK,MACnC;AAAA,MAAIe,SAASf,QAAQA,KAAKrnE,kBAAkB;AAC5C,MAAI7mB,SAASivF,QAAQ,GAAG3nG,OAAOy1C,OAAO,OAAO,GAAGz1C,OAAOy1C,OAAO,QAAUz1C,EAAAA,OAAO4mG,MAAM,GAAA;AACrF,MAAIn0E,aAAau+E,OACZ32G,IAAI,SAAU21G,OAAAA;AAAS,WAAOzV,kBAAkByV,MAAMr2G,QAAWguG,GAAAA,KAAAA;AAAAA,KACjEjjG,KAAK,GAAA;AACV,SAAO,GAAG1E,OAAO0Y,QAAQ1Y,OAAOyyB,UAAAA;AACpC;AClLe,SAAQ+qB,UAAEjpD,YAExB;AAAA,WAAS88G,kBAAkBt5G,MAC1B;AAAA,WAAO,IAAIqB,KACVrB,KAAKwV,YACLxV,GAAAA,KAAKyV,YACLzV,KAAKiG,QAAAA,GACLjG,KAAKkJ,SACLlJ,GAAAA,KAAKwK,cACLxK,KAAK8oC,WAAAA,GACL,CAED;AAAA,EAAA;AAED,WAASywE,oBAAoBl7G,QAAAA;AAC5B,aAASA,OAAMkxD;AAAAA,EACf;AAED,WAASiqD,SAASn7G,QACjB;AAAA,WAAA,CAAA,CAASA,OAAMyoG,SAAUzoG,CAAAA,OAAMo7G;AAAAA,EAC/B;AAED,WAASC,yBAAyBr7G,QACjCA;AAAAA,IAAAA,OAAMyoG,QAAQ;AACdzoG,IAAAA,OAAMs7G,iBAAiB;AACvBt7G,IAAAA,OAAMo7G,qBAAqB;AAC3Bp7G,IAAAA,OAAMsqB,WAAW;AACjBtqB,IAAAA,OAAMkxD,UAAU;AAAA,EAChB;AAED,WAASqqD,gBAAgBv2G,IACxB;AAAA,QAAIzG,MAAKyG,GAAGzG,GAAGuF,MAAM,GAAA;AAErB,QAAI03G,MAAMr9G,WAAU+O;AACpB/O,IAAAA,WAAUs1C,cAAc;AACxB,QAAIgoE,MAAMt9G,WAAUm5C,YAAYtyC;AAChCy2G,QAAIl9G,KAAKi9G;AACTC,QAAIL,qBAAqB78G,IAAG,CAE5B;AAAA,QAAIquB,YAAYruB,IAAG;AAEnBk9G,QAAIH,iBAAiB,IAAIt4G,KAAKsV,OAAOsU;AAErCzuB,IAAAA,WAAU2xD,gBAAgB2rD,KAAK7uF,SAAAA;AAC/BzuB,IAAAA,WAAUwH,SAAS81G,GAAAA;AACnBt9G,IAAAA,WAAUs1C,cAAc;AAAA,EACxB;AAEDt1C,EAAAA,WAAUu9G,YAAY,CACtBv9G;AAAAA,EAAAA,WAAUw9G,oBAAoB;AAC9Bx9G,EAAAA,WAAUy9G,eAAe;AACzBz9G,EAAAA,WAAU2xD,kBAAkB,SAAU9qD,IAAI29C;AACzC39C,OAAG62G,YAAYl5D;AACfnkD,SAAKo9G,aAAa52G,GAAGzG,EAAMyG,IAAAA;AAC3B,QAAKxG,CAAAA,KAAKm9G,kBAAkB32G,GAAG6kE,SAAAA;AAAYrrE,WAAKm9G,kBAAkB32G,GAAG6kE,aAAa,CAAA;AAClFrrE,SAAKm9G,kBAAkB32G,GAAG6kE,SAAWlnB,EAAAA,IAAAA,IAAQ39C;AAAAA,EAC/C;AACC7G,EAAAA,WAAU29G,kBAAkB,SAAUn5D,MAAMpkD,KAC3C;AAAA,QAAIw9G,KAAKv9G,KAAKm9G,kBAAkBp9G;AAChC,QAAIw9G;AAAI,aAAOA,GAAGp5D,IAAAA;AAClB,WAAO;AAAA,EACT;AACCxkD,EAAAA,WAAU69G,mBAAmB,SAAUz9G,KACtC;AAAA,WAAQC,KAAKm9G,kBAAkBp9G,GAAAA,KAAO,CACxC;AAAA,EAAA;AAAA,GAEC;AACC,QAAI09G,gBAAgB99G,WAAUwH;AAC9BxH,IAAAA,WAAUwH,WAAW,SAAUpE,YAAYC,UAAU8D,MAAM/G,KAAIuzC,YAC9D;AAAA,UAAIoqE,QAAQD,cAAcrvG,MAAMpO,MAAMiU,SAEtC;AAAA,UAAIypG,SAAS/9G,WAAUmG,SAAS43G,KAAQ,GAAA;AACvC,YAAIl3G,KAAK7G,WAAUmG,SAAS43G,KAE5B;AAAA,YAAIl3G,GAAGzD,YAAY;AAClByD,aAAGzD,aAAa05G,kBAAkBj2G,GAAGzD,UAAAA;AAAAA,QACrC;AACD,YAAIyD,GAAGxD,UAAU;AAChBwD,aAAGxD,WAAWy5G,kBAAkBj2G,GAAGxD,QACnC;AAAA,QAAA;AAAA,MACD;AACD,aAAO06G;AAAAA,IACV;AAAA,EACE;AAED/9G,EAAAA,WAAUiG,YAAY,kBAAkB,SAAUpE,QAAAA;AAEjD,QAAIA,OAAMs7G,gBAAgB;AACzBt7G,MAAAA,OAAMs7G,iBAAiBn9G,WAAU2zB,UAAUmG,WAAWj4B,OAAMs7G,cAAAA;AAAAA,IAC5D;AACD,WAAO;AAAA,EACT,CAECn9G;AAAAA,EAAAA,WAAUiG,YAAY,mBAAmB,SAAU7F,KAAI8zC,QACtD;AAAA,QAAI7zC,KAAK29G;AAAc;AACvB39G,SAAK29G,eAAe;AAEpB,QAAIh+G,WAAUy9G,aAAar9G,GAAK,GAAA;AAE/BJ,MAAAA,WAAUy9G,aAAavpE,MAAAA,IAAUl0C,WAAUy9G,aAAar9G;aACjDJ,WAAUy9G,aAAar9G;IAC9B;AAED,QAAIJ,WAAUw9G,kBAAkBp9G,GAAAA,GAAK;AACpCJ,MAAAA,WAAUw9G,kBAAkBtpE,MAAUl0C,IAAAA,WAAUw9G,kBAAkBp9G,GAC3DJ;AAAAA,aAAAA,WAAUw9G,kBAAkBp9G,GACnC;AAAA,IAAA;AAED,aAASoE,IAAI,GAAGA,IAAInE,KAAKk9G,UAAU94G,QAAQD,KAAK;AAC/C,UAAIy5G,MAAM59G,KAAKk9G,UAAU/4G,CACzB;AAAA,UAAIy5G,IAAIhB,sBAAsB78G,KAAI;AACjC69G,YAAIhB,qBAAqB/oE;AACzB7zC,aAAK4zC,cAAcgqE,IAAI79G,IAAI8zC,SAAS,MAAM+pE,IAAI79G,GAAGuF,MAAM,GAAA,EAAK,CAC5D,CAAA;AAAA,MAAA;AAAA,IACD;AAED,aAASnB,KAAKnE,KAAKo9G,cAAc;AAChC,UAAIQ,MAAM59G,KAAKo9G,aAAaj5G;AAC5B,UAAIy5G,IAAIhB,sBAAsB78G,KAAI;AACjC69G,YAAIhB,qBAAqB/oE;AACzB+pE,YAAIC,eAAe;AAAA,MACnB;AAAA,IACD;AAED,QAAIp6F,MAAK9jB,WAAUy9G,aAAavpE,MAAAA;AAChC,QAAIpwB,OAAMA,IAAGo6F,cAAc;AAAA,aACnBp6F,IAAGo6F;AACVxkG,iBAAW;AACV,YAAI1Z,WAAU8gB,YAAY;AACzB,iBAAO;AAAA,QACP;AACD9gB,QAAAA,WAAUiL,UAAU,kBAAkB,CAACipC,QAAQl0C,WAAUmG,SAAS+tC,MAAAA,CAAAA,CAAAA;AAAAA,MAClE,GAAE,CACH;AAAA,IAAA;AAAA,WAEM7zC,KAAK29G;AAAAA,EACd,CAAA;AAEC,WAASG,sBAAsBC,aAAav3G,IAC3C;AAAA,QAAIzG,MAAKg+G;AACTA,kBAAch+G,IAAGuF,MAAM,GAAA;AACvB,QAAI03G,MAAMr9G,WAAU+O,IACpB;AAAA,QAAIwmD,MAAO6oD,YAAY,CAAA,IAAMA,YAAY,CAAMv3G,IAAAA,GAAY;AAC3D,QAAIy2G,MAAMt9G,WAAUm5C,YAAYtyC;AAChCy2G,QAAIl9G,KAAKi9G;AACTC,QAAIL,qBAAqBp2G,GAAGo2G,sBAAsBmB,YAAY,CAC9Dd;AAAAA,QAAIH,iBAAiB,IAAIt4G,KAAKsV,OAAOo7C,GACrC+nD,CAAAA;AAAAA,QAAIvqD,UAAU;AACd/yD,IAAAA,WAAUwH,SAAS81G,GAAAA;AAAAA,EACnB;AAEDt9G,EAAAA,WAAUiG,YAAY,gCAAgC,SAAU7F,KAAAA;AAC/D,QAAIyG,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,QAAIC,KAAKwxD,kBAAkBzxD,QAAQC,KAAKg+G,uBAAuBx3G,QAAQk2G,oBAAoBl2G,EAAAA,GAAM;AAChGs3G,4BAAsB/9G,KAAIyG,EAC7B;AAAA,IAAA,OAAS;AACN,UAAIm2G,SAASn2G,OAAOxG,KAAKopB;AACxBppB,aAAKktE,iBAAiB1mE;AAGvB,UAAIy3G,MAAMj+G,KAAKw9G,iBAAiBz9G,GAAAA;AAChC,eAASoE,KAAK85G,KAAK;AAClB,YAAIA,IAAIrvG,eAAezK,IAAI;AAC1BpE,UAAAA,MAAKk+G,IAAI95G,CAAGpE,EAAAA;AACZ,cAAIC,KAAK8F,SAAS/F,GACjBC;AAAAA,iBAAKgrB,YAAYjrB,KAAI,IAAA;AAAA,QACtB;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACT;AACCJ,EAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAIyG;AACrD,QAAKxG,CAAAA,KAAKwxD,kBAAkBzxD,GAAAA,KAAOC,KAAKg+G,uBAAuBx3G,EAAAA,GAAK;AACnE,UAAK7G,CAAAA,WAAUwzC,QAAQpzC,GAAK,GAAA;AAC3ByG,WAAGksD,UAAU;AACb1yD,aAAKyzC,SAAS1zC,KAAIyG,EAClB;AAAA,MAAA;AAAA,IACD;AAAA,EACH,CACC7G;AAAAA,EAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAIyB,QAAAA;AACrD,QAAIxB,KAAKmsB;AAAU,aAAO;AAE1B,QAAI3lB,KAAKxG,KAAK8F,SAAS/F,GAEvB;AAAA,QAAIC,KAAKwxD,kBAAkBzxD,GAAAA,GAAK;AAC/Bg9G,sBAAgBv2G,EAAAA;AAAAA,IAEnB,OAAS;AACN,UAAIA,GAAGzD,YAAY;AAClByD,WAAGzD,aAAa05G,kBAAkBj2G,GAAGzD,UAAAA;AAAAA,MACrC;AACD,UAAIyD,GAAGxD,UAAU;AAChBwD,WAAGxD,WAAWy5G,kBAAkBj2G,GAAGxD,QACnC;AAAA,MAAA;AAED,UAAI25G,SAASn2G,OAAOxG,KAAKopB,cAAc;AACtCppB,aAAKktE,iBAAiB1mE;MAEtB;AAED,UAAIy3G,MAAMj+G,KAAKw9G,iBAAiBz9G,GAChC;AAAA,eAASoE,KAAK85G,KAAK;AAClB,YAAIA,IAAIrvG,eAAezK,CAAAA,GAAI;iBACnBnE,KAAKo9G,aAAaa,IAAI95G,CAAGpE,EAAAA,EAAAA;AAChCC,eAAKgrB,YAAYizF,IAAI95G,CAAGpE,EAAAA,IAAI;QAC5B;AAAA,MACD;AAAA,aACMC,KAAKm9G,kBAAkBp9G,GAAAA;AAG9B,UAAIm+G,eAAe;AACnB,eAASlvG,IAAI,GAAGA,IAAIhP,KAAK2zC,UAAUvvC,QAAQ4K,KAAK;AAC/C,YAAIhP,KAAK2zC,UAAU3kC,GAAGvK,aAAazE,KAAK0B,OAAOwC,eAAoBnE,KAAAA;AAClEm+G,yBAAe;AAAA,MAChB;AACD,UAAKA,CAAAA;AACJl+G,aAAK6oB,aAAa;AAAA,IACnB;AACD,WAAO;AAAA,EACT;AACClpB,EAAAA,WAAUiG,YAAY,gBAAgB,SAAU7F;AAC/C,QAAKC,CAAAA,KAAKmsB,UAAU;AACnB,UAAI3lB,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,UAAI48G,SAASn2G,EAAK,GAAA;AACjBxG,aAAKktE,iBAAiB1mE,EAAAA;AAAAA,MACtB;AAAA,IACD;AACD,WAAO;AAAA,EACT,CAAA;AACC7G,EAAAA,WAAUiG,YAAY,eAAe,SAAU7F,KAAI0R,MAAMg4E;AACxD,QAAIjjF,KAAKxG,KAAK8F,SAAS/F;AACvB,QAAI48G,SAASn2G;AACZxG,WAAK6oB,aAAa;AACnB,WAAO;AAAA,EACT,CACClpB;AAAAA,EAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KACjD;AAAA,QAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,QAAA,CAAK48G,SAASn2G,EAAK,GAAA;AAClBq2G,+BAAyBr2G,EACzB;AAAA,IAAA;AACD,WAAO;AAAA,EACT,CAAA;AACC7G,EAAAA,WAAUiG,YAAY,iBAAiB,SAAU7F,KAAAA;AAChD,QAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,QAAI48G,SAASn2G,EAAAA,GAAK;AACjBxG,WAAKktE,iBAAiB1mE;AAEtBxG,WAAK2X,iBAAAA;AAAAA,IACL;AAAA,EACH,CACChY;AAAAA,EAAAA,WAAUutE,mBAAmB,SAAU1mE;AAEtC,QAAIA,GAAGzD,YAAY;AAClByD,SAAGzD,aAAa05G,kBAAkBj2G,GAAGzD,UACrC;AAAA,IAAA;AACD,QAAIyD,GAAGxD,UAAU;AAChBwD,SAAGxD,WAAWy5G,kBAAkBj2G,GAAGxD,QAAAA;AAAAA,IACnC;AAEDwD,OAAGslB,WAAW3a,KAAKI,OAAO/K,GAAGxD,SAAS+B,QAAAA,IAAYyB,GAAGzD,WAAWgC,QAAAA,KAAa,GAC7EyB;AAAAA,OAAGxD,WAAWwD,GAAGqD;AACjB,QAAIrD,GAAG23G,aAAa;AACnB33G,SAAGzD,WAAWsqC,SAAS,CAAA;AACvB7mC,SAAGzD,WAAWoqC,QAAQ3mC,GAAG23G,YAAY/0G,QAAAA,CAAAA;AACrC5C,SAAGzD,WAAWsqC,SAAS7mC,GAAG23G,YAAYvlG;AACtCpS,SAAGzD,WAAW4+D,YAAYn7D,GAAG23G,YAAYxlG;IAEzC;AAAA,EACH;AAEChZ,EAAAA,WAAU6xD,oBAAoB,SAAUzxD,KACvC;AAAA,WAAOA,IAAGuY,SAAWvG,EAAAA,QAAQ;EAC/B;AACCpS,EAAAA,WAAUq+G,yBAAyB,SAAUx3G,IAC5C;AAAA,WAAQA,GAAGo2G,sBAAsBp2G,GAAGo2G,sBAAsB;AAAA,EAC5D;AAECj9G,EAAAA,WAAUy+G,mBAAmBz+G,WAAU2rB;AACvC3rB,EAAAA,WAAU2rB,eAAe,SAAUvrB,KAAAA;AAClC,QAAI2nB,SAAS1nB,KAAK0nB;AAClB,QAAIhe,IAAI/J,WAAU+B,OAAO28G;AACzB,QAAI73G,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,QAAIu+G,MAAM93G,GAAGo2G;AACb,QAAI2B,YAAYv+G,KAAKwxD,kBAAkBzxD;AACvC,QAAIw+G;AACHD,YAAMv+G,IAAGuF,MAAM,GAAK,EAAA,CAAA;AAGrB,QAAIk5G,aAAa,SAAUz+G;AAC1B,UAAIyB,SAAQ7B,WAAUmG,SAAS/F;AAC/ByB,MAAAA,OAAMqI,YAAYrI,OAAMwB;AACxBxB,MAAAA,OAAMwB,WAAW,IAAIwB,KAAKhD,OAAMuB,WAAWgC,YAAYvD,OAAMsqB,WAAW;AACxE,aAAOnsB,WAAUy+G,iBAAiBr+G,GACrC;AAAA,IAAA;AAEE,SAAKu+G,OAAOA,MAAM,MAAM,MAAM3B,SAASn2G,EAAK,GAAA;AAE3C,aAAOg4G,WAAWz+G,GAAAA;AAAAA,IAClB;AACD,QAAA,CAAKu+G,OAAOA,QAAQ,QAAA,CAAU52F,OAAOC,OAAOu0C,qBAAqBxyD,KAAK,cAAgBA,KAAK,YAAa60G,CAAAA,YAAa;AAEpH,aAAOv+G,KAAKo+G,iBAAiBr+G,GAC7B;AAAA,IAAA;AACD,QAAI2J,KAAK,OAAO;AACf,UAAIqtD,OAAO/2D;AACXL,MAAAA,WAAU87D,SAAS,EAClB30D,MAAM4gB,OAAOC,OAAOu0C,mBACpBpxC,OAAOpD,OAAOC,OAAO82F,yBACrB1tG,OAAO,SACP9D,UAAU,UACV8c,SAAS,CAACrC,OAAOC,OAAO20C,oBAAoB50C,OAAOC,OAAO40C,wBAAwB70C,OAAOC,OAAOo0C,WAAAA,GAChG90D,UAAU,SAAUqI,OAAAA;AACnB,gBAASA,CAAAA,OAAAA;AAAAA,UACR,KAAK;AACJ,mBAAOkvG,WAAWF,GACnB;AAAA,UAAA,KAAK;AACJ,mBAAOvnD,KAAKqnD,iBAAiBr+G,GAAAA;AAAAA,UAC9B,KAAK;AACJ;AAAA,QAAA;AAAA,MAEF;IAEL,OAAS;AACNy+G,iBAAWF,GACX;AAAA,IAAA;AAAA,EACH;AAEC,WAASI;AACR,UAAMC,aAAa,CAAA;AACnB,eAAWx6G,KAAKxE,WAAUwzC,SAAS;AAClC,YAAM3sC,KAAK7G,WAAUwzC,QAAQhvC,CAC7B;AAAA,UAAIqC,GAAGo2G,oBAAoB;AAC1B,YAAK+B,CAAAA,WAAWn4G,GAAGo2G,kBAAqB,GAAA;AACvC+B,qBAAWn4G,GAAGo2G,kBAAAA,IAAsB;QACpC;AACD+B,mBAAWn4G,GAAGo2G,oBAAoBp2G,GAAGs2G,eAAe/3G,aAAayB;AAAAA,MACjE;AAAA,IACD;AACD,WAAOm4G;AAAAA,EACP;AAEDh/G,EAAAA,WAAUi/G,yBAAyBj/G,WAAU80C;AAC7C90C,EAAAA,WAAU80C,qBAAqB,SAAUC;AACxC,aAASvwC,IAAI,GAAGA,IAAInE,KAAKk9G,UAAU94G,QAAQD;AACnCnE,aAAAA,KAAKmzC,QAAQnzC,KAAKk9G,UAAU/4G,CAAGpE,EAAAA,EAAAA;AACvCC,SAAKk9G,YAAY,CAAA;AAEjB,UAAMyB,aAAaD;AACnB,QAAI/pE,QAAQ30C,KAAK4+G,uBAAuBlqE;AACxC,QAAI6E,MAAM;AACV,aAASp1C,IAAI,GAAGA,IAAIwwC,MAAMvwC,QAAQD,KAAK;AACtC,UAAIwwC,MAAMxwC,CAAGuuD,EAAAA,WAAW/d,MAAMxwC,CAAGy4G,EAAAA,oBAAoB;AACpD;AAAA,MACA;AAED,UAAID,SAAShoE,MAAMxwC,CAAK,CAAA,GAAA;AACvBnE,aAAK6+G,YAAYlqE,MAAMxwC,CAAIo1C,GAAAA,KAAKlrC,QAAWA,QAAWA,QAAWA,QAAWswG,UAChF;AAAA,MAAA,OAAU;AACNplE,YAAI11C,KAAK8wC,MAAMxwC,CAAAA,CAAAA;AAAAA,MACf;AAAA,IACD;AACD,WAAOo1C;AAAAA,EACT;AAEC,GAAA,WAAA;AACC,QAAIzM,MAAMntC,WAAU0K;AACpB1K,IAAAA,WAAU0K,gBAAgB,SAAU7D,IAAAA;AACnC,UAAIm2G,SAASn2G,EAAAA;AAAK,eAAO;AACzB,aAAOsmC,IAAI12B,KAAKpW,MAAMwG,EACzB;AAAA,IAAA;AACE,QAAIs4G,mBAAmBn/G,WAAUiY;AACjCjY,IAAAA,WAAUiY,cAAc,SAAU7X,KAAAA;AACjC,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAE5B;AAAA,UAAIyG,MAAMm2G,SAASn2G,EAAAA,KAAAA,CAAQxG,KAAKwxD,kBAAkBzxD,MAAK;AACtDJ,QAAAA,WAAUiyB;MACd,OAAU;AACNktF,yBAAiB1oG,KAAKpW,MAAMD,GAC5B;AAAA,MAAA;AAAA,IACJ;AAAA,EACE,GAhBD;AAkBA,QAAMg/G,eAAep/G,WAAUwD,KAAK2qC,YAAY,eAAA;AAEhDnuC,EAAAA,WAAUk/G,cAAc,SAAUr4G,IAAImuC,OAAOqqE,YAAYhqF,MAAMC,IAAIgqF,UAAUN,YAC5E;AAAA,QAAA,CAAKn4G,GAAGyjG,OAAO;AACd;AAAA,IACA;AAED,QAAIiV,mBAAmBP,aAAaA,WAAWn4G,GAAGzG,EAAAA,IAAM2+G,gBAAkBl4G,EAAAA,GAAGzG;AAC7E,QAAKm/G,CAAAA,kBAAkB;AACtBA,yBAAmB,CAAA;AAAA,IACnB;AAED,QAAA,CAAKlqF,MAAM;AACVA,aAAOr1B,WAAUyM;AAAAA,IACjB;AACD,QAAK6oB,CAAAA,IAAI;AACRA,WAAKt1B,WAAUwM;AAAAA,IACf;AAED,UAAMgzG,WAAW,IAAI36G,KAAKA,KAAKioC,IAAIjmC,GAAGzD,WAAW4V,YAAAA,GAAenS,GAAGzD,WAAW6V,YAAYpS,GAAGzD,WAAWqG,WAAW5C,GAAGzD,WAAWsJ,YAAY7F,GAAGzD,WAAW4K,WAAcnH,GAAAA,GAAGzD,WAAWkpC,WACvL,CAAA,CAAA;AAAA,UAAMmzE,cAAc7D,SAAS,SAAS/0G,GAAGyjG,KAAe8U,UAAAA,aAAav4G,GAAGxD,QAAAA,CAAAA,IAAa,EAAEmuG,SAASgO,SAAAA,CAAAA;AAEhG,UAAME,gBAAgBD,YAAY5L,QAAQx+E,MAAMC,EAAAA,EAAIxvB,IAAItC,UAAAA;AACvD,YAAMm8G,eAAe,IAAI96G,KAAKrB,IAC9Bm8G;AAAAA,mBAAa70G,SAASjE,GAAGzD,WAAWsJ,SACpCizG,CAAAA;AAAAA,mBAAa50G,WAAWlE,GAAGzD,WAAW4K;AACtC2xG,mBAAavyE,WAAWvmC,GAAGzD,WAAWkpC,WAAAA,CAAAA;AACtC,aAAOqzE;AAAAA,IAAY;AAEpB,QAAIC,eAAe;AAEnB,UAAMC,gBAAgBh5G,GAAGslB;AAEzB,aAAS3nB,IAAI,GAAGA,IAAIk7G,cAAcj7G,QAAQD,KAAK;AAC9C,UAAI86G,YAAYM,gBAAgBN,UAAU;AACzC;AAAA,MACA;AACD,YAAM97G,OAAOk8G,cAAcl7G,CAAAA;AAE3B,UAAIs7G,YAAYP,iBAAiB/7G,KAAK4B,QAAAA,CAAAA;AACtC,UAAI06G,WAAW;AACd,YAAIA,UAAU/sD,SAAS;AACtB;AAAA,QACL,OAAW;AACN6sD;AACA5qE,gBAAM9wC,KAAK47G,SAAAA;AAAAA,QACX;AAAA,MACL,OAAU;AACN,cAAM/4G,QAAO/G,WAAUm5C,YAAYtyC,EAAAA;AAEnCE,QAAAA,MAAKI,OAAON,GAAGM;AACfJ,QAAAA,MAAK3D,aAAaI;AAClBuD,QAAAA,MAAK3G,KAAKyG,GAAGzG,KAAK,MAAMoR,KAAKyb,KAAKzpB,KAAK4B,QACvC2B,CAAAA;AAAAA,QAAAA,MAAK1D,WAAW,IAAIwB,KAAKrB,KAAK4B,QAAAA,IAAYy6G,gBAAgB,GAC1D94G;AAAAA,QAAAA,MAAK1D,WAAWrD,WAAU+/G,0BAA0Bh5G,MAAK3D,YAAY2D,MAAK1D,UAAUwD,IAAIrD,MAAMuD,MAAK1D,QAAAA;AACnG0D,QAAAA,MAAK0D,SAASzK,WAAU0K,cAAc3D,KAItC;AAAA,YAAA,CAAKA,MAAK0D,UAAAA,CAAWzK,WAAUgN,eAAgBhN,CAAAA,WAAU+B,OAAO61B;AAAW;AAC3Eod,cAAM9wC,KAAK6C,KAAAA;AAEX,YAAKs4G,CAAAA,YAAY;AAChBr/G,UAAAA,WAAUwzC,QAAQzsC,MAAK3G,EAAM2G,IAAAA;AAC7B/G,UAAAA,WAAUu9G,UAAUr5G,KAAK6C,KACzB;AAAA,QAAA;AACD64G;AAAAA,MACA;AAAA,IACD;AAAA,EACH;AAEC5/G,EAAAA,WAAU+/G,4BAA4B,SAAU38G,YAAYC,UAAUwD,IAAI8oD,SAAShgB;AAClF,QAAIpe,QAAQnuB,WAAW6rB,kBAAsB5rB,IAAAA,SAAS4rB;AACtD,QAAIsC,OAAO;AACV,UAAIA,QAAQ,GAAG;AAEd,eAAO,IAAI1sB,KAAK8qD,QAAQvqD,QAAYyB,IAAAA,GAAGslB,WAAW,MAAOoF,QAAQ,KAAK,GAAA;AAAA,MACtE,OACI;AAEJ,eAAO,IAAI1sB,KAAKxB,SAAS+B,QAAYmsB,IAAAA,QAAQ,KAAK,GAClD;AAAA,MAAA;AAAA,IACD;AACD,WAAO,IAAI1sB,KAAK8qC,aAAavqC,QAAAA,CAAAA;AAAAA,EAC/B;AACCpF,EAAAA,WAAU2tE,cAAc,SAAUvtE,KAAIwO;AACrC,QAAI/H,KAAAA,OAAYzG,OAAM,WAAWA,MAAKJ,WAAUmG,SAAS/F;AACzD,QAAI4/G,aAAa;AACjBpxG,UAAMA,OAAO;AAEb,QAAKouG,CAAAA,SAASn2G,EAAK,GAAA;AAClB,aAAO,CACN,EAAEzD,YAAYyD,GAAGzD,YAAYC,UAAUwD,GAAGxD,SAAAA,CAAAA;AAAAA,IAE3C;AACD,QAAIwD,GAAGksD,SAAS;AACf,aAAO,CACP;AAAA,IAAA;AAED/yD,IAAAA,WAAUk/G,YAAYr4G,IAAIm5G,YAAY,MAAMn5G,GAAGzD,YAAYyD,GAAGxD,UAAUuL,GAExE;AAAA,QAAI0K,SAAS,CACb;AAAA,aAAS9U,IAAI,GAAGA,IAAIw7G,WAAWv7G,QAAQD,KAAK;AAC3C,WAAKw7G,WAAWx7G,CAAAA,EAAGuuD,SAAS;AAC3Bz5C,eAAOpV,KAAK,EAAEd,YAAY48G,WAAWx7G,CAAAA,EAAGpB,YAAYC,UAAU28G,WAAWx7G,CAAGnB,EAAAA,SAAAA,CAAAA;AAAAA,MAC5E;AAAA,IACD;AAED,WAAOiW;AAAAA,EACT;AACCtZ,EAAAA,WAAUo2C,YAAY,SAAU/gB,MAAMC,IACrC;AAAA,QAAIhc,SAAS,CACb;AAAA,UAAM0lG,aAAaD,gBACnB;AAAA,aAASviG,KAAKnc,KAAKmzC,SAAS;AAC3B,UAAI3sC,KAAKxG,KAAKmzC,QAAQh3B,CACtB;AAAA,UAAI3V,GAAGo2G,oBAAoB;AAC1B;AAAA,MACA;AAED,UAAID,SAASn2G,EAAAA,GAAK;AACjB,YAAIwuB,QAAQC,MAAMzuB,GAAGzD,aAAakyB,MAAMzuB,GAAGxD,WAAWgyB,MAAM;AAC3D,cAAI4qF,MAAM,CAAA;AACV5/G,eAAK6+G,YAAYr4G,IAAIo5G,KAAK,MAAM5qF,MAAMC,IAAI5mB,QAAWswG;AACrDiB,cAAIj8G,QAAQ,SAASk8G,WACpB;AAAA,gBAAIA,UAAU98G,aAAakyB,MAAM4qF,UAAU78G,WAAWgyB,MAAM;AAC3D/b,qBAAOpV,KAAKg8G,SACZ;AAAA,YAAA;AAAA,UACP,CACA;AAAA,QAAA,YAAc7qF,QAASC,CAAAA,IAAG;AACrBhc,iBAAOpV,KAAK2C;QACZ;AAAA,MACD,WAAWxG,CAAAA,KAAKwxD,kBAAkBhrD,GAAGzG,EAAAA,GAAK;AAC1CkZ,eAAOpV,KAAK2C;MACZ;AAAA,IAED;AACD,WAAOyS;AAAAA,EACT;AAGCtZ,EAAAA,WAAUw6C,cAAc,SAAU3zC,IACjC;AAAA,QAAIzD,aAAa,IAAIyB,KAAKxE,KAAK+C,UAAAA;AAC/B,QAAIC,WAAW,IAAIwB,KAAKxE,KAAKgD,QAAAA;AAC7BhD,SAAK+C,aAAaA;AAClB/C,SAAKgD,WAAWA;AAChBhD,SAAK8rB,WAAW9rB,KAAKiqG,QAAQ;AAAA,EAC/B;AAECtqG,EAAAA,WAAU+B,OAAOo+G,iBAAiB;AAClCngH,EAAAA,WAAU+B,OAAO28G,qBAAqB;AACtC1+G,EAAAA,WAAU+B,OAAOq+G,qBAAqB,CAAC7U,MAAM6C,GAAGpL,SAAQuI,MAAM8C,GAAGrL,SAAQuI,MAAM+C,GAAGtL,SAAQuI,MAAMgD,GAAGvL,SAAQuI,MAAMiD,GAAGxL;AACpHhjG,EAAAA,WAAU+B,OAAOm9G,cAAc;AAC/Bl/G,EAAAA,WAAU+B,OAAOi4B,SAAS92B,WAAW,CACpC,EAAEuX,MAAM,eAAehY,QAAQ,QAAQ4E,MAAM,YAAYszB,OAAO,KAChE,GAAA,EAAElgB,MAAM,aAAapT,MAAM,aAAa5E,QAAQ,cAChD,EAAEgY,MAAM,QAAQtJ,QAAQ,IAAI9J,MAAM,QAAQ5E,QAAQ,OAGnDzC,CAAAA;AAAAA,EAAAA,WAAUiG,YAAY,cAAc,WAAA;AACnCjG,IAAAA,WAAUy9G,eAAe;AACzBz9G,IAAAA,WAAUw9G,oBAAoB;AAC9Bx9G,IAAAA,WAAUu9G,YAAY,CAAA;AAAA,EACxB;AAGC,WAAS8C,kBAAkBC,UAAUC,WAAAA;AACpC,UAAMt4G,UAAUq4G,SAASr4G;AACzB,UAAMi+F,QAAQj+F,QAAQi+F,SAASqa;AAE/B,UAAMC,kBAAkBv4G,QAAQstB,SAAU2wE,SAASA,MAAMltF,YAAAA,MAAkB;AAE3E,QAAIwnG,iBAAiB;AACpB,aAAO;AAAA,IACP;AAED,QAAIv4G,QAAQojG,SAASE,MAAMK,SAAS3jG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQ4iG,WAAW;AACjF,aAAO;AAAA,IACP,WAAU5iG,QAAQojG,SAASE,MAAMY,UAAUlkG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQ4iG,WAAW;AACzF,aAAO;AAAA,IACP,WAAU5iG,QAAQojG,SAASE,MAAMa,WAAWnkG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQwpG,UAAU;AACzF,aAAO;AAAA,IACP,WAAUxpG,QAAQojG,SAASE,MAAMc,UAAUpkG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQwpG,UAAU;AACxF,aAAO;AAAA,IACP,WAAUxpG,QAAQojG,SAASE,MAAMK,SAAS3jG,QAAQ4iG,aAAa5iG,QAAQ4iG,UAAUpmG,WAAWzE,WAAU+B,OAAOq+G,mBAAmB37G,UAChIwD,QAAQ4iG,UAAUrH,SAAS+H,MAAM6C,EAAAA,KACjCnmG,QAAQ4iG,UAAUrH,SAAS+H,MAAM8C,EACjCpmG,KAAAA,QAAQ4iG,UAAUrH,SAAS+H,MAAM+C,EACjCrmG,KAAAA,QAAQ4iG,UAAUrH,SAAS+H,MAAMgD,OACjCtmG,QAAQ4iG,UAAUrH,SAAS+H,MAAMiD,EAAAA,GAAK;AACtC,aAAO;AAAA,IACV,OAAS;AACN,aAAO;AAAA,IACP;AAAA,EACD;AAED,WAASiS,kBAAkBj9G,MAC1B;AAAA,UAAMk9G,YAAYl9G,KAAK4F,OAAAA;AACvB,UAAMu3G,aAAan9G,KAAKiG;AACxB,UAAMm3G,YAAYpvG,KAAKyb,KAAK0zF,aAAa,CACzC;AAAA,WAAO,EAAED,WAAWE,UAAAA;AAAAA,EACpB;AAGD,QAAMC,oBAAoB,EACzB,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,KAEJ;AAAA,QAAMC,mBAAmB,EACxB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,EAGJ;AAAA,WAASC,gBAAgB55F,MAAMumF;AAC9BvmF,SAAK9H,cAAc,kCAAkCX,SAASgvF,OAAOA,KAAK51C,WAAW,MAAM;AAAA,EAC3F;AAED,WAASkpD,iBAAiB75F,MAAMumF,MAAM7rG,QACrCslB;AAAAA,SAAK9H,cAAc,gCAAkCX,EAAAA,SAASgvF,OAAOA,KAAK51C,WAAW,MAAM;AAE3F,UAAMmpD,gBAAgB95F,KAAK7iB,iBAAiB,oCAC5C28G;AAAAA,kBAAcj9G,QAAS45G,QAAOA,GAAG/3D,UAAU,KAAA;AAC3C,QAAI6nD,QAAQA,KAAK7C,WAAW;AAC3B6C,WAAK7C,UAAU7mG,QAASnE;AACvB,cAAMqhH,SAASJ,iBAAiBjhH,IAAImjG,OAAAA;AACpC,cAAMme,WAAWN,kBAAkBK,MACnC/5F;AAAAA,aAAK9H,cAAc,6CAA6C8hG,QAAAA,IAAAA,EAAct7D,UAAU;AAAA,MAAI,CAAA;AAAA,IAEhG,OAAS;AACN,YAAMs7D,WAAWN,kBAAkBh/G,OAAMuB,WAAWgG,OAAAA,CAAAA;AACpD+d,WAAK9H,cAAc,6CAA6C8hG,cAAct7D,UAAU;AAAA,IACxF;AAAA,EAED;AAED,WAASu7D,kBAAkBj6F,MAAMumF,MAAM7rG,QACtCslB;AAAAA,SAAK9H,cAAc,gCAAkCX,EAAAA,SAASgvF,OAAOA,KAAK51C,WAAW,MAAM;AAE3F,UAAMupD,cAAcl6F,KAAK9H,cAAc,oDACvC;AAAA,UAAMiiG,oBAAoBn6F,KAAK9H,cAAc,2DAC7CgiG;AAAAA,gBAAYh/C,YAAYriE,WAAU2zB,UAAU4tF,oBAAoB1/G,OAAMuB,YAAYvB,MAClFy/G;AAAAA,sBAAkBj/C,YAAYriE,WAAU2zB,UAAU6tF,uBAAuB3/G,OAAMuB,YAAYvB;AAE3F,QAAK6rG,CAAAA,QAASA,KAAK+D,YAAAA,EAAc/D,KAAK7C,aAAa6C,KAAK7C,UAAUpmG,SAAU;AAC3E0iB,WAAK9H,cAAc,kCAAA,EAAoCX,QAAQ;AAAA,IAClE,OAAS;AACNyI,WAAK9H,cAAc,kCAAoCX,EAAAA,QAAQ;AAAA,IAC/D;AAAA,EACD;AAED,WAAS+iG,gBAAgBj+G;AACxB,YAAQA,MAAAA;AAAAA,MACP,KAAK;AAAA,MACL,KAAK;AACJ,eAAO,GAAGA,IACX;AAAA,MAAA,KAAK;AACJ,eAAO,GAAGA;MACX,KAAK;AACJ,eAAO,GAAGA,IAAAA;AAAAA,MACX;AACC,eAAO,GAAGA,IAEZ;AAAA,IAAA;AAAA,EAAA;AAEDxD,EAAAA,WAAU2zB,UAAU4tF,sBAAsB,SAAS38G,WAAW/C,QAAAA;AAC7D,UAAM2B,OAAOoB,UAAU6E,QACvB;AAAA,WAAO,SAASg4G,gBAAgBj+G,IAAAA,CAAAA;AAAAA,EAClC;AACCxD,EAAAA,WAAU2zB,UAAU6tF,yBAAyB,SAAS58G,WAAW/C,QAChE;AAAA,UAAM6/G,gBAAgBjB,kBAAkB77G,SAAAA;AACxC,WAAO,SAAS68G,gBAAgBC,cAAcd,SAAAA,CAAAA,IAAc5gH,WAAU+nB,OAAOvkB,KAAKwoC,SAAS01E,cAAchB,SAAAA,CAAAA;AAAAA,EAC3G;AAEC1gH,EAAAA,WAAU2zB,UAAUguF,2BAA2B,SAAS/8G,WAAW/C,QAClE;AAAA,UAAM2B,OAAOoB,UAAU6E,QAAAA;AACvB,UAAM24D,aAAapiE,WAAU+nB,OAAOvkB,KAAK0oC,WAAWtnC,UAAUqU,SAAAA,CAAAA;AAC9D,WAAO,SAASwoG,gBAAgBj+G,gBAAgB4+D,UAClD;AAAA,EAAA;AACCpiE,EAAAA,WAAU2zB,UAAUiuF,8BAA8B,SAASh9G,WAAW/C;AACrE,UAAM6/G,gBAAgBjB,kBAAkB77G,SACxC;AAAA,UAAMw9D,aAAapiE,WAAU+nB,OAAOvkB,KAAK0oC,WAAWtnC,UAAUqU,SAC9D,CAAA;AAAA,WAAO,SAASwoG,gBAAgBC,cAAcd,SAAc5gH,CAAAA,IAAAA,WAAU+nB,OAAOvkB,KAAKwoC,SAAS01E,cAAchB,SAAiBt+C,CAAAA,OAAAA,UAAAA;AAAAA,EAC5H;AAEC,WAASy/C,iBAAiB16F,MAAMumF,MAAM7rG;AACrC,UAAMigH,aAAa36F,KAAK9H,cAAc,mDAAA;AACtC,UAAM0iG,mBAAmB56F,KAAK9H,cAAc,0DAAA;AAC5CyiG,eAAWz/C,YAAYriE,WAAU2zB,UAAUguF,yBAAyB9/G,OAAMuB,YAAYvB,MACtFkgH;AAAAA,qBAAiB1/C,YAAYriE,WAAU2zB,UAAUiuF,4BAA4B//G,OAAMuB,YAAYvB,MAE/F;AAAA,QAAA,CAAK6rG,QAASA,KAAK+D,YAAAA,EAAc/D,KAAK7C,aAAa6C,KAAK7C,UAAUpmG,SAAU;AAC3E0iB,WAAK9H,cAAc,mCAAmCX,QAAQ;AAAA,IACjE,OAAS;AACNyI,WAAK9H,cAAc,iCAAA,EAAmCX,QAAQ;AAAA,IAC9D;AAAA,EACD;AAED,WAASsjG,YAAY76F,MAAMumF,MAAM7rG;AAChC,UAAMogH,aAAa96F,KAAK9H,cAAc,iEAAA;AACtC,UAAM6iG,cAAc/6F,KAAK9H,cAAc,kEAAA;AACvC,UAAM8iG,kBAAkBh7F,KAAK9H,cAAc,iCAC3C4iG;AAAAA,eAAWvjG,QAAQ;AAEnB,QAAI0jG,YAAYpiH,WAAUwD,KAAK2qC,YAAY,UAAA;AAC3C,SAAKnuC,WAAU+B,OAAOsgH,oBAAoB;AACzCriH,MAAAA,WAAU+B,OAAOsgH,qBAAqBD,UAAUpiH,WAAUwD,KAAKC,IAAIzD,WAAUsM,aAAAA,GAAgB,IAAI,KACjG,CAAA;AAAA,IAAA;AACD41G,gBAAYxjG,QAAQ1e,WAAU+B,OAAOsgH;AAErC,QAAI3U,QAAQA,KAAKn4E,OAAO;AACvB4sF,sBAAgBzjG,QAAQ;AACxBujG,iBAAWvjG,QAAQgvF,KAAKn4E;AAAAA,IAC3B,WAAa1zB,OAAMqI,aAAarI,OAAMqI,UAAU8O,YAAAA,MAAkB,MAAM;AACrEmpG,sBAAgBzjG,QAAQ;AACxBwjG,kBAAYxjG,QAAQ0jG,UAAUvgH,OAAMqI,SACvC;AAAA,IAAA,OAAS;AACNi4G,sBAAgBzjG,QAAQ;AAAA,IACxB;AACDyjG,oBAAgBG,cAAc,IAAI5mC,MAAM,QACxC,CAAA;AAAA,EAAA;AAED,QAAM6mC,cAAc,EACnBnW,SAAS,SAAUpnG,OAAAA;AAClB,UAAMslG,QAAQ,EACbe,MAAME,MAAMa,SACZt0C,UAAU,GACV6yC,YAAY3lG,MAAM4K,MAAMnG;AAEzB,UAAMy8F,QAAQ,IAAIrhG,KAAK,MAAM,GAAG,CAAA;AAChC,WAAO,EAACylG,OAAOpE;EACf,GACDiG,QAAQ,SAAUnnG,OAAAA;AACjB,QAAInF,MAAMmF,MAAM4K,MAAMxG,OAAW,IAAA;AACjC,QAAIvJ,OAAQ;AAAGA,YAAM;AACrB,UAAMyqG,QAAQ,EACbe,MAAME,MAAMY,QACZr0C,UAAU,GACV+yC,WAAW,CAAChrG,GAAAA,EAAAA;AAEb,UAAMqmG,QAAQ,IAAIrhG,KAAK,MAAM,GAAG;AAChC,WAAO,EAACylG,OAAOpE,MAAAA;AAAAA,EACf,GACD0F,OAAO,SAAU5mG;AAChB,UAAMslG,QAAQ,EACbe,MAAME,MAAMK,OACZ9zC,UAAU;AAEX,UAAMouC,QAAQ,IAAIrhG,KAAK,MAAM,GAAG,CAChC;AAAA,WAAO,EAACylG,OAAOpE;EACf,GACDmG,QAAQ,SAAUrnG,OACjB;AAAA,UAAMslG,QAAQ,EACbe,MAAME,MAAMc,QACZR,SAAS7mG,MAAM4K,MAAMqJ,aAAa,GAClC6+C,UAAU,GACV6yC,YAAY3lG,MAAM4K,MAAMnG,QAAAA,EAAAA;AAEzB,UAAMy8F,QAAQ,IAAIrhG,KAAK,MAAM,GAAG;AAChC,WAAO,EAACylG,OAAOpE,MAAAA;AAAAA,EACf,GACDsc,UAAU,SAAUx9G,OACnB;AAAA,UAAMslG,QAAQ,EACbe,MAAME,MAAMY,QACZr0C,UAAU,GACV+yC,WAAW7qG,WAAU+B,OAAOq+G,mBAAAA;AAE7B,UAAMla,QAAQ,IAAIrhG,KAAK,MAAM,GAAG,CAChC;AAAA,WAAO,EAACylG,OAAOpE,MAAAA;AAAAA,EACf,GACDuc,QAAQ,SAAUz9G,OAAOmiB,MAAAA;AACxB,UAAMmjF,QAAQ,CAAA;AACd,UAAMe,OAAOlkF,KAAK9H,cAAc,+BAAA,EAAiCX;AACjE,UAAMo5C,WAAWtmD,KAAK5C,IAAI,GAAGuY,KAAK9H,cAAc,kCAAkCX,KAClF;AAAA,UAAMgkG,cAAcv7F,KAAK9H,cAAc,kCAAoCX,EAAAA;AAC3E,UAAMikG,aAAax7F,KAAK9H,cAAc,iCAAmCX,EAAAA;AAEzE4rF,UAAMxyC,WAAWA;AACjB,QAAI5vD;AACJ,QAAIrI;AAEJ,YAAQwrG;MACP,KAAK;AACJf,cAAMe,OAAOE,MAAMK;AACnB;AAAA,MACD,KAAK;AACJtB,cAAMe,OAAOE,MAAMY;AACnBjkG,eAAO,CAAA;AACPif,aAAK7iB,iBAAiB,gDAAA,EAAkDN,QAAS45G,QAChF;AAAA,cAAGA,GAAG/3D,SAAQ;AACb39C,iBAAKhE,KAAK05G,GAAGl/F,KACb;AAAA,UAAA;AAAA,QAAA,CAAA;AAGF4rF,cAAMO,YAAY3iG,KAAKpC,IAAKjG,CAAAA,SAC3B;AAAA,kBAAQA,MACP;AAAA,YAAA,KAAK;AACJ,qBAAO0rG,MAAM6C,GAAGpL;AAAAA,YACjB,KAAK;AACJ,qBAAOuI,MAAM8C,GAAGrL;AAAAA,YACjB,KAAK;AACJ,qBAAOuI,MAAM+C,GAAGtL;AAAAA,YACjB,KAAK;AACJ,qBAAOuI,MAAMgD,GAAGvL;AAAAA,YACjB,KAAK;AACJ,qBAAOuI,MAAMiD,GAAGxL;AAAAA,YACjB,KAAK;AACJ,qBAAOuI,MAAM6N,GAAGpW;AAAAA,YACjB,KAAK;AACJ,qBAAOuI,MAAM8N,GAAGrW;AAAAA,UAGjB;AAAA,QAAA,CAAA;AAEF;AAAA,MACD,KAAK;AACJsH,cAAMe,OAAOE,MAAMa;AAEnB,YAAIsW,gBAAgB,cAAc;AACjCpY,gBAAMK,aAAa3lG,MAAM4K,MAAMnG,QAAAA;AAAAA,QACrC,OAAY;AACN5J,gBAAMmF,MAAM4K,MAAMxG,OAAAA,IAAW;AAC7B,cAAIvJ;AAAWA,kBAAM;AACrByqG,gBAAMO,YAAY,CAAChrG,GACnByqG;AAAAA,gBAAMmH,WAAWgP,kBAAkBz7G,MAAM4K,KAAOgxG,EAAAA;AAAAA,QAChD;AACD;AAAA,MACD,KAAK;AACJtW,cAAMe,OAAOE,MAAMc;AACnB/B,cAAMuB,UAAU7mG,MAAM4K,MAAMqJ,SAAa,IAAA;AAEzC,YAAI0pG,cAAc,cAAc;AAC/BrY,gBAAMK,aAAa3lG,MAAM4K,MAAMnG;QACrC,OAAY;AACN5J,gBAAMmF,MAAM4K,MAAMxG,OAAW,IAAA;AAC7B,cAAIvJ,OAAQ;AAAGA,kBAAM;AACrByqG,gBAAMO,YAAY,CAAChrG,GAAAA;AACnByqG,gBAAMmH,WAAWgP,kBAAkBz7G,MAAM4K,KAAAA,EAAOgxG;AAAAA,QAChD;AACD;AAAA,IAAA;AAGF,QAAI1a,QAAQ,IAAIrhG,KAAK,MAAM,GAAG,CAC9B;AAAA,UAAM+9G,UAAUz7F,KAAK9H,cAAc;AACnC,QAAGujG,YAAY,MAAK;AACnB1c,cAAQ/+E,KAAK9H,cAAc,wCAAwCX;AAAAA,IACvE,WAAakkG,YAAY,SAAS;AAC9BtY,YAAM/0E,QAAQ/jB,KAAK5C,IAAI,GAAGuY,KAAK9H,cAAc,uCAAuCX,KACpF;AAAA,IAAA;AAED,WAAO,EAAC4rF,OAAOpE,MACf;AAAA,EAAA,GACD2c,OAAO,WACN;AAAA,EAAA,EAAA;AAGF,WAASC,eAAe37F,MAAMumF,MAAM7rG,QAAAA;AACnCk/G,oBAAgB55F,MAAMumF,IAAAA;AACtBsT,qBAAiB75F,MAAMumF,MAAM7rG;AAC7Bu/G,sBAAkBj6F,MAAMumF,MAAM7rG,MAAAA;AAC9BggH,qBAAiB16F,MAAMumF,MAAM7rG;AAC7BmgH,gBAAY76F,MAAMumF,MAAM7rG,MACxB;AAAA,EAAA;AACD7B,EAAAA,WAAU6jD,YAAY,eAAe,EACpCp8C,QAAQ,SAAUg9C,KACjB;AAAA,QAAIA,IAAI74B,MAAM;AACb,UAAIm3F,MAAM/iH,WAAU6jD,YAAY,WAAA;AAChC,UAAIj4B,OAAOm3F,IAAIC,UAAUv+D,IAAI74B,IAAAA;AAC7B,UAAIroB,OAAOw/G,IAAIE,YAAYr3F,IAAAA;AAC3BA,WAAKjpB,MAAMod,UAAU;AACrB,aAAOxc;AAAAA,IACP;AACD,QAAI2/G,MAAMljH,WAAU+nB,OAAOC;AAE3B,WAAO;AAAA;AAAA;AAAA,4BAGkBk7F,IAAI7kD,YACJ6kD;AAAAA,4BAAAA,IAAI5kD,YACH4kD;AAAAA,6BAAAA,IAAI1kD;8BACH0kD,IAAIzkD,cAAAA;AAAAA,6BACLykD,IAAIxkD,aACFwkD;AAAAA,+BAAAA,IAAI3kD;6BACN2kD,IAAIvkD,aAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6BAOJukD,IAAItkD,eAAAA;AAAAA,8BACHskD,IAAIrkD,gBACHqkD;AAAAA,+BAAAA,IAAIpkD;8BACLokD,IAAInkD,gBAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,8FAM4DmkD,IAAI/jD,kBAAkB,CAAA,CAAA;AAAA,8FACtB+jD,IAAI/jD,kBAAkB;8FACtB+jD,IAAI/jD,kBAAkB;8FACtB+jD,IAAI/jD,kBAAkB;8FACtB+jD,IAAI/jD,kBAAkB,CACtB+jD,CAAAA;AAAAA,8FAAAA,IAAI/jD,kBAAkB,CACtB+jD,CAAAA;AAAAA,8FAAAA,IAAI/jD,kBAAkB,CAmBzG+jD,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,WAAAA,IAAIjkD;;;8BAGeikD,IAAI7kD,YAAAA;AAAAA,8BACJ6kD,IAAI/kD,iBAAAA;AAAAA,2BACP+kD,IAAIlkD,cAIgDkkD;AAAAA;AAAAA;AAAAA;AAAAA,+EAAAA,IAAIhlD;;;;;;;;;;;EAWhF,GAGDilD,iBAAiB,SAAUh8F,MAAMzI,OAAO7c,QACvC7B;AAAAA,IAAAA,WAAU6jD,YAAY,WAAau/D,EAAAA,MAAM,EAAExzG,OAAO/N,OAAMuB,YAAYyM,KAAKhO,OAAMwB,SAC/E;AAAA,aAAS6I,KAAKib,OACbA;AAAAA,MAAAA,MAAKpK,UAAUtZ,IAAI,YAAA;AAAA,IACnB;AACD,aAAS4/G,KAAKl8F,OACbA;AAAAA,MAAAA,MAAKpK,UAAU8X,OAAO,YAAA;AAAA,IACtB;AACD,aAASyuF,qBAAqB5kG;AAC7B,YAAMglF,UAASv8E,KAAK9H,cAAc;AAClC,UAAIX,WAAU,UAAU;AACvB2kG,aAAK3f;MACV,OAAW;AACNx3F,aAAKw3F,OAAAA;AAAAA,MACL;AAAA,IACD;AAED,aAAS6f,6BAA6B7kG,QACrC;AAAA,YAAMgmB,QAAQ,EACb8+E,QAAQr8F,KAAK9H,cAAc,iCAC3BokG,SAASt8F,KAAK9H,cAAc,+BAC5BqkG,GAAAA,QAAQv8F,KAAK9H,cAAc,8BAAA,EAAA;AAE5B,cAAQX,QAAAA;AAAAA,QACP,KAAK;AACJxS,eAAKw4B,MAAM8+E,MACXt3G;AAAAA,eAAKw4B,MAAM++E,OACXv3G;AAAAA,eAAKw4B,MAAMg/E,MAAAA;AACX;AAAA,QACD,KAAK;AACJL,eAAK3+E,MAAM8+E,MAAAA;AACXt3G,eAAKw4B,MAAM++E,OAAAA;AACXv3G,eAAKw4B,MAAMg/E;AACX;AAAA,QACD,KAAK;AACJx3G,eAAKw4B,MAAM8+E;AACXH,eAAK3+E,MAAM++E,OACXv3G;AAAAA,eAAKw4B,MAAMg/E,MACX;AAAA;AAAA,QACD,KAAK;AACJx3G,eAAKw4B,MAAM8+E,MACXt3G;AAAAA,eAAKw4B,MAAM++E,OAAAA;AACXJ,eAAK3+E,MAAMg/E,MAAAA;AACX;AAAA;IAGF;AAED,aAASC,sBAAsBjlG,QAC9B;AAAA,YAAMgmB,QAAQ,EACbsiE,OAAO7/E,KAAK9H,cAAc,4DAC1BmvE,IAAIrnE,KAAK9H,cAAc,sDAExB,EAAA;AAAA,cAAQX,QACP;AAAA,QAAA,KAAK;AACJxS,eAAKw4B,MAAMsiE;AACX96F,eAAKw4B,MAAM8pD;AACX;AAAA,QACD,KAAK;AACJ60B,eAAK3+E,MAAMsiE,KACX96F;AAAAA,eAAKw4B,MAAM8pD,EACX;AAAA;AAAA,QACD,KAAK;AACJtiF,eAAKw4B,MAAMsiE,KAAAA;AACXqc,eAAK3+E,MAAM8pD,EAAAA;AACX;AAAA;IAEF;AAGDrnE,SAAK9H,cAAc,iCAAmCkd,EAAAA,iBAAiB,UAAU,WAAA;AAChF+mF,2BAAqBjjH,KAAKqe,KAAAA;AAAAA,IAC9B;AAGGyI,SAAK9H,cAAc,kEAAkEkd,iBAAiB,UAAU,WAC/GgnF;AAAAA,mCAA6BljH,KAAKqe,KACtC;AAAA,IAAA,CAAA;AAGGyI,SAAK9H,cAAc,uDAAA,EAAyDkd,iBAAiB,UAAU,WAAA;AACtGonF,4BAAsBtjH,KAAKqe;IAC/B,CAEG1e;AAAAA,IAAAA,WAAU+mB,UAAU68F,iBAAiB;AAAA,EACrC,GACDr7D,cAAc,WAAA;AAAA,EAAY,GAC1BvE,WAAW,SAAU78B,MAAMzI,OAAO7X;AACjC,QAAIg9G,KAAK7jH,WAAU6jD,YAAY,WAAA;AAC/B,QAAK7jD,CAAAA,WAAU+mB,UAAU68F;AACxBC,SAAGV,gBAAgBh8F,MAAMzI,OAAO7X;AACjCsgB,SAAK2jB,OAAAA,CAAQjkC,GAAGyjG;AAEhBnjF,SAAK28F,UAAUzjH,KAAKg+G,uBAAuBx3G,EAE3C;AAAA,QAAIuiD,KAAKy6D,GAAGT;AACZh6D,OAAGx5C,QAAQ/I,GAAGzD;AACdgmD,OAAGv5C,MAAMhJ,GAAGqD;AAEZ,QAAIrD,GAAGyjG,OAAO;AACb,YAAMyZ,WAAWnI,SAAS/0G,GAAGyjG;AAC7BwY,qBAAe37F,MAAM48F,SAASrZ,aAAa7jG,EAAAA;AAC3C,YAAMm9G,YAAY3D,kBAAkB0D,UAAUl9G,GAAGqD;AACjDid,WAAK9H,cAAc,mCAAmCX,QAAQslG;AAC9D,UAAGA,cAAc,UAAS;AACzB,YAAIC;AACJ,gBAAQF,SAASrZ,YAAYW,MAC5B;AAAA,UAAA,KAAKE,MAAMK;AACVqY,yBAAa;AACb;AAAA,UACD,KAAK1Y,MAAMY;AACV8X,yBAAa;AACb;AAAA,UACD,KAAK1Y,MAAMa;AACV6X,yBAAa;AACb;AAAA,UACD,KAAK1Y,MAAMc;AACV4X,yBAAa;AACb;AAAA,QAEF;AAAA,YAAGA,YAAW;AACb98F,eAAK9H,cAAc,+BAAA,EAAiCX,QAAQulG;AAC5D98F,eAAK9H,cAAc,+BAAA,EAAiCijG,cAAc,IAAI5mC,MAAM;QAC5E;AAAA,MAED;AAAA,IAEL,OAAQ;AACJonC,qBAAe37F,MAAM,MAAMtgB;AAC3BsgB,WAAK9H,cAAc,mCAAmCX,QAAQ;AAAA,IAC9D;AACDyI,SAAK9H,cAAc,iCAAmCijG,EAAAA,cAAc,IAAI5mC,MAAM,QAAA,CAAA;AAAA,EAE9E,GACD53B,WAAW,SAAU38B,MAAMtgB,IAE1B;AAAA,QAAA,CAAIsgB,KAAK28F,WAAW38F,KAAK9H,cAAc,iCAAA,EAAmCX,UAAU,SAAS;AAC5F,UAAI0qC,KAAKppD,WAAU6jD,YAAY,WAAA,EAAau/D;AAC5C,UAAIc,eAAe,CAAA;AAEnB,UAAIC,cAAcC,eAElBD;AAAAA,kBAAYvgE,SAASsgE,YAAAA;AACrB96D,SAAGx5C,QAAQs0G,aAAa9gH;AACxB,YAAMqzD,UAAUtvC,KAAK9H,cAAc,iCAAA,EAAmCX;AACtE,YAAM2lG,aAAa9B,YAAY9rD,OAAAA,EAASrN,IAAIjiC,IAC5CtgB;AAAAA,SAAGyjG,QAAQ,IAAIiB,MAAM8Y,WAAW/Z,KAAAA,EAAO3xF,WAAW0R,QAAQ,UAAU;AACpE++B,SAAGv5C,MAAMw0G,WAAWne;AAEpBr/F,SAAGslB,WAAW3a,KAAK8D,OAAO4uG,aAAa7gH,WAAW6gH,aAAa9gH,cAAc,GAAA;AAE7E,UAAIgmD,GAAGk7D,QAAQ;AACdz9G,WAAGzD,aAAa,IAAIyB,KAAKukD,GAAGx5C,KAC5B/I;AAAAA,WAAG23G,cAAc,IAAI35G,KAAKukD,GAAGx5C,KAAAA;AAC7Bw5C,WAAGk7D,SAAS;AAAA,MACZ;AACAz9G,WAAG23G,cAAc;AAElB33G,SAAGqD,YAAYk/C,GAAGv5C;AAAAA,IACtB,OAAQ;AACJhJ,SAAGyjG,QAAQzjG,GAAGyjG,QAAQ;AACtBzjG,SAAGqD,YAAYrD,GAAGxD;AAAAA,IAClB;AAED,WAAOwD,GAAGyjG;AAAAA,EACV,GAED3vE,OAAO,SAAUxT,MAChB;AAAA,EAAA,EAAA;AAGF,WAASi9F,iBAAAA;AACR,QAAID,cAAcnkH,WAAU0jD,YAAY,MACxC;AAAA,QAAA,CAAKygE,aAAa;AACjBA,oBAAcI,sBAAsB,MAAA;AAAA,IACpC;AACD,QAAKJ,CAAAA,aAAa;AACjBA,oBAAcI,sBAAsB;IACpC;AAGD,QAAA,CAAKJ,aAAa;AACjB,YAAM,IAAI7xG,MAAM,CAAC,iLAChB,yLACA,8DACA,IACA,0CACA,gEACCnC,EAAAA,KAAK;IACP;AAED,WAAOg0G;AAAAA,EACP;AAED,WAASI,sBAAsBl9G,MAC9B;AAAA,aAAS7C,IAAI,GAAGA,IAAIxE,WAAU+B,OAAOi4B,SAAS92B,SAASuB,QAAQD,KAAK;AACnE,UAAIkC,UAAU1G,WAAU+B,OAAOi4B,SAAS92B,SAASsB,CACjD;AAAA,UAAIkC,QAAQW,SAASA,MAAM;AAC1B,eAAOrH,WAAU0jD,YAAYh9C,QAAQ+T;MACrC;AAAA,IACD;AACD,WAAO;AAAA,EACP;AAEF;ACvnCe,SAAQ+pG,iBAACxkH,YAExBA;AAAAA,EAAAA,WAAU+B,OAAO0iH,8BAA8B;AAC/CzkH,EAAAA,WAAU+B,OAAOq+G,qBAAqB,CAAC,GAAE,GAAE,GAAE,GAAE;AAC/CpgH,EAAAA,WAAU6jD,YAAY,eAAe,EACpCm/D,WAAY,SAAS77F,MAAAA;AACpB,eAAWA,QAAQ,UAAS;AAC3B,UAAIphB,UAAU/F,WAAU+mB,UAAU1H,cAAc,IAAI8H,IAAAA,EAAAA;AACpD,WAAIphB,SAAQ;AAGXA,kBAAU7F,SAAS2kB,eAAesC;MAClC;AACDA,aAAOphB;AAAAA,IACP;AACD,QAAIohB,KAAKxkB,MAAMod,WAAW;AACzBoH,WAAKxkB,MAAMod,UAAU;AACtB,WAAOoH;AAAAA,EACP,GACD87F,aAAa,SAAS97F;AACrB,WAAOA,KAAKu9F,aAAaC,aAAax9F,IAAAA;AAGtC,aAASw9F,aAAalsF;AACrB,UAAI7qB,MAAM1N,SAASC,cAAc,KAAA,GAAQogB;AACzC3S,UAAInN,YAAag4B,EAAE9zB,UAAU;AAC7B4b,UAAI3S,IAAIrN;AACRqN,YAAM;AACN,aAAO2S;AAAAA,IACP;AAAA,EACD,GACD9Y,QAAO,SAASg9C,KACf;AAAA,QAAGA,IAAI74B,MAAK;AACX,UAAIm3F,MAAM/iH,WAAU6jD,YAAY,WAAA;AAChC,UAAIj4B,OAAOm3F,IAAIC,UAAUv+D,IAAI74B,IAAAA;AAC7B,UAAIroB,OAAOw/G,IAAIE,YAAYr3F,IAAAA;AAC3BA,WAAKjpB,MAAMod,UAAU;AACrB,aAAOxc;AAAAA,IACP;AACD,QAAI2/G,MAAMljH,WAAU+nB,OAAOC;AAC3B,WAAO,6JAGsFk7F,IAAIpmD,mBAAiB,yGACrBomD,IAAInmD,oBAAkB,mHACZmmD,IAAIlmD,qBAAmB,0GAChCkmD,IAAIjmD,oBAAkB,sOAMvBimD,IAAIhmD,wBAAsB,4FAC/BgmD,IAAI/lD,wBAAsB,gHACb+lD,IAAI9lD,yBAAuB,uFAG3G8lD,IAAI7lD,cAAY,4FACtB6lD,IAAI5lD,yBAAuB,wJAGgE4lD,IAAI/jD,kBAAkB,CAAG,IAAA,+GAC7B+jD,IAAI/jD,kBAAkB,KAAG,wHACrB+jD,IAAI/jD,kBAAkB,CAAA,IAAG,+GAC7B+jD,IAAI/jD,kBAAkB,CAAA,IAAG,wHACrB+jD,IAAI/jD,kBAAkB,CAAG,IAAA,+GAC7B+jD,IAAI/jD,kBAAkB,CAAG,IAAA,wHACrB+jD,IAAI/jD,kBAAkB,KAAG,mMAKH+jD,IAAI3lD,0BAAwB,4FACnE2lD,IAAIzlD,wBAAsB,8FACxBylD,IAAIxlD,0BAAwB,mJACkBwlD,IAAI1lD,2BAAyB,qJAI9Hx9D,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,KAC9D,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CACpD,IAAA,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CACpD,IAAA,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CAAA,IACpD,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CAAA,IACpD,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,KACpD,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,KACrD,cACAk3E,IAAIvlD,kCACL,+FACqFulD,IAAItlD,iCAA+B,iMAGDslD,IAAIhmD,wBAAsB,2FACjEgmD,IAAInlD,uBAAqB,0EAGzEmlD,IAAIhkD,oBAAoB,CAAA,IACvD,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,wBAAsBgkD,IAAIhkD,oBAAoB,EAC9C,IAAA,wBAAsBgkD,IAAIhkD,oBAAoB,EAAA,IAC/C,cACAgkD,IAAIllD,oBACL,iJACgIklD,IAAIrlD,oBAAkB,2IAGtH79D,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CAAA,IAC9D,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CAAA,IACpD,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,KACpD,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CACpD,IAAA,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CACpD,IAAA,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CAAA,IACpD,uBAAqBhsC,WAAU+nB,OAAOvkB,KAAKwoC,SAAS,CAAA,IACrD,cACAk3E,IAAIplD,mBACJ,4DACgColD,IAAIhkD,oBAAoB,CAAA,IACvD,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,wBAAsBgkD,IAAIhkD,oBAAoB,EAC9C,IAAA,wBAAsBgkD,IAAIhkD,oBAAoB,EAAA,IAC/C,sLAM+EgkD,IAAIjlD,mBAAiB,0FAC5BilD,IAAI/kD,oBAAkB,4FACb+kD,IAAIhlD,+BAA6B,kFAC1CglD,IAAI9kD,oBAAkB,kFACvBp+D,WAAU+B,OAAOsgH,qBAAmB;AAAA,EAKjH,GACDe,KAAK,CAAE,GACPwB,gBAAgB,SAASj3G,KAAK8M,MAAMiE,OAAAA;AACnC,QAAI4qB,MAAM37B,IAAI8M;AACd,QAAI6uB,CAAAA;AAAK,aAAO;AAChB,QAAGA,IAAInF;AAAU,aAAOmF;AAExB,QAAGA,IAAI7kC,QAAO;AACb,eAAQD,IAAE,GAAGA,IAAI8kC,IAAI7kC,QAAQD,KAAI;AAChC,YAAG8kC,IAAI9kC,GAAGka,SAASA;AAClB,iBAAO4qB,IAAI9kC;MACZ;AAAA,IACD;AAAA,EACD,GACDqgH,iBAAiB,SAASl3G,KAAK8M,MAAMu+E,cAAAA;AACpC,QAAI1vD,MAAM37B,IAAI8M,IACd;AAAA,QAAA,CAAI6uB;AAAK,aAAO;AAChB,QAAGA,IAAI7kC,QAAO;AACb,UAAGu0F,cAAY;AACd,YAAIpwF,MAAM,CACV;AAAA,iBAASpE,IAAI,GAAGA,IAAI8kC,IAAI7kC,QAAQD;AAC/B,cAAI8kC,IAAI9kC,CAAGqhD,EAAAA;AAASj9C,gBAAI1E,KAAKolC,IAAI9kC,CAAGka,EAAAA,KAAAA;AAErC,eAAO9V;AAAAA,MACX,OAAQ;AACJ,iBAASpE,IAAI,GAAGA,IAAI8kC,IAAI7kC,QAAQD;AAC/B,cAAI8kC,IAAI9kC,GAAGqhD;AAAS,mBAAOvc,IAAI9kC,CAAGka,EAAAA;AAAAA,MACnC;AAAA,IACD;AAED,QAAG4qB,IAAI5qB;AACN,cAAQs6E,eAAc1vD,IAAI5qB,QAAQ,CAAC4qB,IAAI5qB,KACxC;AAAA,EAAA,GAEDomG,yBAAyB,SAASn3G,KAAK8M;AACtC,QAAIiE,QAAQ1e,WAAU6jD,YAAY,WAAA,EAAaghE,gBAAgBl3G,KAAK8M;AACpE,WAASiE,QAAQ,KAAM;AAAA,EACvB,GAEDqmG,iBAAiB,SAASp3G,KAAK8M,MAAMiE,OAAAA;AACpC,QAAI4qB,MAAM37B,IAAI8M;AACd,QAAI6uB,CAAAA;AAAK;AAET,QAAGA,IAAI7uB,QAAQA,MAAK;AACnB6uB,UAAI5qB,QAAQA;AAAAA,IACf,WAAW4qB,IAAI7kC,QAAO;AACnB,UAAIugH,aAAAA,OAAoBtmG,SAAS;AACjC,eAASla,IAAI,GAAGA,IAAI8kC,IAAI7kC,QAAQD;AAC/B,YAAIwgH,cAAc17E,IAAI9kC,CAAAA,EAAGka,SAASA,OAAM;AACvC4qB,cAAI9kC,CAAGqhD,EAAAA,UAAUm/D,aAAetmG,CAAAA,CAAAA,MAAM4qB,IAAI9kC,CAAGka,EAAAA,KAAAA,IAAAA,CAAAA,CAAWA;AAAAA,QACxD;AAAA,IACF;AAAA,EACD,GAEDykG,iBAAgB,SAASh8F,MAAMzI,OAAO7X;AACrC,QAAIwJ,QAAQrQ,WAAU6jD,YAAY,WAAA;AAClC,QAAIC,YAAYzzC,MAAMw0G;AACtB,QAAI7gE,YAAY3zC,MAAM00G;AACtB/kH,IAAAA,WAAU6jD,YAAY,WAAA,EAAau/D,MAAM,EAACxzG,OAAM/I,GAAGzD,YAAYyM,KAAIhJ,GAAGqD,UAAAA;AAEtE,QAAI+6G,kBAAkBjlH,WAAUwD,KAAK4qC,YAAYpuC,WAAU+B,OAAOm9G,aAAa,OAAO,IACtF;AAAA,QAAIgG,WAAW,SAASA,WAAAA;AACvB,UAAI1hH,OAAOyhH,gBAAgBC,SAC3B;AAAA,UAAIllH,WAAU+B,OAAOo+G;AACpB38G,eAAOxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KACpC;AAAA,aAAOA;AAAAA,IACV;AAEE,QAAI2hH,WAAWnlH,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOm9G,WAE3D;AAAA,QAAIt8G,MAAMukB,KAAKQ,qBAAqB,QAAQ,CAC5C;AAAA,QAAIha,MAAM,CAAA;AAEV,aAASy3G,aAAaC;AACrB,eAAS7gH,KAAI,GAAGA,KAAI6gH,KAAK5gH,QAAQD,MAAK;AACrC,YAAIyzF,MAAMotB,KAAK7gH,EAAAA;AAEf,YAAGyzF,IAAIx9E,MAAK;AACX,cAAI9M,CAAAA,IAAIsqF,IAAIx9E,IAAAA,GAAM;AACjB9M,gBAAIsqF,IAAIx9E,QAAQw9E;AAAAA,UAChB,WAAQtqF,IAAIsqF,IAAIx9E,IAAMusB,EAAAA,UAAS;AAC/B,gBAAI7f,QAAOxZ,IAAIsqF,IAAIx9E,IAAAA;AACnB9M,gBAAIsqF,IAAIx9E,IAAAA,IAAQ,CAAC0M,OAAM8wE;UAE7B,OAAU;AACJtqF,gBAAIsqF,IAAIx9E,IAAAA,EAAMvW,KAAK+zF,GACnB;AAAA,UAAA;AAAA,QAED;AAAA,MACD;AAAA,IACD;AAEDmtB,iBAAaxiH,IAAI+kB,qBAAqB,OACtCy9F,CAAAA;AAAAA,iBAAaxiH,IAAI+kB,qBAAqB,QAAA,CAAA;AAEtC,QAAK3nB,CAAAA,WAAU+B,OAAOsgH,oBAAoB;AACzC,UAAID,YAAYpiH,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOm9G,WAAAA;AAC5Dl/G,MAAAA,WAAU+B,OAAOsgH,qBAAqBD,UAAUpiH,WAAUwD,KAAKC,IAAIzD,WAAUsM,aAAAA,GAAgB,IAAI,KAAA,CAAA;AAAA,IACjG;AACD03C,cAAUr2C,KAAK,eAAe3N,WAAU+B,OAAOsgH;AAE/C,QAAI3yD,IAAI,SAASlzC,GAAAA;AAChB,aAAOxc,WAAU+mB,UAAU1H,cAAc,IAAI7C,CAAAA,EAAAA,KAAQ,EAAE7Z,OAAM,CAAA,EAChE;AAAA,IAAA;AAEE,aAAS2iH,sBACR51D;AAAAA,QAAE,kBAAkB/sD,MAAMod,UAAU;AACpC2vC,QAAE,iBAAA,EAAmB/sD,MAAMod,UAAU;AACrC2vC,QAAE,kBAAA,EAAoB/sD,MAAMod,UAAU;AACtC2vC,QAAE,iBAAmB/sD,EAAAA,MAAMod,UAAU;AACrC2vC,QAAE,gBAAgBrvD,KAAKqe,OAAO/b,MAAMod,UAAU;AAC9C/f,MAAAA,WAAU0oD,gBAAAA;AAAAA,IACV;AAED,aAAS68D,gBAAgBvgH,OACxB;AAAA,UAAIwmC,OAAO,CAACsY,UAAUn2C,KAAK,QAC3B63G,CAAAA;AAAAA,gBAAUh6E,KAAK,CAAA,CAAA,EAAIA,MAAMxmC,KAEzB;AAAA,aAAOwmC,KAAK/mC,SAAS;AAAG+mC,aAAKtnC,KAAK,EAAA;AAClC,UAAIw/F,UAAS;AAEb,UAAI7zF,MAAM41G,aAAa93G,GAEvB;AAAA,UAAIkC,OAAO,MAAM;AAChB7K,cAAM6K,MAAM,IAAIhL,KAAK,MAAM,GAAG,CAC9B6+F;AAAAA,QAAAA,UAAS;AAAA,MACT,WACQ7zF,OAAO,eAAe;AAC9B7K,cAAM6K,MAAMq1G,SAASphE,UAAUn2C,KAAK;MACpC,OACI;AACJ3N,QAAAA,WAAU0lH,eAAel6E,KAAKr7B,KAAK,GAAA,CAAA;AACnCuzF,QAAAA,UAASlyF,KAAK5C,IAAI,GAAGk1C,UAAUn2C,KAAK,kBAEpC,CAAA;AAAA,YAAIg4G,SAAS;AAmBb3gH,cAAM6K,MAAM7P,WAAUwD,KAAK,SAASgoC,KAAKr7B,KAAK,GAAM,CAAA,EAAA,IAAItL,KAAKG,MAAM4K,KAAAA,GAAQ8zF,UAASiiB,QAAQ,EAACviH,YAAY4B,MAAM4K,MAAAA,CAAAA,KAAW5K,MAAM4K;AAAAA,MAChI;AAED,aAAO47B,KAAKr7B,KAAK,GAAO,IAAA,MAAMuzF;AAAAA,IAC9B;AACD,aAAS+hB,aAAa93G,MAAAA;AACrB,UAAIkC,MAAMlC,KAAI;AACd,UAAGkC,IAAIpL,QAAO;AACb,iBAAQD,KAAG,GAAGA,KAAIqL,IAAIpL,QAAQD,MAAI;AACjC,cAAGqL,IAAIrL,EAAAA,EAAGqhD,SAAQ;AACjB,gBAAGh2C,IAAIrL,EAAAA,EAAGka,SAAS7O,IAAIrL,EAAAA,EAAGka,SAAS,MAAK;AACvC,qBAAO7O,IAAIrL,IAAGka;AAAAA,YACrB,OAAW;AACJ,kBAAIla,CAAAA,IAAE;AACL,uBAAO;AAAA,cACf,WAAgBA,MAAK,GAAE;AACf,uBAAO;AAAA,cACf,OAAY;AACJ,uBAAO;AAAA,cACP;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACL,OAAQ;AACJ,YAAGqL,IAAI6O;AACN,iBAAO7O,IAAI6O;AAAAA,MACZ;AACD,aAAO;AAAA,IACP;AACD,aAASknG,aAAaj4G,MAAK+Q;AAC1B,UAAI7O,MAAMlC,KAAI,KAAA;AAEd,UAAGkC,IAAIpL,QAAO;AACb,YAAIohH,aAAAA,CAAAA,CAAeh2G,IAAI,CAAG6O,EAAAA,SAAS7O,IAAI,CAAA,EAAG6O,SAAS;AACnD,YAAGmnG,YAAW;AACb,mBAAQrhH,KAAG,GAAGA,KAAIqL,IAAIpL,QAAQD,MAAI;AACjC,gBAAGqL,IAAIrL,EAAAA,EAAGka,SAASA;AAClB7O,kBAAIrL,EAAGqhD,EAAAA,UAAU;AAAA,UAClB;AAAA,QACN,OAAS;AACJ,cAAIniB,MAAM;AACV,kBAAOhlB,QAAAA;AAAAA,YACN,KAAK;AACJglB,oBAAM;AACN;AAAA,YACD,KAAK;AACJA,oBAAM;AACN;AAAA,YACD;AACCA,oBAAM;AACN;AAAA;AAEF7zB,cAAI6zB,GAAAA,EAAKmiB,UAAU;AAAA,QACnB;AAAA,MACL,OAAQ;AACJh2C,YAAI6O,QAAQA;AAAAA,MACZ;AAAA,IACD;AAGD1e,IAAAA,WAAU6jD,YAAY,WAAaiiE,EAAAA,mBAAmBP;AACtD,QAAIC,YAAY,EACfnkF,OAAM,SAASmK,MAAMxmC,OAAAA;AACpB,UAAI8+C,aAAY9jD,WAAU6jD,YAAY,WAAaghE,EAAAA;AACnD,UAAIkB,oBAAoB/lH,WAAU6jD,YAAY,WAAA,EAAaihE;AAE3D,UAAIhhE,WAAUn2C,KAAK,YAAiB,KAAA,KAAK;AACxC69B,aAAKtnC,KAAKsN,KAAK5C,IAAI,GAAGm3G,kBAAkBp4G,KAAK;AAC7C3I,cAAM4K,MAAM49B,QAAQsW,WAAUn2C,KAAK,WACxC,CAAA;AAAA,MAAA,OAAW;AACN69B,aAAKtnC,KAAKsN,KAAK5C,IAAI,GAAGm3G,kBAAkBp4G,KAAK,cAC7C69B,CAAAA,CAAAA;AAAAA,aAAKtnC,KAAM4/C,WAAUn2C,KAAK;AAC1B69B,aAAKtnC,KAAKsN,KAAK5C,IAAI,GAAGm3G,kBAAkBp4G,KAAK;AAC7C,YAAK3N,CAAAA,WAAU+B,OAAOikH,gBAAe;AACpChhH,gBAAM4K,MAAM49B,QAAQ,CACpB;AAAA,QAAA;AAAA,MACD;AACDxoC,YAAMs/G,SAAS;AAAA,IACf,GACDzlB,MAAK,SAASrzD,MAAMxmC;AACnB,UAAI8+C,aAAY9jD,WAAU6jD,YAAY,WAAA,EAAaghE;AACnD,UAAIkB,oBAAoB/lH,WAAU6jD,YAAY,aAAaihE;AAE3Dt5E,WAAKtnC,KAAKsN,KAAK5C,IAAI,GAAGm3G,kBAAkBp4G,KAAK,YAC7C69B,CAAAA,CAAAA;AAAAA,WAAKtnC,KAAK,EACVsnC;AAAAA,WAAKtnC,KAAK,EACV;AAAA,UAAIsQ,IAAI,CAER;AAAA,UAAI80B,MAAMwa,WAAUn2C,KAAK,YAAY,IAAA;AAErC,UAAI9N,MAAMmF,MAAM4K,MAAMxG,OACtB;AAAA,UAAI68G,eAAe;AAEnB,eAASzhH,KAAI,GAAGA,KAAI8kC,IAAI7kC,QAAQD,MAAI;AACnCgQ,UAAEtQ,KAAKolC,IAAI9kC,EACXyhH,CAAAA;AAAAA,uBAAeA,gBAAgB38E,IAAI9kC,EAAAA,KAAM3E;AAAAA,MACzC;AACD,UAAA,CAAK2U,EAAE/P,QAAO;AACb+P,UAAEtQ,KAAKrE;AACPomH,uBAAe;AAAA,MACf;AACDzxG,QAAEqwB,KAAAA;AAGF,UAAK7kC,CAAAA,WAAU+B,OAAOikH,gBAAe;AACpChhH,cAAM4K,QAAQ5P,WAAUwD,KAAK6B,WAAWL,MAAM4K,KAC9C5K;AAAAA,cAAMs/G,SAAS;AAAA,MACpB,YAAgB2B,cAAa;AACxBjmH,QAAAA,WAAUkmH,mBAAmBlhH,MAAM4K,OAAO4E,GAAG,GAAG,CAChDxP;AAAAA,cAAMs/G,SAAS;AAAA,MACf;AAED94E,WAAKtnC,KAAKsQ,EAAErE,KAAK,GAAA,CAAA;AAAA,IACjB,GACDtQ,KAAI,SAAS2rC;AACZ,UAAIsY,aAAY9jD,WAAU6jD,YAAY,WAAA,EAAaghE;AACnD,UAAIkB,oBAAoB/lH,WAAU6jD,YAAY,aAAaihE;AAE3D,UAAIhhE,WAAUn2C,KAAK,UAAA,KAAe,KAAK;AACtC69B,aAAKtnC,KAAKsN,KAAK5C,IAAI,GAAGm3G,kBAAkBp4G,KAAK,WAC7C,CAAA,CAAA;AAAA,MAAA,OACI;AACJ69B,aAAKtnC,KAAK,MACVsnC;AAAAA,aAAKtnC,KAAK,CACVsnC;AAAAA,aAAKtnC,KAAK,EACVsnC;AAAAA,aAAKtnC,KAAK,EAAA;AACVsnC,aAAKtnC,KAAKlE,WAAU+B,OAAOq+G,mBAAmBjwG,KAAK;AACnDq7B,aAAK/3B,OAAO,GAAG,CAAA;AAAA,MACf;AAAA,IACD,GACD+H,MAAK,SAASgwB,MAAMxmC,OAAAA;AACnB,UAAI8+C,aAAY9jD,WAAU6jD,YAAY,WAAA,EAAaghE;AAEnD,UAAI/gE,WAAUn2C,KAAK,WAAgB,KAAA,KAAK;AACvC69B,aAAKtnC,KAAK,GACVc;AAAAA,cAAM4K,MAAM89B,SAAS,CAAA;AACrB1oC,cAAM4K,MAAM49B,QAAQsW,WAAUn2C,KAAK,UAAA,CAAA;AACnC3I,cAAM4K,MAAM89B,SAASoW,WAAUn2C,KAAK;MAEzC,OAAW;AACN69B,aAAKtnC,KAAK,GAAA;AACVsnC,aAAKtnC,KAAK4/C,WAAUn2C,KAAK,WAAA,CAAA;AACzB69B,aAAKtnC,KAAK4/C,WAAUn2C,KAAK,YACzB3I,CAAAA;AAAAA,cAAM4K,MAAM49B,QAAQ;AACpBxoC,cAAM4K,MAAM89B,SAASoW,WAAUn2C,KAAK;MACpC;AACD3I,YAAMs/G,SAAS;AAAA,IACf;AAEF,QAAI6B,YAAY,EACftnB,MAAK,SAASrzD,MAAMxmC,OACnB;AAAA,UAAIg/C,aAAYhkD,WAAU6jD,YAAY,WAAakhE,EAAAA;AACnD/gE,MAAAA,WAAUr2C,KAAK,cAAc69B,KAAK,CAElC,CAAA;AAAA,UAAIh3B,IAAIg3B,KAAK,GAAG7lC,MAAM,GAAA;AACtB,UAAIsO,IAAI,CAAA;AACR,eAASzP,KAAI,GAAGA,KAAIgQ,EAAE/P,QAAQD;AAAKyP,UAAEO,EAAEhQ,OAAM;AAE7Cw/C,MAAAA,WAAUr2C,KAAK,YAAYsG;IAI3B,GACDotB,OAAM,SAASmK,MAAMxmC,OAAAA;AACpB,UAAIg/C,aAAYhkD,WAAU6jD,YAAY,WAAA,EAAakhE;AAEnD,UAAIv5E,KAAK,OAAO,IAAI;AACnBwY,QAAAA,WAAUr2C,KAAK,cAAc,GAC7Bq2C;AAAAA,QAAAA,WAAUr2C,KAAK,eAAe69B,KAAK;AACnCwY,QAAAA,WAAUr2C,KAAK,aAAa3I,MAAM4K,MAAMnG,QAC7C,CAAA;AAAA,MAAA,OAAW;AACNu6C,QAAAA,WAAUr2C,KAAK,cAAc,GAC7Bq2C;AAAAA,QAAAA,WAAUr2C,KAAK,gBAAgB69B,KAAK,CACpCwY,CAAAA;AAAAA,QAAAA,WAAUr2C,KAAK,eAAgB69B,KAAK;AACpCwY,QAAAA,WAAUr2C,KAAK,cAAc69B,KAAK,CAAA,CAAA;AAAA,MAClC;AAAA,IACD,GACD3rC,KAAI,SAAS2rC,MAAMxmC;AAClB,UAAIg/C,aAAYhkD,WAAU6jD,YAAY,WAAA,EAAakhE;AACnD/gE,MAAAA,WAAUr2C,KAAK,YAAY,GAAA;AAC3Bq2C,MAAAA,WAAUr2C,KAAK,aAAa69B,KAAK,CACjC,CAAA;AAAA,IAAA,GACDhwB,MAAK,SAASgwB,MAAMxmC,OACnB;AAAA,UAAIg/C,aAAYhkD,WAAU6jD,YAAY,aAAakhE;AAEnD,UAAIv5E,KAAK,CAAA,MAAO,IAAI;AACnBwY,QAAAA,WAAUr2C,KAAK,aAAa,GAAA;AAC5Bq2C,QAAAA,WAAUr2C,KAAK,YAAY3I,MAAM4K,MAAMnG;AACvCu6C,QAAAA,WAAUr2C,KAAK,cAAc3I,MAAM4K,MAAMqJ;MAE9C,OAAW;AACN+qC,QAAAA,WAAUr2C,KAAK,aAAa,GAC5Bq2C;AAAAA,QAAAA,WAAUr2C,KAAK,cAAc69B,KAAK;AAClCwY,QAAAA,WAAUr2C,KAAK,aAAa69B,KAAK;AACjCwY,QAAAA,WAAUr2C,KAAK,eAAe3I,MAAM4K,MAAMqJ;MAC1C;AAAA,IACD,EAAA;AAGF,aAASmtG,gBAAgB56E,MAAMxmC,OAC9B;AAAA,UAAIg/C,aAAYhkD,WAAU6jD,YAAY,aAAakhE;AACnD,UAAIjzG,OAAO05B,KAAK7lC,MAAM,GACtB6lC;AAAAA,aAAO15B,KAAK,CAAGnM,EAAAA,MAAM;AACrBwgH,gBAAU36E,KAAK,CAAIA,CAAAA,EAAAA,MAAMxmC;AAEzB,cAAQ8M,KAAK;QACZ,KAAK;AACJ8zG,uBAAaj4G,KAAK,IAAA;AAClB;AAAA,QACD,KAAK;AACJi4G,uBAAaj4G,KAAK;AAElB,cAAItK,WAAW2B,MAAM6K;AACrB,cAAI7P,WAAU+B,OAAOo+G,gBAAe;AACnC98G,uBAAWrD,WAAUwD,KAAKC,IAAIJ,cAAc,KAAA;AAAA,UAC5C;AACD2gD,UAAAA,WAAUr2C,KAAK,eAAew3G,SAAS9hH;AAEvC;AAAA,QACD;AACCuiH,uBAAaj4G,KAAK,kBAAA;AAClBq2C,UAAAA,WAAUr2C,KAAK,oBAAoBmE,KAAK,CAAA,CAAA;AAExC;AAAA;AAGFkyC,MAAAA,WAAUr2C,KAAK,UAAU69B,KAAK,CAAA,CAAA;AAG9B,UAAIrkB,QAAOnnB,WAAU6jD,YAAY,WAAA,EAAa+gE,eAAej3G,KAAK,UAAU69B,KAAK,CACjF,CAAA;AAAA,UAAGrkB,MAAKgd,YAAY,UAA8B;AAEjDhd,QAAAA,MAAKm7F,cAAc,IAAI5mC,MAAM;AAC7Bv0D,QAAAA,MAAKm7F,cAAc,IAAI+D,WAAW;MACtC,OAAQ;AACJl/F,QAAAA,MAAKm7F,cAAc,IAAI+D,WAAW,OAClC,CAAA;AAAA,MAAA;AAAA,IACD;AAEDrmH,IAAAA,WAAU6jD,YAAY,WAAayiE,EAAAA,mBAAmBF;AAEtD,aAAS5hH,IAAI,GAAGA,IAAI5B,IAAI2jH,SAAS9hH,QAAQD,KAAK;AAC7C,UAAIsf,MAAKlhB,IAAI2jH,SAAS/hH,CACtB;AAAA,cAAQsf,IAAGrJ,MAAAA;AAAAA,QACV,KAAK;AACJ,cAAIqJ,IAAGqgB,YAAY,YAAA,CAAargB,IAAGhG,iBAAiB;AACnDgG,YAAAA,IAAGhG,kBAAkB;AACrBgG,YAAAA,IAAGyY,iBAAiB,UAAU+oF,mBACpC;AAAA,UAAA,YAAgBxhG,IAAGhG,iBAAgB;AAC7BgG,YAAAA,IAAGhG,kBAAkB;AACrBgG,YAAAA,IAAGyY,iBAAiB,SAAS+oF,mBAAAA;AAAAA,UAC7B;AACD;AAAA,MAEF;AAAA,IAAA;AACDtlH,IAAAA,WAAU+mB,UAAU68F,iBAAiB;AAAA,EACrC,GACD5/D,WAAU,SAAS78B,MAAMzI,OAAO7X,IAC/B;AAAA,QAAIg9G,KAAK7jH,WAAU6jD,YAAY,WAC/B;AAAA,QAAA,CAAK7jD,WAAU+mB,UAAU68F;AACxBC,SAAGV,gBAAgBh8F,MAAMzI,OAAO7X,EAAAA;AACjCsgB,SAAK2jB,OAAQjkC,CAAAA,GAAGoD;AAEhBkd,SAAK28F,UAAUzjH,KAAKg+G,uBAAuBx3G,EAAAA;AAE3C,QAAIuiD,KAAKy6D,GAAGT;AACZh6D,OAAGx5C,QAAQ/I,GAAGzD;AACdgmD,OAAGv5C,MAAMhJ,GAAGqD;AAEZ25G,OAAG2C;AAEH,QAAI9nG;AACHmlG,SAAGyC,iBAAiB5nG,OAAO0qC;EAC5B,GACDtF,WAAU,SAAS38B,MAAMtgB;AACxB,QAAIsgB,KAAK2jB,MAAM;AACd,UAAIse,KAAKppD,WAAU6jD,YAAY,WAAau/D,EAAAA;AAC5C,UAAIc,eAAe,CAAA;AAEnB,UAAIC,cAAcC;AAElBD,kBAAYvgE,SAASsgE,YACrB96D;AAAAA,SAAGx5C,QAAQs0G,aAAa9gH;AACxByD,SAAGoD,WAAWjK,WAAU6jD,YAAY,WAAaiiE,EAAAA,iBAAiB18D,EAClE;AAAA,UAAIA,GAAGk7D,QAAQ;AACdz9G,WAAGzD,aAAa,IAAIyB,KAAKukD,GAAGx5C,KAC5B/I;AAAAA,WAAG23G,cAAc,IAAI35G,KAAKukD,GAAGx5C,KAC7Bw5C;AAAAA,WAAGk7D,SAAS;AAAA,MACZ;AACAz9G,WAAG23G,cAAc;AAElB33G,SAAGqD,YAAYk/C,GAAGv5C;AAClBhJ,SAAGmrD,cAAcnrD,GAAGoD,SAAStE,MAAM,GAAA,EAAK;IAC3C,OAAS;AACNkB,SAAGoD,WAAWpD,GAAGmrD,cAAc;AAC/BnrD,SAAGqD,YAAYrD,GAAGxD;AAAAA,IAClB;AACD,WAAOwD,GAAGoD;AAAAA,EACV,GACDw8G,aAAa,WACZ;AAAA,QAAIt/F,OAAOu/F,oBAAAA,EAAsBviG;AACjC,WAAOgD,KAAKzmB,WAAWA;AAAAA,EACvB,GACDimH,WAAW,WACV;AAAA,WAAOD,oBAAsBv/F,EAAAA;AAAAA,EAC7B,GACD2jB,MAAK,WAAA;AACJ,QAAIz6B,QAAQrQ,WAAU6jD,YAAYoF;AAElC,QAAIksC,OAAO9kF,MAAMs2G;AACjB,QAAIxxB,CAAAA,KAAKrqD;AACRz6B,YAAMm2G,cAAAA;AAAAA,EACP,GACDz5B,OAAO,WAAA;AACN,QAAI18E,QAAQrQ,WAAU6jD,YAAYoF;AAElC,QAAIksC,OAAO9kF,MAAMs2G;AAEjB,QAAGxxB,KAAKrqD;AACPz6B,YAAMm2G;EACP,GACDA,eAAe;AACd,QAAIn2G,QAAQrQ,WAAU6jD,YAAYoF;AAElC,QAAIksC,OAAO9kF,MAAMs2G,UAChB7iG,GAAAA,MAAKzT,MAAMo2G,YACZ;AAAA,QAAA,CAAKtxB,KAAKrqD,QAASqqD,CAAAA,KAAK2uB,SAAS;AAChC3uB,WAAKxyF,MAAMwO,SAAS;AACpB,UAAG2S,KAAG;AACLA,QAAAA,IAAGnhB,MAAMikH,qBAAqB;AAC9B9iG,QAAAA,IAAGyiB,YAAYhmC,YAAYP,WAAU+nB,OAAOC,OAAO00C;AAAAA,MACnD;AAAA,IACJ,OAAS;AACNy4B,WAAKxyF,MAAMwO,SAAS;AACpB,UAAG2S,KAAG;AACLA,QAAAA,IAAGnhB,MAAMikH,qBAAqB;AAC9B9iG,QAAAA,IAAGyiB,YAAYhmC,YAAYP,WAAU+nB,OAAOC,OAAOy0C;AAAAA,MACnD;AAAA,IACD;AACD04B,SAAKrqD,OAAQqqD,CAAAA,KAAKrqD;AAElB9qC,IAAAA,WAAU0oD,gBAAAA;AAAAA,EACV,GACD/tB,OAAM,SAASxT;EACd,GACDohC,cAAa,SAASphC,MAAM3J,QAAQ3b,QACnC;AAAA,QAAIwO,QAAQrQ,WAAU6jD,YAAYoF;AAClC,QAAIksC,OAAO9kF,MAAMs2G,UAAAA;AACjB,SAAKxxB,KAAK2uB;AACT9jH,MAAAA,WAAU6jD,YAAYoF,UAAUu9D;EACjC,EAGF;AAAA,WAASpC,iBACR;AAAA,QAAID,cAAcnkH,WAAU0jD,YAAY;AACxC,QAAIygE,CAAAA,aAAY;AACfA,oBAAcI,sBAAsB,MACpC;AAAA,IAAA;AACD,SAAIJ,aAAY;AACfA,oBAAcI,sBAAsB,eAAA;AAAA,IACpC;AAGD,QAAKJ,CAAAA,aAAa;AACjB,YAAM,IAAI7xG,MAAM,CAAC,iLACnB,yLACA,8DACA,IACA,0CACA,gEAAA,EACCnC,KAAK,IAAA,CAAA;AAAA,IACJ;AAED,WAAOg0G;AAAAA,EACR;AAEA,WAASuC,sBAAAA;AACR,QAAI3iF,mBAAmB/jC,WAAU0jD,YAAY,WAAA;AAC7C,SAAI3f,kBAAiB;AACpBA,yBAAmBwgF,sBAAsB,WAAA;AAAA,IACzC;AAED,QAAKxgF,CAAAA,kBAAkB;AACtB,YAAM,IAAIzxB,MAAM,CAAC,4CACjB,0JACA,wDACF,IACA,0CACA,6BACA,IAAMnC,EAAAA,KAAK;IAET;AAED,WAAO4zB;AAAAA,EACR;AAEA,WAASwgF,sBAAsBl9G,MAC9B;AAAA,aAAQ7C,IAAI,GAAGA,IAAIxE,WAAU+B,OAAOi4B,SAAS92B,SAASuB,QAAQD,KAAI;AACjE,UAAIkC,UAAU1G,WAAU+B,OAAOi4B,SAAS92B,SAASsB,CACjD;AAAA,UAAGkC,QAAQW,SAASA,MAAK;AACxB,eAAOrH,WAAU0jD,YAAYh9C,QAAQ+T;MACrC;AAAA,IACD;AACD,WAAO;AAAA,EACR;AAGAza,EAAAA,WAAUy9G,eAAe,CAAA;AACzBz9G,EAAAA,WAAUw9G,oBAAoB,CAAA;AAC9Bx9G,EAAAA,WAAU2xD,kBAAkB,SAAS9qD,IAAI29C,MAAAA;AACxC39C,OAAG62G,YAAYl5D;AACfnkD,SAAKo9G,aAAa52G,GAAGzG,MAAMyG;AAC3B,QAAA,CAAKxG,KAAKm9G,kBAAkB32G,GAAG6kE,SAAYrrE;AAAAA,WAAKm9G,kBAAkB32G,GAAG6kE,SAAAA,IAAa,CAAA;AAClFrrE,SAAKm9G,kBAAkB32G,GAAG6kE,WAAWlnB,IAAQ39C,IAAAA;AAAAA,EAC9C;AACA7G,EAAAA,WAAU29G,kBAAkB,SAASn5D,MAAMpkD,KAAAA;AAC1C,QAAIw9G,KAAKv9G,KAAKm9G,kBAAkBp9G,GAAAA;AAChC,QAAIw9G;AAAI,aAAOA,GAAGp5D,IAClB;AAAA,WAAO;AAAA,EACR;AACAxkD,EAAAA,WAAU69G,mBAAmB,SAASz9G;AACrC,WAAQC,KAAKm9G,kBAAkBp9G,GAAO,KAAA,CAAA;AAAA,EACvC;AAEA,WAAS08G,kBAAkBt5G,MAE1B;AAAA,WAAO,IAAIqB,KACVrB,KAAKwV,eACLxV,KAAKyV,SAAAA,GACLzV,KAAKiG,QAAAA,GACLjG,KAAKkJ,SACLlJ,GAAAA,KAAKwK,cACLxK,KAAK8oC,WAAAA,GACL;EAEF;AAEAtsC,EAAAA,WAAUu9G,YAAY,CAAA;AAAA,GACtB;AACC,QAAIO,gBAAgB99G,WAAUwH;AAC9BxH,IAAAA,WAAUwH,WAAW,SAASpE,YAAYC,UAAU8D,MAAM/G,KAAIuzC,YAC7D;AAAA,UAAIoqE,QAAQD,cAAcrvG,MAAMpO,MAAMiU,SAEtC;AAAA,UAAIypG,SAAS/9G,WAAUmG,SAAS43G,KAAQ,GAAA;AACvC,YAAIl3G,KAAK7G,WAAUmG,SAAS43G,KAE5B;AAAA,YAAGl3G,GAAGzD,YAAW;AAChByD,aAAGzD,aAAa05G,kBAAkBj2G,GAAGzD,UAAAA;AAAAA,QACrC;AACD,YAAGyD,GAAGxD,UAAS;AACdwD,aAAGxD,WAAWy5G,kBAAkBj2G,GAAGxD,QACnC;AAAA,QAAA;AACD,YAAIhD,KAAKg+G,uBAAuBx3G,EAC/B7G;AAAAA,UAAAA,WAAU2xD,gBAAgB9qD,IAAIA,GAAG+kE,eAAe,GACjD;AAAA,YAAI/kE,GAAGoD;AACNpD,aAAGmrD,cAAcnrD,GAAGoD,SAAStE,MAAM,GAAA,EAAK;MACzC;AACD,aAAOo4G;AAAAA,IACT;AAAA,EACC,GAED/9G;AAAAA,EAAAA,WAAUiG,YAAY,mBAAmB,SAAS7F,KAAI8zC,QACrD;AAAA,QAAI7zC,KAAK29G;AAAc;AACvB39G,SAAK29G,eAAe;AAEpB,QAAGh+G,WAAUy9G,aAAar9G,GAAI,GAAA;AAE7BJ,MAAAA,WAAUy9G,aAAavpE,MAAAA,IAAUl0C,WAAUy9G,aAAar9G;aACjDJ,WAAUy9G,aAAar9G;IAC9B;AAED,QAAGJ,WAAUw9G,kBAAkBp9G,GAAAA,GAAI;AAClCJ,MAAAA,WAAUw9G,kBAAkBtpE,MAAUl0C,IAAAA,WAAUw9G,kBAAkBp9G,GAC3DJ;AAAAA,aAAAA,WAAUw9G,kBAAkBp9G,GACnC;AAAA,IAAA;AAED,aAASoE,IAAI,GAAGA,IAAInE,KAAKk9G,UAAU94G,QAAQD,KAAK;AAC/C,UAAIy5G,MAAM59G,KAAKk9G,UAAU/4G,CACzB;AAAA,UAAIy5G,IAAIvyC,aAAatrE,KAAI;AACxB69G,YAAIvyC,YAAYx3B;AAChB7zC,aAAK4zC,cAAcgqE,IAAI79G,IAAI8zC,SAAS,MAAM+pE,IAAI79G,GAAGuF,MAAM,GAAA,EAAK,CAC5D,CAAA;AAAA,MAAA;AAAA,IACD;AAED,aAAQnB,KAAKnE,KAAKo9G,cAAa;AAC9B,UAAIQ,MAAM59G,KAAKo9G,aAAaj5G;AAC5B,UAAGy5G,IAAIvyC,aAAatrE,KAAG;AACtB69G,YAAIvyC,YAAYx3B;AAChB+pE,YAAIC,eAAe;AAAA,MACnB;AAAA,IACD;AAED,QAAIp6F,MAAK9jB,WAAUy9G,aAAavpE,MAChC;AAAA,QAAGpwB,OAAMA,IAAGo6F,cAAc;AAClBp6F,aAAAA,IAAGo6F;AACVxkG,iBAAW,WAAA;AACV,YAAG1Z,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACD9gB,QAAAA,WAAUiL,UAAU,kBAAkB,CAACipC,QAAQl0C,WAAUmG,SAAS+tC,MAClE,CAAA,CAAA;AAAA,MAAA,GAAE;IACH;AAEM7zC,WAAAA,KAAK29G;AAAAA,EACb,CACAh+G;AAAAA,EAAAA,WAAUiG,YAAY,gCAAgC,SAAS7F,KAC9D;AAAA,QAAIyG,KAAKxG,KAAK8F,SAAS/F;AACvB,QAAIC,KAAKwxD,kBAAkBzxD,GAAQC,KAAAA,KAAKg+G,uBAAuBx3G,EAAAA,KAAOA,GAAGoD,YAAYpD,GAAGoD,YAAY,QAAS;AAC5G7J,MAAAA,MAAKA,IAAGuF,MAAM,GACd;AAAA,UAAI03G,MAAMh9G,KAAK0O,IAAAA;AACf,UAAIwmD,MAAOn1D,IAAG,KAAMA,IAAG,CAAA,IAAKoR,KAAKI,MAAM/K,GAAG62G,YAAY,GAAA;AAEtD,UAAIJ,MAAMj9G,KAAK84C,YAAYtyC,EAC3By2G;AAAAA,UAAIl9G,KAAKi9G;AACTC,UAAI5xC,YAAY7kE,GAAG6kE,aAAatrE,IAAG,CAAA;AACnC,UAAIquB,YAAY8mC;AAChB+nD,UAAI1xC,eAAen9C;AACnB6uF,UAAIrzG,WAAWqzG,IAAItrD,cAAc;AACjC3xD,WAAKmH,SAAS81G,GAAAA;AAEdj9G,WAAKsxD,gBAAgB2rD,KAAK7uF,YAAY,GAAA;AAAA,IACxC,OAAQ;AACN,UAAI5nB,GAAGoD,YAAY5J,KAAKopB;AACvBppB,aAAKktE,iBAAiB1mE,EACvB;AAAA,UAAIy3G,MAAMj+G,KAAKw9G,iBAAiBz9G;AAChC,eAASoE,KAAK85G,KAAK;AAClB,YAAIA,IAAIrvG,eAAezK,CAAAA,GAAI;AAC1BpE,UAAAA,MAAKk+G,IAAI95G,CAAGpE,EAAAA;AACZ,cAAIC,KAAK8F,SAAS/F;AACjBC,iBAAKgrB,YAAYjrB,KAAI,IACtB;AAAA,QAAA;AAAA,MACD;AAAA,IACD;AACD,WAAO;AAAA,EACR,CAAA;AACAJ,EAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAIyG,IAAAA;AACpD,QAAIxG,CAAAA,KAAKwxD,kBAAkBzxD,GAAOC,KAAAA,KAAKg+G,uBAAuBx3G,EAAI,GAAA;AACjE,WAAI7G,WAAUwzC,QAAQpzC,GAAI,GAAA;AACzByG,WAAGoD,WAAWpD,GAAGmrD,cAAc;AAC/B3xD,aAAKyzC,SAAS1zC,KAAIyG,EAAAA;AAAAA,MAClB;AAAA,IACD;AAAA,EACF;AACA7G,EAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAIyB;AACpD,QAAIxB,KAAKmsB;AAAU,aAAO;AAE1B,QAAI3lB,KAAKxG,KAAK8F,SAAS/F,GAAAA;AAEvB,QAAIC,KAAKwxD,kBAAkBzxD,GAAK,GAAA;AAC/B,UAAIA,MAAKA,IAAGuF,MAAM,GAClB;AAAA,UAAI03G,MAAMh9G,KAAK0O,IAAAA;AACf1O,WAAKi1C,cAAc;AAEnB,UAAIgoE,MAAMj9G,KAAK84C,YAAYt3C,MAAAA;AAC3By7G,UAAIl9G,KAAKi9G;AACTC,UAAI5xC,YAAYtrE,IAAG,CACnB;AAAA,UAAIquB,YAAYruB,IAAG,CAAA;AACnBk9G,UAAI1xC,eAAen9C;AACnB6uF,UAAIrzG,WAAWqzG,IAAItrD,cAAc;AAEjC3xD,WAAKsxD,gBAAgB2rD,KAAK7uF,YAAY,GACtCpuB;AAAAA,WAAKmH,SAAS81G,GAAAA;AAEdj9G,WAAKi1C,cAAc;AAAA,IAErB,OAAQ;AACN,UAAGzuC,GAAGzD,YAAW;AAChByD,WAAGzD,aAAa05G,kBAAkBj2G,GAAGzD,UAAAA;AAAAA,MACrC;AACD,UAAGyD,GAAGxD,UAAS;AACdwD,WAAGxD,WAAWy5G,kBAAkBj2G,GAAGxD,QACnC;AAAA,MAAA;AAED,UAAIwD,GAAGoD,YAAY5J,KAAKopB,cAAa;AACpCppB,aAAKktE,iBAAiB1mE;MACtB;AACD,UAAIy3G,MAAMj+G,KAAKw9G,iBAAiBz9G;AAChC,eAASoE,KAAK85G,KAAK;AAClB,YAAIA,IAAIrvG,eAAezK,CAAI,GAAA;AAAA,iBACnBnE,KAAKo9G,aAAaa,IAAI95G,CAAGpE,EAAAA,EAAAA;AAChCC,eAAKgrB,YAAYizF,IAAI95G,GAAGpE,IAAI,IAAA;AAAA,QAC5B;AAAA,MACD;AACMC,aAAAA,KAAKm9G,kBAAkBp9G,GAAAA;AAG9B,UAAIm+G,eAAe;AACnB,eAASlvG,IAAI,GAAGA,IAAIhP,KAAK2zC,UAAUvvC,QAAQ4K,KAAK;AAC/C,YAAIhP,KAAK2zC,UAAU3kC,CAAAA,EAAGvK,aAAazE,KAAK0B,OAAOwC,eAAoBnE,KAAAA;AAClEm+G,yBAAe;AAAA,MAChB;AACD,WAAKA;AACJl+G,aAAK6oB,aAAa;AAAA,IACnB;AACD,WAAO;AAAA,EACR;AACAlpB,EAAAA,WAAUiG,YAAY,gBAAgB,SAAS7F,KAAAA;AAC9C,SAAKC,KAAKmsB,UAAU;AACnB,UAAI3lB,KAAKxG,KAAK8F,SAAS/F;AACvB,UAAIyG,GAAGoD,aAAapD,GAAG+kE,cAAa;AACnCvrE,aAAKktE,iBAAiB1mE,EACtB;AAAA,MAAA;AAAA,IACD;AACD,WAAO;AAAA,EACR;AACA7G,EAAAA,WAAUiG,YAAY,eAAe,SAAS7F,KAAI0R,MAAMg4E,cAAAA;AACvD,QAAIjjF,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,QAAA,CAAKyG,GAAGoD,YAAY6H,KAAK7H,YAAa5J,CAAAA,KAAKwxD,kBAAkBzxD,GAC5DC;AAAAA,WAAK6oB,aAAa;AACnB,WAAO;AAAA,EACR,CAAA;AACAlpB,EAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAChD;AAAA,QAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,QAAA,CAAKyG,GAAGoD;AACPpD,SAAGoD,WAAWpD,GAAGmrD,cAAcnrD,GAAG+kE,eAAe/kE,GAAG6kE,YAAY;AACjE,WAAO;AAAA,EACR,CAAA;AACA1rE,EAAAA,WAAUiG,YAAY,iBAAiB,SAAS7F,KAC/C;AAAA,QAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,QAAIyG,GAAGoD,UAAU;AAChB5J,WAAKktE,iBAAiB1mE,EAAAA;AAEtBxG,WAAK2X,iBAAAA;AAAAA,IACL;AAAA,EACF,CACAhY;AAAAA,EAAAA,WAAUutE,mBAAmB,SAAS1mE,IAAAA;AACrC,QAAGA,GAAGzD,YAAW;AAChByD,SAAGzD,aAAa05G,kBAAkBj2G,GAAGzD;IACrC;AACD,QAAGyD,GAAGxD,UAAS;AACdwD,SAAGxD,WAAWy5G,kBAAkBj2G,GAAGxD,QAAAA;AAAAA,IACnC;AACDwD,OAAG+kE,eAAep6D,KAAKI,OAAO/K,GAAGxD,SAAS+B,QAAAA,IAAYyB,GAAGzD,WAAWgC,QAAAA,KAAa;AACjFyB,OAAGxD,WAAWwD,GAAGqD;AACjB,QAAIrD,GAAG23G,aAAa;AACnB33G,SAAGzD,WAAWsqC,SAAS,CACvB7mC;AAAAA,SAAGzD,WAAWoqC,QAAQ3mC,GAAG23G,YAAY/0G,QAAAA,CAAAA;AACrC5C,SAAGzD,WAAWsqC,SAAS7mC,GAAG23G,YAAYvlG,SAAAA,CAAAA;AACtCpS,SAAGzD,WAAW4+D,YAAYn7D,GAAG23G,YAAYxlG;IAEzC;AAAA,EACF;AAEAhZ,EAAAA,WAAU6xD,oBAAoB,SAASzxD;AACtC,WAAOA,IAAGuY,SAAWvG,EAAAA,QAAQ;EAC9B;AACApS,EAAAA,WAAUq+G,yBAAyB,SAASx3G;AAC3C,WAAQA,GAAG6kE,aAAa7kE,GAAG6kE,aAAa;AAAA,EACzC;AAEA1rE,EAAAA,WAAUy+G,mBAAmBz+G,WAAU2rB;AACvC3rB,EAAAA,WAAU2rB,eAAe,SAASvrB,KAAAA;AACjC,QAAI2nB,SAAS1nB,KAAK0nB;AAClB,QAAIhe,IAAI/J,WAAU+B,OAAO28G;AACzB,QAAI73G,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,QAAIu+G,MAAM93G,GAAG6kE;AACb,QAAIkzC,YAAYv+G,KAAKwxD,kBAAkBzxD;AACvC,QAAIw+G;AACHD,YAAMv+G,IAAGuF,MAAM,KAAK,CAGrB;AAAA,QAAIk5G,aAAa,SAASz+G;AACzB,UAAIyB,SAAQ7B,WAAUmG,SAAS/F,GAAAA;AAC/ByB,MAAAA,OAAMqI,YAAYrI,OAAMwB;AACxBxB,MAAAA,OAAMwB,WAAW,IAAIwB,KAAKhD,OAAMuB,WAAWgC,QAAAA,IAAYvD,OAAM+pE,eAAe,GAAA;AAC5E,aAAO5rE,WAAUy+G,iBAAiBr+G,GACpC;AAAA,IAAA;AAEC,SAAMu+G,OAAOA,MAAI,MAAM,MAAM93G,GAAGoD,UAAU;AAEzC,aAAO40G,WAAWz+G,GAAAA;AAAAA,IAClB;AACD,QAAMu+G,CAAAA,OAAOA,QAAQ,QAAW52F,CAAAA,OAAOC,OAAOu0C,qBAAqBxyD,KAAK,cAAgBA,KAAK,aAAa60G,YAAc;AAEvH,aAAOv+G,KAAKo+G,iBAAiBr+G,GAC7B;AAAA,IAAA;AACD,QAAI2J,KAAK,OAAO;AACf,UAAIqtD,OAAO/2D;AACXL,MAAAA,WAAU87D,SAAS,EAClB30D,MAAM4gB,OAAOC,OAAOu0C,mBACpBpxC,OAAOpD,OAAOC,OAAO82F,yBACrB1tG,OAAO,SACP9D,UAAU,UACV8c,SAAQ,CAACrC,OAAOC,OAAO20C,oBAAoB50C,OAAOC,OAAO40C,wBAAwB70C,OAAOC,OAAOo0C,WAAAA,GAC/F90D,UAAU,SAASqI,OAAAA;AAClB,iBAAQA,OACP;AAAA,UAAA,KAAK;AACJ,mBAAOkvG,WAAWF,GACnB;AAAA,UAAA,KAAK;AACJ,mBAAOvnD,KAAKqnD,iBAAiBr+G,GAC9B;AAAA,UAAA,KAAK;AACJ;AAAA,QAEF;AAAA,MAAA,EAAA,CAAA;AAAA,IAEJ,OAAQ;AACNy+G,iBAAWF,GACX;AAAA,IAAA;AAAA,EACF;AAGA3+G,EAAAA,WAAUi/G,yBAAyBj/G,WAAU80C;AAC7C90C,EAAAA,WAAU80C,qBAAqB,SAASC;AACvC,aAASvwC,IAAI,GAAGA,IAAInE,KAAKk9G,UAAU94G,QAAQD;AACnCnE,aAAAA,KAAKmzC,QAAQnzC,KAAKk9G,UAAU/4G,GAAGpE,EACvCC;AAAAA,SAAKk9G,YAAY,CAEjB;AAAA,QAAIvoE,QAAQ30C,KAAK4+G,uBAAuBlqE,UACxC;AAAA,QAAI6E,MAAM,CACV;AAAA,aAASp1C,IAAI,GAAGA,IAAIwwC,MAAMvwC,QAAQD,KAAK;AACtC,UAAIwwC,MAAMxwC,CAAAA,EAAGyF,UAAU;AAEtB,YAAI+qC,MAAMxwC,CAAAA,EAAGwtD,eAAe;AAC3B3xD,eAAK6+G,YAAYlqE,MAAMxwC,CAAAA,GAAIo1C;MAC5B;AACIA,YAAI11C,KAAK8wC,MAAMxwC;IACpB;AACD,WAAOo1C;AAAAA,EACR;AAGA,GAAA,WAAA;AACC,QAAIzM,MAAMntC,WAAU0K;AACpB1K,IAAAA,WAAU0K,gBAAgB,SAAS7D,IAAAA;AAClC,UAAIA,GAAGoD;AAAU,eAAO;AACxB,aAAOkjC,IAAI12B,KAAKpW,MAAMwG,EACxB;AAAA,IAAA;AACC,QAAIs4G,mBAAmBn/G,WAAUiY;AACjCjY,IAAAA,WAAUiY,cAAc,SAAS7X,KAAAA;AAChC,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAC5B;AAAA,UAAGyG,MAAMA,GAAGoD,UAAS;AAGpBpD,WAAGmrD,eAAenrD,GAAGoD,YAAY,IAAItE,MAAM,GAAA,EAAK;MAChD;AACD,UAAIkB,MAAMA,GAAGoD,aAAa5J,KAAKwxD,kBAAkBzxD,MAAK;AACrDJ,QAAAA,WAAUiyB;MACb,OAAS;AACNktF,yBAAiB1oG,KAAKpW,MAAMD,GAC5B;AAAA,MAAA;AAAA,IACH;AAAA,EACC,GApBD;AAsBAJ,EAAAA,WAAU6mH,kBAAkB,EAC3BhnH,KAAI,GAAGg/F,MAAK,GAAGx9D,OAAM,GAAG7lB,MAAK;AAE9Bxb,EAAAA,WAAUwD,KAAKsjH,WAAW,SAAS1wF,IAAIv2B,KAAKg/F,MAAAA;AAC3CzoE,OAAGoX,QAAQ,CAAA;AACX,QAAIu5E,gBAAgB/mH,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKuxB,EAAAA,CAAAA;AACxDyoE,YAAQA,OAAO,KAAK;AACpB,QAAImoB,OAAO5wF,GAAGhtB,OAAAA;AACd,QAAIimC,OAAOxvC,MAAM,IAAIg/F,OAAOmoB,OAAO;AACnC5wF,OAAGoX,QAAQ6B,QAAQwvD,OAAQxvD,OAAO,IAAKA,IAAAA;AACvC,QAAI43E,WAAWjnH,WAAUwD,KAAK+pC,YAAY,IAAI1oC,KAAKuxB,EAAAA,CAAAA;AACnD,QAAG2wF,cAAc3hH,QAAAA,MAAc6hH,SAAS7hH,QAAU,GAAA;AACjD,aAAO;AAAA,IACP;AACD,WAAO;AAAA,EACR;AACApF,EAAAA,WAAUkmH,qBAAqB,SAAS9vF,IAAI5S,MAAM0jG,KAAK75G,MAAM85G,MAAAA;AAC5D,QAAIH,QAAQ5wF,GAAGhtB,OAAapJ,MAAAA,WAAU+B,OAAOurC,kBAAkB,IAAI,MAAM45E;AACzE,aAAS1iH,IAAI,GAAGA,IAAIgf,KAAK/e,QAAQD,KAAK;AACrC,UAAIgf,KAAKhf,CAAAA,IAAKwiH;AACb,eAAO5wF,GAAGoX,QAAQpX,GAAG3sB,YAAY+Z,KAAKhf,CAAAA,IAAK,IAAIwiH,QAAQ35G,OAAO65G,MAAMC,KAAAA;AAAAA,IACrE;AACD9mH,SAAK6lH,mBAAmB9vF,IAAI5S,MAAM0jG,MAAM75G,MAAM,MAAM65G,GAAAA;AAAAA,EACrD;AACAlnH,EAAAA,WAAU0lH,iBAAiB,SAASr+G,MAAAA;AACnC,QAAI+/G,qBAAqB,eAAe//G;AACxC,QAAKhH,CAAAA,KAAKmD,KAAK4jH,kBAAAA,GAAqB;AACnC,UAAIC,iBAAiBhgH,KAAK1B,MAAM,GAAA;AAChC,UAAI2hH,gBAAgB,KAAK,KAAK,KAAK;AACnC,UAAIC,eAAe,SAASlgH;AAC5B,UAAImgH,oBAAoBnnH,KAAKwmH,gBAAgBQ,eAAe,CAAA,CAAA,IAAMA,eAAe,CAEjF;AAAA,UAAIA,eAAe,CAAM,KAAA,SAASA,eAAe,CAAM,KAAA,QAAQ;AAC9D,YAAII,WAAW;AACf,YAAIJ,eAAe,CAAI,GAAA;AACtBI,qBAAWJ,eAAe,CAAA,EAAG1hH,MAAM,GAAA;AACnC,cAAI3F,WAAU+B,OAAOurC,iBAAiB;AACrC,qBAAS9oC,IAAI,GAAGA,IAAIijH,SAAShjH,QAAQD;AACpCijH,uBAASjjH,KAAMijH,SAASjjH,CAAAA,IAAK,KAAM;AACpCijH,qBAAS5iF,KACT;AAAA,UAAA;AAAA,QACD;AAEDxkC,aAAKmD,KAAK4jH,sBAAsB,SAAS19B,IAAIxD;AAC5C,cAAIn2E,QAAQyB,KAAK8D,OAAO4wE,GAAG9gF,QAAYskF,IAAAA,GAAGtkF,cAAckiH,gBAAgBE,kBAAAA;AACxE,cAAIz3G,QAAQ;AACX25E,eAAGl8C,QAAQk8C,GAAGjgF,QAAYsG,IAAAA,QAAQy3G;AACnC,cAAIC;AACHznH,YAAAA,WAAUkmH,mBAAmBx8B,IAAI+9B,UAAU,GAAGD;AAE/C,iBAAO99B;AAAAA,QACX;AACGrpF,aAAKmD,KAAK+jH,gBAAgB,SAASnxF,IAAIwX,KACtC;AAAA,cAAI87C,KAAK,IAAI7kF,KAAKuxB,GAAGhxB,QACrB,CAAA;AAAA,cAAIqiH,UAAU;AACb,qBAASlyF,QAAQ,GAAGA,QAAQqY,KAAKrY;AAChCv1B,cAAAA,WAAUkmH,mBAAmBx8B,IAAI+9B,UAAU,GAAGD,iBAC/C;AAAA,UAAA;AACA99B,eAAGl8C,QAAQk8C,GAAGjgF,YAAYmkC,MAAM45E,iBAAAA;AAEjC,iBAAO99B;AAAAA,QACX;AAAA,MACG,WACQ29B,eAAe,CAAM,KAAA,WAAWA,eAAe,CAAM,KAAA,QAAQ;AACrEhnH,aAAKmD,KAAK4jH,kBAAsB,IAAA,SAAS19B,IAAIxD,IAAIwhC,gBAAAA;AAChD,cAAI33G,QAAQyB,KAAKyb,MAAOi5D,GAAGltE,YAAAA,IAAgB,KAAKktE,GAAGjtE,aAAa,IAAI,KAAMywE,GAAG1wE,YAAgB,IAAA,KAAK0wE,GAAGzwE,SAAa,IAAA,IAAI,MAAE,oBAA0B;AAElJ,cAAIlJ,SAAS,GAAE;AACd25E,eAAGl8C,QAAQ,CACXk8C;AAAAA,eAAGh8C,SAASg8C,GAAGzwE,aAAalJ,QAAQy3G,iBAAAA;AAAAA,UACpC;AAED,iBAAOxnH,WAAUwD,KAAK+jH,YAAc79B,EAAAA,IAAI,GAAGg+B,cAAAA;AAAAA,QAI/C;AACGrnH,aAAKmD,KAAK+jH,gBAAgB,SAASnxF,IAAIwX,KAAK85E,gBAAgBC,cAAAA;AAC3D,cAAIA,CAAAA,cAAa;AAChBA,2BAAe;AAAA,UACpB,OAAS;AACJA;AAAAA,UACA;AACD,cAAIrI,WAAW;AACf,cAAGqI,eAAerI,UAAS;AAC1B,mBAAO;AAAA,UACP;AAED,cAAI51B,KAAK,IAAI7kF,KAAKuxB,GAAGhxB;AACrBskF,aAAGl8C,QAAQ;AAGXk8C,aAAGh8C,SAASg8C,GAAGzwE,SAAa20B,IAAAA,MAAM45E,iBAClC;AAAA,cAAII,YAAYl+B,GAAGzwE,SAAAA;AACnB,cAAI4uG,WAAWn+B,GAAG1wE;AAClB0wE,aAAGl8C,QAAQk6E,eAAetkH,WAAWqG;AACrC,cAAI49G,eAAe,IAAG;AACrBrnH,YAAAA,WAAUwD,KAAKsjH,SAASp9B,IAAI29B,eAAe,CAAA,GAAIA,eAAe,CAC9D,CAAA;AAAA,UAAA;AAED,cAAIS,2BAA2B9nH,WAAU+B,OAAOgmH;AAChD,cAAGr+B,GAAGzwE,SAAAA,KAAc2uG,aAAaE,4BAA4B,QAAO;AAEnE,gBAAGA,6BAA6B,WAAU;AAEzCp+B,mBAAK,IAAI7kF,KAAKgjH,UAAUD,YAAY,GAAG,GAAGl+B,GAAGh9E,SAAAA,GAAYg9E,GAAG17E,WAAc07E,GAAAA,GAAGp9C,WAAco9C,GAAAA,GAAGkc;YACpG,OAAU;AAEJlc,mBAAK1pF,WAAUwD,KAAK+jH,cAAc,IAAI1iH,KAAKgjH,UAAUD,YAAY,GAAG,CAAIh6E,GAAAA,OAAK,GAAG85E,gBAAgBC,YAAAA;AAAAA,YAEhG;AAAA,UACD;AACD,iBAAOj+B;AAAAA,QACX;AAAA,MACG;AAAA,IACD;AAAA,EACF;AACA1pF,EAAAA,WAAUk/G,cAAc,SAASr4G,IAAImuC,OAAOqqE,YAAYhqF,MAAMC,IAAIgqF;AAEjEjqF,WAAOA,QAAQh1B,KAAKoM;AACpB6oB,SAAKA,MAAMj1B,KAAKmM;AAChB,QAAIoC,MAAM0wG;AACV,QAAIp5B,KAAK,IAAIrhF,KAAKgC,GAAGzD,WAAWgC,QAAAA,CAAAA;AAEhC,QAAI4iH,YAAY9hC,GAAGx5E,SAEnB;AAAA,QAAIkzG,eAAe;AAEnB,QAAA,CAAK/4G,GAAGmrD,eAAenrD,GAAGoD;AACzBpD,SAAGmrD,cAAcnrD,GAAGoD,SAAStE,MAAM,GAAK,EAAA,CAAA;AAEzCtF,SAAKqlH,eAAe7+G,GAAGmrD,WACvBk0B;AAAAA,SAAKlmF,WAAUwD,KAAK,eAAeqD,GAAGmrD,WAAak0B,EAAAA,IAAI7wD,MAAMxuB,EAC7D;AAAA,WAAQq/E,OACPA,KAAKr/E,GAAGzD,cACRpD,WAAU+/G,0BAA0B75B,IAAG7wD,MAAKxuB,IAAGq/E,IAAG,IAAIrhF,KAAKqhF,GAAG9gF,YAAYyB,GAAG+kE,eAAe,MAAOxmE,QAAaiwB,KAAAA,KAAKjwB,aACrH8gF,GAAG9gF,QAAAA,IAAYyB,GAAG+kE,eAAe,OAAQv2C,KAAKjwB,QAAAA,IAAW;AACxD8gF,WAAK7lF,KAAKmD,KAAK,SAASqD,GAAGmrD,WAAak0B,EAAAA,IAAI,GAAGr/E,EAEhD;AAAA,IAAA;AACD,WAAOq/E,OAAOA,KAAK5wD,MAAM4wD,KAAKr/E,GAAGxD,aAAauL,MAAM,KAAKgxG,eAAehxG,OAAO;AAC9Es3E,SAAGp7E,SAASk9G;AAEZ,UAAIv5F,YAAazuB,WAAU+B,OAAkC,8BAAI8C,KAAKioC,IAAIo5C,GAAGltE,YAAektE,GAAAA,GAAGjtE,YAAYitE,GAAGz8E,QAAAA,GAAWy8E,GAAGx5E,SAAAA,GAAYw5E,GAAGl4E,WAAck4E,GAAAA,GAAG55C,gBAAgB45C,GAAG9gF,QAAAA;AAC/K,UAAIw4G,KAAKv9G,KAAKs9G,gBAAgBlvF,WAAW5nB,GAAGzG,EAC5C;AAAA,UAAA,CAAKw9G,IAAI;AACR,YAAIqK,MAAM,IAAIpjH,KAAKqhF,GAAG9gF,QAAAA,IAAYyB,GAAG+kE,eAAe,GAAA;AACpD,YAAI7kE,QAAO1G,KAAK84C,YAAYtyC,EAE5BE;AAAAA,QAAAA,MAAKI,OAAON,GAAGM;AACfJ,QAAAA,MAAK3D,aAAa8iF;AAClBn/E,QAAAA,MAAK2kE,YAAY7kE,GAAGzG;AACpB2G,QAAAA,MAAK3G,KAAKyG,GAAGzG,KAAK,MAAMoR,KAAKI,MAAM6c,YAAY,GAAA;AAC/C1nB,QAAAA,MAAK1D,WAAW4kH;AAEhBlhH,QAAAA,MAAK1D,WAAWrD,WAAU+/G,0BAA0Bh5G,MAAK3D,YAAY2D,MAAK1D,UAAUwD,IAAIq/E,IAAIn/E,MAAK1D,QAEjG0D;AAAAA,QAAAA,MAAK0D,SAASpK,KAAKqK,cAAc3D;AAEjC,YAAKA,CAAAA,MAAK0D,WAAWpK,KAAK2M,eAAAA,CAAgB3M,KAAK0B,OAAO61B;AAAW;AACjEod,cAAM9wC,KAAK6C,KAEX;AAAA,YAAA,CAAKs4G,YAAY;AAChBh/G,eAAKmzC,QAAQzsC,MAAK3G,MAAM2G;AACxB1G,eAAKk9G,UAAUr5G,KAAK6C,KAAAA;AAAAA,QACpB;AAED64G;AAAAA,MAEA,WACGP,YAAW;AACd,YAAGzB,GAAG3zG,YAAY,QAAO;AACxB21G;AAAAA,QACA;AACD5qE,cAAM9wC,KAAK05G,EAAAA;AAAAA,MACX;AAED13B,WAAK7lF,KAAKmD,KAAK,SAASqD,GAAGmrD,aAAak0B,IAAI,GAAGr/E,EAI/C;AAAA,IAAA;AAAA,EACF;AACA7G,EAAAA,WAAU+/G,4BAA4B,SAAS38G,YAAYC,UAAUwD,IAAI8oD,SAAShgB,cACjF;AAAA,QAAIpe,QAAQnuB,WAAW6rB,kBAAAA,IAAsB5rB,SAAS4rB,kBACtD;AAAA,QAAIsC,OAAO;AACV,UAAIA,QAAQ,GAAG;AAEd,eAAO,IAAI1sB,KAAK8qD,QAAQvqD,QAAAA,IAAYyB,GAAG+kE,eAAe,MAAOr6C,QAAQ,KAAK;MAC1E,OACI;AAEJ,eAAO,IAAI1sB,KAAKxB,SAAS+B,QAAYmsB,IAAAA,QAAQ,KAAK,GAAA;AAAA,MAClD;AAAA,IACD;AACD,WAAO,IAAI1sB,KAAK8qC,aAAavqC;EAC9B;AACApF,EAAAA,WAAU2tE,cAAc,SAASvtE,KAAIwO,KACpC;AAAA,QAAI/H,YAAYzG,OAAM,WAAWA,MAAKJ,WAAUmG,SAAS/F,GACzD;AAAA,QAAI4/G,aAAa,CACjBpxG;AAAAA,UAAMA,OAAO;AAEb,QAAA,CAAK/H,GAAGoD,UAAU;AACjB,aAAO,CACN,EAAE7G,YAAYyD,GAAGzD,YAAYC,UAAUwD,GAAGxD;IAE3C;AACD,QAAIwD,GAAGoD,YAAY,QAAQ;AAC1B,aAAO;IACP;AAEDjK,IAAAA,WAAUk/G,YAAYr4G,IAAIm5G,YAAY,MAAMn5G,GAAGzD,YAAYyD,GAAGxD,UAAUuL;AAExE,QAAI0K,SAAS;AACb,aAAQ9U,IAAI,GAAGA,IAAIw7G,WAAWv7G,QAAQD,KAAI;AACzC,UAAGw7G,WAAWx7G,CAAGyF,EAAAA,YAAY,QAAO;AACnCqP,eAAOpV,KAAK,EAACd,YAAY48G,WAAWx7G,CAAAA,EAAGpB,YAAYC,UAAU28G,WAAWx7G,CAAGnB,EAAAA,SAAAA,CAAAA;AAAAA,MAC3E;AAAA,IACD;AAED,WAAOiW;AAAAA,EACR;AACAtZ,EAAAA,WAAUo2C,YAAY,SAAS/gB,MAAMC,IACpC;AAAA,QAAIhc,SAAS,CACb;AAAA,aAASkD,KAAKnc,KAAKmzC,SAAS;AAC3B,UAAI3sC,KAAKxG,KAAKmzC,QAAQh3B,CACtB;AAAA,UAAI3V,MAAMA,GAAGzD,aAAakyB,MAAMzuB,GAAGxD,WAAWgyB,MAAM;AACnD,YAAIxuB,GAAGmrD,aAAa;AACnB,cAAInrD,GAAGmrD,eAAe;AAAQ;AAC9B,cAAIiuD,MAAM;AACV5/G,eAAK6+G,YAAYr4G,IAAIo5G,KAAK,MAAM5qF,MAAMC,EACtC;AAAA,mBAAS9wB,IAAI,GAAGA,IAAIy7G,IAAIx7G,QAAQD,KAAK;AAEpC,iBAAKy7G,IAAIz7G,CAAAA,EAAGwtD,eAAeiuD,IAAIz7G,GAAGpB,aAAakyB,MAAM2qF,IAAIz7G,CAAGnB,EAAAA,WAAWgyB,SAASh1B,KAAKo9G,aAAawC,IAAIz7G,CAAAA,EAAGpE,KAAK;AAC7GkZ,qBAAOpV,KAAK+7G,IAAIz7G,CAAAA,CAAAA;AAAAA,YAChB;AAAA,UACD;AAAA,QACD,WAAWnE,CAAAA,KAAKwxD,kBAAkBhrD,GAAGzG,EAAAA,GAAK;AAC1CkZ,iBAAOpV,KAAK2C;QACZ;AAAA,MACD;AAAA,IACD;AACD,WAAOyS;AAAAA,EACR;AAEAtZ,EAAAA,WAAU+B,OAAOm9G,cAAc;AAC/Bl/G,EAAAA,WAAU+B,OAAOi4B,SAAS92B,WAAW,CACpC,EAACuX,MAAK,eAAehY,QAAO,QAAQ4E,MAAK,YAAaszB,OAAM,KAAA,GAC5D,EAAClgB,MAAK,aAAapT,MAAK,aAAa5E,QAAO,YAAY+a,QAAO,eAC/D,EAAC/C,MAAK,QAAQtJ,QAAO,IAAI9J,MAAK,QAAQ5E,QAAO,OAK9CzC,CAAAA;AAAAA,EAAAA,WAAUw6C,cAAc,SAAS3zC,IAAAA;AAChC,QAAIzD,aAAa,IAAIyB,KAAKxE,KAAK+C;AAC/B,QAAIC,WAAW,IAAIwB,KAAKxE,KAAKgD,QAC7BhD;AAAAA,SAAK+C,aAAaA;AAClB/C,SAAKgD,WAAWA;AAChBhD,SAAKurE,eAAevrE,KAAKqrE,YAAYrrE,KAAK2xD,cAAc3xD,KAAK4J,WAAW;AAAA,EACzE;AAEAjK,EAAAA,WAAU+B,OAAOo+G,iBAAiB;AAClCngH,EAAAA,WAAU+B,OAAO28G,qBAAqB;AAEtC1+G,EAAAA,WAAUiG,YAAY,cAAc,WACnCjG;AAAAA,IAAAA,WAAUy9G,eAAe;AACzBz9G,IAAAA,WAAUw9G,oBAAoB;AAC9Bx9G,IAAAA,WAAUu9G,YAAY,CACvB;AAAA,EAAA,CAAA;AAEA;ACryCe,SAAQp1E,UAACnoC,YAGxB;AAAA,QAAM6iD,sBAAsBnB,gBAAgB1hD,UAAAA;AAG5CA,EAAAA,WAAUkoH,kBAAgB,WAAA;AACzB,QAAIjpF,QAAQ,CAAA;AACZ,QAAIoM,SAASrrC,WAAU8xC,SAASG;AAChC,QAAIk2E,aAAatlE,oBAAAA;AACjB,aAASrmC,KAAK2rG,YAAW;AACxB,UAAIthH,KAAKshH,WAAW3rG;AACpB,eAAS/B,QAAQ5T;AAChB,YAAI4T,KAAK4mC,OAAO,GAAE,CAAK,KAAA;AACtBpiB,gBAAM/6B,KAAK,CAACuW,MAAOA,QAAQ,gBAAgBA,QAAQ,aAAY4wB,SAAO,IACxE,CAAA;AAAA;AAAA,IACA;AACD,WAAOpM;AAAAA,EACR;AAEAj/B,EAAAA,WAAU++F,QAAQ,SAAS56E,QAAAA;AAC1B,QAAI4kB,MAAM,CAAA;AACV,QAAI9J,QAAQ5+B,KAAK6nH;AACjB,QAAIC,aAAatlE,oBACjB;AAAA,aAASrmC,KAAK2rG,YAAW;AACxB,UAAIthH,KAAKshH,WAAW3rG,CAEpBusB;AAAAA,UAAI7kC,KAAK,SAAA;AACT,eAASM,IAAE,GAAGA,IAAIy6B,MAAMx6B,QAAQD;AAC/BukC,YAAI7kC,KAAK,MAAI+6B,MAAMz6B,CAAG,EAAA,CAAA,IAAG,gBAAcy6B,MAAMz6B,CAAAA,EAAG,KAAGy6B,MAAMz6B,CAAAA,EAAG,CAAGqC,EAAAA,GAAGo4B,MAAMz6B,CAAG,EAAA,CAAA,CAAA,CAAA,IAAKqC,GAAGo4B,MAAMz6B,CAAAA,EAAG,OAAK,UAAQy6B,MAAMz6B,CAAG,EAAA,CAAA,IAAG;AAEtHukC,UAAI7kC,KAAK;IACT;AACD,YAAQigB,UAAQ,MAAI,WAAS4kB,IAAI54B,KAAK,QAAM;AAAA,EAC7C;AAEAnQ,EAAAA,WAAUooH,wBAAwB,SAAS1pG;AAC1C,QAAGA,UAAU,QAAeA,OAAAA,UAAU,WAAU;AAC/CA,cAAQ,KAAKA;AAAAA,IACf,OAAM;AACJ,UAAIA,CAAAA,SAASA,UAAU,GAAE;AACxBA,gBAAQ;AAAA,MACR;AACDA,cAAQ,MAAMA,MAAM/F,SACnB0R,EAAAA,QAAQ,OAAM,EAAA,EACdA,QAAQ,OAAM,MAAA,EACdA,QAAQ,MAAM,KAAA,IAAS;AAAA,IACxB;AACD,WAAO3L;AAAAA,EACR;AAIA1e,EAAAA,WAAUs6F,SAAS,WAAA;AAClB,WAAOv1E,KAAKC,UAAU3kB,KAAK8nC,UAC5B,CAAA;AAAA,EAAA;AAGAnoC,EAAAA,WAAUqoH,SAAS,SAASlkG,QAC3B;AAAA,QAAIvU,QAAQ;AACZ,QAAIC,MAAM;AACV,QAAIw7B,SAASrrC,WAAUwD,KAAK2qC,YAAY,eAAA;AACxC,QAAIm6E,kBAAkBtoH,WAAUwD,KAAK2qC,YAAY,QAAA;AAEjD,QAAIuS,OAAO;AACX,QAAIynE,aAAatlE;AACjB,aAASrmC,KAAK2rG,YAAW;AACxB,UAAIthH,KAAKshH,WAAW3rG,CAGpBkkC;AAAAA,WAAKx8C,KAAK,cACV;AAAA,UAAA,CAAK2C,GAAG4D,UAAY5D,CAAAA,GAAGzD,WAAWsJ,SAAAA,KAAAA,CAAe7F,GAAGzD,WAAW4K,WAAAA;AAC9D0yC,aAAKx8C,KAAK,aAAWokH,gBAAgBzhH,GAAGzD,UAAAA,CAAAA;AAAAA;AAExCs9C,aAAKx8C,KAAK,aAAWmnC,OAAOxkC,GAAGzD;AAChC,UAAKyD,CAAAA,GAAG4D,WAAY5D,GAAGxD,SAASqJ,SAAe7F,KAAAA,CAAAA,GAAGxD,SAAS2K,WAC1D0yC;AAAAA,aAAKx8C,KAAK,WAASokH,gBAAgBzhH,GAAGxD,QAEtCq9C,CAAAA;AAAAA;AAAAA,aAAKx8C,KAAK,WAASmnC,OAAOxkC,GAAGxD,QAAAA,CAAAA;AAC9Bq9C,WAAKx8C,KAAK,aAAW2C,GAAGM,IACxBu5C;AAAAA,WAAKx8C,KAAK,YAAA;AAAA,IACV;AACD,WAAO0L,SAAOuU,UAAQ,MAAI,OAAKu8B,KAAKvwC,KAAK,IAAA,IAAM,OAAKN;AAAAA,EACrD;AAEA;ACpFe,SAAQ04G,oBAACvoH,YACvB8wE;AAAAA,iBAAel0D,MAAM,YAAY5c,WAAU8a,MAC5C;AAAA;ACQO,MAAM0tG,QAKZ;AAAA,EAAA,YAAYxoH,YACXK;AAAAA,SAAKooH,aAAazoH;AAAAA,EACnB;AAAA,EAEA,UAAA27E;AACC,UAAM37E,aAAYK,KAAKooH;AACnB,QAACpoH,CAAAA,KAAKqoH,cAAa;AACjBroH,WAAAqoH,eAAexoH,SAASC,cAAc,KAC3CE;AAAAA,WAAKqoH,aAAax3G,YAAY;AAEpBlR,MAAAA,WAAAioB,SAAS+Z,YAAY3hC,KAAKqoH,YAAAA;AAAAA,IACrC;AACG,QAAA1oH,WAAU+B,OAAOkjB,KAAI;AAClB5kB,WAAAqoH,aAAa3rG,UAAUtZ,IAAI,mBAAA;AAAA,IAAmB,OAC9C;AACApD,WAAAqoH,aAAa3rG,UAAU8X,OAAO;IACpC;AACA,WAAOx0B,KAAKqoH;AAAAA,EACb;AAAA,EAEA,YAAYvhG;AACX9mB,SAAKsoH,QAAQxhG;AACN,WAAA9mB;AAAAA,EACR;AAAA,EAIA,KAAKwC,MAA2BD,KAAAA;AAC/B,UAAM5C,aAAYK,KAAKooH;AACvB,UAAMzuD,aAAah6D,WAAU8tB;AAC7B,UAAMjiB,YAAY3L,SAASM;AACrB,UAAA2mB,OAAO9mB,KAAKs7E,QAElB;AAAA,QAAA,CAAI3hB,WAAWxzB,UAAUrf,MAAMtb,SAAW,GAAA;AACzCxL,WAAK6L,KAAAA;AACLL,gBAAUpL,YAAY0mB,IAAAA;AAAAA,IACvB;AAEI,QAAA9mB,KAAKuoH,kBAAkB/lH,IAAAA,GAAO;AAC3B,YAAAyK,WAAWjN,KAAKwoH,0BAA0BhmH,IAAAA;AAChDD,YAAM0K,SAAS1K;AACfC,aAAOyK,SAASzK;AAAAA,IACjB;AAEKskB,SAAAxkB,MAAMC,MAAMA,MAAM;AAClBukB,SAAAxkB,MAAME,OAAOA,OAAO;AAEf7C,IAAAA,WAAAioB,SAASga,mBAAmB9a,IAC/B;AAAA,WAAA9mB;AAAAA,EACR;AAAA,EACA,OACC;AAAA,UAAML,aAAYK,KAAKooH;AACjB,UAAAthG,OAAO9mB,KAAKs7E,QACf;AAAA,QAAAx0D,QAAQA,KAAKrZ,YAAW;AACrBqZ,WAAArZ,WAAWC,YAAYoZ,IAC7B;AAAA,IAAA;AACUnnB,IAAAA,WAAAioB,SAASia,kBAAkB/a,IAC9B;AAAA,WAAA9mB;AAAAA,EACR;AAAA,EAEA,WAAWkD,MACJ;AAAA,UAAA4jB,OAAO9mB,KAAKs7E;AAClBx0D,SAAK5mB,YAAYgD;AACV,WAAAlD;AAAAA,EACR;AAAA,EAGQ,kBAAkBwB,QACzB;AAAA,QAAA,CAAKA,iBAAgBA,WAAU,UAAU;AACjC,aAAA;AAAA,IACR;AACO,WAAA,aAAaA,UAAS,aAAaA;AAAAA,EAC3C;AAAA,EAEQ;AACA,WAAAxB,KAAKsoH,SAASzoH,SAASM;AAAAA,EAC/B;AAAA,EAGQ,0BAA0BqB,QACjC;AAAA,UAAM7B,aAAYK,KAAKooH;AACvB,UAAMzuD,aAAah6D,WAAU8tB;AAEvB,UAAAg7F,WAAYzoH,KAAK0oH,iBAAAA;AACjB,UAAAC,cAAc3oH,KAAKs7E;AACzB,UAAM0T,WAAoB,EACzBzsF,KAAI,GACJC,MAAM,GACNuO,OAAO43G,YAAY3nG,aACnBlQ,QAAQ63G,YAAY7nG,cACpBohB,QAAQ,GACRrb,OAAO,EAGF;AAAA,UAAA+hG,UAAUjpH,WAAU+B,OAAOmnH;AAC3B,UAAAC,UAAUnpH,WAAU+B,OAAOqnH;AAEjC,UAAMv9G,YAAY3L,SAASM;AAC3B,UAAM6oH,QAAQrvD,WAAWj3B,yBAAyBlhC,QAAOgK,SAAAA;AACnD,UAAAy9G,eAAetvD,WAAWh3B,gBAAgBn3B,SAChDw9G;AAAAA,UAAMhiG,KAAKiiG,aAAajiG;AAExBgoE,IAAAA,SAAQzsF,MAAMymH,MAAMhiG;AACpBgoE,IAAAA,SAAQxsF,OAAOwmH,MAAMjiG;AACrBioE,IAAAA,SAAQzsF,OAAOumH;AACf95B,IAAAA,SAAQxsF,QAAQomH;AACR55B,IAAAA,SAAA9sD,SAAS8sD,SAAQzsF,MAAMysF,SAAQl+E;AAC/Bk+E,IAAAA,SAAAnoE,QAAQmoE,SAAQxsF,OAAOwsF,SAAQj+E;AAEjC,UAAAuc,YAAYrsB,OAAOioH,UAAU19G,UAAU8hB;AAE7C,QAAG0hE,SAAQzsF,MAAMkmH,SAASlmH,MAAM+qB,WAAU;AACzC0hE,MAAAA,SAAQzsF,MAAMkmH,SAASlmH;AACfysF,MAAAA,SAAA9sD,SAAS8sD,SAAQzsF,MAAMysF,SAAQl+E;AAAAA,IAC/B,WAAAk+E,SAAQ9sD,SAASumF,SAASvmF,QAAO;AACzC8sD,MAAAA,SAAQ9sD,SAASumF,SAASvmF;AAClB8sD,MAAAA,SAAAzsF,MAAMysF,SAAQ9sD,SAAS8sD,SAAQl+E;AAAAA,IACxC;AAEG,QAAAk+E,SAAQxsF,OAAOimH,SAASjmH,MAAK;AAC/BwsF,MAAAA,SAAQxsF,OAAOimH,SAASjmH;AAChBwsF,MAAAA,SAAAnoE,QAAQ4hG,SAASjmH,OAAOwsF,SAAQj+E;AAAAA,IAChC,WAAAi+E,SAAQnoE,QAAQ4hG,SAAS5hG,OAAM;AACvCmoE,MAAAA,SAAQnoE,QAAQ4hG,SAAS5hG;AACjBmoE,MAAAA,SAAAxsF,OAAOwsF,SAAQnoE,QAAQmoE,SAAQj+E;AAAAA,IACxC;AAEA,QAAGi4G,MAAMjiG,KAAKioE,SAAQxsF,QAAQwmH,MAAMjiG,KAAKioE,SAAQnoE,OAAO;AACvDmoE,MAAAA,SAAQxsF,OAAOwmH,MAAMjiG,IAAIioE,SAAQj+E,QAAQ63G;AACjC55B,MAAAA,SAAAnoE,QAAQmoE,SAAQxsF,OAAOwsF,SAAQj+E;AAAAA,IACxC;AAEA,QAAGi4G,MAAMhiG,KAAKgoE,SAAQzsF,OAAOymH,MAAMhiG,KAAKgoE,SAAQ9sD,QAAQ;AACvD8sD,MAAAA,SAAQzsF,MAAMymH,MAAMhiG,IAAIgoE,SAAQl+E,SAASg4G;AACjC95B,MAAAA,SAAA9sD,SAAS8sD,SAAQzsF,MAAMysF,SAAQl+E;AAAAA,IACxC;AAEO,WAAAk+E;AAAAA,EACR;AAAA,EAEQ,mBAAA05B;AACP,UAAM/oH,aAAYK,KAAKooH;AACvB,UAAMzuD,aAAah6D,WAAU8tB;AACvB,UAAAjiB,YAAYxL,KAAKmpH,aACvB;AAAA,QAAIV,WAAWj9G;AACf,QAAI8hB,YAAYrsB,OAAOioH,UAAUrpH,SAASM,KAAKmtB;AAC/C,QAAIH,aAAalsB,OAAOmoH,UAAUvpH,SAASM,KAAKgtB;AAC5C,QAAAR;AAED,QAAAnhB,cAAc7L,WAAU0pH,aAAY;AACtCZ,iBAAW9oH,WAAU2pH;AACTh8F,kBAAA;AACCH,mBAAA;AACPR,YAAAgtC,WAAWh3B,gBAAgBhjC,WAAU2pH,MAAM;AAAA,IAAA,OAC7C;AACE38F,YAAAgtC,WAAWh3B,gBAAgB8lF,QAClC;AAAA,IAAA;AACO,WAAA,EACNjmH,MAAKmqB,IAAI5F,IAAIoG,YACb5qB,KAAKoqB,IAAI3F,IAAIsG,WACbvc,OAAO4b,IAAI5b,OACXD,QAAQ6b,IAAI7b,QACZoxB,QAAQvV,IAAI3F,IAAI2F,IAAI7b,SAASwc,WAC7BzG,OAAO8F,IAAI5F,IAAI4F,IAAI5b,QAAQoc;EAE7B;ACrKM;AAAA,MAAMo8F;EAQZ,YAAY5pH,YALZK;AAAAA,SAAQwpH,aAAqB;AAMvBxpH,SAAAgvF,UAAU,IAAIm5B,QAAQxoH,UAC3BK;AAAAA,SAAKooH,aAAazoH;AACbK,SAAAqhE,aAAa1hE,WAAUooB;AAC5B/nB,SAAKypH,sBAAAA;AAAAA,EACN;AAAA,EAEA,aAAA5oH;AACCb,SAAKgvF,QAAQnjF;AACb7L,SAAKqhE,WAAWr5C;EACjB;AAAA,EACA;AACChoB,SAAK0pH,UAAAA;AAAAA,EACN;AAAA,EACA,OAAOhoH,QACN;AAAA,QAAIke,OAAO/f,SAASM;AACpB,UAAMR,aAAYK,KAAKooH;AACvB,UAAMzuD,aAAah6D,WAAU8tB;AAC1B,SAAC/rB,OAAOR,QAAO;AACjB0e,aAAOjgB,WAAUihB;AAAAA,IAClB;AAEA,QAAI+oG,kBAAkB;AAChB,UAAA9rG,UAAWrc,CAAAA,WAAAA;AACV,YAAAooH,cAAcjwD,WAAW72B,cAActhC,MAAAA;AAC7C,YAAMqoH,aAAalwD,WAAW3zD,QAAQ4jH,aAAaloH,OAAOokC;AAC1D,UAAG6zB,WAAWxzB,UAAUyjF,aAAa5pH,KAAKgvF,QAAQ1T,QAAAA,CAAAA,GAAW;AAC5D;AAAA,MACD;AAEA,YAAMwuC,iBAAiB,MAAA;AACJH,0BAAAE;AACXnoH,eAAAqoH,aAAavoH,QAAOqoH;MAAU;AAGtC,UAAIlqH,WAAU8yB,WAAW9yB,WAAU+B,OAAOsoH,eAAc;AACvD,YAAGH,YAAW;AACEC,yBAAA;AAAA,QAAA,OACT;AACCpoH,iBAAAuoH,aAAazoH,QAAOqoH,UAAAA;AAAAA,QAC5B;AAAA,MACD;AAEA,UAAGF,iBAAgB;AACf,YAAAE,cAAcA,eAAeF,iBAAgB;AACxCjoH,iBAAAwoH,YAAY1oH,QAAOqoH,UAAAA;AAAAA,QAAU,OAChC;AACGnoH,iBAAAuoH,aAAazoH,QAAOmoH,eAAAA;AACTA,4BAAA;AAEf,cAAAE,cAAcA,eAAeF,iBAAgB;AAChCG,2BAAAA;AAAAA,UAChB;AAAA,QACD;AAAA,MAAA,OACI;AACJ,YAAGD,YAAW;AACEC,yBAAAA;AAAAA,QAChB;AAAA,MACD;AAAA,IAGI9pH;AAAAA,SAAAw8B,OAAO96B,OAAOokC,QAAAA;AACnB9lC,SAAKqhE,WAAWn5C,OAAOtI,MAAM,aAAa/B;AACrC7d,SAAAwpH,WAAW9nH,OAAOokC,QAAY,IAAA,EAClChf,MAAMlH,MACN/B;EAEF;AAAA,EAEA,OAAOioB,UACA;AAAA,UAAAqkF,WAAWnqH,KAAKwpH,WAAW1jF,QACjC;AAAA,QAAGqkF,UAAS;AACXnqH,WAAKqhE,WAAW7kC,OAAO2tF,SAASrjG,MAAM,aAAaqjG,SAAStsG,OAC7D;AAAA,IAAA;AAAA,EACD;AAAA,EAEA,WAAWnc;AACJ,UAAA0oH,gBAAiB5oH,CAAAA;AACtB,UAAI08E,SAAQ18E;AAGZ,UAAG3B,SAAS,mBAAyBA,KAAAA,CAAAA,SAAS+pD,aAAY;AAEjDs0B,QAAAA,SAAAr+E,SAAS,mBAAqB2B,EAAAA,MAAAA;AAAAA,MACvC;AACO,aAAA08E;AAAAA,IAAA;AAERl+E,SAAKypH;AACLzpH,SAAKkoB,OAAO,EACX4d,UAAUpkC,OAAOokC,UACjB5kC,QAAQQ,OAAOR,QACf6oH,cAAa,CAACvoH,QAAmBslB,SAAAA;AAChC,YAAM5jB,OAAOxB,OAAOwB,KAAK1B,QAAOslB;AAChC,UAAG5jB,MAAK;AACPlD,aAAKqqH,UAAUD,cAAc5oH,MAAQ0B,GAAAA,IAAAA;AAAAA,MACtC;AAAA,IAEDgnH,GAAAA,aAAY,CAAC1oH,QAAmBslB,SAAAA;AAC/B,YAAM5jB,OAAOxB,OAAOwB,KAAK1B,QAAOslB,IAAAA;AAChC,UAAG5jB,MAAK;AACPlD,aAAKqqH,UAAUD,cAAc5oH,MAAQ0B,GAAAA,IAAAA;AAAAA,MAAI,OACrC;AACJlD,aAAKqqH,UAAUnxG,eAAAA;AACflZ,aAAK0pH,UACN;AAAA,MAAA;AAAA,IAAA,GAEDO,cAAa,MACZjqH;AAAAA,WAAKqqH,UAAUnxG,eACflZ;AAAAA,WAAK0pH,UAAU;AAAA,IAAA,EAAA,CAAA;AAAA,EAGlB;AAAA,EAEQ,wBAAAD;AACP,UAAM9pH,aAAYK,KAAKooH;AAEvB,QAAGpoH,KAAKqqH,WAAU;AACjBrqH,WAAKqqH,UAAUnxG,eAAAA;AAAAA,IAChB;AACA,QAAGlZ,KAAK0pH,WAAU;AACjB1pH,WAAK0pH,UAAUxwG;IAChB;AACAlZ,SAAKgvF,QAAQnjF,KAEb7L;AAAAA,SAAKqqH,YAAaC,MAAsBxxG,MAAM,CAACtX,QAAmB0B;AACjE,UAAGvD,WAAUiL,UAAU,mBAAmB,CAACpJ,aAAY,OAAO;AAC7DxB,aAAKgvF,QAAQnjF;MAAK,OACZ;AACD7L,aAAAgvF,QAAQlC,WAAW5pF;AACnBlD,aAAAgvF,QAAQg0B,KAAKxhH,MAAAA;AAAAA,MACnB;AAAA,OACE7B,WAAU+B,OAAO6oH,mBAAmB,CAEvCvqH;AAAAA,SAAK0pH,YAAaY,MAAsBxxG,MAAM,MAC7C9Y;AAAAA,WAAKqqH,UAAUnxG,eACflZ;AAAAA,WAAKgvF,QAAQnjF,KAAK;AAAA,IAAA,GAChBlM,WAAU+B,OAAO8oH,wBAAwB,CAC7C;AAAA,EAAA;AAAA;AChKD,SAAAx7B,QAAyBrvF,YAAAA;AAExBA,EAAAA,WAAU+B,OAAO6oH,kBAAkB;AACnC5qH,EAAAA,WAAU+B,OAAOqnH,mBAAmB;AACpCppH,EAAAA,WAAU+B,OAAOmnH,mBAAmB;AACpClpH,EAAAA,WAAU+B,OAAO8oH,uBAAuB;AAElC,QAAAC,iBAAiB,IAAIlB,eAAe5pH,UAE1CA;AAAAA,EAAAA,WAAUqmE,IAAI0kD,WAAWD;AAEf9qH,EAAAA,WAAAiG,YAAY,oBAAoB,WAEzC6kH;AAAAA,mBAAeE,WAAW,EACzB7kF,UAAU,MAAMnmC,WAAU+B,OAAOwC,kBAAkB,KACnDhB,MAAO1B,CAAAA,WACN;AAAA,UAAI7B,WAAU8yB,WAAY9yB,CAAAA,WAAU+B,OAAOsoH,eAAe;AACzD;AAAA,MACD;AAEA,YAAMY,gBAAgBjrH,WAAUgpB,cAAcnnB,OAAMuE,MAAAA;AAChD,UAAApG,WAAUmG,SAAS8kH,gBAAgB;AAChCppH,cAAAA,UAAQ7B,WAAUmG,SAAS8kH,aACjC;AAAA,eAAOjrH,WAAU2zB,UAAUwf,aAAatxC,QAAMuB,YAAYvB,QAAMwB,UAAUxB,OAAAA;AAAAA,MAC3E;AACO,aAAA;AAAA,IAAA,GAERN,QAAQ,MAAA,CAAA;AAAA,EACR;AAGQvB,EAAAA,WAAAiG,YAAY,aAAa,WAAA;AAClC6kH,mBAAe5pH,WAAW;AAAA,EAAA,CAAA;AAGjBlB,EAAAA,WAAAiG,YAAY,cAAc;AACnC6kH,mBAAeI,YAAAA;AAAAA,EAAY,CAGlBlrH;AAAAA,EAAAA,WAAAiG,YAAY,gBAAgB,WAAA;AAErC,QAAIjG,WAAU8yB,WAAW9yB,WAAU+B,OAAOsoH,eAAe;AACjD,aAAA;AAAA,IACR;AACAS,mBAAeI;AACR,WAAA;AAAA,EAAA;AAEElrH,EAAAA,WAAAiG,YAAY,kBAAkB,WAAA;AACvC6kH,mBAAeI,YACR;AAAA,WAAA;AAAA,EAAA,CAGT;AAAA;ACpDe,SAAQC,wBAACnrH,YAAAA;AACvB8wE,iBAAel0D,MAAM,iBAAiB5c,WAAU8a,MAAAA;AACjD;ACFe,SAAQswG,iBAACprH;AACvB8wE,iBAAel0D,MAAM,SAAS5c,WAAU8a;AACzC;ACJe,SAAQktB,IAAChoC,YAExBA;AAAAA,EAAAA,WAAUwwE,eAAe,WACxB;AAAA,QAAIhmE,IAAI,CAAA;AACR,QAAIsH,QAAQ5R,SAASksF,SAASr4C,QAAQ,IAAI1pB,QAAQ,KAAK,EAAI1kB,EAAAA,MAAM;AACjE,aAASnB,IAAI,GAAGA,IAAIsN,KAAKrN,QAAQD,KAAK;AACrC,UAAIsF,IAAIgI,KAAKtN,CAAAA,EAAGmB,MAAM,GACtB;AAAA,UAAImE,EAAErF,UAAU;AACf+F,UAAEV,EAAE,MAAMA,EAAE,CAAA;AAAA,IACb;AACD,WAAOU;AAAAA,EACR;AAEAxK,EAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzC,QAAIojC,QAAQ;AACZ,QAAIgiF,MAAMrrH,WAAUwD,KAAK4qC,YAAY,UAAA;AACrC,QAAIk9E,MAAMtrH,WAAUwD,KAAK2qC,YAAY;AACrC,QAAIo9E,eAAgBvrH,WAAUwwE,aAAe3uE,EAAAA,SAAS;AAEtD7B,IAAAA,WAAUiG,YAAY,uBAAuB,SAASY;AACrD0kH,qBAAe;AACf,aAAO;AAAA,IACT,CAAA;AAECvrH,IAAAA,WAAUiG,YAAY,sBAAsB,SAAUsjF,IAAIC,IAAI3qC,GAAG5qC,GAAAA;AAChE,UAAIo1B,OAAO;AACVA,gBAAQ;AACR,YAAI7+B,IAAIxK,WAAUwwE;AAElB,YAAIhmE,EAAE3I,OAAM;AACX,cAAA;AACC,gBAAG7B,WAAUmG,SAASqE,EAAE3I,KAAAA,GAAO;AAC9B6X,yBAAW,WAAA;AACV0kC,0BAAU5zC,EAAE3I,KAAAA;AAAAA,cACnB,CACM;AAAA,qBAAO;AAAA,YACb,OAAU;AACJ,kBAAIqc,UAAUle,WAAUiG,YAAY,SAAS,WAAA;AAC5CyT,2BAAW,WAAA;AACV0kC,4BAAU5zC,EAAE3I,KAAAA;AAAAA,gBACpB;AACO7B,gBAAAA,WAAUujB,YAAYrF;cAC7B,CACM;AAAA,YAAA;AAAA,UACN,SAAahY;UAAI;AAAA,QACb;AAED,YAAIsE,EAAEhH,QAAQgH,EAAE1K,MAAM;AACrB,cACCO;AAAAA,iBAAKyX,eAAgBtN,EAAEhH,OAAO6nH,IAAI7gH,EAAEhH,IAAAA,IAAQ,MAAQgH,EAAE1K,QAAQ,IAC9D;AAAA,UAAA,SAAQoG,GAER7F;AAAAA,iBAAKyX,eAAgBtN,EAAEhH,OAAO6nH,IAAI7gH,EAAEhH,IAAAA,IAAQ,MAAOq7C,CAAAA;AAAAA,UACnD;AACD,iBAAO;AAAA,QACP;AAAA,MACD;AAED,UAAI/gB,SAAS,CACZ,UAAUwtF,IAAIr3G,KAAKu1E,KACnB,WAAW3qC,KAAK0qC;AAGjB,UAAGgiC,cAAa;AACfztF,eAAO55B,KAAK,WAAWqnH,YAAAA;AAAAA,MACvB;AAED,UAAIpkH,OAAO,MAAM22B,OAAO3tB,KAAK;AAC7BjQ,eAASksF,SAASr4C,OAAO5sC;AACzB,aAAO;AAAA,IACT,CAAA;AAEC,aAASi3C,UAAUl4C,GAAAA;AAClB,UAAGlG,WAAU8gB,YAAW;AACvB,eAAO;AAAA,MACP;AACDyqG,qBAAerlH;AACf,UAAGlG,WAAUmG,SAASD,CAAG,GAAA;AACxBlG,QAAAA,WAAUo+C,UAAUl4C;MACpB;AAAA,IACD;AAAA,EACF;AACA;AChFe,SAAQslH,uBAACxrH,YACvB8wE;AAAAA,iBAAel0D,MAAM,eAAe5c,WAAU8a,MAC/C;AAAA;ACJe,SAAQ2wG,GAACzrH,YAAAA;AACxBA,EAAAA,WAAUiG,YAAY,cAAa,WAClC;AAAA,QAAI5F,KAAKymD,QAAO;AACf;AACCzmD,aAAKymD,OAAOnkD,MAAMwO,SAAS9Q,KAAKupB,WAAW,UAAW1pB,SAASM,KAAKsN,cAAY5N,SAASM,MAAMg3C,eAAa;AAAA,MAC5G,SAAOtxC,GAEP;AAAA,MAAA;AAAA,IACD;AAAA,EACF,CAEAlG;AAAAA,EAAAA,WAAU6jD,YAAY56B,OAAO+6B,YAAU,SAAS78B,MAAKzI,OAAM7X,IAC1D;AAAA,QAAA,OAAW6X,SAAS,eAAeA,UAAU;AAC5CA,eAASyI,KAAKzmB,WAAWuH,QAAQ,CAAA,KAAI,CAAE,GAAEyW;AAC1CyI,SAAKzmB,WAAWge,QAAMA,SAAO;AAAA,EAC9B;AAEA;ACjBe,SAAQgtG,UAAC1rH,YAAAA;AAMvBA,EAAAA,WAAU2zB,UAAUg4F,YAAY,SAASnoH,MACxC;AAAA,WAAOxD,WAAUwD,KAAK2qC,YAAYnuC,WAAU+nB,OAAOC,OAAOu3C,WAAW,KAAA,EAAO/7D,IAC9E;AAAA,EAAA;AACCxD,EAAAA,WAAU2zB,UAAUi4F,aAAa5rH,WAAUwD,KAAK2qC,YAAY,IAC5DnuC;AAAAA,EAAAA,WAAU2zB,UAAUk4F,kBAAkB7rH,WAAUwD,KAAK2qC,YAAY,IAAA;AACjEnuC,EAAAA,WAAU2zB,UAAUm4F,eAAe,SAAShiH,GAAG5D,GAAGW,IACjD;AAAA,WAAOA,GAAGM;AAAAA,EACZ;AAEC,QAAM4kH,aAAa;AAClB,WAAO/rH,WAAUiN,SAAS;AAAA,EAC5B;AAEC,QAAM++G,cAAc,SAAS7kG,MAC5B;AAAA,QAAItnB,MAAMG,WAAU8tB,YAAYznB,QAAQ8gB,MAAM,kBAAA;AAC9C,SAAItnB,OAAQA,CAAAA,IAAI2kC,aAAa,gBAAA;AAAmB,aAAO;AACvD,WAAOxkC,WAAU2zB,UAAUmG,WAAWj6B,IAAIiF,aAAa,gBAAA,CAAA;AAAA,EACzD;AAGC9E,EAAAA,WAAUisH,yBAAwB,SAAS/lH,GAAAA;AAC1C,QAAI6lH,WAAc,GAAA;AACjB,YAAM3lH,SAASF,EAAEE;AACjB,UAAGpG,WAAU8tB,YAAYznB,QAAQD,QAAQ,aAAkBpG,KAAAA,WAAU8tB,YAAYznB,QAAQD,QAAQ,YAAc,GAAA;AAC9G,eAAO;AAAA,MACP;AAED,YAAM5C,OAAOwoH,YAAY5lH;AAEzB,UAAG5C,MAAK;AACP,cAAMoM,QAAQpM;AACd,cAAMqM,MAAMxP,KAAKmD,KAAKC,IAAImM,OAAO,GAAG,KACpC;AAAA,YAAA,CAAKvP,KAAK0B,OAAOkoB,YAAY5pB,KAAK0B,OAAO+T,iBAAgB;AACxDzV,eAAK0V,YAAYnG,MAAMxK,QAAAA,GAAWyK,IAAIzK,QAAWc,GAAAA,CAAAA;AAAAA,QACjD;AAAA,MACD;AAAA,IACD;AAAA,EACH;AAEClG,EAAAA,WAAUiG,YAAY,mBAAmB,WAAA;AACxC,QAAI8lH,WACH1rH;AAAAA,WAAKqrH,UAAU,IAClB;AAAA,EAAA,CAAA;AAGC,MAAIv+E,MAAMntC,WAAU+X;AACpB/X,EAAAA,WAAU+X,cAAc,SAAS/N,KAAAA;AAChC,SAAK+hH,WAAc;AAAA,aAAO5+E,IAAI1+B,MAAMpO,MAAMiU,SAC1C;AAAA,aAAS9P,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AAC/BnE,WAAK6rH,mBAAmBliH,IAAIxF,CAAAA,CAAAA;AAAAA,EAC/B;AAEC,MAAIoe,QAAQ5iB,WAAU0zC;AACtB1zC,EAAAA,WAAU0zC,aAAa,WACtB;AAAA,QAAA,CAAKq4E,WAAc;AAAA,aAAOnpG,MAAMnU,MAAMpO,MAAMiU,SAC5C;AAAA,QAAItP,QAAQhF,WAAUmsH,oBACrBv+G,MAAM;AACP,aAASpK,QAAQwB,OAAO;AACvB,UAAIA,MAAMiK,eAAezL,IAAAA,GAAO;AAC/BoK,cAAM5I,MAAMxB,IACZoK;AAAAA,YAAImP,UAAU8X,OAAO,kBAAkB;MAIvC;AAAA,IACD;AACD70B,IAAAA,WAAUmsH,qBAAqB;EACjC;AAECnsH,EAAAA,WAAUosH,eAAe,WAAA;AACxB,QAAI/rH,KAAKgsH,UAAU;AAClBhsH,WAAKgsH,SAAS1pH,MAAMod,UAAU;AAC9B1f,WAAKgsH,SAAS7oH,OAAO,IAAIqB,KAAK,MAAM,GAAG;IACvC;AAAA,EACH;AAEC7E,EAAAA,WAAUssH,eAAe,SAAS9oH,MAAMwpB,KAAK9mB,GAAG2P,KAC/C;AAAA,QAAIxV,KAAKgsH,UAAU;AAClB,UAAIhsH,KAAKgsH,SAAS7oH,KAAK4B,QAAa5B,KAAAA,KAAK4B,QAAW;AAAA;AACpD/E,WAAKgsH,SAAS9rH,YAAY;AAAA,IAC7B,OAAS;AACN,UAAIiU,IAAInU,KAAKgsH,WAAWnsH,SAASC,cAAc,KAC/CqU;AAAAA,QAAEtD,YAAY;AACd,UAAI7Q,KAAK0B,OAAOkjB;AAAKzQ,UAAEtD,aAAa;AACpChR,eAASM,KAAKC,YAAY+T,CAC1BA;AAAAA,QAAE+nB,iBAAiB,SAASv8B,WAAUsoB,OAAOyB,YAAAA;AAC7CvV,QAAE+nB,iBAAiB,SAAS,SAASr2B,IACpC;AAAA,YAAGA,GAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eAAoB,GAAA,GAAA;AAC5D,gBAAMnE,MAAK8F,GAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,oBAAoBO,aAAa9E,WAAU+B,OAAOwC,eACnGvE;AAAAA,UAAAA,WAAU2rB,aAAavrB,GACvB;AAAA,QAAA;AAAA,MACL,CACG;AAAA,IAAA;AACD,QAAI4J,MAAM3J,KAAK+1C,UAAU5yC,MAAMnD,KAAKmD,KAAKC,IAAID,MAAM,GAAG,KAAA,CAAA;AACtD,QAAID,OAAO;AAEX,aAASiB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,UAAIqC,KAAKmD,IAAIxF,CACb;AAAA,UAAA,CAAInE,KAAK40C,aAAapuC,GAAGzG,IAAIyG,EAAAA;AAC5B;AAED,UAAIi3C,WAAYj3C,GAAG40C,QAAS,sCAAsC50C,GAAG40C,QAAQ,MAAO;AACpF,UAAIA,QAAS50C,GAAGu1C,YAAa,iCAAiCv1C,GAAGu1C,YAAY,MAAO;AAEpF74C,cAAQ,0CAA0Cu6C,WAAgBrC,QAAQ,iBAAiBzxC,IAAIxF,CAAGpE,EAAAA,KAAK,OAAKC,KAAK0B,OAAOwC,kBAAgB,OAAKyF,IAAIxF,CAAGpE,EAAAA,KAAG;AACvJmD,cAAQ,0CAA0Cu6C,WAAgBrC,QAAQ,QAAQzxC,IAAIxF,GAAGiG,SAASpK,KAAKszB,UAAU8e,WAAWzoC,IAAIxF,GAAGpB,UAAc,IAAA,MAAM;AACvJG,cAAQ;AACRA,cAAQlD,KAAKszB,UAAUm4F,aAAa9hH,IAAIxF,GAAGpB,YAAY4G,IAAIxF,CAAGnB,EAAAA,UAAU2G,IAAIxF,CAAM,CAAA,IAAA;AAAA,IAClF;AAEDnE,SAAKgsH,SAAS1pH,MAAMod,UAAU;AAC9B1f,SAAKgsH,SAAS1pH,MAAMC,MAAM;AAG1B,QAAI1C,SAASM,KAAK6gB,cAAc2L,IAAInqB,OAAOxC,KAAKgsH,SAAShrG,cAAc;AACtEhhB,WAAKgsH,SAAS1pH,MAAME,OAAOmqB,IAAInqB,OAAOxC,KAAKgsH,SAAShrG,cAAc;AAAA;AAElEhhB,WAAKgsH,SAAS1pH,MAAME,OAAOmqB,IAAInqB,OAAOgT,IAAIwL,cAAc;AAEzDhhB,SAAKgsH,SAAS7oH,OAAOA;AACrBnD,SAAKgsH,SAAS9rH,YAAYgD;AAE1B,QAAIrD,SAASM,KAAK2gB,eAAe6L,IAAIpqB,MAAMvC,KAAKgsH,SAASlrG,eAAe;AACvE9gB,WAAKgsH,SAAS1pH,MAAMC,MAAMoqB,IAAIpqB,MAAMvC,KAAKgsH,SAASlrG,eAAetL,IAAIsL,eAAe;AAAA;AAEpF9gB,WAAKgsH,SAAS1pH,MAAMC,MAAMoqB,IAAIpqB,MAAM;AAAA,EACvC;AAEC5C,EAAAA,WAAUusH,6BAA6B,SAASrmH,GAC/C;AAAA,QAAA,CAAK6lH,WAAc;AAAA;AAEnB,QAAIl2G,MAAM3P,EAAEE,UAAUF,EAAEksB;AACxB,QAAIvc,IAAIwtB,QAAQrgB,YAAiB,KAAA;AAChCnN,YAAMA,IAAI/H;AACX,QAAI9N,WAAUmS,cAAc0D,KAAKzD,QAAQ,gBAAA,KAAA;AACxCpS,MAAAA,WAAUssH,aAAatsH,WAAU2zB,UAAUmG,WAAWjkB,IAAI/Q,aAAa,oBAAoB9E,WAAU8tB,YAAY8X,UAAU/vB,GAAAA,GAAM3P,GAAG2P,GAEpI7V;AAAAA;AAAAA,MAAAA,WAAUosH;EACb;AACCpsH,EAAAA,WAAUwsH,qBAAqB,WAC9BxsH;AAAAA,IAAAA,WAAU6jB,gBAAgB7jB,WAAUoM,KAAK,cAAgB,EAAA,CAAA,GAAI,aAAapM,WAAUusH,0BAAAA;AACpFvsH,IAAAA,WAAU6B,MAAM7B,WAAUoM,KAAK,cAAA,EAAgB,IAAI,aAAapM,WAAUusH;EAC5E;AAECvsH,EAAAA,WAAU25E,iBAAiB,SAAS1lE,GAAAA;AACnC,QAAIiqB,aAAal+B,WAAU2zB,UAAUgD,YAAY1iB;AACjD,QAAI3O,QAAQjF,KAAK4gB,MAAM3c,iBAAiB,0DAA0D45B,UAAAA,IAAAA;AAClG,aAAQ15B,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAI;AACpC,UAAIxE,CAAAA,WAAU8tB,YAAYznB,QAAQf,MAAMd,IAAI,yBAA2B,GAAA;AACtE,eAAOc,MAAMd,CAAAA;AAAAA,MACb;AAAA,IACD;AACD,WAAO;AAAA,EACT;AAECxE,EAAAA,WAAUmsH,qBAAqB;AAC/BnsH,EAAAA,WAAUysH,kBAAkB,SAASjpH,MAAM3B;AAC1C,QAAIq8B,aAAal+B,WAAU2zB,UAAUgD,YAAYnzB;AACjD,QAAI61B,OAAOh5B,KAAKs5E,eAAen2E;AAC/B,QAAK61B,CAAAA,MAAM;AACV;AAAA,IACA;AACD,QAAIywC,WAAWzpE,KAAKszB,UAAUif,YAAY/wC,OAAMuB,YAAYvB,OAAMwB,UAAUxB,MAC5E;AAAA,QAAA,CAAK7B,WAAUmsH,mBAAmBjuF,UAAAA,GAAa;AAC9C7E,WAAKtc,UAAUtZ,IAAI,kBAAkB;AACrC41B,WAAKlc,aAAa,kBAAkB+gB,UACpC7E;AAAAA,WAAKlc,aAAa,QAAQ+gB;AAC1Bl+B,MAAAA,WAAUmsH,mBAAmBjuF,cAAc7E;AAAAA,IAC3C;AACD,QAAGywC,UAAS;AACXzwC,WAAKtc,UAAUtZ,IAAIqmE,QACnB;AAAA,IAAA;AAAA,EACH;AACC9pE,EAAAA,WAAU0sH,oBAAoB,SAASlpH,MACtC;AAAA,QAAI61B,OAAOh5B,KAAKs5E,eAAen2E,IAC/B;AAAA,QAAA,CAAK61B,MAAM;AACV;AAAA,IACA;AACDA,SAAKtc,UAAU8X,OAAO,kBAAkB;EAE1C;AACC70B,EAAAA,WAAUksH,qBAAqB,SAASrqH,QAAAA;AACvC,QAAI2B,OAAO3B,OAAMuB;AACjB,QAAII,KAAK4B,QAAY/E,IAAAA,KAAKoM,UAAUrH,QAAU,GAAA;AAC7C5B,aAAOnD,KAAKoM;AAAAA,IACf,OAAS;AACNjJ,aAAOnD,KAAKmD,KAAKyF,UAAU,IAAIpE,KAAKrB;IACpC;AAED,WAAOA,OAAO3B,OAAMwB,UAAU;AAC7BhD,WAAKosH,gBAAgBjpH,MAAM3B,MAAAA;AAC3B2B,aAAOnD,KAAKmD,KAAKC,IAAID,MAAM,GAAG,KAC9B;AAAA,UAAIA,KAAK4B,QAAa/E,KAAAA,KAAKmM,UAAUpH,QACpC;AAAA;AAAA,IACD;AAAA,EACH;AAECpF,EAAAA,WAAU0rH,YAAY,SAAS5rH;AAE9BE,IAAAA,WAAUslB,UAAAA;AAEVtlB,IAAAA,WAAUgN,cAAclN;AAExB,QAAIO,KAAKgzB,cAAchzB,KAAKizB,MAAAA;AAAS;AAErC,QAAIxzB,MAAM;AACTE,MAAAA,WAAUwsH,mBAAAA;AACVxsH,MAAAA,WAAU2sH,kBAAAA;AACV,UAAI3sH,WAAUqzB,cAAcrzB,WAAUszB,MAAQ,GAAA;AAC7CtzB,QAAAA,WAAUuzB,eAAe;AACzB;AAAA,MACA;AACDvzB,MAAAA,WAAUgY,iBACb;AAAA,IAAA,OAAS;AACNhY,MAAAA,WAAUosH,aAAAA;AAAAA,IACV;AAAA,EACH;AACCpsH,EAAAA,WAAU2sH,oBAAoB,WAAA;AAC7BtsH,SAAK0Q,QAAQ,CAAA;AACb1Q,SAAKwtB,SAAS;AACd,QAAIswE,cAAc,CAClB;AAAA,QAAI/5E,WAAW/jB,KAAK+L,KAAK,gBAAgB,CAEzC;AAAA,QAAIrC,IAAI1J,KAAK0B;AACbqiB,aAASuJ,YAAY;AACrBvJ,aAAS7jB,YAAY;AAEZiR,SAAK8D,OAAOghB,SAASlS,SAASzhB,MAAMwO,MAAUnR,IAAAA,WAAU2f,GAAGitG,YAAY7iH,EAAEklE;AAKlF,QAAIynB,gBAAgBx2F,SAASC,cAAc,KAAA;AAC3C,QAAIw2F,aAAat2F,KAAKmD,KAAK6B,WAAWrF,WAAUsM,aAEhDjM,CAAAA;AAAAA,SAAK01B,iBAAiB4gE,YAAY,GAAG,OAAO,CAAA;AAE5C,aAASnyF,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B,UAAA,EAAKnE,KAAK2Q,YAAY3Q,KAAK2Q,SAASxM,CAAAA,IAAK;AACxCnE,aAAK0Q,MAAMvM,KAAK;AAChBnE,aAAKy0B,iBAAiBtwB,GAAG,GAAGmyF,YAAYD,aAAAA;AAAAA,MAExC;AACDC,mBAAat2F,KAAKmD,KAAKC,IAAIkzF,YAAY,GAAG,KAAA;AAAA,IAC1C;AACDD,kBAAc13C,UAAU9tC,aAAa;AAErC,aAAQ1M,IAAI,GAAGA,IAAIkyF,cAAcxkF,WAAWzN,QAAQD,KAAI;AACvDnE,WAAK4nB,SAASwY,aAAai2D,cAAcxkF,WAAW1N,CAAAA,CAAAA;AAAAA,IACpD;AAED,QAAI4xB,KAAK/1B,KAAKmD,KAAKnD,KAAK4M,QAAQ,QAAU5M,EAAAA,KAAKmD,KAAKuD,KAAK1G,KAAK6U,KAC9D,CAAA;AAAA,QAAI23G,MAAMz2F;AACV,QAAI02F,UAAU;AACd,UAAM1oD,UAAUlkE,SAASC,cAAc,KACvCikE;AAAAA,YAAQrnD,UAAUtZ,IAAI,kBAAA;AACtB,aAASe,IAAI,GAAGA,IAAIuF,EAAEklE,QAAQzqE,KAAI;AACjC,eAASuvB,IAAI,GAAGA,IAAIhqB,EAAEgjH,QAAQh5F,KAAK;AAClC+4F,kBAAU5sH,SAASC,cAAc,KAAA;AACjC2sH,gBAAQ57G,YAAY;AAEpB47G,gBAAQ3vG,aAAa,QAAQ9c,KAAKyxC,SAASG,WAAW7b,EACtD02F,CAAAA;AAAAA,gBAAQ3vG,aAAa,mBAAmB9c,KAAKyxC,SAASG,WAAW7b;AACjE02F,gBAAQvsH,YAAY,6FAA6Fm2F,cAAcn2F,YAAY;AAE3I,YAAI4jB,SAAS2oG,QAAQztG,cAAc;AACnC,YAAIhE,OAAOyxG,QAAQztG,cAAc,gBAAA;AACjC,YAAI7e,OAAOssH,QAAQztG,cAAc,gBAAA;AAEjC,YAAIsgB,WAAW3/B,WAAU+O;AACzB1O,aAAK4nB,SAASsY,WAAWpc,QAAQwb,QAAAA;AACjCt/B,aAAK4nB,SAASuY,SAASnlB,MAAMskB,QAAAA;AAG7Bxb,eAAO5jB,YAAYF,KAAKszB,UAAUi4F,WAAWx1F,EAAAA;AAI7C,YAAIT,KAAKt1B,KAAKmD,KAAK6B,WAAW+wB;AAC9B/1B,aAAKq3B,mBAAmBl3B,MAAM41B,IAAIT,IAAI,CAEtC;AAAA,YAAIztB,OAAO1H,KAAK8D,iBAAiB;AACjC,iBAAQzE,MAAM,GAAGA,MAAMqI,KAAKzD,QAAQ5E,OAAM;AACzCQ,eAAK4nB,SAAS0Y,YAAYz4B,KAAKrI;QAC/B;AAEDukE,gBAAQ3jE,YAAYqsH,OAAAA;AAEpB3uB,oBAAY35F,IAAIuF,EAAEgjH,SAASh5F,CAAMqC,KAAAA,GAAGhtB,YAAY/I,KAAK0B,OAAOurC,kBAAkB,IAAI,KAAK,KAAK;AAC5FlX,aAAK/1B,KAAKmD,KAAKC,IAAI2yB,IAAI,GAAG,OAE1B;AAAA,MAAA;AAAA,IACD;AAEDhS,aAAS3jB,YAAY2jE;AAErB,QAAIgG,cAAc/pE,KAAK82B,mBACvB;AAAA,QAAGizC,aAAY;AACdA,kBAAY7pE,YAAYF,KAAKszB,UAAUtzB,KAAK4M,QAAQ,SAAS4/G,KAAKz2F,IAAI/1B,KAAK4M,KAAAA;AAAAA,IAC3E;AAED5M,SAAK89F,cAAcA;AACnBA,gBAAYC,SAASyuB,IAAI5zG,SACzB5Y;AAAAA,SAAKoM,YAAYogH;AACjBxsH,SAAKmM,YAAY4pB;AAAAA,EACnB;AAECp2B,EAAAA,WAAU2sH,oBAAoB;AAE7B,QAAIvoG,WAAW/jB,KAAK+L,KAAK,gBAAgB,CAEzCgY;AAAAA,aAASuJ,YAAY;AACrBvJ,aAAS7jB,YAAY;AAErB,QAAI62G,YAAY/2G,KAAKmD,KAAKiqC,WAAW,IAAI5oC,KAAKxE,KAAK6U,KAAAA,CAAAA;AAEnD7U,SAAKoM,YAAYpM,KAAKmD,KAAK6B,WAAW,IAAIR,KAAKuyG,SAAAA,CAAAA;AAE/C,UAAMhzC,UAAUlkE,SAASC,cAAc,KACvCikE;AAAAA,YAAQrnD,UAAUtZ,IAAI;AAEtB,QAAIw/D,cAAcm0C;AAClB,aAAQ5yG,IAAI,GAAGA,IAAI,IAAIA,KAAI;AAC1B,UAAIsoH,UAAU5sH,SAASC,cAAc,KAAA;AACrC2sH,cAAQ57G,YAAY;AAEpB47G,cAAQ3vG,aAAa,QAAQ9c,KAAKyxC,SAASG,WAAWgxB,WACtD6pD,CAAAA;AAAAA,cAAQ3vG,aAAa,mBAAmB9c,KAAKyxC,SAASG,WAAWgxB;AACjE6pD,cAAQvsH,YAAY,+BAA+BF,KAAKszB,UAAUi4F,WAAW3oD,WAG7E,CAAA;AAAA;AAAA,YAAMziC,WAAWssF,QAAQztG,cAAc,gBACvC;AAAA,YAAM2tG,aAAahtH,WAAUklE,kBAAkB,MAAM,EACpD1hE,MAAMy/D,aACNI,UAAU;AAEX2pD,iBAAWnqD,eAAeriC;AAC1BwsF,iBAAW9rH,WAAAA;AAEXkjE,cAAQ3jE,YAAYqsH,OAAAA;AAEpB7pD,oBAAc5iE,KAAKmD,KAAKC,IAAIw/D,aAAa,GAAG,OAE5C;AAAA,IAAA;AACD7+C,aAAS3jB,YAAY2jE,OAAAA;AAErB,QAAIL,WAAW1jE,KAAKmD,KAAKC,IAAI2zG,WAAW,GAAG,MAAA;AAC3C,QAAGrzC,SAAS3+D,QAAAA,KAAa/E,KAAKmD,KAAK6B,WAAW,IAAIR,KAAKk/D,WAAW3+D,QAAU,GAAA;AAC3E2+D,iBAAW1jE,KAAKmD,KAAK6B,WAAW,IAAIR,KAAKk/D,QACzCA,CAAAA;AAAAA,iBAAW1jE,KAAKmD,KAAKC,IAAIsgE,UAAU,GAAG,MAAA;AAAA,IACtC;AACD1jE,SAAKmM,YAAYu3D;AACjB,QAAIqG,cAAc/pE,KAAK82B,mBAAAA;AACvB,QAAGizC,aAAY;AACdA,kBAAY7pE,YAAYF,KAAKszB,UAAUtzB,KAAK4M,QAAQ,OAASmqG,EAAAA,WAAWrzC,UAAU1jE,KAAK4M,KAAAA;AAAAA,IACvF;AAAA,EACH;AAEC,MAAIxG,gBAAgBzG,WAAUyG;AAC9BzG,EAAAA,WAAUyG,gBAAgB,SAASg0B,MAClC;AAAA,QAAA,CAAIsxF,WAAa,GAAA;AAChB,aAAOtlH,cAAcgI,MAAMzO,YAAWsU,SACtC;AAAA,IAAA;AAED,QAAI9Q,OAAOwoH,YAAYvxF,KAAKr0B,MAAAA;AAC5B,WAAO,EACN5C,MACAkD,SAAQ,KAAA;AAAA,EAEX;AAEC,MAAIumH,cAAcjtH,WAAUgpB;AAC5BhpB,EAAAA,WAAUgpB,gBAAgB,SAAS7B;AAClC,QAAI/mB,MAAK6sH,YAAYx+G,MAAMzO,YAAWsU,SACtC;AAAA,QAAA,CAAIlU,KAAG;AAEN,UAAIoD,OAAOwoH,YAAY7kG,IAAAA;AACvB,WAAI3jB;AAAM,eAAO;AACjB,UAAIwG,MAAMhK,WAAUo2C,UAAU5yC,MAAMxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KAChE,CAAA;AAAA,UAAA,CAAIwG,IAAIvF;AAAQ,eAAO;AAGvBrE,MAAAA,MAAK4J,IAAI,GAAG5J;AAAAA,IACZ;AACD,WAAOA;AAAAA,EACT;AAECJ,EAAAA,WAAUiG,YAAY,aAAa,WAClCjG;AAAAA,IAAAA,WAAUosH;EACZ,CACA;AAAA;AC5Ye,SAAQc,WAACltH;GAGxB,WAEA;AAAA,aAASskD,SAASrkD,KAAKktH,KAAAA;AACtB,eAAS53G,OAAO43G;AACf,YAAA,CAAKltH,IAAIsV,GACRtV;AAAAA,cAAIsV,OAAO43G,IAAI53G,GAAAA;AACjB,aAAOtV;AAAAA,IACR;AAEA,aAASmtH,gBAAgBrnH,SAAS/F,YACjC;AAAA,UAAIqtH,QAAQ,CAAA;AACZtnH,gBAAU/F,WAAUoM,KAAKrG,OACzB;AAAA,UAAIA,WAAWA,QAAQ,CAAA,GAAI;AAC1BsnH,cAAMjmG,IAAIrhB,QAAQ,CAAG0pE,EAAAA;AACrB49C,cAAMhmG,IAAIthB,QAAQ,CAAGyxC,EAAAA;AAAAA,MACvB,OAAQ;AACN61E,cAAMjmG,IAAI;AACVimG,cAAMhmG,IAAI;AAAA,MACV;AACD,aAAOgmG;AAAAA,IACR;AAGA,QAAI/rH,CAAAA,OAAOgsH,YAAW;AACrBhsH,aAAOgsH,aAAa,EACnBljF,MAAM,SAASpC,MAAKl2B,MAAMxK,UACzB;AAAA,eAAOhG,OAAOisH,KAAKnlF,KAAKgC,KAAKpC,MAAKl2B,MAAMxK,QACxC;AAAA,MAAA,GACDwiC,KAAK,SAAS9B,MAAK1gC;AAClB,eAAOhG,OAAO8mC,KAAK0B,IAAI9B,MAAK1gC,QAC5B;AAAA,MAAA,EAAA;AAAA,IAEH;AAEA,aAASkmH,mBAAmBxtH;AAE3BA,MAAAA,WAAUqc,cAAc,SAASta,QAAAA;AAChCA,iBAASuiD,SAAUviD,UAAU,IAAK,EACjC0Y,MAAK,gBACL4wB,QAAO,MACPoiF,aAAY,aACZC,KAAI,IACJtjC,MAAK,GACLnlE,KAAKjlB,WAAU+B,OAAOkjB,IAAAA,CAAAA;AAEvBljB,eAAOwB,OAAOlD,KAAKstH,aAAa5rH,MAAAA;AAChCA,eAAOjC,OAAOO,KAAKiG,WAAWxG;AAC9BO,aAAKutH,gBAAgB7rH,QAAQ;MAC/B;AAEC/B,MAAAA,WAAUoc,cAAc,SAASra,QAAAA;AAChCA,iBAASuiD,SAAUviD,UAAU,IAAK,EACjC0Y,MAAK,gBACL4wB,QAAO,MACPoiF,aAAY,aACZC,KAAI,IACJtjC,MAAK,GACLnlE,KAAKjlB,WAAU+B,OAAOkjB;AAEvBljB,eAAOwB,OAAOlD,KAAKstH,aAAa5rH,MAAAA;AAChCA,eAAOjC,OAAOO,KAAKiG,SAAWxG,EAAAA;AAC9BO,aAAKutH,gBAAgB7rH,QAAQ;MAC/B;AAEC/B,MAAAA,WAAU6tH,eAAe,SAAS9rH;AACjCA,iBAASuiD,SAAUviD,UAAU,IAAK,EACjC0Y,MAAK,iBACL3I,MAAKzR,KAAKytH,iBAAiB,MAAM/rH,MAAAA,EAAAA,CAAAA;AAElC1B,aAAKutH,gBAAgB7rH,QAAQ;MAC/B;AAEC/B,MAAAA,WAAU+tH,gBAAgB,SAAShsH;AAClCA,iBAASuiD,SAAUviD,UAAU,IAAK,EACjC0Y,MAAK,iBACL0Q,OAAM,UACNrZ,MAAKzR,KAAKytH,iBAAkBztH,KAAKszB,UAAUue,YAAYnwC,SACvDs7C,SAAQh9C,KAAK2tH,mBAEd3tH,EAAAA,CAAAA;AAAAA,aAAKutH,gBAAgB7rH,QAAQ,OAAA;AAAA,MAC/B;AAEC/B,MAAAA,WAAUiuH,kBAAkB,SAASn8G,MAAMzK,MAAMC,UAAAA;AAAAA,eACzCwK,KAAKxK;AACZ,YAAI0gC,OAAMl2B,KAAKo8G,UAAU;AAEzB5sH,eAAOgsH,WAAWljF,KAAKpC,MACtB,UAAQ3gC,OAAK,mBAAiBwgC,mBAAmB9iB,KAAKC,UAAUlT,QAChE,SAASwtC,QAAAA;AACR,cAAI6uE,OAAO7uE,OAAO1U,OAAO9B,SAAS;AAClC,cAAIwxB,OAAO;AAEX,cAAK6zD,CAAAA,MAAK;AACT,gBAAA;AACC7zD,qBAAOv1C,KAAKujB,MAAMgX,OAAO1U,OAAOluB,YAAAA;AAAAA,YAChC,SAAMxW,GAAAA;AAAAA,YAAI;AAAA,UACX;AACDoB,mBAASgzD,IACT;AAAA,QAAA,CAAA;AAAA,MAEJ;AAECt6D,MAAAA,WAAUouH,qBAAqB,SAASr0G,QAAQsxB,QAAAA;AAC/C,YAAIjlC,SAAS,CAAA;AACb,iBAASmP,OAAOwE;AACf3T,iBAAOmP,GAAOwE,IAAAA,OAAOxE,GAEtBnP;AAAAA,eAAOhD,aAAaioC,OAAOjlC,OAAOhD;AAClCgD,eAAO/C,WAAWgoC,OAAOjlC,OAAO/C,QAAAA;AAChC+C,eAAOioH,QAAQhuH,KAAKszB,UAAU0K,WAAWtkB,OAAO3W,YAAY2W,OAAO1W,UAAU0W,MAE7E;AAAA,eAAO3T;AAAAA,MACT;AAECpG,MAAAA,WAAU8tH,mBAAmB,SAASziF,QAAQtpC,QAC7CspC;AAAAA,iBAASA,UAAUrrC,WAAUwD,KAAK2qC,YAAY,iBAAiB;AAE/D,YAAIiS;AACJ,YAAIr+C,UAAUA,OAAO6N,SAAS7N,OAAO8N;AACpCuwC,mBAASpgD,WAAUo2C,UAAUr0C,OAAO6N,OAAO7N,OAAO8N,GAElDuwC;AAAAA;AAAAA,mBAASpgD,WAAUo2C,UAEpB;AAAA,YAAItkC,OAAO,CAAA;AACX,iBAAStN,IAAI,GAAGA,IAAG47C,OAAO37C,QAAQD;AACjCsN,eAAKtN,CAAKnE,IAAAA,KAAK+tH,mBAAmBhuE,OAAO57C,CAAAA,GAAI6mC;AAE9C,eAAOv5B;AAAAA,MACT;AAEC9R,MAAAA,WAAUguH,qBAAqB,WAC9B;AAAA,eAAO,CACN,EAAE5tH,IAAG,cAAc+jB,QAAO,cAAc/S,OAAM,GAC9C,GAAA,EAAEhR,IAAG,YAAY+jB,QAAO,YAAY/S,OAAM,MAC1C,EAAEhR,IAAG,SAAS+jB,QAAO,QAAQ/S,OAAM,IAAA,CAAA;AAAA,MAEtC;AAECpR,MAAAA,WAAU4tH,kBAAkB,SAAS97G,MAAMzK,MAAAA;AAC1C,aAAIyK,KAAK2mD,SAAQ;AAChB3mD,eAAK2mD,UAAUz4D,WAAUy4D;AAAAA,QACzB;AAED,YAAI3mD,CAAAA,KAAK+6C,MAAK;AACb/6C,eAAK+6C,OAAO7sD,WAAU6sD;AAAAA,QACtB;AAED,YAAI/6C,KAAKxK;AACP,iBAAOtH,WAAUiuH,gBAAgBn8G,MAAMzK,MAAMyK,KAAKxK;AAEpD,YAAIskB,OAAOvrB,KAAKiuH,oBAEhB1iG;AAAAA,aAAKlrB,WAAW8nD,SAAS12C,KAAKo8G,UAAU;AACxCtiG,aAAKlrB,WAAWwR,WAAW,GAAGwM,QAAQqG,KAAKC,UAAUlT,IACrD8Z;AAAAA,aAAKlrB,WAAWwR,WAAW,GAAGwM,QAAQrX;AACtCukB,aAAKlrB,WAAW2+F,OAAAA;AAAAA,MAClB;AAECr/F,MAAAA,WAAUsuH,sBAAsB,WAC/B;AAAA,YAAA,CAAKjuH,KAAKkuH,qBAAoB;AAC7B,cAAI/5G,IAAInU,KAAKkuH,sBAAsBruH,SAASC,cAAc,KAC1DqU;AAAAA,YAAE7R,MAAMod,UAAU;AAClBvL,YAAEjU,YAAY;AACdL,mBAASM,KAAKC,YAAY+T,CAC1B;AAAA,QAAA;AACD,eAAOnU,KAAKkuH;AAAAA,MACd;AAECvuH,MAAAA,WAAUwuH,mBAAmB,SAASnjF,QAAQoiF,aAAarjC,MAAMsjC,KAAKvpG,QAAQm5E,QAAQ/mE,QAAAA;AAErFm3F,cAAMp3F,SAASo3F,GAAAA,IAAK,QAAQ;AAE5B,YAAIL,QAAQ,EACXoB,IAAK,EAAErnG,GAAE,KAAKC,GAAE,IAAA,GAChBqnG,IAAK,EAAEtnG,GAAE,KAAKC,GAAE,OAChBsnG,IAAK,EAAEvnG,GAAE,KAAKC,GAAE,OAChBunG,IAAK,EAAExnG,GAAE,KAAKC,GAAE,IAChBwnG,GAAAA,IAAK,EAAEznG,GAAE,KAAKC,GAAE,IAChBynG,GAAAA,IAAK,EAAE1nG,GAAE,KAAKC,GAAE,KAAA,EAAA;AAGjB,YAAI0nG,QAAQ3B,gBAAgB,gBAAgB/sH,IAAM+mB,EAAAA;AAClD,YAAI4nG,QAAQ5B,gBAAgB,gBAAgB/sH,IAAAA,EAAMgnB;AAClD,YAAI4nG,QAAQ7B,gBAAgB,kBAAkB/sH,IAAAA,EAAMgnB;AACpD,YAAI6nG,QAAQ9B,gBAAgB,iBAAiB/sH,MAAMgnB;AAEnD,YAAI8nG,QAAQ,EACX9nG,GAAG2nG,QAAQC,QAAQC;AAGpB,YAAI7jF,WAAW,QAAQ;AACtB8jF,gBAAM/nG,IAAI2nG;AAAAA,QACb,OAAS;AACNI,gBAAM/nG,IAAI5V,KAAK8D,OAAQm4G,gBAAgB,cAAcJ,MAAMhiF,QAAQhkB,IAAIgmG,MAAMhiF,MAAQjkB,EAAAA,KAAKsmG;QAC1F;AAED,YAAIn3F,QAAQ;AACX44F,gBAAM/nG,KAAMq1E,WAAWlmE,OAAOnP,CAAM,KAAA;AACpC+nG,gBAAM9nG,KAAMo1E,WAAWlmE,OAAOlP,CAAM,KAAA;AAAA,QACpC;AAED,eAAO8nG;AAAAA,MACT;AAEC,eAASC;AACR,YAAItvH,OAAOE,WAAUsG,SAAWxG,EAAAA;AAChC,YAAIE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,OAAO;AAC/C,iBAAOE,WAAU4L,OAAO9L,IAAAA;AAAAA,QACxB;AACD,eAAO;AAAA,MACP;AAED,eAASuvH;AACR,YAAIC,iBAAiB5gH,QACpB08C,aAAa18C;AAEd,YAAI4M,WAAW8zG,YAAAA;AACf,YAAI9zG,UAAU;AACb8vC,uBAAa9vC,SAAS8vC;AACtBkkE,2BAAiBh0G,SAASwjE;AAAAA,QAC1B;AAED,eAAO,EACNl/D,YAAY5f,WAAU2f,GAAGC,YACzB+F,cAAc3lB,WAAU2f,GAAGgG,cAC3B4pG,aAAavvH,WAAU4kB,KAAKjiB,MAAMyO,OAClCo+G,cAAcxvH,WAAU4kB,KAAKjiB,MAAMwO,QACnCs+G,qBAAqBrkE,YACrBskE,0BAA0BJ,eAE3B;AAAA,MAAA;AAED,eAASK,eAAetiH,MAAMuiH;AAC7B5vH,QAAAA,WAAU4kB,KAAKjiB,MAAMyO,QAAS/D,KAAK+Z,IAAI;AACvCpnB,QAAAA,WAAU4kB,KAAKjiB,MAAMwO,SAAS9D,KAAKga,IAAI;AAEvCrnB,QAAAA,WAAU2f,GAAGC,aAAa;AAC1B5f,QAAAA,WAAU2f,GAAGgG,eAAe;AAE5B,YAAIrK,WAAW8zG;AACf,YAAIQ,aAAaH,uBAAuBG,aAAaF,0BAA0B;AAE9Ep0G,mBAAS8vC,aAAa;AACtB9vC,mBAASwjE,kBAAkB;AAAA,QAC3B;AAAA,MACD;AAED,eAAS+wC,gBAAgBD,cACxB5vH;AAAAA,QAAAA,WAAU2f,GAAGgG,eAAeiqG,aAAajqG;AACzC3lB,QAAAA,WAAU2f,GAAGC,aAAagwG,aAAahwG;AACvC5f,QAAAA,WAAU4kB,KAAKjiB,MAAMyO,QAASw+G,aAAaL;AAC3CvvH,QAAAA,WAAU4kB,KAAKjiB,MAAMwO,SAASy+G,aAAaJ;AAE3C,YAAIl0G,WAAW8zG,YACf;AAAA,YAAIQ,aAAaH,uBAAuBG,aAAaF,0BAA0B;AAC9Ep0G,mBAAS8vC,aAAawkE,aAAaH;AACnCn0G,mBAASwjE,kBAAkB8wC,aAAaF;AAAAA,QACxC;AAAA,MACD;AAED1vH,MAAAA,WAAU2tH,eAAe,SAAU1tH,KAAAA;AAClC,YAAI2vH,eAAeP,gBAAAA;AACnB,YAAIhiH,OAAOrN,WAAUwuH,iBAAiBvuH,IAAIorC,QAAQprC,IAAIwtH,aAAaxtH,IAAImqF,MAAMnqF,IAAIytH,KAAKztH,IAAIkkB,QAAQlkB,IAAIq9F,QAAQr9F,IAAIs2B,MAElH;AAAA,YAAIhzB,OAAO;AACX,YAAA;AACCosH,yBAAetiH,MAAMuiH,YAAAA;AACrB5vH,UAAAA,WAAU8X,eAAAA;AACVvU,iBAAOvD,WAAU4kB,KAAKrkB;AAAAA,QACtB,SAAQ2F;AAGR0Q,kBAAQC,MAAM3Q,CACjB;AAAA,QAAA,UAAY;AACT2pH,0BAAgBD,YAAAA;AAChB5vH,UAAAA,WAAU8X,eACV;AAAA,QAAA;AAED,eAAOvU;AAAAA,MACT;AAAA,IAEA;AAEAiqH,uBAAmBxtH;EAGlB,GA9RD;AAgSA;AC3PA,MAAe8vH,gBAAA,EACdznD,cACAQ,eACA4B,aACA94C,WACAm7C,WACAiB,sBACAoC,QACAxJ,aAAaoK,wBACbg/C,cAAc/+C,yBACdC,SACAkC,QACA+5C,YACAn5C,WACAC,gBACAyP,SACA8D,OACAnvE,OACAw4E,UACAgE,SACAiE,aACApzF,cAAcszF,yBACdC,aACAU,aACAE,KACAhzB,WACAw1B,KACAuD,YACA11E,UACAg/B,WACAu7D,kBACAr8E,WACA7sB,UAAUitG,qBACVl5B,SACA3oB,cAAcykD,yBACdp2G,OAAOq2G,kBACPpjF,KACAzsB,aAAaiwG,wBACbC,IACAC,UAAAA;AC5ED,MAAMsE,UAAU,IAAIvoD,iBAAiBqoD,aAAAA;AAEhC,MAAC9vH,YAAYgwH,QAAQhgE;AACrB,MAACD,cAAY,EACjB+W,QAAQ9mE,UAAUkjB,KAAK8sG,QAAQlpD,QAAQkpD,OAGxC1uH,EAAAA;AAAAA,OAAOtB,YAAYA;AACnBsB,OAAOyuD,YAAYA;AAEnB,KAAIzuD,OAAO2uH,MAAM;AAChB3uH,SAAO2uH,OAAO;AACf;AAEA3uH,OAAO2uH,KAAKjwH,YAAYA;AACxBsB,OAAO2uH,KAAKlgE,YAAYA;","x_google_ignoreList":[126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153]} \ No newline at end of file diff --git a/codebase/sources/dhtmlxscheduler.js b/codebase/sources/dhtmlxscheduler.js index 6e62111..9ea7e42 100644 --- a/codebase/sources/dhtmlxscheduler.js +++ b/codebase/sources/dhtmlxscheduler.js @@ -8057,27 +8057,56 @@ code.call(this, rowId); } } - }, _prepareDataItem: function(item) { - var processedItem = {}; - var scheduler2 = this.$scheduler; - var copy = scheduler2.utils.copy(item); + }, _prepareItemForJson(item) { + const processedItem = {}; + const scheduler2 = this.$scheduler; + const copy = scheduler2.utils.copy(item); + for (let i in copy) { + let prop = copy[i]; + if (i.indexOf("_") === 0) { + continue; + } else if (prop) { + if (prop.getUTCFullYear) { + processedItem[i] = scheduler2._helpers.formatDate(prop); + } else if (typeof prop == "object") { + processedItem[i] = this._prepareItemForJson(prop); + } else { + processedItem[i] = prop; + } + } else if (prop !== void 0) { + processedItem[i] = prop; + } + } + processedItem[this.action_param] = scheduler2.getUserData(item.id, this.action_param); + return processedItem; + }, _prepareItemForForm(item) { + const processedItem = {}; + const scheduler2 = this.$scheduler; + const copy = scheduler2.utils.copy(item); for (var i in copy) { + let prop = copy[i]; if (i.indexOf("_") === 0) { continue; - } else if (copy[i]) { - if (copy[i].getUTCFullYear) { - processedItem[i] = scheduler2._helpers.formatDate(copy[i]); - } else if (typeof copy[i] == "object") { - processedItem[i] = this._prepareDataItem(copy[i]); - } else if (copy[i] === null) { - processedItem[i] = ""; + } else if (prop) { + if (prop.getUTCFullYear) { + processedItem[i] = scheduler2._helpers.formatDate(prop); + } else if (typeof prop == "object") { + processedItem[i] = this._prepareItemForForm(prop); } else { - processedItem[i] = copy[i]; + processedItem[i] = prop; } + } else { + processedItem[i] = ""; } } processedItem[this.action_param] = scheduler2.getUserData(item.id, this.action_param); return processedItem; + }, _prepareDataItem: function(item) { + if (this._serializeAsJson) { + return this._prepareItemForJson(item); + } else { + return this._prepareItemForForm(item); + } }, _getRowData: function(id2) { var dataItem = this.$scheduler.getEvent(id2); if (!dataItem) { @@ -8727,7 +8756,7 @@ } } function factoryMethod(extensionManager) { - const scheduler2 = { version: "7.1.0" }; + const scheduler2 = { version: "7.1.1" }; scheduler2.$stateProvider = StateService(); scheduler2.getState = scheduler2.$stateProvider.getState; extend$n(scheduler2); @@ -9489,7 +9518,7 @@ } else { var evl = data.firstChild; const rows = evl.querySelectorAll(".dhx_cal_month_row"); - if (rows) { + if (rows && rows.length) { for (var i = 0; i < rows.length; i++) { h[i]++; if (h[i] * hb > this._colsS.height - this.xy.month_head_height) { @@ -9526,14 +9555,11 @@ var last = this._els["dhx_multi_day"][0]; last.style.height = dh; last.style.visibility = h[0] == -1 ? "hidden" : "visible"; + last.style.display = h[0] == -1 ? "none" : ""; last = this._els["dhx_multi_day"][1]; last.style.height = dh; last.style.visibility = h[0] == -1 ? "hidden" : "visible"; - if (last.style.visibility == "hidden") { - last.style.display = "none"; - } else { - last.style.display = ""; - } + last.style.display = h[0] == -1 ? "none" : ""; last.className = h[0] ? "dhx_multi_day_icon" : "dhx_multi_day_icon_small"; this._dy_shift = (h[0] + 1) * hb; h[0] = 0; @@ -19725,6 +19751,13 @@ watchableTarget = targetNode; config.onmouseenter(event2, targetNode); }; + if (scheduler2._mobile && scheduler2.config.touch_tooltip) { + if (targetNode) { + doOnMouseEnter(); + } else { + config.onmouseleave(event2, targetNode); + } + } if (watchableTarget) { if (targetNode && targetNode === watchableTarget) { config.onmousemove(event2, targetNode); @@ -19828,6 +19861,9 @@ tooltipManager.hideTooltip(); }); scheduler2.attachEvent("onBeforeDrag", function() { + if (scheduler2._mobile && scheduler2.config.touch_tooltip) { + return true; + } tooltipManager.hideTooltip(); return true; }); diff --git a/codebase/sources/dhtmlxscheduler.js.map b/codebase/sources/dhtmlxscheduler.js.map index fc5bf86..6f4264f 100644 --- a/codebase/sources/dhtmlxscheduler.js.map +++ b/codebase/sources/dhtmlxscheduler.js.map @@ -1 +1 @@ -{"version":3,"file":"dhtmlxscheduler.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/plugins/drag_highlight_pos.js","../../sources/plugins/undo_delete.js","../../sources/plugins/limit.js","../../sources/plugins/batch_update.js","../../sources/plugins/index.js","../../sources/core/utils/utils.js","../../sources/core/state.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view/gMapAdapter.ts","../../sources/ext/map_view/osmMapAdapter.ts","../../sources/ext/map_view/mapboxAdapter.ts","../../sources/ext/map_view/index.ts","../../sources/ext/minical.js","../../sources/ext/monthheight.js","../../sources/ext/restricted_extensions/multisection.js","../../sources/ext/multiselect.js","../../sources/ext/multisource.js","../../sources/ext/mvc.js","../../sources/ext/outerdrag.js","../../sources/ext/pdf.js","../../sources/ext/quick_info.js","../../sources/ext/readonly.js","../../node_modules/rrule/dist/esm/weekday.js","../../node_modules/rrule/dist/esm/helpers.js","../../node_modules/rrule/dist/esm/dateutil.js","../../node_modules/rrule/dist/esm/iterresult.js","../../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../../node_modules/rrule/dist/esm/callbackiterresult.js","../../node_modules/rrule/dist/esm/nlp/i18n.js","../../node_modules/rrule/dist/esm/nlp/totext.js","../../node_modules/rrule/dist/esm/nlp/parsetext.js","../../node_modules/rrule/dist/esm/types.js","../../node_modules/rrule/dist/esm/nlp/index.js","../../node_modules/rrule/dist/esm/datetime.js","../../node_modules/rrule/dist/esm/parseoptions.js","../../node_modules/rrule/dist/esm/parsestring.js","../../node_modules/rrule/dist/esm/datewithzone.js","../../node_modules/rrule/dist/esm/optionstostring.js","../../node_modules/rrule/dist/esm/cache.js","../../node_modules/rrule/dist/esm/masks.js","../../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../../node_modules/rrule/dist/esm/iterinfo/easter.js","../../node_modules/rrule/dist/esm/iterinfo/index.js","../../node_modules/rrule/dist/esm/iter/poslist.js","../../node_modules/rrule/dist/esm/iter/index.js","../../node_modules/rrule/dist/esm/rrule.js","../../node_modules/rrule/dist/esm/iterset.js","../../node_modules/rrule/dist/esm/rrulestr.js","../../node_modules/rrule/dist/esm/rruleset.js","../../sources/ext/recurring.js","../../sources/ext/recurring_legacy.js","../../sources/ext/serialize.js","../../sources/ext/restricted_extensions/timeline.js","../../sources/ext/tooltip/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"\";\r\n\t\thtml+=\"\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_prepareDataItem: function(item) {\r\n\t\tvar processedItem = {};\r\n\t\tvar scheduler = this.$scheduler;\r\n\t\tvar copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (copy[i]) {\r\n\t\t\t\tif(copy[i].getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(copy[i]);\r\n\t\t\t\t} else if(typeof copy[i] == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareDataItem(copy[i]);\r\n\t\t\t\t} else if(copy[i] === null) {\r\n\t\t\t\t\tprocessedItem[i] = \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = copy[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tif(last.style.visibility == \"hidden\"){\r\n\t\t\t\t\t\t\tlast.style.display = \"none\";\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tlast.style.display = \"\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i
\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'
';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","dragHighlightPos","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","checkSectionPropertyName","y_property","map_to","setRequiredStylesToMarker","style","top","left","marginLeft","createMarkerConfig","configSettings","sectionId","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","getMonthViewMarkers","getTimelineAndUnitsViewMarkers","getColumnViewMarkers","forEach","cfg","push","columnViewMarkersArray","eventNodes","$container","querySelectorAll","event_attribute","i","length","eventNodeClone","cloneNode","startDate","Date","getAttribute","endDate","dates","monthViewMarkersArray","weekDates","currDate","valueOf","week_start","cells","unitMarkersArray","sectionPropertyName","multisection","String","split","section_delimiter","formatedSections","map","element","elems","attachEvent","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","undoDelete","ev","deletedEvent","copy","undo_deleted","new_event","message","text","expire","type","callback","undoBtn","addEvent","render","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","fix_options","options","days","zones","get_resulting_options","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","timespan_type","on_overlap","res","temp_start_date","temp_end_date","timespans","_marked_timespans","date_part","day_value","day_index","getDay","getZones","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","s","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","recEventInLimits","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","_get_blocked_zones","property","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","concat","containers","_props","matrix","container","view","view_config","linker","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","undefined","min","max","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","area","blocks","min_date","max_date","date_to_display","min_day","areas","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","d","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","_get_unit_index","unit","_date","dx","day_ind","unitsPerDay","floor","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","console","error","$stateProvider","registerProvider","batch_update","batchUpdate","noRedraw","call_dp","_dp","updateMode","dp_mode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","setCurrentView","render_data","render_view_data","updateEvent","sendData","initPlugins","limit","uidSeed","isArray","pop","isStringObject","Function","prototype","toString","constructor","isNumberObject","isBooleanObject","isDate","getFullYear","getMonth","defined","delay","timeout","timer","result","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","utils","mixin","source","force","f","object","Number","Boolean","varType","Object","StateService","stateProviders","name","provider","method","internal","unregisterProvider","assert","check","show_errors","log","extend","commonViews","agenda","grid","timeline","week_agenda","year","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedDoc","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","renderCalendar","exportToPNG","exportToPDF","dhtmlxError","catchError","a","b","responseText","ajax_error","alert","classes","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","navigation","handler","calendar","html_element","findRenderer","renderer","rows","cols","renderElement","value","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","EventHost","_silent_mode","listeners","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","extend$l","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","navbar","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","_grid","names","optionalViews","_obj","getElementById","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","_x","scale_x","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","right","node","x","y","prepareValue","val","prepared","isNaN","direction","getElementsByTagName","class_name","attr_value","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","_new_event","select_id","expanded","drag_id","drag_mode","dhx_cal_data","cancelBubble","readonly","icon","mask","buttons","replace","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","confirm","base","_isObject","_isDate","duration","event_duration","time_step","start_hour","setTime","_loading","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","d_pos","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","for_rendered","r","srcElement","classname","drag_event_body","fullClass","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","visibility","totalWidth","col_length","hiddenWidth","c2","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","parse_date","getLabel","lightbox","updateCollection","list_name","collection","serverList","resetLightbox","hideCover","cache","create","n_ev","_focus","focus","getDaysDifference","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","fd","start_slot","end_slot","_get_section_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","addEventListener","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","trg","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","nodeName","loLowerCase","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","serialize$1","serialized","encodeURIComponent","Promise","createConfig","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","cspEnabled","checkIfCSPEnabled","useCsp","csp","old","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","_sorder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","restoreOriginalColors","getSectionTop","posFromDate","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","extend$a","extend$9","extend$8","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_y","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","monitorThemeChange","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","monitorIntervalId","clearInterval","setInterval","csstheme","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","_prepareDataItem","item","processedItem","dataItem","createDataProcessor","tMode","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProvider","common_errors","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderEmptyView","renderDay","calendarEvent","renderOneEvent","selectedId","bg","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","week_agenda_scale_height","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","renderMultiple","currentStart","currentEnd","TimeSlot","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","_timeline_getX","tempStart","tempEnd","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","listOfScales","arrOfScales","some","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","latitude","longitude","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","resolveAddress","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","createAdapter","map_view_provider","currentAdapter","_latLngUpdate","_eventLocationChanged","map_settings","resolve_user_location","resolve_event_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","setupMapView","attachSchedulerEvents","addEventWithLocation","coordinates","removeEventMarker","addEventMarker","setUserLocation","adapter","geolocation","getCurrentPosition","coords","dblclick_dhx_map_area","unmodifiedEvent","updateEventMarker","newIdEvent","onEventClick","detachSchedulerEvents","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","clearEventMarkers","map_end","mapContainer","_setMapSize","destroy","initialize","elem_id","marginRight","marginTop","_selected_event_id","ariaButtonAttr","_updateEventLocation","_delay","ret","_event_resolve_delay","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","_$quickInfoHandler","getPositionInsideScheduler","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","fitQIInsideWindow","quickInfoPopup","popupRect","containerRect","offsetBottom","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","toArray","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","daysBetween","date1","date2","date1ms","date2ms","differencems","toOrdinal","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","dolly","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","dateStr","dateInTimeZone","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","dateInTargetTZ","tzOffset","IterResult","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","SuppressedError","suppressed","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","numberAsText","every","at","the","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","canConvert","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","delimJoin","finalDelimiter","o","realCallback","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","rule","name_1","v","acceptNumber","expect","parseText","ttr","S","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","MDAYs","decodeM","decodeNTH","Frequency","freqIsDailyOrGreater","fromText","toText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","buildTimeset","millisecondModulo","timeset","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","strippedLine","Days","parseNumber","optionKey","parseWeekday","parseIndividualNumber","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","baseYearMasks","wnomask","firstwkst","wyearlen","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","mmask","mdaymask","nmdaymask","mrange","rebuildMonth","lastyear","lastmonth","nwdaymask","ranges","easter","yearStart","Iterinfo","rebuild","yearinfo","monthinfo","eastermask","ydayset","mdayset","_","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","makeTimeset","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","isFullyConvertibleToText","iterSet","_rrule","_exrule","_rdate","_exdate","_exdateHash","_accept","evalExdate","zonedDate","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","splitIntoLines","_b","breakDownLine","parms","_c","rdateTzid","parseRDate","buildRule","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rrulestr","extractName","validateDateParm","parm","rdateval","createGetterSetter","fieldName","field","field_1","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","clearMilliseconds","isDeletedOccurrence","isSeries","recurring_event_id","clearRecurringProperties","original_start","createException","nid","nev","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","old_add_event","ev_id","_ignore_call","tev","_pid_changed","deleteEventFromSeries","idTimestamp","_is_modified_occurence","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","groupExceptions","exceptions","get_visible_events_rec","repeat_date","old_update_event","toIcalString","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","getTopLevelOption","rruleObj","untilDate","hasEndCondition","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","jsDaysToRRULEDays","RruleDayNumsToJs","fillCustomDaily","fillCustomWeekly","dayCheckboxes","dayNum","dayLabel","fillCustomMonthly","dateOfMonth","nthWeekDayOfMonth","repeat_monthly_date","repeat_monthly_weekday","formatDayNumber","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","fillCustomYearly","dateOfYear","nthWeekDayOfYear","fillEndRule","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","rec","_get_node","_outer_html","loc","_init_set_value","_ds","show","onRepeatOptionChange","onCustomRepeatIntervalChange","weekly","monthly","yearly","onCustomRepeatEndRule","_rec_init_done","rf","blocked","rruleset","topOption","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","getFirstSectionOfType","recurring_legacy","occurrence_timestamp_in_utc","outerHTML","getOuterHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","str_date","date_str","register_els","inps","change_current_view","get_repeat_code","get_rcode","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","set_repeat_code","MouseEvent","_set_repeat_code","elements","_toggle_block","_get_button","getRecurringSection","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","onmousemove","onmouseleave","listener","cloneDomEvent","delayShow","utils.default","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","touch_tooltip","targetEventId","hideTooltip","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":";;;;AACe,WAAAA,aAAAA;AAEf,eAAWC,UAAU,eAAeA,OAAOC,UAAU;AACpDD,aAAOC,SAASC,kBAAkB,SAAUC,KAAKC,MAAMC,MAAMC,YAAAA;AAC5D,YAAID,OAAOA,QAAQ;AACnB,YAAIE,MAAMC,SAASC,cAAc;AACjCF,YAAIG,KAAK,iBAAiBC,KAAKC,QAAQ,EACvCL;AAAAA,YAAIM,YAAY,cAAcN,IAAIG,KAAK,qPAAqPL,OAAO;AACnSG,iBAASM,KAAKC,YAAYR,IAAIS;AAE9BL,aAAKM,aAAaV,IAAIG,IAAI,OAAO;AAEjCC,aAAKO,GAAGP,KAAKQ,EAAAA,EAAIC,QAAQd;AACzBK,aAAKO,GAAGP,KAAKQ,EAAAA,EAAIE,UAAUd,IAAIG;AAC/BJ,QAAAA,WAAUgB,WAAWhB,WAAUiB;AAC/BjB,QAAAA,WAAUkB,aAAa;;AACvBlB,QAAAA,WAAUmB,KAAKlB,IAAIG,IAAIP,KAAKC;AAE5B,eAAOO,KAAKO,GAAGP,KAAKe,aAAAA,CAAAA,EAAgBN;AAAAA,MACtC;AAAA,IACA;AAAA,EAEA;;ACrBA,MAAIO;AACJ,MAAUC,OAAAA,WAAW,aAAY;AAChCD,kBAAcC;AAAAA,EACf,OAAK;AACJD,kBAAcE;AAAAA,EACf;AAGA,QAAAC,WAAeH;ACVA,WAASI,iBAAiBzB,YACrC;AAAA,QAAI0B,aAAa,CACjB;AAAA,QAAIC,cAAc;AAClB,QAAIC,YAAY;AAChB,QAAIC,SAAQ;AAEZ,aAASC,aACL;AAAA,aAAO9B,WAAU+B,OAAOC,kBAAkBhC,WAAUiC;AAAAA,IACvD;AAED,aAASC,cAAcC;AACnB,YAAMC,UAAUpC,WAAUqC,QAAQF,QAAAA;AAClC,UAAGC,SAAQ;AACP,eAAOA,QAAQE;AAAAA,MAClB;AACD,aAAOH;AAAAA,IACV;AAED,aAASI,yBAAyBJ,UAC9B;AAAA,YAAMC,UAAUpC,WAAUqC,QAAQF,QAClC;AAAA,UAAGC,QAAQI,YAAW;AAClB,eAAOJ,QAAQI;AAAAA,MAClB;AACD,UAAGJ,QAAQK,QAAO;AACd,eAAOL,QAAQK;AAAAA,MAClB;AAAA,IACJ;AAED,aAASC,0BAA0Bd,YAAWU;AAC1C,cAAQA,QAAAA;AAAAA,QACJ,KAAK;AACDV,UAAAA,WAAUe,MAAMC,MAAM;AACtBhB,UAAAA,WAAUe,MAAME,OAAO;AACvB;AAAA,QACJ,KAAK;AACDjB,UAAAA,WAAUe,MAAME,OAAO;AACvBjB,UAAAA,WAAUe,MAAMG,aAAa;AAC7B;AAAA,QACJ;AACIlB,UAAAA,WAAUe,MAAMC,MAAM;AACtB;AAAA,MAAA;AAAA,IAEX;AAED,aAASG,mBAAmBC,gBACxB;AAAA,YAAA,EAAMnB,OAAEA,QAAKS,QAAQH,UAAUc,WAAWrB,WAAEA,WAAcoB,IAAAA;AAC1DN,gCAA0Bd,YAAWU,MAAAA;AACrC,YAAMY,WAAW,CAAA;AACjB,UAAIC,eAAe,EACfC,YAAYvB,OAAMuB,YAClBC,UAAUxB,OAAMwB,UAChBC,KAAK,4BACLC,MAAM3B;AAEV,UAAIU,UAAU,cAAcA,UAAU,SAAS;AAE3Ca,uBAAe,EAAA,GAAIA,cAAcE,UAAUrD,WAAUwD,KAAKC,IAAI5B,OAAMuB,YAAY,GAAG;MACtF;AACD,UAAIH,WAAU;AACVC,iBAASf,QAAYc,IAAAA;AACrBE,qBAAaD,WAAWA;AAAAA,MAC3B;AACD,aAAOC;AAAAA,IACV;AAED,aAASO,iBAAiBC,UACtB;AAAA,YAAA,EAAMrB,OAAaqB,IAAAA;AACnB,UAAIC;AACJ,cAAQtB,QACJ;AAAA,QAAA,KAAK;AACDsB,0BAAgBC,oBAAoBF;AACpC;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AACDC,0BAAgBE,+BAA+BH;AAC/C;AAAA,QACJ;AACIC,0BAAgBG,qBAAqBJ,QAAAA;AACrC;AAAA;AAERC,oBAAcI,QAASC,SACnBvC;AAAAA,mBAAWwC,KAAKlE,WAAUiC,aAAagC;MAAK,CAEnD;AAAA,IAAA;AAED,aAASF,qBAAqBJ,UAAAA;AAC1B,YAAM9B,EAAAA,OAACA,QAAKS,QAAQH,UAAUc,UAAeU,IAAAA;AAC7C,UAAIQ,yBAAyB;AACzB,UAAIC,aAAapE,WAAUqE,WAAWC,iBAAiB,IAAItE,WAAU+B,OAAOwC,eAAoB1C,KAAAA,OAAMzB;AACtG,UAAGgE,YAAW;AACV,iBAASI,IAAI,GAAGA,IAAIJ,WAAWK,QAAQD,KAAK;AACxC,cAAIE,iBAAiBN,WAAWI,CAAAA,EAAGG,UAAU,IAC7C;AAAA,cAAIC,YAAY,oBAAIC,MAAMH,eAAeI,aAAa;AACtD,cAAIC,UAAU,oBAAIF,KAAMH,CAAAA,eAAeI,aAAa,cAAA,CAAA;AACpD,cAAIE,QAAQ,EAAC5B,YAAYwB,WAAWvB,UAAU0B;AAC9C,gBAAM/B,iBAAiB,EACnBnB,OAAOmD,OACP1C,QACAH,UACAc,WACArB,WAAU8C,eAAAA;AAEdP,iCAAuBD,KAAKnB,mBAAmBC,cAClD,CAAA;AAAA,QAAA;AAAA,MACJ;AACL,aAAOmB;AAAAA,IACV;AAED,aAASN,oBAAoBF;AACzB,UAAIsB,wBAAwB,CAC5B;AAAA,YAAA,EAAMpD,OAACA,QAAKS,QAAQH,UAAUc,UAAeU,IAAAA;AAC7C,YAAMuB,YAAY;AAClB,UAAIC,WAAW,IAAIN,KAAKhD,OAAMuB;AAC9B,aAAM+B,SAASC,QAAYvD,IAAAA,OAAMwB,SAAS+B,QAAU,GAAA;AAChD,YAAInF,MAAM,EAACmD,YAAY+B,SACvBD;AAAAA,kBAAUhB,KAAKjE,GAAAA;AACfkF,mBAAWnF,WAAUwD,KAAK6B,WAAWrF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,MACxE,CAAA;AAAA,MAAA;AACD,UAAIG,QAAQtF,WAAUqE,WAAWC,iBAAiB,IAAItE,WAAU+B,OAAOwC,eAAAA,KAAoB1C,OAAMzB,EAAAA,IAAAA;AACjG,eAASoE,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAK;AACnC,cAAMxB,iBAAiB,EACnBnB,OAAOqD,UAAUV,IACjBlC,QACAH,UACAc,WACArB,WAAW0D,MAAMd,CAAGG,EAAAA,UAAU;AAElCM,8BAAsBf,KAAKnB,mBAAmBC,cACjD,CAAA;AAAA,MAAA;AACD,aAAOiC;AAAAA,IACV;AAED,aAASnB,+BAA+BH;AACpC,UAAI4B,mBAAmB;AACvB,YAAM1D,EAAAA,OAACA,QAAKS,QAAQH,UAAUP,WAAEA,WAAa+B,IAAAA;AAC7C,UAAI6B,sBAAsBjD,yBAAyBJ;AAC/C,UAAInC,WAAU+B,OAAO0D,gBAAgBD,qBAAoB;AACzD,cAAMtC,WAAWwC,OAAO7D,OAAM2D,sBAAsBG,MAAM3F,WAAU+B,OAAO6D,iBAAAA;AAC3E,cAAMC,mBAAmB3C,SAAS4C,IAAIC,aAAWL,OAAOK;AACxD,cAAMC,QAAQ,CACd;AAAA,iBAASxB,IAAI,GAAGA,IAAIqB,iBAAiBpB,QAAQD,KAAK;AAC9CwB,gBAAMxB,CAAK5C,IAAAA,WAAU+C,UAAU,IAC/B;AAAA,gBAAM3B,iBAAiB,EACnBnB,OAAAA,QACAS,QACAH,UACAc,WAAW4C,iBAAiBrB,CAAAA,GAC5B5C,WAAWoE,MAAMxB,CAAAA,EAAAA;AAErBe,2BAAiBrB,KAAKnB,mBAAmBC;QAC5C;AAAA,MACJ;AACD,aAAOuC;AAAAA,IACV;AAEDvF,IAAAA,WAAUiG,YAAY,gBAAgB,SAAU7F,KAAIN,MAAMoG,GACtD;AAAA,UAAIpE,WAAa,GAAA;AACbH,sBAAc;AACdE,QAAAA,SAAQ7B,WAAUmG,SAAS/F,GAAAA;AAC3BwB,oBAAYsE,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eAAAA,GAAAA;AAClD,cAAMpC,WAAWnC,WAAUsG,WAAWxG;AACtC,cAAMwC,SAASJ,cAAcC;AAE7B,YAAIG,UAAU,WAAWtC,WAAU+B,OAAOwE,uBAAwB;AAC9DvG,UAAAA,WAAUwG,SAASpG,GAAAA;AACnBwB,sBAAYsE,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eACrD,GAAA;AAAA,QAAA;AAAA,MACJ;AACD,aAAO;AAAA,IACf,CAEIvE;AAAAA,IAAAA,WAAUiG,YAAY,eAAe,SAAU7F,KAAIN,MAAMoG,GAAAA;AACrD,UAAGvE,eAAeG,cAAY;AAC1BH,sBAAc;AACd,cAAMQ,WAAWnC,WAAUsG,SAAWxG,EAAAA;AACtC,cAAMwC,SAASJ,cAAcC,QAC7B;AAAA,cAAMc,YAAYjD,WAAUyG,cAAcP,GAAGQ;AAC7C,YAAI7E,QAAO;AACP,gBAAM8B,WAAW,EACb9B,eACAS,QACAH,UACAc,WACArB,UAEJ8B;AAAAA,2BAAiBC,QACpB;AAAA,QAAA;AAAA,MACJ;AAAA,IACT,CAEI3D;AAAAA,IAAAA,WAAUiG,YAAY,aAAa,SAAS7F,KAAIN,MAAMoG,GAClD;AAAA,eAAS1B,IAAI,GAAGA,IAAI9C,WAAW+C,QAAQD,KAAK;AACxCxE,QAAAA,WAAU2G,eAAejF,WAAW8C;MACvC;AACD9C,mBAAa;AACbE,kBAAY;AACZC,MAAAA,SAAQ;AAAA,IAChB,CAAA;AAAA,EACA;ACtMe,WAAS+E,WAAW5G,YAClCA;AAAAA,IAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAIyG,IACrD;AAAA,UAAIC,eAAe9G,WAAU+G,KAAKF,EAClC;AAAA,UAAI7G,WAAU+B,OAAOiF,gBAAAA,CAAiBhH,WAAUsG,SAAWW,EAAAA,WAAW;AACrEjH,QAAAA,WAAUkH,QAAQ,EACjBC,MAAM;AAAA;AAAA,iFAEuEN,GAAGzG,EAAAA;AAAAA,iCAEhFgH,QAAQ,KACRC,MAAM,sBACNC,UAAU,SAAUpB,GACnB;AAAA,cAAIqB,UAAUrB,EAAEE,OAAOC,QACtB,2BAA2BQ,GAAGzG,EAE/B,IAAA;AAAA,cAAImH,SAAS;AACZvH,YAAAA,WAAUwH,SAASV,YACnB9G;AAAAA,YAAAA,WAAUyH;UACV;AAAA,QACD,EAAA,CAAA;AAAA,MAEF;AAAA,IACH,CAAA;AAAA,EACA;ACvBe,WAASC,YAAY1H;AAGnCA,IAAAA,WAAU+B,OAAO4F,WAAW;AAC5B3H,IAAAA,WAAU+B,OAAO6F,2BAA2B;AAC5C5H,IAAAA,WAAU+B,OAAO8F,6BAA6B;AAG9C,QAAIC,iBAAiB;AACrB,QAAIC,wBAAwB;AAC5B,QAAIC,cAAc,SAASC,SAASC,MAAMC,OAAAA;AACzC,UAAID,gBAAgBrD,QAAQsD,iBAAiBtD,MAAM;AAClDoD,gBAAQ7E,aAAa8E;AACrBD,gBAAQ5E,WAAW8E;AAAAA,MACtB,OAAS;AACNF,gBAAQC,OAAOA;AACfD,gBAAQE,QAAQA;AAAAA,MAChB;AACD,aAAOF;AAAAA,IACT;AACC,QAAIG,wBAAwB,SAASF,MAAMC,OAAOjF,UAAAA;AACjD,UAAI+E,UAAkBC,OAAAA,QAAQ,WAAYA,OAAO,EAAEA,KAAMA;AACzDD,cAAQZ,OAAOS;AACfG,cAAQ3E,MAAM;AACd,UAAI6E,OAAO;AACV,YAAIjF;AACH+E,kBAAQ/E,WAAWA;AACpB+E,kBAAUD,YAAYC,SAASC,MAAMC,KACrC;AAAA,MAAA;AACD,aAAOF;AAAAA,IACT;AACCjI,IAAAA,WAAUqI,YAAY,SAASH,MAAMC,OAAOjF;AAC3C,UAAI+E,UAAUG,sBAAsBF,MAAMC,OAAOjF,QACjD;AAAA,aAAOlD,WAAUsI,kBAAkBL,OAAAA;AAAAA,IACrC;AACCjI,IAAAA,WAAUuI,cAAc,SAASL,MAAMC,OAAOjF,UAC7CiF;AAAAA,cAAQA,SAAS;AACjB,UAAIF,UAAUG,sBAAsBF,MAAMC,OAAOjF,QAAAA;AACjD,aAAOlD,WAAUwI,qBAAqBP;IACxC;AAECjI,IAAAA,WAAUyI,wBAAwB,SAAS5B,IAAI6B,eAAeC,YAAAA;AAC7DD,sBAAgBA,iBAAiBX;AAEjC,UAAIa,MAAM;AACV,UAAIC,kBAAkB,IAAIhE,KAAKgC,GAAGzD,WAAWgC,QAC7C,CAAA;AAAA,UAAI0D,gBAAgB9I,WAAUwD,KAAKC,IAAIoF,iBAAiB,GAAG,KAC3D;AAAA,UAAIE,YAAY/I,WAAUgJ;AAC1B,aAAOH,kBAAkBhC,GAAGxD,UAAUwF,kBAAkB7I,WAAUwD,KAAKyF,UAAUH,gBAAgBA,gBAAgB9I,WAAUwD,KAAKC,IAAIoF,iBAAiB,GAAG,KAAS,GAAA;AAChK,YAAIK,YAAAA,CAAalJ,WAAUwD,KAAKyF,UAAW,IAAIpE,KAAKgE,eAAAA,CAAAA;AACpD,YAAIM,YAAYN,gBAAgBO,OAEhC;AAAA,YAAIjB,QAAQkB,SAASxC,IAAIkC,WAAWI,WAAWD,WAAWR;AAC1D,YAAIP,OAAM;AACT,mBAAS3D,IAAI,GAAGA,IAAI2D,MAAM1D,QAAQD,KAAG,GAAG;AAGvC,gBAAI8E,aAAatJ,WAAUuJ,kBAAkBV,eAAAA;AAC7C,gBAAIW,WAAa3C,GAAGxD,WAASyF,iBAAiBjC,GAAGxD,SAASoG,QAAAA,KAAaZ,gBAAgBY,QAAc,IAAA,OAAOzJ,WAAUuJ,kBAAkB1C,GAAGxD;AAE3I,gBAAIqG,cAAcvB,MAAM3D,CAAAA;AACxB,gBAAImF,YAAYxB,MAAM3D,IAAE,CACxB;AAAA,gBAAIkF,cAAYF,YAAYG,YAAUL,YAAY;AACjD,yBAAUX,cAAc,YAAW;AAGlCC,sBAAMD,WAAW9B,IAAIyC,YAAYE,UAAUE,aAAaC,SAAAA;AAAAA,cAC/D,OAAW;AACJf,sBAAM;AAAA,cACN;AACD,kBAAA,CAAIA;AACH;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACD,aAAQA,CAAAA;AAAAA,IACV;AACC5I,IAAAA,WAAU4J,sBAAsB,SAAS/H,QAAAA;AACxC,UAAIA,CAAAA;AACH,eAAO;AACR,UAAA,CAAK7B,WAAU+B,OAAO8H;AACrB,eAAO;AACR,UAAIC,IAAI9J;AACR,UAAI+J,IAAID,EAAE/H;AACV,UAAIiI,MAAM;AACV,UAAKnI,OAAMoI,YAAYpI,OAAMqI,aAAerI,OAAW,OAAG;AACzD,cAAMsI,YAAYtI,OAAMqI,aAAarI,OAAMwB;AAE3C,YAAK0G,EAAEK,eAAeL,EAAEM,WAAY;AACnC,cAAIC,mBAAmBH,UAAU/E,QAAAA,KAAa2E,EAAEK,YAAYhF,aAAavD,OAAMuB,WAAWgC,aAAa2E,EAAEM,UAAUjF;AACnH,iBAAOkF;AAAAA,QACP;AAAM,iBAAO;AAAA,MACjB,OAAS;AACNN,cAAM,CAACnI,MAAAA;AAAAA,MACP;AAED,UAAI0I,eAAe;AACnB,eAASC,IAAE,GAAGA,IAAER,IAAIvF,QAAQ+F,KAAK;AAChC,YAAI5B,MAAM;AACV,YAAI/B,KAAKmD,IAAIQ;AAEb3D,WAAG4D,SAASzK,WAAU0K,cAAc7D,EAAAA;AAEpC+B,cAAOmB,EAAEK,eAAeL,EAAEM,YAAcxD,GAAGzD,WAAWgC,QAAAA,KAAa2E,EAAEK,YAAYhF,QAAAA,KAAayB,GAAGxD,SAAS+B,aAAa2E,EAAEM,UAAUjF,YAAa;AAChJ,YAAIwD,KAAI;AACPA,gBAAAA,CAAO5I,WAAUyI,sBAAsB5B,IAAIiB,gBAAgB,SAASjG,QAAOyH,YAAYE,UAAUE,aAAaC,WAE7G;AAAA,gBAAIgB,QAAQ;AACZ,gBAAIrB,cAAYK,aAAaL,cAAcI,aAAY;AACtD,kBAAIC,aAAa,KAAG,MAAMH,YAAYG,WAAU;AAC/CgB,wBAAQ;AAAA,cACR;AAED,kBAAG9I,OAAM4I,UAAUX,EAAEc,YAAYd,EAAEe,cAAc,YAAW;AAC3DhJ,gBAAAA,OAAMuB,WAAW0H,SAAS;AAC1BjJ,gBAAAA,OAAMuB,WAAW2H,WAAWpB,SAAAA;AAAAA,cACnC,OAAa;AACNgB,wBAAQ;AAAA,cACR;AAAA,YACD;AACD,gBAAKnB,YAAYE,eAAeF,YAAYG,aAAeL,aAAaI,eAAeF,WAAWG,WAAW;AAC5G,kBAAG9H,OAAM4I,UAAUX,EAAEc,YAAYd,EAAEe,cAAc,YAAW;AAC3DhJ,gBAAAA,OAAMwB,SAASyH,SAAS;AACxBjJ,gBAAAA,OAAMwB,SAAS0H,WAAWrB,WAAAA;AAAAA,cACjC,OAAa;AACNiB,wBAAQ;AAAA,cACR;AAAA,YACD;AACD,mBAAOA;AAAAA,UACZ,CAAA;AAAA,QACI;AACD,YAAA,CAAK/B,KAAK;AACTA,gBAAOkB,EAAEkB,WAAW,kBAAA,IAAuBlB,EAAEmB,UAAU,oBAAmB,CAACpE,GAAGzG,IAAIyG,EAAO+B,CAAAA,IAAAA;AAAAA,QACzF;AACD2B,uBAAeA,gBAAgB3B;AAAAA,MAC/B;AACD,UAAA,CAAI2B,cAAa;AAChBT,UAAEc,WAAW;AACbd,UAAEe,aAAa;AAAA,MACf;AACD,aAAON;AAAAA,IAGT;AACCvK,IAAAA,WAAUkL,qBAAqB,SAASnC,WAAWoC,UAAUhC,WAAWD,WAAWR;AAClF,UAAIP,QAAO,CACX;AAAA,UAAIY,aAAaA,UAAUoC,QAAAA,GAAW;AACrC,YAAIC,iBAAiBrC,UAAUoC,QAC/B;AAAA,YAAIE,yBAAyBhL,KAAKiL,4BAA4BnC,WAAWD,WAAWkC,gBAAgB1C,aACpG;AAAA,iBAASlE,IAAE,GAAGA,IAAE6G,uBAAuB5G,QAAQD,KAAK;AACnD2D,kBAAQ9H,KAAKkL,oBAAoBpD,OAAOkD,uBAAuB7G,CAAAA,EAAG2D,KAClE;AAAA,QAAA;AAAA,MACD;AACD,aAAOA;AAAAA,IACT;AACCnI,IAAAA,WAAUsL,8BAA8B,SAASnC,WAAWD,WAAWf,OAAOO,eAAAA;AAC7E,UAAI8C;AACJ,UAAGxL,WAAU+B,OAAO8F,4BAA2B;AAC9C2D,sBAAerD,MAAMe,SAAcf,KAAAA,MAAMe,WAAWR,aAAkBP,IAAAA,MAAMe,WAAWR,aACtFP,IAAAA,MAAMgB,cAAchB,MAAMgB,SAAAA,EAAWT,aAAkBP,IAAAA,MAAMgB,WAAWT,aAAiB,IAAA,CAAA;AAAA,MAC7F,OAAO;AACJ8C,sBAAc;AACd,YAAGrD,MAAMe,SAAcf,KAAAA,MAAMe,WAAWR,aAAe,GAAA;AACtD8C,wBAAcA,YAAYC,OAAOtD,MAAMe,SAAWR,EAAAA,aAAAA,CAAAA;AAAAA,QAClD;AAED,YAAIP,MAAMgB,SAAchB,KAAAA,MAAMgB,WAAWT,aAAgB,GAAA;AACxD8C,wBAAcA,YAAYC,OAAOtD,MAAMgB,SAAAA,EAAWT;QAClD;AAAA,MACD;AAED,aAAO8C;AAAAA,IACT;AACC,aAASnC,SAASxC,IAAIkC,WAAWI,WAAWD,WAAWR,eAAAA;AACtD,UAAIoB,IAAI9J;AAER,UAAImI,QAAQ,CAAA;AACZ,UAAIuD,aAAa,EAChBC,QAAS,UACTC,QAAS,aAEV;AAAA,eAAQC,aAAaH,YAAW;AAC/B,YAAIP,WAAWO,WAAWG,SAAAA;AAC1B,YAAG/B,EAAE+B,SAAAA,GAAW;AACf,mBAAQC,QAAQhC,EAAE+B,YAAW;AAC5B,gBAAIE,cAAcjC,EAAE+B,SAAAA,EAAWC;AAC/B,gBAAIE,SAASD,YAAYZ,QAAAA;AACzB,iBAAItE,GAAGmF,MAAAA;AAAS;AAChB7D,oBAAS2B,EAAEyB,oBAAoBpD,OAC9BnI,WAAUkL,mBAAmBnC,UAAU+C,OAAOjF,GAAGmF,MAAAA,GAAS7C,WAAWD,WAAWR,aAAAA,CAAAA;AAAAA,UACjF;AAAA,QACD;AAAA,MACD;AAEDP,cAAQ2B,EAAEyB,oBAAoBpD,OAAOnI,WAAUkL,mBAAmBnC,WAAW,UAAUI,WAAWD,WAAWR,aAAAA,CAAAA;AAC7G,aAAOP;AAAAA,IACP;AAEDnI,IAAAA,WAAUiM,YAAY,SAASC,MAE9B;AAAA,UAAIC,eAAe;AACnB,UAAA,CAAK9L,KAAK+L,KAAKD,eAAe;AAC7B9L,aAAK+L,KAAKD,YAAgB,IAAA,CAAA;AAAA,MAC1B;AACD,UAAIE,MAAMrM,WAAUsM,aAAAA;AACpB,UAAIrI,MAAM5D,KAAK0B;AACf/B,MAAAA,WAAUuM,iBAAAA;AACV,WAAKL,QAAQjI,IAAI0D,YAAY0E,MAAMhM,KAAKmM,aAAaH,MAAMhM,KAAKoM,aAAaJ,IAAIK,cAAczI,IAAI0I,cAAcN,IAAIK,SAAAA,IAAWzI,IAAI2I,WAAW;AAC9I,YAAIzD,YAAY9I,KAAKwM,kBAAkBR,GACvChM;AAAAA,aAAK+L,KAAKD,YAAAA,IAAgBnM,WAAU8M,iBAAiB3D,WAAWkD;MAChE;AAAA,IACH;AACCrM,IAAAA,WAAU8M,mBAAmB,SAAS3D,WAAWkD,KAAAA;AAChD,UAAIF,eAAe;AACnB,UAAIY,aAAY/M,WAAUuJ,kBAAkB8C,GAC5C;AAAA,UAAIpE,UAAU,EACbE,OAAO,CAAC4E,YAAYA,aAAW,CAC/BzJ,GAAAA,KAAK6I,cACL9E,MAAM8E,aAAAA;AAEP,UAAK9L,CAAAA,KAAK2M,aAAa;AACtB,YAAI3M,KAAKsL,UAAUtL,KAAKsL,OAAOtL,KAAK4M,KAAAA,GAAQ;AAC3C,cAAIC,aACHC;AAED,cAAIrB,OAAOzL,KAAKsL,OAAOtL,KAAK4M,KAC5B;AAAA,cAAIG,UAAUtB,KAAKuB,QAAQvB,KAAK7D,QAAQxD;AACxC,cAAIqH,KAAK5D,OAAO,GAAG;AAClB,gBAAG4D,KAAKuB,QAAQvB,KAAK7D,QAAQxD,QAAO;AACnC0E,2BAAc2C,KAAKwB,WAAUnE,aAAa2C,KAAK7D,QAAQxD,SAAUqH,KAAKuB;AAAAA,YACtE;AACDH,0BAAc/D;AACdgE,wBAAYhE,YAAYiE;AAAAA,UACxB,OACI;AACJF,0BAAc;AACdC,wBAAYD,cAAcE;AAAAA,UAC1B;AAED,cAAIG,SAAS,CAAA;AAEb,mBAAS/I,IAAI0I,aAAa1I,IAAI2I,WAAW3I,KAAK;AAC7C,gBAAIgJ,QAAQhJ;AACZyD,oBAAQC,OAAOsF;AACf,gBAAIC,QAAQzN,WAAU0N,wBAAwBzF,SAAS,MAAMuF,KAAO,EAAA,CAAA;AACpED,mBAAOrJ,KAAKuJ;UACZ;AACD,iBAAOF;AAAAA,QACX,OAAU;AACNtF,kBAAQC,OAAOiB;AACf,iBAAOnJ,WAAU0N,wBAAwBzF,SAAS,MAAMkB;QACxD;AAAA,MACJ,OAAS;AACN,YAAI9I,KAAK4M,SAAS,SAAS;AAC1BhF,kBAAQC,OAAAA,CAAQlI,WAAUwD,KAAKyF,UAAUoD;AACzC,iBAAOrM,WAAU0N,wBAAwBzF,SAAS,MAAM,IACxD;AAAA,QAAA;AAAA,MACD;AAAA,IACH;AACCjI,IAAAA,WAAUuM,mBAAmB,WAC5B;AAAA,UAAIJ,eAAe;AACnB,UAAIwB,MAAMtN,KAAK+L,KAAKD,YACpB;AAAA,eAAS3H,IAAE,GAAGA,IAAEmJ,IAAIlJ,QAAQD,KAAK;AAChC,YAAIoJ,MAAMD,IAAInJ;AACd,YAAIqJ,SAASD,IAAIE;AACjB,YAAID,QAAQ;AACXA,iBAAOE,YAAYH,GAAAA;AAAAA,QACnB;AAAA,MACD;AACDvN,WAAK+L,KAAKD,YAAAA,IAAgB;IAC5B;AA4CCnM,IAAAA,WAAUgJ,oBAAoB,EAAEzH,QAAQ,CAAE,EAE1CvB;AAAAA,IAAAA,WAAUuJ,oBAAoB,SAAS/F;AACtC,aAAOA,KAAKkJ,SAAW,IAAA,KAAKlJ,KAAKwK,WACnC;AAAA,IAAA;AACChO,IAAAA,WAAUiO,4BAA4B,SAASlM,QAC9C;AAAA,UAAImM,YAAY,CAChB;AAAA,UAAIC,eAAe,CAEnB;AAAA,UAAIpM,OAAOmG,QAAQ;AAClBnG,eAAOmG,OAAO,CAAC,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,CAAA;AAE5B,UAAInG,OAAOmG,gBAAgBkG,OAAO;AACjC,YAAIC,SAAStM,OAAOmG,KAAKoG,MACzB;AAAA,iBAAS9J,IAAE,GAAGA,IAAE6J,OAAO5J,QAAQD,KAAK;AACnC,cAAI+J,gBAAgBvO,WAAUwO,YAAYzM,MAC1CwM;AAAAA,wBAAcrG,OAAOmG,OAAO7J,CAAAA;AAC5B0J,oBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAUiO,0BAA0BM,aACpE,CAAA;AAAA,QAAA;AACD,eAAOL;AAAAA,MACP;AAED,WAAMnM,UACFA,EAAAA,OAAOqB,cAAcrB,OAAOsB,YAAYtB,OAAOsB,WAAWtB,OAAOqB,cAAgBrB,OAAOmG,SAASwG,UAAa3M,OAAOoG,UAAYpG,CAAAA,OAAOsF;AAC3I,eAAO6G;AAER,UAAIS,MAAM;AACV,UAAIC,MAAM,KAAG;AACb,UAAI7M,OAAOoG,SAAS;AACnBpG,eAAOoG,QAAQ,CAACwG,KAAKC,GACtB;AAAA,UAAI7M,OAAOoG,SAASpG,OAAO8M,cAAc;AACxC9M,eAAOoG,QAAQnI,WAAU8O,YAAY/M,OAAOoG,KAAAA;AAAAA,MAC5C;AAEDpG,aAAO3B,KAAKJ,WAAU+O,IAAAA;AACtBhN,aAAOuB,MAAMvB,OAAOuB,OAAK;AACzBvB,aAAOsF,OAAOtF,OAAOsF,QAAMU;AAE3B,UAAI7E,WAAWnB,OAAOmB;AACtB,UAAIA,UAAU;AACb,iBAAS8L,YAAY9L,UAAU;AAC9B,cAAIA,SAAS+L,eAAeD,WAAW;AACtC,gBAAIE,MAAMhM,SAAS8L;AACnB,gBAAME,EAAAA,eAAed;AACpBc,oBAAM,CAACA;AACR,qBAAS1K,IAAE,GAAGA,IAAE0K,IAAIzK,QAAQD,KAAK;AAChC,kBAAI2K,WAAWnP,WAAUoP,WAAW,CAAE,GAAErN;AACxCoN,uBAASjM,WAAW;AACpBiM,uBAASjM,SAAS8L,QAAYE,IAAAA,IAAI1K,CAClC2J;AAAAA,2BAAajK,KAAKiL,QAClB;AAAA,YAAA;AAAA,UACD;AAAA,QACD;AAAA,MACJ,OAAS;AACNhB,qBAAajK,KAAKnC,MAClB;AAAA,MAAA;AAED,eAASsN,IAAE,GAAGA,IAAElB,aAAa1J,QAAQ4K,KAAK;AACzC,YAAIC,WAAWnB,aAAakB,CAE5B;AAAA,YAAIjM,aAAakM,SAASlM;AAC1B,YAAIC,WAAWiM,SAASjM;AAExB,YAAID,cAAcC,UAAU;AAC3B,cAAIkM,OAAOvP,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKzB,UAAAA,CAAAA;AAC7C,cAAIoM,OAAMxP,WAAUwD,KAAKC,IAAI8L,MAAM,GAAG,KAEtC;AAAA,iBAAOA,OAAOlM,UAAU;AACvB,gBAAI8L,WAAWnP,WAAUoP,WAAW,CAAE,GAAEE,QACjCH;AAAAA,mBAAAA,SAAS/L;AACT+L,mBAAAA,SAAS9L;AAChB8L,qBAASjH,OAAOqH,KAAKnK,QACrB;AAAA,gBAAI2H,aAAc3J,aAAamM,OAAQvP,WAAUuJ,kBAAkBnG,cAAcuL;AACjF,gBAAIc,WAAapM,WAAWmM,QAAQnM,SAASoG,QAAa8F,KAAAA,KAAK9F,QAAcmF,IAAAA,MAAM5O,WAAUuJ,kBAAkBlG,QAAAA;AAC/G8L,qBAAShH,QAAQ,CAAC4E,YAAY0C,QAC9BvB;AAAAA,sBAAUhK,KAAKiL,QAAAA;AAEfI,mBAAOC;AACPA,mBAAOxP,WAAUwD,KAAKC,IAAI+L,MAAM,GAAG,KAAA;AAAA,UACnC;AAAA,QACL,OAAU;AACN,cAAIF,SAASpH,gBAAgBrD;AAC5ByK,qBAASpH,OAAQlI,WAAUwD,KAAKyF,UAAUqG,SAASpH,MAAO9C,QAC3DkK;AAAAA,mBAASnH,QAAQpG,OAAOoG,MAAMmG;AAC9BJ,oBAAUhK,KAAKoL,QACf;AAAA,QAAA;AAAA,MACD;AACD,aAAOpB;AAAAA,IACT;AACClO,IAAAA,WAAU0P,sBAAsB,SAASC,OAAOC,OAAOC,KACtD;AAAA,UAAI7K,QAAQ,CACZ4K;AAAAA,cAAQ5P,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAK+K,SAAO5P,WAAUyM,SAAAA,CAAAA;AAC3DoD,YAAM,IAAIhL,KAAKgL,OAAK7P,WAAUwM,SAAAA;AAC9B,UAAIsD,YAAYF,MAAMxG,OACtB;AAAA,UAAI2G,QAASJ,QAAMG,aAAa,IAAMH,QAAMG,YAAc,IAAEF,MAAMxG,OAASuG,IAAAA;AAC3E,UAAIK,SAAShQ,WAAUwD,KAAKC,IAAImM,OAAOG,OAAO,KAC9C;AAAA,aAAOC,SAASH,KAAKG,SAAShQ,WAAUwD,KAAKC,IAAIuM,QAAQ,GAAG,SAAS;AACpEhL,cAAMd,KAAK8L,MAAAA;AAAAA,MACX;AACD,aAAOhL;AAAAA,IACT;AACChF,IAAAA,WAAUiQ,6BAA6B,SAASlO,QAC/C;AAAA,UAAImO,cAAc,CAAA;AAClB,UAAInO,OAAOsF,QAAQS,gBAAgB;AAClCoI,oBAAYhM,KAAK4D,cACjB;AAAA,YAAI/F,OAAOuB;AACV4M,sBAAYhM,KAAK4D,iBAAe;MACjC;AACDoI,kBAAYhM,KAAK,uBAAuBnC,OAAOuB,GAC/C;AAAA,aAAO4M,YAAYC,KAAK,GAAA;AAAA,IAC1B;AACCnQ,IAAAA,WAAUoQ,uBAAuB,SAASrO,QACzC;AAAA,UAAIsO,QAASnQ,SAASC,cAAc,KACpC;AAAA,UAAI4B,OAAOwB,MAAM;AAChB,mBAAWxB,OAAOwB,QAAQ;AACzB8M,gBAAM9P,YAAYwB,OAAOwB;AAAAA;AAEzB8M,gBAAM5P,YAAYsB,OAAOwB;MAC1B;AACD,aAAO8M;AAAAA,IACT;AACCrQ,IAAAA,WAAU0N,0BAA0B,SAASzF,SAASqI,MAAMzQ,KAAAA;AAC3D,UAAI0Q,SAAS,CAAA;AACb,UAAIxG,IAAI/J,WAAU+B;AAClB,UAAIyO,WAAWnQ,KAAKoM;AACpB,UAAIgE,WAAWpQ,KAAKmM;AACpB,UAAItD,YAAY;AAEhB,UAAA,CAAKa,EAAEnC;AACN,eAAO2I;AAGR,UAAK1Q,CAAAA,OAAOA,QAAQ,GAAG;AACtB,YAAIoI,QAAQC,OAAO;AAClBrI,gBAAMoI,QAAQC;AAAAA,aACV;AACJ,cAAIwI,kBAAkB,IAAI7L,KAAKoD,QAAQC;AACvCgB,sBAAawH,CAAAA;AAGb,iBAAQD,WAAYC,CAAAA,mBAAAA,CAAoBF,YAAaE,CAAAA;AACpD,mBAAOH;AAER1Q,gBAAM6Q,gBAAgBtH,OACtB;AAAA,QAAA;AAGD,YAAIuH,UAAUH,SAASpH,OACvB;AAAA,YAAIuH,UAAU9Q,KAAK;AAClBA,gBAAM,KAAK8Q,UAAQ9Q;AAAAA,QACvB,OAAU;AACNA,gBAAMA,MAAM8Q;AAAAA,QACZ;AAAA,MACD;AACD,UAAIxI,QAAQF,QAAQE;AACpB,UAAI+H,cAAclQ,WAAUiQ,2BAA2BhI;AAEvD,UAAIjI,WAAUgN,eAAehN,WAAUiN,SAAS,SAAS;AACxD,YAAI2D,QAAQ,CAAA;AACZ,YAAI1I,OAAO,CAAA;AAGX,aAAKoI,MAAM;AACVpI,iBAAO,YAAc,CAACgB,SAAalJ,IAAAA,WAAU0P,oBAAoB7P,GACjE;AAAA,mBAAS2E,IAAE,GAAGA,IAAI0D,KAAKzD,QAAQD,KAAK;AACnCoM,kBAAM1M,KAAM7D,KAAKwQ,QAAQ3I,KAAK1D,CAAAA,CAAAA,CAAAA;AAAAA,UAC9B;AAAA,QACL,OAAU;AACNoM,gBAAM1M,KAAKoM;AACXpI,eAAKhE,KAAKrE;QACV;AAED,iBAAS2E,IAAE,GAAGA,IAAIoM,MAAMnM,QAAQD,KAAK;AACpC8L,iBAAOM,MAAMpM,CAAAA;AACb3E,gBAAMqI,KAAK1D,CAAAA;AAEX,cAAIsM,OAAOzQ,KAAKwM,kBAAkBhN,KAAK,SAASQ,KAAK0Q,MAAMtM;AAE3D,cAAGpE,KAAK2Q,SAASF,IAAAA;AAAO;AAExB,cAAIG,cAAcjR,WAAUoQ,qBAAqBnI,OAAAA;AACjDgJ,sBAAYC,YAAYhB;AACxBe,sBAAYtO,MAAMC,MAAM;AACxBqO,sBAAYtO,MAAMwO,SAAS;AAE3B,mBAAS9B,IAAE,GAAGA,IAAIlH,MAAM1D,QAAQ4K,KAAG,GAAG;AACrC,gBAAIO,QAAQzH,MAAM3D,CAAAA;AAClB,gBAAIqL,MAAM1H,MAAM3D,IAAE,CAAA;AAClB,gBAAIqL,OAAOD;AACV,qBAAO,CAER;AAAA,gBAAIS,QAAQY,YAAYtM,UAAU,IAElC0L;AAAAA,kBAAM1N,MAAME,OAAO;AACnBwN,kBAAM1N,MAAMyO,QAAQ;AAEpBd,iBAAK7P,YAAY4P,KACjBE;AAAAA,mBAAOrM,KAAKmM,KACZ;AAAA,UAAA;AAAA,QACD;AAAA,MACJ,OAAS;AACN,YAAIV,QAAQ9P;AAEZ,YAAGQ,KAAK2Q,SAAS3Q,KAAKwM,kBAAkBhN,KAAK,KAAS,CAAA;AAAA,iBAAO0Q;AAE7D,YAAIlQ,KAAKsL,UAAUtL,KAAKsL,OAAOtL,KAAK4M,KAAAA,KAAUhF,QAAQ/E,YAAY+E,QAAQ/E,SAAS7C,KAAK4M,QAAQ;AAC/F,cAAInB,OAAOzL,KAAKsL,OAAOtL,KAAK4M,KAC5B0C;AAAAA,kBAAQ7D,KAAKuF,MAAMpJ,QAAQ/E,SAAS7C,KAAK4M;AAEzC,cAAIqE,cAAcxF,KAAKuF,MAAMpJ,QAAQ/E,SAAS7C,KAAK4M;AACnD,cAAKnB,EAAAA,KAAK5D,OAAO,IAAG;AACnByH,oBAAQ2B;AACR,gBAAIxF,KAAKuB,QAASsC,QAAQ7D,KAAKwB,WAASxB,KAAKuB,MAAO;AACnDsC,sBAAQ;AAAA,YACR;AAAA,UACN,OAAS;AACJ,gBAAIvC,UAAUtB,KAAKuB,QAAQvB,KAAK7D,QAAQxD;AACxCkL,oBAAQA,QAAMvC,UAAUkE;AAAAA,UACxB;AAAA,QACD;AACDhB,eAAOA,OAAOA,OAAOtQ,WAAUuR,cAAc5B,KAE7C;AAAA,iBAASnL,IAAI,GAAGA,IAAI2D,MAAM1D,QAAQD,KAAG,GAAE;AACtC,cAAIoL,QAAQ4B,KAAK5C,IAAIzG,MAAM3D,CAAIuF,GAAAA,EAAE4C,aAAW,EAC5C;AAAA,cAAIkD,MAAM2B,KAAK7C,IAAIxG,MAAM3D,IAAE,IAAIuF,EAAE6C,YAAU;AAC3C,cAAIiD,OAAOD,OAAO;AACjB,gBAAIpL,IAAE,IAAI2D,MAAM1D;AACf;AAAA;AAEA,qBAAO,CACR;AAAA,UAAA;AAED,cAAI4L,QAAQrQ,WAAUoQ,qBAAqBnI,OAAAA;AAC3CoI,gBAAMa,YAAYhB;AAGlB,cAAIuB,mBAAmBpR,KAAK0B,OAAO2P,eAAa,KAAK;AACrD,cAAIC,UAAU,KAAG,KAAG;AACpBtB,gBAAM1N,MAAMC,MAAO4O,KAAKI,OAAOhC,QAAM,KAAG,MAAKvP,KAAK0B,OAAO4K,aAAWgF,WAAStR,KAAK0B,OAAO2P,eAAaC,OAAAA,IAAWF,mBAAoB;AACrIpB,gBAAM1N,MAAMwO,SAASK,KAAK5C,IAAK4C,KAAKI,OAAQ/B,MAAID,SAAO,KAAG,MAAMvP,KAAK0B,OAAO2P,eAAaC,WAAYF,kBAAkB,CAAA,IAAG;AAE1HnB,eAAK7P,YAAY4P,KACjBE;AAAAA,iBAAOrM,KAAKmM,KACZ;AAAA,QAAA;AAAA,MACD;AACD,aAAOE;AAAAA,IACT;AAECvQ,IAAAA,WAAU6R,kBAAkB,WAC3B;AAAA,UAAIC,OAAOzR,KAAK+L,KAAK,gBAAgB,CACrC;AAAA,UAAI2F,OAAO,CACX;AAAA,UAAI/R,WAAUgN,eAAehN,WAAUiN,SAAS,SAAQ;AACvD,iBAASpN,OAAOQ,KAAKwQ,SAAS;AAC7B,cAAIrN,OAAO,oBAAIqB,KAAAA,CAAMhF;AACrBkS,eAAK7N,KAAKuK,MAAMsD,MAAM/R,WAAUgS,qBAAqB3R,KAAKwQ,QAAQhR,GAAK2D,GAAAA,IAAAA,CAAAA;AAAAA,QACvE;AAAA,MACJ,OAAQ;AAEL,YAAIA,OAAO,IAAIqB,KAAK7E,WAAUyM;AAC9B,iBAASjI,IAAI,GAAGyN,MAAMH,KAAKI,WAAWzN,QAAQD,IAAIyN,KAAKzN,KAAK;AAC3D,cAAI8L,OAAOwB,KAAKI,WAAW1N;AAC3B,cAAI8L,KAAK5P,cAAcV,WAAUmS,cAAc7B,KAAK5P,UAAAA,EAAY0R,QAAQ,gBAAqB,IAAA,IAAG;AAC/F;AAAA,UACA;AAEDL,eAAK7N,KAAKuK,MAAMsD,MAAM/R,WAAUgS,qBAAqB1B,MAAM9M,IAAAA,CAAAA;AAC3DA,iBAAOxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KACnC;AAAA,QAAA;AAAA,MACD;AACD,aAAOuO;AAAAA,IACT;AAGC/R,IAAAA,WAAUiC,eAAe,SAASoQ,eAAAA;AACjC,WAAIhS,KAAK+L,MAAK;AACb,cAAM,IAAIkG,MAAM,qIAChB;AAAA,MAAA;AAGD,UAAIC,cAAc;AAClB,UAAIlS,CAAAA,KAAK+L,KAAK,cAAgB,GAAA;AAC7BpM,QAAAA,WAAUwS,aACVD;AAAAA,sBAAc;AAAA,MACd;AAID,UAAIE,gBAAgBzS,WAAU0S,uBAC7BC,iBAAiB3S,WAAU4S,yBAC3B7J,YAAY/I,WAAUgJ;AAEvBhJ,MAAAA,WAAUwI;AAGVxI,MAAAA,WAAUsI,kBAAkB+J;AAE5B,UAAIN,OAAO/R,WAAU6R,gBAErB;AAAA,UAAGU;AACFvS,QAAAA,WAAUoM,OAAO,CAGlBpM;AAAAA,MAAAA,WAAU0S,wBAAwBD;AAClCzS,MAAAA,WAAU4S,0BAA0BD;AACpC3S,MAAAA,WAAUgJ,oBAAoBD;AAE9B,aAAOgJ;AAAAA,IACT;AACC/R,IAAAA,WAAU2G,iBAAiB,SAASoL;AACnC,UAAKA,CAAAA;AACJ;AACD,eAASvN,IAAE,GAAGA,IAAEuN,KAAKtN,QAAQD,KAAK;AACjC,YAAIoJ,MAAMmE,KAAKvN;AAEf,YAAIoJ,IAAIE,YAAY;AACnBF,cAAIE,WAAWC,YAAYH,GAC3B;AAAA,QAAA;AAAA,MACD;AAAA,IACH;AAGC5N,IAAAA,WAAU6S,2BAA2B,SAAS9Q,QAAAA;AAC7C,UAAIR,UAAS;AACb,UAAIwH,YAAY/I,WAAUgJ;AAC1B,UAAI5I,MAAK2B,OAAO3B;AAEhB,UAAI8O,MAAMlP,WAAU0S;AACpB,UAAA,CAAKxD,IAAI9O,GACR8O;AAAAA,YAAI9O,OAAM,CAGX;AAAA,UAAIP,MAAMkC,OAAOmG;AAEjB,UAAIhF,WAAWnB,OAAOmB;AACtB,UAAImE,OAAOtF,OAAOsF;AAClBtF,aAAO3B,KAAKA;AAEZ,UAAI8C,UAAU;AACb,iBAAS8L,YAAY9L,UAAU;AAC9B,cAAIA,SAAS+L,eAAeD,QAAW,GAAA;AACtC,iBAAKjG,UAAUiG,QAAAA;AACdjG,wBAAUiG,QAAY,IAAA;AACvB,gBAAI8D,UAAU5P,SAAS8L,QAAAA;AACvB,gBAAI+D,iBAAiBhK,UAAUiG;AAC/B,gBAAK+D,CAAAA,eAAeD;AACnBC,6BAAeD,OAAAA,IAAW;AAC3B,iBAAKC,eAAeD,OAAAA,EAASjT;AAC5BkT,6BAAeD,OAAAA,EAASjT,OAAO,CAAA;AAChC,gBAAKkT,CAAAA,eAAeD,SAASjT,GAAKwH,EAAAA,IAAAA,GAAM;AACvC0L,6BAAeD,OAAAA,EAASjT,KAAKwH,IAAQ,IAAA,CAAA;AACrC,kBAAIrH,CAAAA,WAAU4S;AACb5S,gBAAAA,WAAU4S,0BAA0B;AACrC,kBAAA,CAAI5S,WAAU4S,wBAAwBvL,IAAAA;AACrCrH,gBAAAA,WAAU4S,wBAAwBvL,QAAQ;AAAA,YAC3C;AACD,gBAAI2L,cAAcD,eAAeD,SAASjT,GAAKwH,EAAAA,IAAAA;AAC/CtF,mBAAOkR,SAASD;AAChBA,wBAAY9O,KAAKnC;AACjBmN,gBAAI9O,GAAAA,EAAI8D,KAAKnC,MACb;AAAA,UAAA;AAAA,QACD;AAAA,MACJ,OAAS;AACN,YAAKgH,CAAAA,UAAUxH,SAAQ1B,GACtBkJ;AAAAA,oBAAUxH,SAAQ1B,GAAO,IAAA,CAAA;AAC1B,YAAA,CAAKkJ,UAAUxH,OAAQ1B,EAAAA,GAAAA,EAAKwH;AAC3B0B,oBAAUxH,OAAAA,EAAQ1B,KAAKwH,IAAQ,IAAA,CAAA;AAEhC,YAAIrH,CAAAA,WAAU4S;AACb5S,UAAAA,WAAU4S,0BAA0B;AACrC,YAAA,CAAI5S,WAAU4S,wBAAwBvL,IAAAA;AACrCrH,UAAAA,WAAU4S,wBAAwBvL,QAAQ;AAE3C,YAAI2L,cAAcjK,UAAUxH,OAAAA,EAAQ1B,KAAKwH,IACzCtF;AAAAA,eAAOkR,SAASD;AAChBA,oBAAY9O,KAAKnC,MAAAA;AACjBmN,YAAI9O,GAAI8D,EAAAA,KAAKnC;MACb;AAAA,IAEH;AAEC/B,IAAAA,WAAU0S,wBAAwB;AAElC1S,IAAAA,WAAUsI,oBAAoB,SAAS+J,eAAAA;AACtC,UAAIa,UAAUlT,WAAUiO,0BAA0BoE,aAAAA;AAClD,WAAKa,QAAQzO;AACZ;AAED,UAAIrE,MAAK8S,QAAQ,CAAG9S,EAAAA;AACpB,eAASoE,IAAE,GAAGA,IAAE0O,QAAQzO,QAAQD,KAAK;AACpCxE,QAAAA,WAAU6S,yBAAyBK,QAAQ1O,CAAAA,CAAAA;AAAAA,MAC3C;AACD,aAAOpE;AAAAA,IACT;AAECJ,IAAAA,WAAUuL,sBAAsB,SAAS4H,eAAehL,OAAAA;AACvD,UAAIiL,kBAAkBD,cAAc7E,MACpCnG;AAAAA,cAAQA,MAAMmG,MAEd;AAAA,UAAA,CAAK8E,gBAAgB3O;AACpB,eAAO0D;AAER,eAAS3D,IAAE,GAAGA,IAAE4O,gBAAgB3O,QAAQD,KAAG,GAAG;AAC7C,YAAI6O,eAAeD,gBAAgB5O,CACnC;AAAA,YAAI8O,aAAaF,gBAAgB5O,IAAE;AACnC,YAAI+O,SAAU/O,IAAE,KAAK4O,gBAAgB3O;AAErC,iBAAS4K,IAAE,GAAGA,IAAElH,MAAM1D,QAAQ4K,KAAG,GAAG;AACnC,cAAItC,aAAa5E,MAAMkH,CACvB;AAAA,cAAII,WAAWtH,MAAMkH,IAAE,CACvB;AAAA,cAAKI,WAAW6D,cAAcvG,cAAcuG,cAAgBvG,aAAasG,gBAAgB5D,YAAY4D,cAAe;AACnHD,4BAAgB5O,CAAAA,IAAKgN,KAAK7C,IAAI0E,cAActG;AAC5CqG,4BAAgB5O,IAAE,KAAKgN,KAAK5C,IAAI0E,YAAY7D,QAAAA;AAC5CjL,iBAAK;AAAA,UACV,OAAW;AACN,gBAAK+O,CAAAA;AACJ;AAED,gBAAIC,SAAUH,eAAetG,aAAY,IAAE;AAC3CqG,4BAAgBK,OAAOjP,IAAEgP,QAAQ,GAAGzG,YAAY0C,QAAAA;AAAAA,UAChD;AACDtH,gBAAMsL,OAAOpE,KAAI,CAAA;AACjB;AAAA,QACA;AAAA,MACD;AACD,aAAO+D;AAAAA,IACT;AACCpT,IAAAA,WAAU0T,2BAA2B,SAASP,eAAehL,OAAAA;AAC5D,UAAIiL,kBAAkBD,cAAc7E,MACpC;AAAA,eAAS9J,IAAE,GAAGA,IAAE4O,gBAAgB3O,QAAQD,KAAG,GAAI;AAC9C,YAAI6O,eAAeD,gBAAgB5O,CAAAA;AACnC,YAAI8O,aAAaF,gBAAgB5O,IAAE,CACnC;AAAA,iBAAS6K,IAAE,GAAGA,IAAElH,MAAM1D,QAAQ4K,KAAG,GAAG;AACnC,cAAItC,aAAa5E,MAAMkH,CACvB;AAAA,cAAII,WAAWtH,MAAMkH,IAAE,CACvB;AAAA,cAAII,WAAW4D,gBAAgBtG,aAAauG,YAAY;AACvD,gBAAIK,cAAc;AAClB,gBAAIN,gBAAgBtG,cAAcuG,cAAc7D,UAAU;AACzD2D,8BAAgBK,OAAOjP,GAAG,CAC1B;AAAA,YAAA;AACD,gBAAI6O,eAAetG,YAAY;AAC9BqG,8BAAgBK,OAAOjP,GAAG,GAAG6O,cAActG,UAC3C4G;AAAAA,4BAAc;AAAA,YACd;AACD,gBAAIL,aAAa7D,UAAU;AAC1B2D,8BAAgBK,OAAQ,cAAejP,IAAE,IAAGA,GAAG,cAAc,IAAE,GAAGiL,UAAU6D,UAAAA;AAAAA,YAC5E;AACD9O,iBAAK;AACL;AAAA,UACL,OAAW;AACN;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACD,aAAO4O;AAAAA,IACT;AACCpT,IAAAA,WAAU8O,cAAc,SAAS3G;AAChC,aAAOnI,WAAU0T,yBAAyB,CAAC,GAAG,OAAOvL,MAAMmG,MAAAA,CAAAA;AAAAA,IAC7D;AACCtO,IAAAA,WAAU4T,gCAAgC,SAASxT,KAAAA;AAClD,UAAI8S,UAAUlT,WAAU0S,sBAAsBtS,GAC9C;AAAA,UAAI8S,SAAS;AACZ,iBAAS1O,IAAE,GAAGA,IAAE0O,QAAQzO,QAAQD,KAAK;AACpC,cAAIzC,SAASmR,QAAQ1O,CACrB;AAAA,cAAIqP,eAAe9R,OAAOkR;AAC1B,mBAAS5D,IAAE,GAAGA,IAAEwE,aAAapP,QAAQ4K,KAAK;AACzC,gBAAIwE,aAAaxE,MAAMtN,QAAQ;AAC9B8R,2BAAaJ,OAAOpE,GAAG,CACvB;AAAA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACCrP,IAAAA,WAAU8T,oCAAoC,SAAS/R;AACtD,UAAIgH,YAAY/I,WAAUgJ;AAC1B,UAAI9F,WAAWnB,OAAOmB;AACtB,UAAIrD,MAAMkC,OAAOmG;AACjB,UAAIb,OAAOtF,OAAOsF,QAAMU;AACxB,UAAIgM;AACJ,UAAI7Q,UAAU;AACb,iBAAS8L,YAAY9L,UAAU;AAC9B,cAAIA,SAAS+L,eAAeD,QAAajG,KAAAA,UAAUiG,WAAW;AAC7D,gBAAI8D,UAAU5P,SAAS8L,QAAAA;AACvB,gBAAIjG,UAAUiG,QAAAA,EAAU8D,OAAS,GAAA;AAChCiB,0BAAYhL,UAAUiG,QAAAA,EAAU8D;YAChC;AAAA,UACD;AAAA,QACD;AAAA,MACJ,OAAS;AACNiB,oBAAYhL,UAAUxH;AAAAA,MACtB;AAED,UAAGwS,WAAW;AACb,YAAIlU,QAAQ6O,QAAW;AACtB,cAAIqF,UAAUlU,QAAQkU,UAAUlU,GAAAA,EAAKwH,OAAO;AAC3CrH,YAAAA,WAAU6S,yBAAyB9Q,MACnC/B;AAAAA,YAAAA,WAAUgU,8BAA8BD,UAAUlU,KAAKwH,IAAOtF,GAAAA,MAAAA;AAAAA,UAC9D;AAAA,QACD,OACI;AACJ,mBAASkS,KAAKF,WAAW;AACxB,gBAAIA,UAAUE,CAAAA,EAAG5M,OAAO;AACvB,kBAAI6M,YAAYlU,WAAUwO,YAAYzM,MACtCA;AAAAA,qBAAOmG,OAAO+L;AACdjU,cAAAA,WAAU6S,yBAAyBqB,SACnClU;AAAAA,cAAAA,WAAUgU,8BAA8BD,UAAUE,CAAAA,EAAG5M,IAAOtF,GAAAA,MAAAA;AAAAA,YAC5D;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACC/B,IAAAA,WAAUgU,gCAAgC,SAASG,eAAepS,QACjE;AAAA,eAASyC,IAAE,GAAGA,IAAE2P,cAAc1P,QAAQD,KAAK;AAC1C,YAAI4P,MAAMD,cAAc3P;AACxB,YAAI2D,QAAQnI,WAAU0T,yBAAyBU,IAAIjM,OAAOpG,OAAOoG,KAAAA;AACjE,YAAIA,MAAM1D;AACT2P,cAAIjM,QAAQA;AAAAA,aACR;AACJgM,wBAAcV,OAAOjP,GAAE,CAAA;AACvBA;AAEA,cAAI6P,gBAAgBrU,WAAU0S,sBAAsB0B,IAAIhU,EACxD;AAAA,mBAASiP,IAAE,GAAGA,IAAEgF,cAAc5P,QAAQ4K,KAAK;AAC1C,gBAAIgF,cAAchF,CAAAA,KAAM+E,KAAK;AAC5BC,4BAAcZ,OAAOpE,GAAG;AACxB;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACCrP,IAAAA,WAAUwI,uBAAuB,SAAS6J;AAEzC,UAAKiC,CAAAA,UAAU7P,QAAQ;AACtBzE,QAAAA,WAAUgJ,oBAAoB,EAAEzH,QAAQ,CAAE,EAAA;AAC1CvB,QAAAA,WAAU0S,wBAAwB;AAClC1S,QAAAA,WAAU4S,0BAA0B;MACpC;AAED,UAAWP,OAAAA,iBAAiB,UAAU;AACrCrS,QAAAA,WAAU4T,8BAA8BvB,aAC3C;AAAA,MAAA,OAAS;AAEN,YAAKA,EAAAA,cAAcjP,cAAciP,cAAchP,WAAU;AACxD,cAAGgP,cAAcnK,SAASwG,UAAAA,CAAc2D,cAAchL;AACrDgL,0BAAcnK,OAAO;AACtB,eAAImK,cAAclK;AACjBkK,0BAAclK,QAAQ;AAAA,QACvB;AAED,YAAIoM,QAAQ,CACZ;AAAA,YAAA,CAAIlC,cAAchL,MAAK;AAEtB,mBAAQA,QAAQrH,WAAU4S,yBAAwB;AACjD2B,kBAAMrQ,KAAKmD;UACX;AAAA,QACL,OAAQ;AACJkN,gBAAMrQ,KAAKmO,cAAchL,IACzB;AAAA,QAAA;AAGD,YAAI6L,UAAUlT,WAAUiO,0BAA0BoE,aAAAA;AAElD,iBAAS7N,IAAE,GAAGA,IAAE0O,QAAQzO,QAAQD,KAAK;AAEpC,cAAIzC,SAASmR,QAAQ1O,CACrB;AAAA,mBAASgQ,IAAE,GAAGA,IAAID,MAAM9P,QAAQ+P,KAAI;AACnC,gBAAIC,cAAczU,WAAUwO,YAAYzM,MACxC0S;AAAAA,wBAAYpN,OAAOkN,MAAMC;AACzBxU,YAAAA,WAAU8T,kCAAkCW;UAC5C;AAAA,QACD;AAAA,MAED;AAAA,IACH;AACCzU,IAAAA,WAAU0U,uBAAuB,SAASC,SAAQC,UACjD;AAAA,UAAIC,kBAAkBF,UAAW3U,WAAUoP,WAAW,IAAGuF,OAAU,IAAA;AACnE,eAAStN,QAAQuN,YAAU,IAAK;AAC/B,YAAIA,SAAS3F,eAAe5H,OAAO;AAClCwN,0BAAgBxN,QAAQuN,SAASvN,IAAAA;AAAAA,QACjC;AAAA,MACD;AACD,aAAOwN;AAAAA,IACT;AACC7U,IAAAA,WAAU8U,yBAAyB,SAASP;AAC3C,UAAIrB,UAAU;AACd,eAAS7L,QAAQkN,OAAO;AACvB,YAAIA,MAAMtF,eAAe5H,IAAO,GAAA;AAC/B6L,kBAAQhP,KAAKuK,MAAMyE,SAASqB,MAAMlN;QAClC;AAAA,MACD;AACD,aAAO6L;AAAAA,IACT;AAEClT,IAAAA,WAAUgS,uBAAuB,SAAS1B,MAAMzQ,KAAAA;AAC/C,UAAIG,WAAUgN,eAAehN,WAAUiN,SAAS;AAC/C;AAED,UAAI9D,YAAYtJ,IAAIuJ,OAAAA;AACpB,UAAIF,YAAYrJ,IAAIuF;AACpB,UAAItF,OAAOO,KAAK4M;AAChB,UAAIlE,YAAY/I,WAAUgJ;AAC1B,UAAIkF,YAAY;AAChB,UAAI6D,OAAO;AACX,UAAI1R,KAAKsL,UAAUtL,KAAKsL,OAAO7L,IAAO,GAAA;AACrC,YAAIgM,OAAOzL,KAAKsL,OAAO7L,IACvB;AAAA,YAAIiV,QAAQjJ,KAAK7D;AACjB,YAAI0H,QAAQ3P,WAAUgV,gBAAgBlJ,MAAMjM;AAC5C,YAAIoV,OAAOF,MAAMpF,KAAAA;AAEjB,cAAK7D,KAAK5D,OAAO,IAAG;AACnBrI,gBAAMG,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKxE,KAAK6U,KACjD,CAAA;AAAA,QAAA,OAAQ;AACJ,cAAIC,KAAK,KAAG,KAAG,KAAG;AAClB,cAAIC,UAAU5D,KAAKI,OAAO/R,MAAMG,WAAUyM,aAAW0I;AACrD,cAAIE,cAAcvJ,KAAKuB,QAAQ0H,MAAMtQ;AACrC5E,gBAAMG,WAAUwD,KAAKC,IAAIzD,WAAUyM,WAAW+E,KAAK8D,MAAMF,UAAQC,cAAc,KAC/ExV;AAAAA,gBAAMG,WAAUwD,KAAKyF,UAAUpJ;QAC/B;AACDsJ,oBAAYtJ,IAAIuJ,OAAAA;AAChBF,oBAAYrJ,IAAIuF,QAAAA;AAEhB,YAAI2D,UAAUjJ,IAAAA,KAASiJ,UAAUjJ,IAAMmV,EAAAA,KAAKM,GAAM,GAAA;AACjD,cAAIC,aAAazM,UAAUjJ,MAAMmV,KAAKM,GAAAA;AACtC,cAAIE,aAAazV,WAAU0U,qBAAqBc,WAAWrM,YAAYqM,WAAWtM,SAAAA,CAAAA;AAClFgF,oBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBW,UACjE,CAAA;AAAA,QAAA;AAAA,MACD;AAED,UAAIC,cAAc3M,UAAU,QAE5B;AAAA,UAAG/I,WAAU+B,OAAO8F,4BAA2B;AAC9C,YAAI8N,YAAYD,YAAYxM,SAAAA,KAAYwM,YAAYvM,SAAAA;AACpD+E,kBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBa,SACpE,CAAA;AAAA,MAAA,OAAS;AACN,YAAGD,YAAYxM,YAAW;AACzBgF,oBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBY,YAAYxM,SAC7E,CAAA,CAAA;AAAA,QAAA;AACD,YAAGwM,YAAYvM,SAAAA,GAAW;AACzB+E,oBAAUhK,KAAKuK,MAAMP,WAAWlO,WAAU8U,uBAAuBY,YAAYvM;QAC7E;AAAA,MACD;AAED,eAAS3E,IAAE,GAAGA,IAAE0J,UAAUzJ,QAAQD,KAAK;AACtCuN,aAAK7N,KAAKuK,MAAMsD,MAAO/R,WAAU0N,wBAAwBQ,UAAU1J,IAAI8L,MAAMzQ,GAAAA,CAAAA;AAAAA,MAC7E;AACD,aAAOkS;AAAAA,IACT;AACC/R,IAAAA,WAAUiG,YAAY,cAAc,WAAA;AACnCjG,MAAAA,WAAUgS,qBAAqBvD,MAAMzO,YAAWsU,SAClD;AAAA,IAAA,CAAA;AAECtU,IAAAA,WAAU4V,+BAA+B,SAAS1P,GAAE2P,KAAAA;AACnD7V,MAAAA,WAAUiL,UAAU,mBAAkB,CAACjL,WAAUyG,cAAcP,CAAG1C,EAAAA,MAAKqS,KAAI3P,CAE3E,CAAA;AAAA,UAAIlG,WAAU+B,OAAO+T,iBAAgB;AACpC9V,QAAAA,WAAU+V,YAAY/V,WAAUyG,cAAcP,GAAG1C,MAAK,MAAK0C;MAC3D;AAAA,IACH;AAAA,EAEA;AC/8BA,WAAS8P,aAAahW,YACrB;AAAA,QAAIiW,UAAU,CAAA;AACd,QAAIC,WAAW;AACf,aAASC,cAAcC,YAAYC,aAClCA;AAAAA,oBAAAA,OAAqBA,eAAe,aAAaA,cAAc;MAAU;AAEzE,UAAA,CAAIJ,QAAQG,UAAY,GAAA;AACvBH,gBAAQG,UAAAA,IAAc/V,KAAK+V,UAC3B/V;AAAAA,aAAK+V,cAAcC;AAAAA,MACnB;AAAA,IACD;AACD,aAASC,cAAcF,YACtB;AAAA,UAAGH,QAAQG,UAAY,GAAA;AACtB/V,aAAK+V,UAAcH,IAAAA,QAAQG;AAC3BH,gBAAQG,UAAAA,IAAc;AAAA,MACtB;AAAA,IACD;AACD,aAASG,eAAeC;AACvB,eAAQhS,KAAKgS,aAAY;AACxBL,sBAAcM,KAAKpW,MAAMmE,GAAGgS,YAAYhS;MACxC;AAAA,IACD;AACD,aAASkS,iBACR;AAAA,eAAQlS,KAAKyR,SAAQ;AACpBK,sBAAcG,KAAKpW,MAAMmE,CAAAA;AAAAA,MACzB;AAAA,IACD;AAED,aAASmS,mBAAmBrP,UAAAA;AAC3B;AACCA,iBACA;AAAA,MAAA,SAAMpB,GACN5E;AAAAA,eAAOsV,QAAQC,MAAM3Q,CAAAA;AAAAA,MACrB;AAAA,IACD;AAEDlG,IAAAA,WAAU8W,eAAeC,iBAAiB,eAAe,WACxD;AAAA,aAAO,EACNC,cAAcd,SAAAA;AAAAA,IAEf,GAAE,KAAA;AAEH,WAAO,SAASe,aAAY3P,UAAU4P,UACrC;AAAA,UAAGhB,UAAS;AAEXS,2BAAmBrP,QACnB;AAAA;AAAA,MACA;AAED,UAAI6P,UAAW9W,KAAK+W,OAAO/W,KAAK+W,IAAIC,cAAc;AAClD,UAAIC;AACJ,UAAIH,SAAQ;AACXG,kBAAUjX,KAAK+W,IAAIC;AACnBhX,aAAK+W,IAAIG,cAAc,KAAA;AAAA,MACvB;AAID,YAAMC,QAAQ,EACbC,aAAa,EAACjU,MAAM,MAAM1D,MAAM,KAChC4X,GAAAA,YAAY,OACZC,gBAAgB,OAChBC,eAAe,CAAE,EAAA;AAIlB,YAAMC,mBAAmB,CAACrU,MAAM1D,SAAAA;AAC/B,YAAG0D,MAAK;AACPgU,gBAAMC,YAAYjU,OAAOA;AAAAA,QACzB;AACD,YAAG1D,MAAK;AACP0X,gBAAMC,YAAY3X,OAAOA;AAAAA,QACzB;AAAA,MAGF;AAAA,UAAImW,WAAU,EACbxO,QAAO,CAACjE,MAAM1D;AAAU0X,cAAME,aAAa;AAAMG,yBAAiBrU,MAAM1D;MAAK,GAC7EgY,gBAAe,CAACtU,MAAM1D;AAAU0X,cAAME,aAAa;AAAMG,yBAAiBrU,MAAM1D;MAAK,GACrFmB,YAAW,CAACuC,MAAM1D;AAAU0X,cAAMG,iBAAiB;AAAME,yBAAiBrU,MAAM1D;MAAK,GACrFiY,aAAY,MAAMP,MAAME,aAAa,MACrCM,kBAAkBhO;AACjB,YAAGA,OAAOA,IAAIvF,QAAO;AACpBuF,cAAIhG,QAASkC,OAAMsR,MAAMI,cAAc1R,EAAE9F,EAAM,IAAA,IAAA;AAAA,QACpD,OAAS;AACJoX,gBAAME,aAAa;AAAA,QACnB;AAAA;AAIHnB,qBAAeE,KAAKpW,MAAM4V,QAE1BC;AAAAA,iBAAW;AACX7V,WAAK4K,UAAU,uBAAuB,CAAA,CAAA;AAEtC0L,yBAAmBrP,QAEnBjH;AAAAA,WAAK4K,UAAU,sBAAsB;AAErCyL,qBAAeD,KAAKpW,IAEpB6V;AAAAA,iBAAW;AACX,UAAIgB,CAAAA,UAAS;AACZ,YAAGM,MAAME,YAAW;AACnB1X,UAAAA,WAAUyH,OAAO+P,MAAMC,YAAYjU,MAAMgU,MAAMC,YAAY3X,IAC/D;AAAA,QAAA,WAAY0X,MAAMG,gBAAe;AAC7B3X,UAAAA,WAAUiB,WAAWuW,MAAMC,YAAYjU,MAAMgU,MAAMC,YAAY3X;QACnE,OAAQ;AACJ,qBAAU0E,KAAKgT,MAAMI,eAAc;AAClC5X,YAAAA,WAAUiY,YAAYzT;UACtB;AAAA,QACD;AAAA,MACD;AAED,UAAI2S,SAAS;AACZ9W,aAAK+W,IAAIG,cAAcD,OAAAA;AACvBjX,aAAK+W,IAAIc,SAAAA;AAAAA,MACT;AAAA,IACH;AAAA,EACA;AAEe,WAAQjB,YAACjX;AACvBA,IAAAA,WAAUiX,cAAcjB,aAAahW,UACtC;AAAA,EAAA;ACrHe,WAASmY,YAAYnY;AAChC4G,eAAW5G,UAAAA;AACXyB,qBAAiBzB,UACjBoY;AAAAA,gBAAMpY;AACNiX,gBAAYjX,UAAAA;AAAAA,EAChB;ACVA,MAAIqY,UAAUxT,KAAKwH,IAAAA;AACnB,WAAS0C,MACR;AAAA,WAAOsJ;AAAAA,EACR;AAGA,WAASC,UAAQrY,KAAAA;AAChB,QAAGmO,MAAMkK,SAAQ;AAChB,aAAOlK,MAAMkK,QAAQrY,GACvB;AAAA,IAAA,OAAM;AAEJ,aAAQA,OAAOA,IAAIwE,WAAWiK,UAAazO,IAAIsY,OAAOtY,IAAIiE;AAAAA,IAC1D;AAAA,EACF;AAGA,WAASsU,eAAevY,KACvB;AAAA,WAAOA,cAAcA,QAAQ,YAC5BwY,SAASC,UAAUC,SAASlC,KAAKxW,IAAI2Y,iBAAiB;AAAA,EACxD;AAGA,WAASC,eAAe5Y,KAAAA;AACvB,WAAOA,OAAcA,OAAAA,QAAQ,YAC5BwY,SAASC,UAAUC,SAASlC,KAAKxW,IAAI2Y,WAAiB,MAAA;AAAA,EACxD;AAGA,WAASE,gBAAgB7Y,KACxB;AAAA,WAAOA,cAAcA,QAAQ,YAC5BwY,SAASC,UAAUC,SAASlC,KAAKxW,IAAI2Y,WAAAA,MAAiB;AAAA,EACxD;AAEA,WAASG,SAAO9Y,KAAAA;AACf,QAAIA,OAAcA,OAAAA,QAAQ,UAAU;AACnC,aAAA,CAAA,EAAUA,IAAI+Y,eAAe/Y,IAAIgZ,YAAYhZ,IAAIwJ;AAAAA,IACnD,OAAQ;AACN,aAAO;AAAA,IACP;AAAA,EACF;AAEA,WAASyP,QAAQjZ,KAChB;AAAA,WAAA,OAAc,OAAQ;AAAA,EACvB;AAEA,WAASkZ,MAAO7R,UAAU8R,SACzB;AAAA,QAAIC;AAEJ,QAAIC,SAAS;AACZA,aAAOC,eAAAA;AACPD,aAAOE,WAAW;AAClB,UAAIC,OAAOrL,MAAMsK,UAAUpK,MAAMmI,KAAKnC,SACtC+E;AAAAA,cAAQK,WAAW,WAClBpS;AAAAA,iBAASmH,MAAMpO,MAAMoZ;AACrBH,eAAOE,WAAW;AAAA,MAClB,GAAEJ,OAAAA;AAAAA,IACL;AAECE,WAAOE,WAAW;AAClBF,WAAOC,iBAAiB,WACvBI;AAAAA,mBAAaN;AACbC,aAAOE,WAAW;AAAA,IACpB;AACCF,WAAOM,WAAW,WAAA;AACjB,UAAIH,OAAOrL,MAAMsK,UAAUpK,MAAMmI,KAAKnC;AACtChN,eAASmH,MAAMpO,MAAMoZ,IAAAA;AACrBH,aAAOC,eACT;AAAA,IAAA;AAEC,WAAOD;AAAAA,EACR;AAEe,QAAAO,QAAA,EACd9K,KACA+K,OAAO,SAASA,MAAO1T,QAAQ2T,QAAQC,OAAAA;AACtC,aAASC,KAAKF;AACb,UAAM3T,OAAO6T,CAAOvL,MAAAA,UAAcsL;AAAQ5T,eAAO6T,CAAAA,IAAGF,OAAOE,CAC5D;AAAA,WAAO7T;AAAAA,EACP,GACDW,MAAM,SAASA,KAAKmT;AACnB,QAAI1V,GAAG8U;AAEP,QAAIY,UAAAA,OAAiBA,UAAU,UAAU;AAExC,cAAQ,MAAA;AAAA,QACP,KAAMnB,SAAOmB,MAAAA;AACZZ,mBAAS,IAAIzU,KAAKqV,MAClB;AAAA;AAAA,QACD,KAAM5B,UAAQ4B,MAAAA;AACbZ,mBAAS,IAAIlL,MAAM8L,OAAOzV,MAC1B;AAAA,eAAID,IAAI,GAAGA,IAAI0V,OAAOzV,QAAQD,KAAI;AACjC8U,mBAAO9U,KAAKuC,KAAKmT,OAAO1V,CACxB,CAAA;AAAA,UAAA;AACD;AAAA,QACD,KAAMgU,eAAe0B;AACpBZ,mBAAS,IAAI5T,OAAOwU,MACpB;AAAA;AAAA,QACD,KAAMrB,eAAeqB;AACpBZ,mBAAS,IAAIa,OAAOD,MACpB;AAAA;AAAA,QACD,KAAMpB,gBAAgBoB,MAAAA;AACrBZ,mBAAS,IAAIc,QAAQF,MACrB;AAAA;AAAA,QACD;AACCZ,mBAAS,CAAA;AACT,eAAK9U,KAAK0V,QAAQ;AACjB,kBAAMG,UAAAA,OAAiBH,OAAO1V,CAE9B;AAAA,gBAAI6V,YAAY,YAAYA,YAAY,YAAYA,YAAY,WAAY;AAC3Ef,qBAAO9U,KAAK0V,OAAO1V,CAAAA;AAAAA,YACnB,WAASuU,SAAOmB,OAAO1V,CAAAA,CAAAA,GAAI;AAC3B8U,qBAAO9U,CAAAA,IAAK,IAAIK,KAAKqV,OAAO1V;YACnC,WAAgB8V,OAAO5B,UAAUzJ,eAAeR,MAAMyL,QAAQ,CAAC1V,CACxD8U,CAAAA;AAAAA,qBAAO9U,KAAKuC,KAAKmT,OAAO1V,CACzB,CAAA;AAAA,UAAA;AACF;AAAA;IAED;AACD,WAAO8U,UAAUY;AAAAA,EACjB,GACDhB,SACDH,QAACA,UACAI,MCxHD;AAAA,QAAMoB,0BACL;AAAA,UAAMC,iBAAiB,CAAA;AAEvB,aAASlU,SAASmU,MAAAA;AACjB,YAAMC,WAAWF,eAAeC,IAChC;AAAA,UAAGC,UAAS;AACX,eAAOF,eAAeC,IAAME,EAAAA,OAAAA;AAAAA,MAC/B,OAAO;AACJ,cAAM/R,MAAM,CAAA;AACZ,mBAAUpE,KAAKgW,gBAAe;AAC7B,cAAIA,CAAAA,eAAehW,GAAGoW;AACrBf,kBAAMC,MAAMlR,KAAK4R,eAAehW,GAAGmW,OAAU,GAAA,IAAA;AAAA,QAC9C;AACD,eAAO/R;AAAAA,MACP;AAAA,IACD;AAED,aAASmO,iBAAiB0D,MAAMC,UAAUE,UACzCJ;AAAAA,qBAAeC,IAAQ,IAAA,EAAEE,QAAQD,UAAUE;IAC3C;AAED,aAASC,mBAAmBJ,MACpBD;AAAAA,aAAAA,eAAeC,IACtB;AAAA,IAAA;AAED,WAAO,EACNnU,UACAyQ,kBACA8D,mBAED;AAAA,EAAA;AChCc,WAAQC,OAAC9a;AACvB,WAAO,SAAS8a,QAAOC,OAAO7T,UAAAA;AAC7B,WAAK6T,OAAM;AACV,YAAG/a,WAAU+B,OAAOiZ,eAAehb,WAAUiL,UAAU,WAAU,CAAC/D,eAAc,OAAO;AACtF,cAAIlH,WAAUkH,SAAS;AACtBlH,YAAAA,WAAUkH,QAAQ,EAACG,MAAM,SAASF,MAAMD,UAASE,QAAS,GAAA,CAAA;AAAA,UAC1D,OACI;AAEJwP,oBAAQqE,IAAI/T,QACZ;AAAA,UAAA;AAGD;AAAA,QACA;AAAA,MACD;AAAA,IACH;AAAA,EACA;ACjBe,WAASgU,SAAOlb,YAAAA;AAE/B,QAAImb,cAAc,EACjBC,QAAQ,sDACRC,MAAM,oDACNvV,KAAK,mDACLmP,MAAM,qDACNqG,UAAU,wDACVC,aAAa,0DACbC,MAAM,oDACNC,cAAc,+CAAA;AAGf,QAAIC,qBAAqB,EACxBN,QAAQ,sCACRC,MAAM,oCACNvV,KAAK,mCACLmP,MAAM,gCACNqG,UAAU,4GACVC,aAAa,sCACbC,MAAM,oCACNpD,OAAO,+BAGRpY;AAAAA,IAAAA,WAAU2b,uBAAuB,EAChCC,aAAa,SAAS9P,MAAAA;AACrB,UAAI+P,aAAa,oBAAoBV,YAAYrP,IAASqP,KAAAA,YAAYM;AACtE,UAAIK,mBAAmBJ,mBAAmB5P,IAAAA,IAAS,6BAA6B4P,mBAAmB5P,IAAAA,IAAQ,MAAO;AAClH,aACC,MAAIA,OAAK,mLAET+P,aAAa,QAAQC,mBAAoBA,mBAAmB,OAAQ;AAAA,IACrE,GACDC,oBAAoB,SAASnO;AAC5B,aAAO;AAAA,IAGP,EAAA;AAGF5N,IAAAA,WAAUgc,qBAAqB,WAAA;AAC9B,YAAM,IAAI1J,MAAM,6FAA6FoJ,mBAAmBJ,WAChI,qBACmBH,YAAYG,QAChC;AAAA,IAAA;AAEAtb,IAAAA,WAAUic,kBAAkB;AAC3B,YAAM,IAAI3J,MAAM,0FAA0FoJ,mBAAmBzG,OAC7H,qBACmBkG,YAAYlG,IAAAA;AAAAA,IAChC;AAEAjV,IAAAA,WAAUkc,iBAAiB;AAC1B,YAAM,IAAI5J,MAAM,yFAAyFoJ,mBAAmBL,OAC5H,qBACmBF,YAAYE,IAAAA;AAAAA,IAChC;AAEArb,IAAAA,WAAUsI,oBAAoB;AAC7B,YAAM,IAAIgK,MAAM,kLAGjB;AAAA,IAAA;AAEAtS,IAAAA,WAAUmc,iBAAiB,WAAA;AAC1B,YAAM,IAAI7J,MAAM;IAGjB;AAEAtS,IAAAA,WAAUoc,cAAc,WACvB;AAAA,YAAM,IAAI9J,MAAM,CACf,6CACA,gIACA,iFACCnC,KAAK,IAAA,CAAA;AAAA,IACR;AAEAnQ,IAAAA,WAAUqc,cAAc;AACvB,YAAM,IAAI/J,MAAM,CACf,6CACA,gIACA,+EAAA,EACCnC,KAAK,IAAA,CAAA;AAAA,IACR;AAAA,EAGA;ACrFe,WAAS+K,SAAOlb,YAAAA;AAa/BA,IAAAA,WAAUiG,YAAY,oBAAoB;AACzC,UAAUqW,OAAAA,gBAAgB,aAAa;AACtChb,eAAOgb,YAAYC,WAAW,WAAW,SAASC,GAAGC,GAAG1S,GACvD;AAAA,cAAI7C,WAAU6C,EAAE,CAAA,EAAG2S;AAEnB,kBAAQ1c,WAAU+B,OAAO4a,YAAAA;AAAAA,YACxB,KAAK;AACJpb,uBAAOqb,MAAM1V,QACb;AAAA;AAAA,YACD,KAAK;AACJ3F,uBAAOqV,QAAQqE,IAAI/T;AACnB;AAAA,UAIL;AAAA,QAAA,CAAA;AAAA,MACE;AAAA,IACF,CAGA;AAAA,EAAA;ACnCe,WAASgU,SAAOlb;AAE/B,aAAS4N,IAAIsD;AACZ,UAAInL,UAAU7F,SAASC,cAAc,KAAA;AACrC,UAAI0c,WAAW3L,aAAa,IAAIvL,MAAM;AACtCkX,cAAQ7Y,QAAQ,SAAS8Y,UACxB/W;AAAAA,gBAAQgX,UAAUtZ,IAAIqZ;MACxB,CACC;AAAA,aAAO/W;AAAAA,IACR;AACA,QAAIiX,YAAY,EACfC,gBAAgB,WACf;AAAA,aAAOrP,IAAI,+BACX;AAAA,IAAA,GACDsP,KAAK,WACJ;AAAA,aAAOtP,IAAI,oBACX;AAAA,IAAA,GACD9B,MAAM,SAAU/J;AACf,UAAIgE,UAAU6H,IAAI,aAClB7H;AAAAA,cAAQoX,aAAa,QAAQpb,OAAO+J,OAAO,MAAA;AAC3C/F,cAAQoX,aAAa,YAAYpb,OAAO+J,IAExC;AAAA,UAAG9L,WAAU+B,OAAOqb,kBAAiB;AACpC,YAAGrb,OAAOsb,WAAW;AACpBtX,kBAAQgX,UAAUtZ,IAAI;QAC1B,WAAY1B,OAAOub,UAAU;AACzBvX,kBAAQgX,UAAUtZ,IAAI,kBAC1B;AAAA,QAAA,WAAa1B,OAAO+J,SAAS,QAAQ;AACjC/F,kBAAQgX,UAAUtZ,IAAI;QACtB;AAED,YAAG1B,OAAOwb,eAAe;AACxBxX,kBAAQgX,UAAUtZ,IAAI,uBACtB;AAAA,QAAA;AAAA,MACD;AACD,aAAOsC;AAAAA,IACP,GACDvC,MAAM,WAAA;AACL,aAAOoK,IAAI;IACX,GACD4P,QAAQ,SAAUzb,QACjB;AAAA,aAAO6L,IAAI,0DACX;AAAA,IAAA,GACD6P,eAAe,SAAU1b;AACxB,aAAO6L,IAAI,aAAa7L,OAAO+J,OAAO;IACtC,GACD4R,QAAQ,WACP;AAAA,aAAO9P,IAAI,qBACX;AAAA,IAAA,GACD+P,oBAAoB,SAAS5b,QAAAA;AAC5B,UAAI6b,kBAAkBhQ,IAAI,kBAC1B;AAAA,UAAA,CAAI7L,OAAO8b,SAAUD,CAAAA,gBAAgBE,iBAAgB;AAEpD9d,QAAAA,WAAU6B,MAAM+b,iBAAiB,SAAS,WACzC;AAAA,cAAI5d,WAAU+d,kBAAqB,GAAA;AAClC/d,YAAAA,WAAUge,gBACf;AAAA,UAAA,OAAW;AACNhe,YAAAA,WAAUmc,eAAe,EACxB7O,UAAUjN,MACVmD,MAAMxD,WAAUsG,WAAW9C,MAC3Bya,YAAY,MACZC,SAAS,SAAU1a,MAAM2a,UAAAA;AACxBne,cAAAA,WAAU8X,eAAetU,IAAAA;AACzBxD,cAAAA,WAAUge,gBACV;AAAA,YAAA,EAAA,CAAA;AAAA,UAEF;AAAA,QACL,CACG;AAAA,MAAA;AACD,aAAOJ;AAAAA,IACP,GACDQ,cAAc,SAAUrc;AACvB,aAAO6L,IAAI;IACX,EAGF;AAAA,aAASyQ,aAAatc,QAAAA;AACrB,UAAIuc;AACJ,UAAIvc,OAAO+J,MAAM;AAChB,gBAAQ/J,OAAO+J,MAAAA;AAAAA,UACd,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJwS,uBAAWtB,UAAUS;AACrB;AAAA,UACD,KAAK;AACJa,uBAAWtB,UAAUxZ;AACrB;AAAA,UACD,KAAK;AACJ8a,uBAAWtB,UAAUU;AACrB;AAAA,UACD,KAAK;AACJY,uBAAWtB,UAAUQ;AACrB;AAAA,UACD,KAAK;AACJc,uBAAWtB,UAAUW;AACrB;AAAA,UACD;AACCW,uBAAWtB,UAAUlR;AACrB;AAAA;MAEJ,WAAW/J,OAAOwc,MAAM;AACtBD,mBAAWtB,UAAUC;AAAAA,MACvB,WAAWlb,OAAOyc,MAAM;AACtBF,mBAAWtB,UAAUE;AAAAA,MACrB;AACD,aAAOoB;AAAAA,IACR;AAEA,aAASG,cAAc1c,QACtB;AAAA,UAAIuc,WAAWD,aAAatc,MAAAA;AAC5B,UAAIuc,CAAAA,UAAS;AACZ;AAAA,MACA;AACD,UAAIvY,UAAUuY,SAASvc;AACvB,UAAGA,OAAOuB,KAAI;AACbyC,gBAAQgX,UAAUtZ,IAAI1B,OAAOuB,GAC7B;AAAA,MAAA;AACD,UAAGvB,OAAOqP,OAAM;AACf,YAAIsN,QAAQ3c,OAAOqP;AACnB,YAAGsN,UAAUA,QAAQ,GAAE;AACtBA,mBAAS;AAAA,QACT;AACD3Y,gBAAQpD,MAAMyO,QAAQsN;AAAAA,MACtB;AACD,UAAG3c,OAAOoP,QAAO;AAChB,YAAIuN,QAAQ3c,OAAOoP;AACnB,YAAGuN,UAAUA,QAAQ,GAAE;AACtBA,mBAAS;AAAA,QACT;AACD3Y,gBAAQpD,MAAMwO,SAASuN;AAAAA,MACvB;AACD,UAAI3c,OAAO8b,OAAO;AACjB7d,QAAAA,WAAU6B,MAAMkE,SAAS,SAAShE,OAAO8b,KAAAA;AAAAA,MACzC;AACD,UAAI9b,OAAOwB,MAAM;AAChBwC,gBAAQxF,YAAYwB,OAAOwB;AAAAA,MAC3B;AAED,UAAIxB,OAAO4c,OAAO;AACjB,YAAID,QAAQ;AACZ,YAAI3c,OAAO4c,SAAS,SAAS;AAC5BD,kBAAQ;AAAA,QACX,WAAY3c,OAAO4c,SAAS,QAAQ;AACjCD,kBAAQ;AAAA,QACR;AACD3Y,gBAAQpD,MAAMic,iBAAiBF;AAAAA,MAC/B;AACD,aAAO3Y;AAAAA,IACR;AAEA,aAAS8Y,cAAc9c,QAAAA;AACtB,iBAAWA,WAAW,UAAU;AAC/BA,iBAAS,EACR+J,MAAM/J,OAAAA;AAAAA,MAEP;AACD,UAAKA,CAAAA,OAAO+J,SAAS/J,OAAOwc,QAAAA,CAASxc,OAAOyc,MAAM;AACjDzc,eAAO+J,OAAO;AAAA,MACd;AACD,aAAO/J;AAAAA,IACR;AAEA,aAAS+c,aAAa/c,QACrB;AAAA,UAAIgd,WAAW7e,SAAS8e;AACxB,UAAIC;AACJ,UAAG7Q,MAAMkK,QAAQvW,SAAQ;AACxBkd,gBAAQld;AAAAA,MACV,OAAM;AACJkd,gBAAQ,CAACld;MACT;AAED,eAASyC,IAAI,GAAGA,IAAIya,MAAMxa,QAAQD,KAAK;AACtC,YAAIsH,OAAO+S,cAAcI,MAAMza,CAE/B,CAAA;AAAA,YAAGsH,KAAKA,SAAS,SAASmT,MAAMza,IAAI,IAAG;AACtC,cAAI0a,OAAOL,cAAcI,MAAMza,IAAI,CAAA,CAAA;AACnC,cAAG0a,KAAKpT,SAAS,UAAUoT,KAAKpT,SAAS,SAAQ;AAChDA,iBAAKuR,YAAY;AACjBvR,iBAAKyR,gBAAgB;AAAA,UACrB;AAAA,QACD;AAED,YAAGzR,KAAKA,SAAS,UAAUmT,MAAMza,IAAI,IAAG;AACvC,cAAI0a,OAAOL,cAAcI,MAAMza,IAAI,CACnC,CAAA;AAAA,cAAG0a,KAAKpT,SAAS,UAAUoT,KAAKpT,SAAS,SAAQ;AAChDA,iBAAKyR,gBAAgB;AAAA,UACrB;AAAA,QACD;AAED,YAAGzR,KAAKA,SAAS,WAAWmT,MAAMza,IAAI,CAAA,GAAG;AACxC,cAAI0a,OAAOL,cAAcI,MAAMza,IAAI,CACnC,CAAA;AAAA,cAAG0a,KAAKpT,SAAS,UAAUoT,KAAKpT,SAAS,OAAM;AAC9CA,iBAAKwR,WAAW;AAChBxR,iBAAKyR,gBAAgB;AAAA,UACrB;AAAA,QACD;AAED,YAAIxX,UAAU0Y,cAAc3S,IAAAA;AAE5BiT,iBAASte,YAAYsF,OAAAA;AACrB,YAAG+F,KAAK0S,QAAQ1S,KAAKyS,MAAK;AACzBxY,kBAAQtF,YAAYqe,aAAahT,KAAK0S,QAAQ1S,KAAKyS,IACnD,CAAA;AAAA,QAAA;AAAA,MACD;AACD,aAAOQ;AAAAA,IACR;AAEA/e,IAAAA,WAAUmf,gBAAgB,SAAUF,OAAAA;AACnC,UAAIG,SAAS/e,KAAKgE,WAAWgb,cAAc,kBAAA;AAC3C,UAAKD,CAAAA,QAAO;AACXA,iBAASlf,SAASC,cAAc,KAChCif;AAAAA,eAAOlO,YAAY;AACnBlR,QAAAA,WAAUsf,gBAAgBL,OAAOG;AACjC,eAAOA;AAAAA,MACP;AACD,aAAOA;AAAAA,IACR;AAGA,QAAIG,iBAAiB;AACrBvf,IAAAA,WAAUsf,kBAAkB,SAAUvd,QAAQ8J;AAE7C,UAAI9J,CAAAA,QAAO;AACV;AAAA,MACA;AACD,UAAIyd,gBAAgB;AACpB,UAAIC,gBAAgB;AAEpB,UAAIC,YAAY3d,OAAOoP,UAAUnR,WAAU2f,GAAGC;AAE9C,UAAGL,mBAAmB,QACnBA,mBAAmBG,WAAW;AAChCF,wBAAgB;AAAA,MAChB;AAC+D;AAC/DC,wBAAgB;AAAA,MAChB;AAED,UAAGD,eAAc;AAChBxf,QAAAA,WAAU2f,GAAGC,aAAaF;AAAAA,MAC1B;AACD,UAAGD,eAAc;AAChB5T,kBAAUtL,YAAY;AACtBsL,kBAAUpL,YAAYqe,aAAa/c,MAAAA,CAAAA;AAAAA,MACnC;AAED,UAAGyd,iBAAiBC,eAAc;AACjCzf,QAAAA,WAAU6f,cAAAA;AACV7f,QAAAA,WAAUoM,OAAO,CAAA;AACjBpM,QAAAA,WAAUwS,aAAAA;AACVxS,QAAAA,WAAU8f,YACV;AAAA,MAAA;AAED,UAAGJ,cAAc,GAAE;AAClB7T,kBAAUlJ,MAAMod,UAAU;AAAA,MAC5B,OAAM;AACJlU,kBAAUlJ,MAAMod,UAAU;AAAA,MAC1B;AAEDR,uBAAiBG;AAAAA,IAClB;AAAA,EAEA;ACvQe,WAASxE,SAAOlb,YAAAA;AAE9B,aAASggB,eAAenU,WAAAA;AACvB,UAAIoU,OAAO/f,SAASM;AAEpB,aAAMqL,aAAaA,aAAaoU,MAAK;AACpCpU,oBAAYA,UAAUiC;AAAAA,MACtB;AAED,aAAA,CAAA,EAAUmS,QAAQpU;AAAAA,IAClB;AAED,aAASqU,cAAc5e;AACtB,aAAO,EACN6e,GAAI7e,QAAO8e,cAAclgB,SAASmgB,gBAAgBC,aAClDC,GAAIjf,QAAOkf,eAAetgB,SAASmgB,gBAAgBI;IAEpD;AACD,aAASC,OAAOlE,GAAEC;AACjB,aAAOD,EAAE2D,KAAK1D,EAAE0D,KAAK3D,EAAE+D,KAAK9D,EAAE8D;AAAAA,IAC9B;AAED,aAASI,mBAAmB3gB,YAAWsB;AACtC,UAAIsf,UAAUV,cAAc5e,OAC5B;AAAA,UAAIuf;AACJ7gB,MAAAA,WAAU6B,MAAMP,SAAQ,UAAU;AACjCqY,qBAAakH,WAAAA;AACbA,sBAAcnH,WAAW,WAAA;AAExB,cAAKsG,CAAAA,eAAehgB,WAAUqE,UAAerE,KAAAA,WAAU8gB,YAAW;AACjE;AAAA,UACA;AACD,cAAIC,UAAUb,cAAc5e,OAAAA;AAG5B,eAAKof,OAAOE,SAASG,UAAU;AAC9BH,sBAAUG;AACVC,mCAAuBhhB,UAAAA;AAAAA,UACvB;AAAA,QACD,GAAE;MACN,CACE;AAAA,IAAA;AAED,aAASghB,uBAAuBhhB,YAAAA;AAC/B,UAAGA,WAAU8gB,cAAAA,CAAe9gB,WAAUihB,SAAAA,CAAUjB,eAAehgB,WAAUihB,KAAAA,GAAO;AAC/E;AAAA,MACA;AACD,UAAIjhB,WAAUiL,UAAU,qBAAqB,CAAA,CAAA,GAAK;AACjDjL,QAAAA,WAAUiB,WAAAA;AACVjB,QAAAA,WAAUiL,UAAU,0BAA0B;MAC9C;AAAA,IACD;AAED,aAASiW,gBAAgBlhB;AACxB,UAAIuf,iBAAiBvf,WAAUihB,MAAME;AACrC,UAAIC,gBAAgBphB,WAAUihB,MAAMI;AAEpC,eAASC,wBACR;AAAA,YAAGthB,WAAU8gB,YAAW;AACvB;AAAA,QACA;AAED,YAAG9gB,WAAUihB,OAAM;AAClB,cAAIjhB,WAAUihB,MAAME,gBAAgB5B,kBACnCvf,WAAUihB,MAAMI,eAAeD,eAAc;AAC7CJ,mCAAuBhhB,UACvB;AAAA,UAAA;AAEDuf,2BAAiBvf,WAAUihB,MAAME;AACjCC,0BAAgBphB,WAAUihB,MAAMI;AAAAA,QAChC;AAED3H,mBAAW4H,uBAAuB;MAClC;AAEDA,4BAAAA;AAAAA,IACA;AAED,aAASC,kBAAkBvhB,YAC1B;AAAA,UAAIigB,OAAOjgB,WAAUqE;AACrB,UAAImd,kBAAkBlgB,OAAOmgB,iBAAiBxB,IAC9C;AAAA,UAAGuB,gBAAgBE,iBAAiB,eAAe,UAAS;AAC3DzB,aAAKtd,MAAM2K,WAAW;AAAA,MACtB;AAED,UAAIqU,gBAAgBzhB,SAASC,cAAc,QAC3CwhB;AAAAA,oBAAczQ,YAAY;AAC1ByQ,oBAAcC;AACd,UAAG5hB,WAAU+B,OAAO8f,qBAAoB;AACvCF,sBAAcxE,aAAa,QAAQ,MAAA;AACnCwE,sBAAcxE,aAAa,eAAe,IAC1C;AAAA,MAAA;AAGD,UAAI2E,yBAA2BxgB,CAAAA,CAAAA,OAAO,aAAaA,OAAO,IAAA,KAASA,OAAO,MAC1E;AAAA,UAAGwgB,wBAAuB;AACzBZ,wBAAgBlhB,UACnB;AAAA,MAAA,OAAS;AACNigB,aAAKxf,YAAYkhB;AACjB,YAAIA,cAAcI,eAAe;AAChCpB,6BAAmB3gB,YAAW2hB,cAAcI;QAChD,OAAU;AAEN9B,eAAKlS,YAAY4T,aAAAA;AACjBhB,6BAAmB3gB,YAAWsB;QAC9B;AAAA,MACD;AAAA,IACD;AAEDigB,sBAAkBvhB,UAAAA;AAAAA,EAEnB;AAAA,EC/GA,MAAMgiB,UAAAA;AAAAA,IACL,cAAApJ;AACCvY,WAAK4hB,eAAe;AACpB5hB,WAAK6hB,YAAY;IACjB;AAAA,IACD,eACC7hB;AAAAA,WAAK4hB,eAAe;AAAA,IACpB;AAAA,IACD,aACC5hB;AAAAA,WAAK4hB,eAAe;AAAA,IACpB;AAAA,EAAA;AAGF,QAAME,qBAAqB,SAASliB,KACnC;AAAA,QAAImiB,WAAW,CAAA;AACf,QAAIzS,QAAQ;AACZ,UAAM0S,eAAe;AACpB,UAAIC,iBAAiB;AACrB,iBAAU9d,KAAK4d,UAAS;AACvB,cAAMG,gBAAgBH,SAAS5d,CAAGiK,EAAAA,MAAMxO,KAAKqU,SAAAA;AAC7CgO,yBAAeA,kBAAkBC;AAAAA,MACjC;AACD,aAAOD;AAAAA,IACT;AACCD,iBAAa7a,WAAS,SAAS0W,SAASva;AACvC,UAAY,OAAA,WAAY,YAAW;AAClC,YAAI6e;AACJ,YAAG7e,YAAYA,SAASvD,IAAG;AAC1BoiB,sBAAY7e,SAASvD;AAAAA,QACzB,OAAQ;AACJoiB,sBAAY7S;AACZA;AAAAA,QACA;AAED,YAAGhM,YAAYA,SAAS8e,MAAK;AAC5B,gBAAMC,kBAAkBxE;AACxBA,oBAAU;AACTwE,4BACAL;AAAAA,yBAAaM,YAAYH,SAC9B;AAAA,UAAA;AAAA,QACI;AAEDJ,iBAASI,aAAatE;AACtB,eAAOsE;AAAAA,MACP;AACD,aAAO;AAAA,IACT;AACCH,iBAAaM,cAAY,SAASviB;aAC1BgiB,SAAShiB,GAAAA;AAAAA,IAClB;AAECiiB,iBAAaO,QAAQ;AACpBR,iBAAW,CAAA;AAAA,IACb;AAEC,WAAOC;AAAAA,EACR;AAEA,WAASQ,cAAc5iB,KAAAA;AAEtB,UAAM6iB,YAAY,IAAId;AACtB/hB,QAAIgG,cAAY,SAAS8c,WAAW7E,SAASva,UAC5Cof;AAAAA,kBAAY,QAAMA,UAAUC,YAAAA;AAC5B,UAAKF,CAAAA,UAAUZ,UAAUa,SAAW,GAAA;AACnCD,kBAAUZ,UAAUa,SAAAA,IAAaZ,mBAAmB9hB,IACpD;AAAA,MAAA;AAED,UAAGsD,YAAYA,SAASsf,YAAW;AAClC/E,kBAAUA,QAAQgF,KAAKvf,SAASsf,UAChC;AAAA,MAAA;AAED,YAAME,UAAUL,UAAUZ,UAAUa,SAAAA,EAAWvb,SAAS0W,SAASva,QAAAA;AAEjE,UAAI6e,YAAaO,YAAU,MAAII;AAC/B,UAAGxf,YAAYA,SAASvD,IAAG;AAC1BoiB,oBAAY7e,SAASvD;AAAAA,MACrB;AACD,aAAOoiB;AAAAA,IACT;AAECviB,QAAImjB,YAAY,SAAS9b,UACxBjH;AAAAA,WAAK4F,YAAY,cAAcqB,QAAAA;AAAAA,IACjC;AAECrH,QAAIgL,YAAU,SAASwP,MAAM4I;AAC5B,UAAIP,UAAUb;AAAc,eAAO;AAEnC,YAAMqB,cAAc,QAAM7I,KAAKuI,YAAAA;AAE/B,YAAMd,YAAYY,UAAUZ;AAC5B,UAAIA,UAAU,eAAiB,GAAA;AAC9BA,kBAAU,eAAiBzT,EAAAA,MAAMpO,MAAM,CAACoa,IAAAA,EAAMhP,OAAO4X,cACrD,CAAA;AAAA,MAAA;AAED,UAAInB,UAAUoB;AACb,eAAOpB,UAAUoB,aAAa7U,MAAMpO,MAAMgjB;AAC3C,aAAO;AAAA,IACT;AAECpjB,QAAI+K,aAAW,SAASyP,MAAAA;AACvB,YAAMyH,YAAYY,UAAUZ;AAC5B,aAAUA,CAAAA,CAAAA,UAAU,QAAMzH,KAAKuI;IACjC;AAEC/iB,QAAIsjB,cAAY,SAASnjB,KAAAA;AACxB,UAAIA,KAAG;AACN,YAAI8hB,YAAYY,UAAUZ;AAC1B,mBAAU1d,KAAK0d,WAAU;AACxBA,oBAAU1d,CAAAA,EAAGme,YAAYviB,GAAAA;AAAAA,QACzB;AAED,cAAMojB,OAAOpjB,IAAGuF,MAAM,GAAA;AACtBuc,oBAAYY,UAAUZ;AACtB,YAAGsB,KAAK/e,WAAW,GAAE;AACpB,gBAAMse,YAAYS,KAAK;AACvB,gBAAMC,UAAUD,KAAK,CAAA;AACrB,cAAGtB,UAAUa,SAAAA,GAAW;AACvBb,sBAAUa,SAAAA,EAAWJ,YAAYc,OACjC;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACH;AACCxjB,QAAIyjB,kBAAkB;AACrB,iBAAWjJ,QAAQqI,UAAUZ,WAAW;AACvCY,kBAAUZ,UAAUzH,IAAMmI,EAAAA,MAAAA;AAAAA,MAC1B;AAAA,IACH;AAAA,EAEA;AC1He,WAAS1H,SAAOlb,YAAAA;AAEtB6iB,kBAAC7iB,UAAAA;AAEH2jB,aAAC3jB,UAERA;AAAAA,IAAAA,WAAU4jB,kBAAkB,SAASC,KAAIhiB,QAAOqc,SAC/C;AAAA,UAAI2F,IAAGC,qBAAoB;AAC1BD,QAAAA,IAAGC,oBAAoBjiB,QAAOqc,SAAS,KAAA;AAAA,MAEzC,WAAW2F,IAAGN,aAAY;AACxBM,QAAAA,IAAGN,YAAY,OAAK1hB,QAAOqc,OAC3B;AAAA,MAAA;AAAA,IACF;AAGAle,IAAAA,WAAU+jB,aAAa,WACtBC;AAAAA,eAA0BhkB;AAE1BA,MAAAA,WAAU+jB,aAAa;;IACxB;AAEA,UAAMzhB,SAAS,EACd2hB,QAAU,EACTxc,QAAQ,SAAU1F,QAAAA;AACjB,aAAO/B,WAAUmf,cAAcpd;IAC/B,EAEFmiB,GAAAA,QAAU,EACTzc,QAAQ,SAAU1F,QACjB;AAAA,YAAMgE,UAAU7F,SAASC,cAAc;AACvC4F,cAAQmL,YAAY;AACpB,aAAOnL;AAAAA,IACP,EAEFoe,GAAAA,UAAY,EACX1c,QAAQ,SAAU1F,QACjB;AAAA,YAAMgE,UAAU7F,SAASC,cAAc,KACvC4F;AAAAA,cAAQmL,YAAY;AACpB,aAAOnL;AAAAA,IACP,EAEFqY,GAAAA,cAAgB,EACf3W,QAAQ,SAAU1F,QACjB;AAAA,aAAOA,OAAOwB;AAAAA,IACd,EAAA,EAAA;AAIH,aAAS6gB,mBAAmBre,SAAAA;AAC3B,aACCA,CAAAA,EAAAA,QAAQsZ,cAAc,iBACtBtZ,KAAAA,QAAQsZ,cAAc,eACtBtZ,KAAAA,QAAQsZ,cAAc,kBAExB;AAAA,IAAA;AAEA,aAASgF,oBAAoBrkB;AAC5B,YAAMskB,QAAQ,CACb,OACA,QACA;AAED,YAAM9gB,OAAO,CACZ,MAAA;AAED,YAAM+gB,MAAM,CACX,QACA,SACA,MAAA;AAGD,UAAGvkB,WAAU4L,QAAO;AACnB,mBAAUpH,KAAKxE,WAAU4L,QAAO;AAC/B0Y,gBAAMpgB,KAAKM,CACX;AAAA,QAAA;AAAA,MACD;AACD,UAAGxE,WAAU2L,QAAO;AACnB,mBAAUnH,KAAKxE,WAAU2L,QAAO;AAC/B2Y,gBAAMpgB,KAAKM;QACX;AAAA,MACD;AAED,UAAGxE,WAAUwkB,SAASxkB,WAAUwkB,MAAMC,OAAM;AAC3C,mBAAUjgB,KAAKxE,WAAUwkB,MAAMC,OAAM;AACpCH,gBAAMpgB,KAAKM,CAAAA;AAAAA,QACX;AAAA,MACD;AAED,YAAMkgB,gBAAgB,CACrB,OACA,UACA,eACA;AAGDA,oBAAc1gB,QAAQ,SAAS7B,UAAAA;AAC9B,YAAGnC,WAAUmC,WAAW,UAAS;AAChCmiB,gBAAMpgB,KAAK/B,QACX;AAAA,QAAA;AAAA,MACH,CAEC;AAAA,aAAOmiB,MAAM7Y,OAAOjI,IAAAA,EAAMiI,OAAO8Y,GAClC;AAAA,IAAA;AAEAvkB,IAAAA,WAAUmB,OAAK,SAASf,KAAGoD,MAAK1D;AAC/B,UAAGO,KAAKygB,YAAW;AAClB;AAAA,MACA;AACDtd,aAAKA,QAAOxD,WAAUsM,aAAAA;AACtBxM,aAAKA,QAAM;AAEX,UAAGO,KAAKskB,MAAK;AACZtkB,aAAKwf,cAAAA;AAAAA,MACL;AAEDxf,WAAKskB,cAAavkB,OAAM,WAAUF,SAAS0kB,eAAexkB,GAAAA,IAAIA;AAC9DC,WAAKgE,aAAahE,KAAKskB;AACvBtkB,WAAK4gB,QAAQ5gB,KAAKskB;AAElB,UAAItkB,CAAAA,KAAKgE,WAAW8c,gBAAgB9gB,KAAKgE,WAAWgd,eAAehhB,KAAKgE,WAAW1B,MAAMwO,WAAW,QAAO;AAE1G7P,eAAOsV,QAAQC,MAAM7W,WAAU2b,qBAAqBI,sBAAsB1b,KAAKgE,UAAAA;AAAAA,MAC/E;AAED,UAAGhE,KAAK0B,OAAO8f,uBAAuBxhB,KAAK0B,OAAO8iB,2BAA0B;AAC3ExkB,aAAKgE,WAAW8Y,aAAa,QAAQ,aAAA;AAAA,MACrC;AAED,UAAI9c,CAAAA,KAAK0B,OAAOmiB,UAAAA,CAAWE,mBAAmB/jB,KAAKgE,UAAAA,GAAY;AAG9DhE,aAAK0B,OAAOmiB,SAASG,oBAAoBhkB,IAAAA;AACzCiB,eAAOsV,QAAQqE,IAAI,CAClB,oHACA,0CACA,+BAA+B6J,KAAKC,UAAU1kB,KAAK0B,OAAOmiB,QAAQ,MAAM,IACxE,2FACC/T,EAAAA,KAAK;MACP;AAED,UAAI9P,KAAK0B,OAAOmiB,QAAQ;AACvB7jB,aAAKgE,WAAW9D,YAAY;AAC5BF,aAAKgE,WAAW0Y,UAAUtZ,IAAI,mBAC9B;AAAA,YAAGpD,KAAK0B,OAAOmiB,OAAO/S,QAAO;AAC5B9Q,eAAKsf,GAAGC,aAAavf,KAAK0B,OAAOmiB,OAAO/S;AAAAA,QACxC;AACD9Q,aAAKgE,WAAW5D,YAAY6B,OAAO2hB,OAAOxc,OAAOpH,KAAK0B,OAAOmiB,MAAAA,CAAAA;AAC7D7jB,aAAKgE,WAAW5D,YAAY6B,OAAO4hB,OAAOzc;AAC1CpH,aAAKgE,WAAW5D,YAAY6B,OAAO6hB,SAAS1c,OAC9C,CAAA;AAAA,MAAA,OAAQ;AAEN,YAAI2c,CAAAA,mBAAmB/jB,KAAKgE,UAAY,GAAA;AACvC,gBAAM,IAAIiO,MAAM,CACf,mEACA,+IACA,kLACCnC,EAAAA,KAAK;QACP;AAAA,MACD;AAED,UAAI9P,KAAK0B,OAAOijB;AAAK3kB,aAAKgE,WAAW6M,aAAa;AAGlD,UAAI7Q,KAAK4kB;AACRjlB,QAAAA,WAAUilB,WAEXjlB;AAAAA,MAAAA,WAAUwD,KAAKrC,KAAAA;AAEfd,WAAK6kB,UAAQ;AAEb7kB,WAAK+L,OAAK,CAAA;AACV/L,WAAKmS,aACLnS;AAAAA,WAAK8kB,eACL9kB;AAAAA,WAAKyf;AAELzf,WAAK0jB,WAAAA;AACL1jB,WAAK+kB,mBAEL/kB;AAAAA,WAAKglB;AACLrlB,MAAAA,WAAUiL,UAAU,oBAAoB,CAAA,CAAA;AACxCjL,MAAAA,WAAUslB,eAAe;AACzBjlB,WAAKyX,eAAetU,MAAK1D,IAE1B;AAAA,IAAA;AAEAE,IAAAA,WAAU2f,KAAG,EACZ4F,kBAAiB,IACjBC,YAAY,IACZC,aAAY,IACZC,cAAa,IACbC,cAAa,IACbC,oBAAmB,IACnBC,YAAW,IACXC,YAAW,GACXC,aAAY,GACZC,cAAa,KACbC,mBAAkB,IAClBC,qBAAqB,GAAA;AAEtBlmB,IAAAA,WAAUmmB,OAAK,EACdC,WAAU,IACVC,aAAY,GAGbrmB;AAAAA,IAAAA,WAAUkjB,OAAO,SAASA,KAAKoD,SAASpM,QACvC;AAAA,UAAGoM,QAAQpD;AACV,eAAOoD,QAAQpD,KAAKhJ;;AAEpB,eAAO,WAAA;AAAY,iBAAOoM,QAAQ7X,MAAMyL,QAAO5F;;IACjD;AAEAtU,IAAAA,WAAUqlB,YAAU,WAEnB;AAAA,UAAIlF,IAAI9f,KAAKkmB,KAAKlmB,KAAKskB,KAAKrE,cAAYjgB,KAAKsf,GAAGoG;AAGhD,UAAIS,UAAQnmB,KAAK2M,cAAY,IAAG3M,KAAKsf,GAAG8F,cAAYplB,KAAKsf,GAAG+F;AAE5D,UAAIe,2BAA2BpmB,KAAKgE,WAAWgb,cAAc;AAC7D,UAAGrf,WAAU0mB,kBAAoB,GAAA;AAChC,aAAID,0BAA0B;AAC7BA,qCAA2BvmB,SAASC,cAAc;AAClDsmB,mCAAyBvV,YAAY;AACrC7Q,eAAKgE,WAAWsiB,aAAaF,0BAA0BpmB,KAAK+L,KAAK,gBAAA,EAAkB;QACnF;AACDqa,iCAAyB9jB,MAAMod,UAAU;AAEzC1f,aAAKumB,OAAOH,0BAAyBtG,GAAE9f,KAAKsf,GAAGgG,eAAe,GAAE,GAAGtlB,KAAK+L,KAAK,gBAAkB,EAAA,CAAA,EAAGya;MAEpG,OAAM;AACJ,YAAGJ,0BAAyB;AAC3BA,mCAAyB3Y,WAAWC,YAAY0Y,wBAChD;AAAA,QAAA;AAAA,MACD;AAED,UAAIpmB,KAAKymB,WAAW;AACnB,YAAI9mB,WAAUqE,WAAWgd,cAAe;AACjC;AAAA,aAAA;AACNhhB,eAAK0mB,eAAe7mB,SAASmf,cAAc,gBAC3C,CAAA;AAAA,QAAA;AAAA,MACD;AAEDhf,WAAK2mB,cAAc7G,IAAEqG;AAErBnmB,WAAK+L,KAAK,iBAAA,EAAmB,GAAGzJ,MAAMyO,QAAQ+O,IAAI;AAClD,YAAM+D,SAAS7jB,KAAK+L,KAAK,gBAAkB,EAAA,CAAA;AAC3C/L,WAAKumB,OAAO1C,QAAQ7jB,KAAK2mB,aAAa3mB,KAAKsf,GAAGgG,YAAAA;AAE9CzB,aAAOvhB,MAAME,OAAO;AACpBqhB,aAAOvhB,MAAMskB,QAAQ;AACrB,WAAI5mB,KAAK2M,aAAY;AACpB,YAAG3M,KAAK0B,OAAOijB,KAAI;AAClBd,iBAAOvhB,MAAMskB,QAAQ,GAAG5mB,KAAKsf,GAAG8F,WACnC;AAAA,QAAA,OAAO;AACJvB,iBAAOvhB,MAAME,OAAO,GAAGxC,KAAKsf,GAAG8F,WAAAA;AAAAA,QAC/B;AAAA,MACH,OAAQ;AACN,aAAIplB,KAAK0B,OAAOijB,KAAI;AACnBd,iBAAOvhB,MAAME,OAAO;AAAA,QACvB,OAAS;AACNqhB,iBAAOvhB,MAAMskB,QAAQ;AAAA,QACrB;AAAA,MACD;AAAA,IACF;AACAjnB,IAAAA,WAAU4mB,SAAO,SAASM,MAAK/G,GAAEI,GAAE4G,GAAEC,GACpC;AAAA,eAASC,aAAaC,KACrB;AAAA,YAAIC,WAAWD;AACf,YAAA,CAAIE,MAAMrN,OAAOoN,QAAAA,CAAAA,GAAW;AAC3BA,qBAAW/V,KAAK5C,IAAI,GAAE2Y,YAAY;AAAA,QAClC;AACD,eAAOA;AAAAA,MACP;AAED,UAAIE,YAAY;AAEhB,UAAGtH,MAAMzR,QAAW;AACnBwY,aAAKvkB,MAAMyO,QAAQiW,aAAalH,CAChC;AAAA,MAAA;AAED,UAAGI,MAAM7R,QAAU;AAClBwY,aAAKvkB,MAAMwO,SAASkW,aAAa9G,CAAAA;AAAAA,MACjC;AAED,UAAIjM,UAAU7P,SAAO,GAAE;AAEtB,YAAG0iB,MAAMzY,QAAU;AAClB,cAAIrO,KAAK0B,OAAOijB;AAAKyC,wBAAY;AACjCP,eAAKvkB,MAAM8kB,SAAAA,IAAWN,IAAE;AAAA,QACxB;AACD,YAAGC,MAAM1Y,QAAU;AAClBwY,eAAKvkB,MAAMC,MAAIwkB,IAAE;AAAA,QACjB;AAAA,MACD;AAAA,IACF;AACApnB,IAAAA,WAAUwS,eAAa,WAEtB;AAAA,YAAM7E,MAAItN,KAAKskB,KAAK+C,qBAAqB,KACzC;AAAA,eAASljB,IAAE,GAAGA,IAAImJ,IAAIlJ,QAAQD,KAAI;AACjC,YAAImjB,aAAY3nB,WAAUmS,cAAcxE,IAAInJ;AAC5C,cAAMojB,aAAaja,IAAInJ,CAAAA,EAAGM,aAAa,UAAe6I,KAAAA,IAAInJ,CAAGM,EAAAA,aAAa,WAAW;AACrF,YAAI6iB;AAAYA,uBAAaA,WAAWhiB,MAAM,GAAK,EAAA,CAAA;AACnD,YAAKtF,CAAAA,KAAK+L,KAAKub,UAAatnB;AAAAA,eAAK+L,KAAKub,UAAY,IAAA,CAAA;AAClDtnB,aAAK+L,KAAKub,UAAAA,EAAYzjB,KAAKyJ,IAAInJ;AAI/B,YAAIqjB,QAAQ7nB,WAAU8nB,OAAOC,OAAOH,aAAW,MAAW5nB,KAAAA,WAAU8nB,OAAOC,OAAOH,cAAYD,UAC9F;AAAA,YAAA,OAAWE,UAAU,YAAYD,cAAAA,CAAeja,IAAInJ,CAAGjE,EAAAA;AACtDsnB,kBAAQD,WAAWjiB,MAAM,GAAK,EAAA,CAAA;AAC/B,YAAIkiB,OAAO;AACVxnB,eAAK2nB,SAASC,UAAUta,IAAInJ,CAAAA,GAAIqjB;AAChCla,cAAInJ,CAAAA,EAAGjE,YAAYsnB;AAAAA,QACnB;AAAA,MACD;AAAA,IACF;AAGA,UAAMK,iBAAiBloB,WAAUmoB;AAEjCnoB,IAAAA,WAAU6f,gBAAgB;AACzBqI,qBAAeE,UAAAA;AAAAA,IAChB;AAEApoB,IAAAA,WAAU8f,cAAY,WACrB;AAAA,iBAAWtD,KAAKnc,KAAK+L,MAAK;AACzB,YAAI/L,KAAKgoB,OAAO7L,CAAAA,GAAG;AAClB,mBAAShY,IAAE,GAAGA,IAAInE,KAAK+L,KAAKoQ,GAAG/X,QAAQD,KAAI;AAC1C,kBAAMuB,UAAU1F,KAAK+L,KAAKoQ,GAAGhY,CAC7B;AAAA,kBAAM0Z,UAAU7d,KAAKgoB,OAAO7L,CAAG0G,EAAAA,KAAKnd;AACpCmiB,2BAAeI,OAAOviB,SAAS,SAASmY,OAAAA;AAAAA,UACxC;AAAA,QACD;AAAA,MACD;AAEDgK,qBAAeI,OAAOjoB,KAAKskB,MAAM,eAAe,SAASze,GACxDA;AAAAA,UAAEqiB;AACF,eAAO;AAAA,MACT,CAECL;AAAAA,qBAAeI,OAAOjoB,KAAKskB,MAAM,aAAa,SAASze,GAAAA;AACtD,aAAKlG,WAAUwoB;AACdxoB,UAAAA,WAAUyoB,eAAeviB;MAC5B,CACCgiB;AAAAA,qBAAeI,OAAOjoB,KAAKskB,MAAM,aAAa,SAASze,GAAAA;AACtD,YAAKlG,CAAAA,WAAU0oB;AACd1oB,UAAAA,WAAU2oB,eAAeziB;MAC5B,CACCgiB;AAAAA,qBAAeI,OAAOjoB,KAAKskB,MAAM,WAAW,SAASze;AACpD,YAAKlG,CAAAA,WAAU0oB;AACd1oB,UAAAA,WAAU4oB,aAAa1iB;MAC1B,CACCgiB;AAAAA,qBAAeI,OAAOjoB,KAAKskB,MAAM,YAAY,SAASze;AACrDlG,QAAAA,WAAU6oB,cAAc3iB;MAC1B,CACCgiB;AAAAA,qBAAeI,OAAOjoB,KAAKskB,MAAM,eAAe,SAAS9iB;AACxD,YAAG7B,WAAUgL,WAAW,eAAiB,GAAA;AAExCnJ,UAAAA,OAAM0mB,eAAAA;AAAAA,QACN;AAED,cAAMO,cAAc9oB,WAAUiL,UAAU,iBAAiB,CAACjL,WAAU+oB,cAAclnB,OAAMuE,MAAAA,GAASvE;AACjG,eAAOinB;AAAAA,MACT;IACA;AACA9oB,IAAAA,WAAUgpB,SAAO,SAAS5oB,KAAAA;AACzB,UAAIC,KAAK4oB,cAAY7oB;AAAI;AACzBJ,MAAAA,WAAUkpB,iBACV7oB;AAAAA,WAAK8oB,SAAS,KACd;AAAA,UAAG9oB,KAAK4oB,YAAW;AAClB5oB,aAAKmG,SAAAA;AAAAA,MACL;AACDnG,WAAK4oB,aAAa7oB;AAClBC,WAAK4X,YAAY7X,GACjBC;AAAAA,WAAK4K,UAAU,mBAAmB,CAAC7K;IACpC;AACAJ,IAAAA,WAAUwG,WAAS,SAASpG,KAAAA;AAC3B,UAAIA,OAAMA,OAAIC,KAAK4oB,YAAY;AAC9B;AAAA,MACA;AACD,YAAMG,oBAAoB/oB,KAAK4oB;AAC/B5oB,WAAK4oB,aAAa;AAClB,UAAIG,qBAAqB/oB,KAAK8F,SAASijB,oBAAoB;AAC1D/oB,aAAK4X,YAAYmR,iBAAAA;AAAAA,MACjB;AACD/oB,WAAK4K,UAAU,qBAAqB,CAACme,iBAAAA,CAAAA;AAAAA,IACtC;AACAppB,IAAAA,WAAU8W,eAAeC,iBAAiB,WAAU;AACnD,aAAO,EACNjX,MAAMO,KAAK4M,OACXzJ,MAAM,IAAIqB,KAAKxE,KAAK6U,KAAAA,GACpB1E,UAAU,IAAI3L,KAAKxE,KAAKoM,SACxBgE,GAAAA,UAAU,IAAI5L,KAAKxE,KAAKmM,SACxB6c,GAAAA,WAAWhpB,KAAKipB,UAChBC,aAAalpB,KAAKmpB,cAClBviB,WAAW5G,KAAKopB,YAChBC,WAAWrpB,KAAK4oB,YAChBU,UAAUtpB,KAAKspB,UACfC,SAASvpB,KAAKuK,UACdif,WAAWxpB,KAAKwK,WAAAA;AAAAA,IAEjB,GAAEqY,KAAKljB;AAERA,IAAAA,WAAUqoB,SAAO,EAChByB,cAAa,SAAS5jB;AAErB,UAAIlG,WAAU0oB,oBAAmB;AAChC,YAAIxiB,EAAEqiB;AACLriB,YAAEqiB,eAAAA;AACHriB,UAAE6jB,eAAe;AACjB/pB,QAAAA,WAAU0oB,qBAAqB;AAC/B,eAAO;AAAA,MACP;AAGD,YAAMtoB,MAAKJ,WAAU+oB,cAAc7iB,EAAEE,MAErC;AAAA,UAAA,CAAKhG,KAAI;AACRJ,QAAAA,WAAUiL,UAAU,gBAAe,CAACjL,WAAUyG,cAAcP,CAAAA,EAAG1C,MAAM0C,CAAAA,CAAAA;AAAAA,MACxE,OAAS;AACN,YAAA,CAAMlG,WAAUiL,UAAU,WAAU,CAAC7K,KAAG8F,CAAAA,CAAAA,KAAOlG,WAAU+B,OAAOioB;AAAW;AAAA,MAC3E;AAED,UAAI5pB,OAAMJ,WAAU+B,OAAOinB,QAAQ;AAElChpB,QAAAA,WAAUgpB,OAAO5oB;AACjB,cAAM6pB,OAAO/jB,EAAEE,OAAOC,QAAQ;AAE9B,cAAM6jB,OAAOlqB,WAAUmS,cAAc8X;AACrC,YAAIC,KAAK9X,QAAQ,OAAW,KAAA;AAC3BpS,UAAAA,WAAUqoB,OAAO8B,QAAQD,KAAKvkB,MAAM,KAAK,CAAGykB,EAAAA,QAAQ,SAAQ,EAAKhqB,CAAAA,EAAAA,GAAAA;AAAAA,MACrE,OAAQ;AACLJ,QAAAA,WAAUkpB,iBACV;AAAA,YAAIlpB,WAAUsG,SAAWojB,EAAAA,cAAa,oBAAI7kB,QAAOO,QAAAA,KAAWpF,WAAUypB,cAAY,KAAK,KAAI;AAC1FzpB,UAAAA,WAAUwG,SACV;AAAA,QAAA;AAAA,MACD;AAAA,IACD,GACD6jB,qBAAoB;AACnBrqB,MAAAA,WAAUqoB,OAAOiC,oBAAoB,GAAA;IACrC,GACDA,qBAAoB,SAASC,OAAMC,MAAAA;AAClC,UAAIC,WAAW;AACf,UAAIzqB,WAAU+B,OAAOijB,KAAI;AACxBwF,gBAAQA;AACRC,mBAAAA,CAAYA;AAAAA,MACZ;AACDzqB,MAAAA,WAAU8X,eAAe9X,WAAUwD,KAAKC,IACvCzD,WAAUwD,KAAKxD,WAAUiN,QAAM,UAAU,IAAIpI,KAAK7E,WAAUkV,KAAAA,CAAAA,GAASsV,QAAMC,UAAUzqB,WAAUiN;IAChG,GACDyd,sBAAqB;AACpB,UAAI1qB,WAAUiL,UAAU,0BAA0B,KAAK;AACtDjL,QAAAA,WAAU8X,eAAe9X,WAAUsM,aAAAA,CAAAA;AAAAA,MACnC;AAAA,IACD,GACDqe,aAAY,WACX;AAAA,YAAMlQ,OAAOpa,KAAKyE,aAAa;AAC/B,YAAM8lB,kBAAkBvqB,KAAKyE,aAAa,MAAA;AAC1C,YAAMhF,OAAO2a,QAAQmQ,gBAAgBC,UAAU,GAAGD,gBAAgBE,OAAO;AACzE9qB,MAAAA,WAAU8X,eAAe9X,WAAUkV,OAAMpV;IACzC,GACDqqB,SAAQ,EACPY,QAAS,SAAS3qB;AACjB,YAAM2J,IAAI/J,WAAU8nB,OAAOC,OAAOiD;AAClChrB,MAAAA,WAAUirB,gBAAgB,EAAC/jB,SAAS6C,GAAGmhB,OAAOlrB,WAAU8nB,OAAOC,OAAOoD,wBAAwB7jB,UAAS,WAAA;AAAYtH,QAAAA,WAAUorB,YAAYhrB,GAAAA;AAAAA,MAAM,GAC/I2B,QAAQ,EAACspB,IAAIrrB,WAAU8nB,OAAOC,OAAOuD,YAAAA,EAAAA,CAAAA;AAAAA,IAErC,GACDC,MAAK,SAASnrB;AAAKJ,MAAAA,WAAUurB,KAAKnrB,GAAM;AAAA,IAAA,GACxCorB,MAAK,SAASprB,KAAAA;AAAKJ,MAAAA,WAAUmpB,SAAS,IAAA;AAAA,IAAQ,GAC9CsC,SAAQ,SAASrrB,KAAKJ;AAAAA,MAAAA,WAAU0rB,aAAatrB,GAAM;AAAA,IAAA,GACnDurB,MAAK,SAASvrB,KAAAA;AAAKJ,MAAAA,WAAU0rB,aAAatrB,GAAAA;AAAAA,IAAM,GAChDwrB,QAAO,SAASxrB,KAAKJ;AAAAA,MAAAA,WAAUmpB,SAAS,KAAS;AAAA,IAAA,EAAA,EAAA;AAGnDnpB,IAAAA,WAAUirB,kBAAkB,SAAA,EAAS/jB,SAACA,UAAOgkB,OAAO5jB,UAAUvF,OAAEA,GAAAA;AAC/D,WAAKmF;AACJ,eAAOI,SAERvF;AAAAA,eAASA,UAAU;AACnB,YAAM8pB,OAAO,EAAA,GAAK9pB,QAAQoF,MAAMD,SAAAA;AAChC,UAAIgkB,OAAO;AACVW,aAAKX,QAAQA;AAAAA,MACb;AACD,UAAI5jB,UAAU;AACbukB,aAAKvkB,WAAW,SAASgS;AACxB,cAAIA,QAAQ;AACXhS,qBACA;AAAA,UAAA;AAAA,QACJ;AAAA,MACE;AACDtH,MAAAA,WAAU8rB,QAAQD,IAAAA;AAAAA,IACnB;AACA7rB,IAAAA,WAAU+V,cAAY,SAASnG,OAAMC,KAAI3J;AACxC,UAAI6lB,OAAO,CAAA;AACX,UAAI/rB,WAAUgsB,UAAUpc,WAAW5P,WAAUisB,QAAQrc,QAAO;AAC3Dmc,eAAOnc;AACPA,gBAAQ;AAAA,MACR;AAED,YAAMsc,YAAY7rB,KAAK0B,OAAOoqB,kBAAgB9rB,KAAK0B,OAAOqqB,aAAW;AACrE,WAAKxc;AAAOA,gBAAQmc,KAAK3oB,cAAYoO,KAAKI,MAAO5R,WAAUsM,aAAAA,EAAgBlH,QAAU8mB,IAAAA,QAAAA,IAAUA;AAC/F,UAAI9oB,aAAa,IAAIyB,KAAK+K;AAC1B,UAAKC,CAAAA,KAAI;AACR,YAAIwc,aAAahsB,KAAK0B,OAAO4K;AAC7B,YAAI0f,aAAajpB,WAAWsJ,SAAW,GAAA;AACtCtJ,qBAAW0H,SAASuhB;AACpBzc,kBAAQxM,WAAWgC;QACnB;AACDyK,cAAMD,MAAMxK,QAAU8mB,IAAAA;AAAAA,MACtB;AACD,UAAI7oB,WAAW,IAAIwB,KAAKgL;AAGxB,UAAGzM,WAAWgC,aAAa/B,SAAS+B,QAAAA;AACnC/B,iBAASipB,QAAQjpB,SAAS+B,QAAU8mB,IAAAA,QAAAA;AACrCH,WAAK3oB,aAAa2oB,KAAK3oB,cAAYA;AACnC2oB,WAAK1oB,WAAY0oB,KAAK1oB,YAAUA;AAChC0oB,WAAK5kB,OAAO4kB,KAAK5kB,QAAM9G,KAAKynB,OAAOC,OAAO9gB;AAC1C8kB,WAAK3rB,KAAKC,KAAKuK,WAAWmhB,KAAK3rB,MAAMC,KAAK0O;AAC1C1O,WAAKwK,aAAW;AAChBxK,WAAKksB,WAAS;AACd,YAAM9I,UAAUpjB,KAAKmH,SAASukB;AAC9B1rB,WAAK4K,UAAU,kBAAiB,CAAC5K,KAAKuK,UAAS1E,CAAAA,CAAAA;AAC/C7F,WAAKksB,WAAS;AAEdlsB,WAAKmsB,cAAY;AACjBnsB,WAAKuoB,aAAa1iB,CAClB;AAAA,aAAOud;AAAAA,IACR;AACAzjB,IAAAA,WAAU6oB,gBAAc,SAAS3iB,GAAE2P,KAClCA;AAAAA,YAAMA,OAAO3P,EAAEE;AACf,UAAI/F,KAAK0B,OAAOioB;AAAU;AAC1B,YAAMvP,OAAOza,WAAUmS,cAAc0D,GAAKlQ,EAAAA,MAAM,KAAK,CACrD;AAAA,cAAO8U;QACN,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJ,cAAKza,CAAAA,WAAU+B,OAAO+T;AAAiB;AACvCzV,eAAK0V,YAAY1V,KAAKoG,cAAcP,CAAAA,EAAG1C,MAAK,MAAK0C,CAAAA;AACjD;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,uBAAuB;AAC3B,gBAAM9F,MAAKC,KAAK0oB,cAAclT,GAC9B;AAAA,cAAA,CAAKxV,KAAK4K,UAAU,cAAa,CAAC7K,KAAG8F;AAAK;AAC1C,cAAI7F,KAAK0B,OAAO0qB,uBAAuBpsB,KAAK2M,eAAgB3M,CAAAA,KAAK8F,SAAS/F,GAAAA,EAAIqK,WAAWpK,KAAK0B,OAAOinB;AACpG3oB,iBAAKqrB,aAAatrB;;AAElBC,iBAAKkrB,KAAKnrB,GACX;AAAA;AAAA,QACA;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJ;AAAA,QACD,SAAS;AACR,gBAAMssB,cAAcrsB,KAAK,cAAYoa,IACrC;AAAA,cAAIiS,aAAa;AAChBA,wBAAYjW,KAAKpW,MAAK6F,CAAAA;AAAAA,UACtB,OACI;AACJ,gBAAI2P,IAAI/H,cAAc+H,OAAOxV;AAC5B,qBAAOL,WAAU6oB,cAAc3iB,GAAE2P,IAAI/H,UAAAA;AAAAA,UACtC;AACD;AAAA,QACA;AAAA,MAAA;AAAA,IAEH;AAEA9N,IAAAA,WAAU2sB,oBAAoB,SAASC,OACtC;AAAA,UAAIC,SAAS;AACb,UAAIxsB,KAAK0Q,OAAM;AACd,YAAIK,QAAQ;AACZ,YAAI5M,IAAI;AACR,eAAO4M,QAAQ/Q,KAAK0Q,MAAMvM,KAAKooB,SAASpoB,IAAInE,KAAK0Q,MAAMtM,QAAO;AAC7D2M,mBAAS/Q,KAAK0Q,MAAMvM,CAAAA;AACpBA;AAAAA,QACA;AACDqoB,iBAASroB,KAAKnE,KAAK0Q,MAAMvM,CAAOooB,KAAAA,QAAQxb,SAAQ/Q,KAAK0Q,MAAMvM,KAAM;AAEjE,YAAInE,KAAK2Q,UAAS;AACjB,cAAG6b,UAAUxsB,KAAK0Q,MAAMtM,QAAO;AAC9B,mBAAMooB,UAAU,KAAKxsB,KAAK2Q,SAASQ,KAAK8D,MAAMuX,UAAS;AACtDA;AAAAA,YACA;AAAA,UACD;AAAA,QAED;AAAA,MACD;AACD,aAAOA;AAAAA,IACR;AAGA7sB,IAAAA,WAAU8sB,yBAAyB,SAASC,KAAAA;AAE3C,WAAI1sB,KAAK0Q,OAAM;AACd,eAAOgc;AAAAA,MACT,OAAM;AACJ,cAAMF,SAASxsB,KAAKssB,kBAAkBI,IAAI5F,CAAAA;AAE1C4F,YAAI5F,IAAE3V,KAAK7C,IAAItO,KAAK0Q,MAAMtM,SAAO,GAAG+M,KAAK5C,IAAI,GAAE4C,KAAKwb,KAAKH,MAAAA,IAAQ,CACjEE,CAAAA;AAAAA,YAAI3F,IAAE5V,KAAK5C,IAAI,GAAE4C,KAAKwb,KAAKD,IAAI3F,IAAE,MAAI/mB,KAAK0B,OAAOqqB,YAAU/rB,KAAK0B,OAAO2P,iBAAe,CAAGrR,IAAAA,KAAK0B,OAAO4K,cAAY,KAAGtM,KAAK0B,OAAOqqB;AAChI,eAAOW;AAAAA,MACP;AAAA,IACF;AAEA/sB,IAAAA,WAAUitB,gBAAc,SAASpmB,IAAAA;AAChC,UAAIkmB;AACJ,YAAMvsB,OAAON,SAASM;AACtB,YAAM6f,kBAAkBngB,SAASmgB;AACjC,UAAA,CAAKhgB,KAAK6sB,KAAKC,SAAStmB,GAAGumB,SAASvmB,GAAGwmB;AACtCN,cAAI,EAAC5F,GAAEtgB,GAAGumB,OAAOhG,GAAEvgB,GAAGwmB,MAClBN;AAAAA;AAAAA,cAAI,EACR5F,GAAEtgB,GAAGymB,WAAW9sB,KAAK+sB,cAAYlN,gBAAgBkN,cAAY,KAAK/sB,KAAKgtB,YACvEpG,GAAEvgB,GAAG4mB,WAAWjtB,KAAKktB,aAAWrN,gBAAgBqN,aAAW,KAAKltB,KAAKmtB,UAGtE;AAAA,UAAIttB,KAAK0B,OAAOijB,OAAO3kB,KAAKutB,QAAQ;AACnCb,YAAI5F,IAAI9mB,KAAKgE,WAAWgb,cAAc,iBAAiBgC,cAAc0L,IAAI5F;AACzE4F,YAAI5F,KAAK9mB,KAAKwtB,YAAYC,gBAAgBztB,KAAKskB,IAAAA;AAC/C,YAAItkB,KAAK4M,UAAU,SAAS;AAC3B8f,cAAI5F,KAAK9mB,KAAKsf,GAAG8F;AAAAA,QACjB;AAAA,MACH,OAAQ;AACNsH,YAAI5F,KAAG9mB,KAAKwtB,YAAYC,gBAAgBztB,KAAKskB,SAAOtkB,KAAK2M,cAAY,IAAE3M,KAAKsf,GAAG8F;AAAAA,MAC/E;AAED,YAAMtB,WAAW9jB,KAAKgE,WAAWgb,cAAc,eAAA;AAE/C0N,UAAI3F,KAAG/mB,KAAKwtB,YAAYE,eAAe5J,QAAAA,IAAU9jB,KAAK+L,KAAK,gBAAgB,CAAGshB,EAAAA;AAC9EX,UAAIlmB,KAAKA;AACT,YAAMqX,UAAU7d,KAAK,WAASA,KAAK4M;AACnC,UAAIiR,SAAQ;AACX6O,cAAM7O,QAAQzH,KAAKpW,MAAK0sB,GAAAA;AAAAA,MAC1B,OAAM;AAEJ,aAAK1sB,KAAK2M,aAAa;AACtB+f,gBAAM1sB,KAAKysB,uBAAuBC,GACrC;AAAA,QAAA,OAAS;AACN,gBAAMF,SAASxsB,KAAKssB,kBAAkBI,IAAI5F,CAC1C;AAAA,cAAA,CAAK9mB,KAAK0Q,SAAU1Q,CAAAA,KAAKutB;AACxB,mBAAOb;AACR,cAAIiB,KAAG;AACP,eAAKA,KAAG,GAAGA,KAAK3tB,KAAKutB,OAAOK,QAAQxpB,QAAQupB;AAC3C,gBAAI3tB,KAAKutB,OAAOK,QAAQD,MAAIjB,IAAI3F;AAAG;AAEpC2F,cAAI3F,IAAE5V,KAAKwb,MAAOxb,KAAK5C,IAAI,GAAGie,UAAQrb,KAAK5C,IAAI,GAAEof,KAAG,KAAG,KAAG,KAAG,KAAG3tB,KAAK0B,OAAOqqB;AAE5E,cAAIpsB,WAAU6K,cAAcxK,KAAK4M,SAAS;AACzC8f,gBAAI3F,KAAG5V,KAAK5C,IAAI,GAAE4C,KAAKwb,KAAKH,MAAQ,IAAA,CAAA,IAAGrb,KAAK5C,IAAI,GAAEof,KAAG,CAAG,IAAA,KAAG,KAAG,KAAG3tB,KAAK0B,OAAOqqB;AAG9E,cAAI/rB,KAAKwK,cAAc,QAAO;AAC7B,gBAAI7K,WAAUkuB,qBAAqBluB,WAAU+B,OAAOosB,iBAAgB;AACnEpB,kBAAI/b,WAAW;AAEf,kBAAK3Q,CAAAA,KAAKmsB,YAAY4B;AACrB/tB,qBAAKmsB,YAAY4B,gBAAgB/tB,KAAKguB,uBAAuBhuB,KAAKmsB,YAAYppB,YAAY/C,KAAKmsB,YAAYnpB,UAAU,EAAEirB,QAAO,GAAGC,QAAO,MACzI,CAAA;AAAA,YAAA;AAAA,UACD;AAEDxB,cAAI5F,IAAE;AAAA,QACN;AAAA,MACD;AACD4F,UAAIyB,YAAAA,CAAa,oBAAI3pB;AACrB,aAAOkoB;AAAAA,IACR;AACA/sB,IAAAA,WAAUkpB,mBAAiB,WAC1B;AAAA,WAAI,oBAAIrkB,QAAOO,aAAWpF,WAAUypB,cAAY,KAAK,OAAOzpB,WAAUspB,UAAS;AAC9E,cAAMmF,mBAAiBzuB,WAAU8nB,OAAOC,OAAO2G;AAE/C1uB,QAAAA,WAAUirB,gBAAgB,EACzB/jB,SAASunB,kBACTvD,OAAOlrB,WAAU8nB,OAAOC,OAAO4G,uBAC/BrnB,UAAU;AACTtH,UAAAA,WAAUmpB,SAASnpB,WAAU+B,OAAO6sB,gBAAAA;AAAAA,QACpC,EAEF,CAAA;AAAA,YAAGH,kBAAiB;AACnBpuB,eAAKuK,WAAWvK,KAAKwuB,YAAYxuB,KAAKwK,aAAa;AAAA,QACnD;AAAA,MACD;AAAA,IACF;AACA7K,IAAAA,WAAU8uB,iBAAe,SAASlf,OAAOmf,MAAAA;AACxC,aAAOnf,UAAQ,IAAK/K,KAAK7E,WAAUyM,WAAYuiB,kBAAoB,IAAA,IAAKnqB,KAAK+K,KAAAA,EAAQof,uBAAqB,OAAOD,OAAAA,KAAQ;AAAA,IAC1H;AAEA/uB,IAAAA,WAAUivB,kBAAkB,SAASC,SAASC,SAAAA;AAC7C,eAASC,KAAKC,SAASC,SAASC,KAAAA;AAC/B,kBAAU/d,KAAKge,IAAIH,UAAUC,OAAWC,IAAAA;AAAAA,MACxC;AAED,UAAKL,EAAAA,WAAW7uB,KAAKwuB,YAAW;AAC/B,eAAO;AAAA,MACP;AACD,YAAM1V,SAAQ;AACd,YAAMsW,QAAQ;AAGd,aAAA,CAAA,EAAUpvB,KAAKwuB,UAAUa,aAAAA,CAAcrvB,KAAKwuB,UAAUL,aAAcW,QAAQX,YAAYnuB,KAAKwuB,UAAUL,YAAYrV,UAAUiW,KAAKF,QAAQroB,GAAGymB,SAAS6B,QAAQtoB,GAAGymB,SAASmC,KAAAA,KAAUL,KAAKF,QAAQroB,GAAG4mB,SAAS0B,QAAQtoB,GAAG4mB,SAASgC,KAAAA;AAAAA,IAClO;AAEAzvB,IAAAA,WAAU2vB,2BAA2B,SAAS/f,OAAAA;AAC7C,UAAI3P;AACJ,UAAID,WAAU4L;AACb3L,cAAMD,WAAU4L,OAAO5L,WAAUiN,KAClChN;AAAAA,YAAMA,OAAQ,EAAEquB,QAAO,GAAGC,QAAO,MAAA;AAEjC3e,cAAQ,IAAI/K,KAAK+K,KACjB;AAAA,UAAIqC,MAAM;AACV,UAAGhS,IAAI2vB,qBAAqB3vB,IAAI4vB;AAC/B5d,eAAOhS,IAAI2M,aAAW,KAAG,MAAMgD,MAAMlD,SAAAA,IAAW,KAAGkD,MAAM5B,WAAAA,MAAiB;AAE3E,aAAO4B,QAAM,KAAK5P,WAAU8vB,4BAA4BlgB,OAAOqC,KAAKhS,OAAQgS;AAAAA,IAC7E;AACAjS,IAAAA,WAAU+vB,yBAAyB,SAASngB,OAAOsc,UAAAA;AAClD,UAAIjsB;AACJ,UAAID,WAAU4L,QAAQ;AACrB3L,cAAMD,WAAU4L,OAAO5L,WAAUiN,KAAAA;AAAAA,MACjC;AACDhN,YAAMA,OAAQ,EAAEquB,QAAO,GAAGC,QAAO,MAEjC;AAAA,YAAM1e,MAAMD,QAAM,IAAI5P,WAAU8vB,4BAA4BlgB,OAAOsc,UAAUjsB,GAAAA;AAC7E,aAAO,IAAI4E,KAAKgL,MAAI,KAAK7P,WAAU8vB,4BAA4BjgB,KAAAA,IAAS5P,KAAM,EAAA,IAAK;IACpF;AAEAD,IAAAA,WAAUyoB,iBAAe,SAASviB;AACjC,UAAI7F,KAAKwK,YAAW;AACnB,YAAIkiB,MAAI1sB,KAAK4sB,cAAc/mB,CAC3B;AAAA,YAAI7F,KAAK4uB,gBAAgB5uB,KAAKwuB,WAAW9B,GAAK,GAAA;AAC7C,cAAInd,OAAOC;AACX,cAAIxP,KAAKipB,YAAUjpB,KAAKuK;AACvBvK,iBAAK6oB,iBAEN;AAAA,cAAA,CAAI7oB,KAAKwK;AACR;AAED,cAAImlB,eAAe;AACnB,cAAG3vB,KAAKwuB,cAAcxuB,KAAKwuB,UAAUa,WAAU;AAC9CM,2BAAe3vB,KAAKwuB;AACpBmB,yBAAaN,YAAY;AAAA,UACzB;AAEDrvB,eAAKwuB,YAAY9B;AAEjB1sB,eAAKwuB,UAAUa,YAAY;AAE3B,cAAIrvB,KAAKwK,cAAY,UAAS;AAG7B,gBAAGmlB,cAAa;AACfjD,oBAAMiD;AAAAA,YACN;AAED3vB,iBAAK6oB,iBACL7oB;AAAAA,iBAAKmG,SAASnG,KAAK4oB,UAAAA;AACnB5oB,iBAAKksB,WAAS;AAEd3c,oBAAQvP,KAAK4vB,mBAAmBlD,GAAK3nB,EAAAA,QAAAA;AAErC,iBAAK/E,KAAK6vB,aAAa;AACtB,kBAAItnB,MAAMvI,KAAK4K,UAAU,wBAAwB,CAAC/E,GAAG7F,KAAKuK,QAC1D,CAAA;AAAA,kBAAA,CAAKhC,KAAI;AACRvI,qBAAKksB,WAAS;AACd;AAAA,cAEA;AAEDlsB,mBAAKksB,WAAS;AACdlsB,mBAAK6vB,cAAYtgB;AACjB;AAAA,YACA;AAEDC,kBAAMD;AACN,gBAAIC,OAAOxP,KAAK6vB;AAGhB;AAAA,gBAAI9sB,aAAa,IAAIyB,KAAKxE,KAAK6vB,WAAAA;AAC/B,gBAAI7sB,WAAW,IAAIwB,KAAKgL,GACxB;AAAA,iBAAMxP,KAAK4M,SAAS,SAAS5M,KAAK4M,SAAS,YACzC7J,WAAWsJ,SAAAA,KAAcrJ,SAASqJ,SACnCtJ,KAAAA,WAAW4K,gBAAgB3K,SAAS2K,WAAAA,IAAgB;AACnD3K,yBAAW,IAAIwB,KAAKxE,KAAK6vB,cAAY,GACtC;AAAA,YAAA;AAGD7vB,iBAAKuK,WAASvK,KAAK0O,IACnB1O;AAAAA,iBAAKmH,SAASpE,YAAYC,UAAUhD,KAAKynB,OAAOC,OAAO9gB,WAAW5G,KAAKuK,UAAUmiB,IAAIoD,MAAAA;AAErF9vB,iBAAK4K,UAAU,kBAAiB,CAAC5K,KAAKuK,UAAS1E;AAC/C7F,iBAAKksB,WAAS;AACdlsB,iBAAKwK,aAAW;AAAA,UAEhB;AAED,cAAIulB,WAAW/vB,KAAK0B,OAAOqqB;AAC3B,cAAIvlB,KAAGxG,KAAK8F,SAAS9F,KAAKuK;AAC1B,cAAI3K;AACJ,cAAID,WAAU4L;AACb3L,kBAAMD,WAAU4L,OAAO5L,WAAUiN,KAAAA;AAClChN,gBAAMA,OAAQ,EAAEquB,QAAO,GAAGC,QAAO,MAEjC;AAAA,cAAIluB,KAAKwK,cAAY,QAAO;AAC3B+E,oBAAQvP,KAAKoM,UAAUrH,QAAW2nB,KAAAA,IAAI3F,IAAE/mB,KAAK0B,OAAOqqB,YAAUW,IAAI5F,IAAE,KAAG,MAAI;AAC3E,gBAAK4F,CAAAA,IAAIsD,UAAUhwB,KAAK2M,aAAa;AACpC4C,uBAASvP,KAAKmD,KAAK8sB,UAAUzpB,GAAGzD,UAAc,IAAA;AAAA,YAC9C;AAED,gBAAA,CAAK/C,KAAK2M,eAAe3M,KAAKkwB,kBAAkBlwB,KAAKmsB,YAAYgE,sBAAsB9hB,QAAW;AACjGrO,mBAAKmsB,YAAYgE,oBAAoB5gB,QAAQ/I,GAAGzD;AAAAA,YAChD;AAED,gBAAI/C,KAAKmsB,YAAYgE,mBAAmB;AACvC5gB,uBAASvP,KAAKmsB,YAAYgE;AAAAA,YAC1B;AAED5gB,oBAAQvP,KAAKyuB,eAAelf,KAE5B;AAAA,gBAAImd,IAAI/b,YAAY3Q,KAAK0B,OAAOosB,mBAAmB9tB,KAAK2M,eAAe/M,KAAI;AAE1E2P,sBAAQ5P,WAAU2vB,yBAAyB/f,KAAAA;AAC3CC,oBAAM7P,WAAU+vB,uBAAuBngB,OAAMvP,KAAKmsB,YAAY4B;YAE9D;AACAve,oBAAMhJ,GAAGxD,SAAS+B,aAAWyB,GAAGzD,WAAWgC,YAAUwK;AAAAA,UAC1D,OAAU;AACNA,oBAAQ/I,GAAGzD,WAAWgC,QAAAA;AACtByK,kBAAMhJ,GAAGxD,SAAS+B;AAClB,gBAAI/E,KAAK2M,aAAa;AACrB,kBAAIyjB,cAAcpwB,KAAKoM,UAAUrH,QAAU2nB,IAAAA,IAAI3F,IAAE/mB,KAAK0B,OAAOqqB,YAAU,OAASW,IAAIsD,SAAO,IAAE,KAAG,KAAG;AACnG,kBAAIhwB,KAAK4M,SAAS,SAAS;AAC1BwjB,8BAAcpwB,KAAKyuB,eAAe2B,aAAa,KAC/C;AAAA,oBAAIpwB,KAAKqwB,kBAAmB;AAC3B,sBAAI7wB,MAAM,KAAG,KAAG;AAChB,sBAAI4wB,eAAezwB,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKgL,MAAIhQ,MAAI,CAAIuF,CAAAA,EAAAA,QAAAA;AAChEwK,4BAAQ6gB,cAAc5wB;AAAAA,gBAC9B,OAAa;AACNgQ,wBAAM4gB;AAAAA,gBACN;AAAA,cACP,OAAY;AACN,oBAAGpwB,KAAK0B,OAAOosB,iBAAiB;AAC/B,sBAAIpB,IAAI4D,mBAAmB;AAC1B/gB,4BAAQ5P,WAAU2vB,yBAAyBc;kBACnD,OAAc;AACN5gB,0BAAM7P,WAAU+vB,uBAAuBU,aAAa,CACpD;AAAA,kBAAA;AAAA,gBACD,OACI;AACJ,sBAAI1D,IAAI4D,mBAAmB;AAC1B/gB,4BAAQ6gB;AAAAA,kBAChB,OAAc;AACN5gB,0BAAM4gB;AAAAA,kBACN;AAAA,gBACD;AAAA,cACD;AAAA,YACN,OAAW;AACN,kBAAIG,gBAAgBvwB,KAAKmD,KAAKyF,UAAU,IAAIpE,KAAKgC,GAAGxD,SAAS+B,QAAAA,IAAY,IAAIA,QAC7E;AAAA,kBAAIyrB,eAAe,IAAIhsB,KAAK+rB,aAC5B;AAAA,kBAAIE,YAAYzwB,KAAK0B,OAAO4K;AAC5B,kBAAIokB,WAAW1wB,KAAK0B,OAAO6K;AAC3B,kBAAIokB,QAAQD,WAAWD,cAAc,KAAGV;AAExC/vB,mBAAK0B,OAAOqqB,YAAY;AACxB,kBAAI6E,aAAa5wB,KAAK4sB,cAAc/mB,CACpC7F;AAAAA,mBAAK0B,OAAOqqB,YAAYgE;AAExB,kBAAIc,UAAUnE,IAAI3F,IAAEgJ,WAAS;AAC7B,kBAAIe,UAAU3f,KAAK7C,IAAIoe,IAAI3F,IAAI,GAAG4J,IAAAA,IAAMZ,WAAS;AACjD,kBAAIgB,cAAcH,WAAW7J,IAAE;AAG/B,kBAAG5V,KAAKge,IAAI0B,UAAUE,WAAe5f,IAAAA,KAAKge,IAAI2B,UAAUC,WAAAA,GAAa;AACpEvhB,sBAAM+gB,gBAAgBO;AAAAA,cAC5B,OAAU;AACJthB,sBAAM+gB,gBAAgBM;AAAAA,cACtB;AACDrhB,oBAAMA,OAAO,IAAKhL,KAAKgL,KAAMmf,kBAAsB6B,IAAAA,aAAa7B,kBAAuB,KAAA;AACvF3uB,mBAAK+L,KAAK,cAAA,EAAgB,GAAGzJ,MAAM0uB,SAAO;AAC1C,kBAAIhxB,KAAK4M,SAAS,UAAU5M,KAAK4M,SAAS;AACzC4C,sBAAMxP,KAAKyuB,eAAejf;YAC3B;AACD,gBAAIxP,KAAKwK,cAAc,YAAY;AAClC,kBAAIgF,OAAOxP,KAAK6vB,aAAY;AAC3B,oBAAIoB,QAAQvE,IAAIuE,UAASjxB,KAAK2M,eAAAA,CAAgB+f,IAAIsD,SAAQ,KAAG,KAAG,MAAM;AACtEzgB,wBAAQC,OAAKkd,IAAIuE,QAAM,IAAEA;AACzBzhB,sBAAMxP,KAAK6vB,eAAaoB,SAAQlB,WAAS;AAAA,cAC/C,OAAY;AACNxgB,wBAAQvP,KAAK6vB;AAAAA,cACb;AAAA,YACN,OAAW;AACN,kBAAIrgB,OAAKD;AACRC,sBAAID,QAAMwgB,WAAS;AAAA,YACpB;AAAA,UACD;AACD,cAAImB,UAAU,IAAI1sB,KAAKgL,MAAI,CAAA;AAC3B,cAAI2hB,YAAY,IAAI3sB,KAAK+K,KAEzB;AAAA,cAAGvP,KAAKwK,cAAY,UAAU7K,WAAU+B,OAAO0vB,oBAC5CD,YAAaxxB,CAAAA,WAAUyM,cAAcoD,MAAO7P,CAAAA,WAAUwM,YAAW;AAEnE,gBAAA,CAAI3F,GAAGzD,aAAAA,CAAcpD,WAAUyM,aAAc5F,CAAAA,GAAGxD,YAAYrD,WAAUwM,WAAU;AAE/EglB,0BAAY,IAAI3sB,KAAKgC,GAAGzD;AACxByM,oBAAM,IAAIhL,KAAKgC,GAAGxD,QAAAA;AAAAA,YACvB,OAAS;AAEJ,kBAAI6oB,WAAWrc,MAAM2hB;AAErB,kBAAIA,CAAAA,YAAAA,CAAaxxB,WAAUyM,WAAU;AACpC+kB,4BAAY,IAAI3sB,KAAK7E,WAAUyM,SAAAA;AAC/B,oBAAIsgB,IAAI/b,YAAY3Q,KAAK0B,OAAOosB,mBAAmB9tB,KAAK2M,aAAY;AACnEwkB,8BAAY,IAAI3sB,KAAK7E,WAAU2vB,yBAAyB6B;AACxD,sBAAGvxB,IAAI2vB;AACN4B,gCAAY,IAAI3sB,KAAK2sB,UAAUpsB,YAAYnF,IAAI2vB,iBAAAA;AAChD/f,wBAAM,IAAIhL,KAAK2sB,YAAU,IAAInxB,KAAKyvB,4BAA4B0B,WAAWnxB,KAAKmsB,YAAY4B,eAAenuB;gBAChH,OAAW;AACJ4P,wBAAM,IAAIhL,KAAAA,CAAM2sB,YAAYtF,QAAAA;AAAAA,gBAC5B;AAAA,cACP,OAAU;AACJrc,sBAAM,IAAIhL,KAAK7E,WAAUwM,SAEzB;AAAA,oBAAIugB,IAAI/b,YAAY3Q,KAAK0B,OAAOosB,mBAAmB9tB,KAAK2M,aAAY;AACnE,sBAAG/M,IAAI4vB;AACNhgB,0BAAM,IAAIhL,KAAKgL,IAAIzK,QAAAA,IAAYnF,IAAI4vB,eACpChgB;AAAAA,wBAAM,IAAIhL,KAAKgL,MAAI,IAAIxP,KAAKyvB,4BAA4BjgB,KAAK,GAAG5P,KAAK,IACrEuxB,CAAAA;AAAAA,8BAAY,IAAI3sB,KAAKgL,MAAI,IAAIxP,KAAKyvB,4BAA4BjgB,KAAKxP,KAAKmsB,YAAY4B,eAAenuB,KAAK;AACxG,sBAAGI,KAAK6tB,mBAAkB;AACzBsD,gCAAYxxB,WAAUwD,KAAKC,IAAI+tB,WAAWvxB,IAAIquB,QAAQruB,IAAIsuB,MAAAA;AAC1D1e,0BAAM,IAAIhL,KAAKgL,MAAI,IAAIxP,KAAKyvB,4BAA4BjgB,KAAK,GAAG5P,KAAK,IAAA,CAAA;AACrE4P,0BAAM7P,WAAUwD,KAAKC,IAAIoM,KAAK5P,IAAIquB,QAAQruB,IAAIsuB;kBAC9C;AAAA,gBAER,OAAW;AACJiD,8BAAY,IAAI3sB,KAAMgL,CAAAA,MAAMqc;gBAC5B;AAAA,cAED;AAAA,YAED;AACD,gBAAIqF,UAAU,IAAI1sB,KAAKgL,MAAI,CAC3B;AAAA,UAAA;AAKD,eAAIxP,KAAK2M,eAAe3M,KAAKkwB,kBAC3BvwB,CAAAA,WAAU+B,OAAO2vB,cAAAA,CACf1xB,WAAU2xB,kBAAuB5E,KAAAA,IAAI5F,KAAK9mB,KAAKuxB,gBAAgB,EAACxuB,YAAY,IAAIyB,KAAK+K,KAAAA,GAAQvM,UAAS,IAAIwB,KAAK+K,aAAa,IAAI/K,KAAK+K,OAAOlD,SAAarM,IAAAA,KAAK0B,OAAO4K,aAAY;AACpL,gBAAIuf,WAAWrc,MAAM2hB;AACrB,gBAAInxB,KAAKwK,cAAc,QAAQ;AAC9B,kBAAIhL,MAAMQ,KAAKoM,UAAUrH,YAAa2nB,IAAI5F,IAAI,KAAK,KAAM;AACzDqK,0BAAY,IAAI3sB,KAAKhF,GACrB2xB;AAAAA,wBAAU1mB,SAASzK,KAAK0B,OAAO4K;AAC/BkD,oBAAM,IAAIhL,KAAK2sB,UAAUpsB,YAAY8mB,QACrCqF;AAAAA,wBAAU,IAAI1sB,KAAKgL,MAAI;YACvB;AAAA,UACD;AAGD,cAAIxP,CAAAA,KAAK2M,gBACPhN,WAAU+B,OAAO2vB,eACf1xB,WAAUqC,QAAAA,KAAa0qB,IAAI5F,KAAK9mB,KAAKuxB,gBAAgB,EAACxuB,YAAY,IAAIyB,KAAKgL,MAAMxM,UAAS,IAAIwB,KAAKgL,GAAW,EAAA,CAAA,KAAA,IAAIhL,KAAKgL,GAAAA,EAAKnD,cAAcrM,KAAK0B,OAAO6K,YAAW;AACpK,gBAAIsf,WAAWrc,MAAM2hB;AACrB,gBAAI3xB,MAAMQ,KAAKoM,UAAUrH,QAAAA,IAAW2nB,IAAI5F,IAAE,KAAG,KAAI;AACjDtX,kBAAM7P,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKhF;AACxCgQ,gBAAI/E,SAASzK,KAAK0B,OAAO6K,SAAAA;AACzB2kB,sBAAU,IAAI1sB,KAAKgL,MAAI,CAAA;AACvB,gBAAGxP,KAAKwK,cAAc,QAAO;AAC5B2mB,0BAAY,IAAI3sB,KAAAA,CAAMgL,MAAMqc,QAC5B;AAAA,YAAA;AAAA,UACD;AAGD,cAAK7rB,KAAK2M,eAAgBukB,QAAQ9nB,QAAAA,KAAW+nB,UAAU/nB,QAAAA,KAAa8nB,QAAQ7kB,SAAWrM,IAAAA,KAAK0B,OAAO6K,aAAc5M,WAAU6xB,YAAY;AACtIhrB,eAAGzD,aAAWouB;AACd3qB,eAAGxD,WAAS,IAAIwB,KAAKgL,GACrB;AAAA,gBAAIxP,KAAK0B,OAAO+vB,eAAc;AAE7B,kBAAIC,KAAK/xB,WAAUoM,KAAK,gBAAgB,CAAGshB,EAAAA;AAC3CrtB,mBAAK2xB,YACLhyB;AAAAA,cAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAGshB,YAAYqE;AAAAA,YAC9C;AACA1xB,mBAAK4X,YAAY5X,KAAKuK,QACvB;AAAA,UAAA;AACD,cAAIvK,KAAK2M,aAAa;AACrB3M,iBAAK4xB,aAAa5xB,KAAKuK,UAAS,SAASsnB,GACxCA;AAAAA,gBAAEhhB,aAAW;AAAA,YAClB;UACI;AAED7Q,eAAK4K,UAAU,eAAe,CAAC5K,KAAKuK,UAAUvK,KAAKwK,YAAY3E,CAAAA,CAAAA;AAAAA,QAC/D;AAAA,MACH,OAAS;AACP,YAAIlG,WAAUgL,WAAW,gBAAe;AACvC,cAAI5K,MAAKC,KAAK0oB,cAAc7iB,EAAEE,UAAQF,EAAEisB,UACxC9xB;AAAAA,eAAK4K,UAAU,eAAc,CAAC7K,KAAG8F,CAAAA,CAAAA;AAAAA,QACjC;AAAA,MACD;AAAA,IACF;AACAlG,IAAAA,WAAU2oB,iBAAe,SAASziB,GAAE2P,KAGnC;AAAA,UAAI3P,EAAEsX,UAAU;AACf;AAED,UAAInd,KAAK0B,OAAOioB,YAAY3pB,KAAKwK;AAAY;AAC7CgL,YAAMA,QAAM3P,EAAEE,UAAQF,EAAEisB;AACxB,UAAIC,YAAYpyB,WAAUmS,cAAc0D,GAAAA,EAAKlQ,MAAM,GAAA,EAAK;AAExD,UAAItF,KAAK0B,OAAOswB,mBAAmBD,aAAa,YAAY;AAC3D,YAAGvc,IAAI/H,cAAc+H,IAAI/H,WAAWoD,UAAUkB,QAAQ,qBAA4B,MAAA,IAAE;AACnFggB,sBAAY;AACZ/xB,eAAKkwB,iBAAiB;AAAA,QACtB;AAAA,MACD;AAED,cAAQ6B,WACP;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AACJ,cAAI/xB,KAAK2M;AACR3M,iBAAKwK,aAAW;AACjB;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJxK,eAAKwK,aAAW;AAChB;AAAA,QACD,KAAK;AACJxK,eAAKwK,aAAW;AAChB,cAAIynB,YAAYtyB,WAAUmS,cAAc0D;AACxC,cAAG,UAAYzD,QAAQ,sBAA0B,IAAA,GAAE;AAClDpS,YAAAA,WAAU0wB,mBAAmB;AAAA,UACjC,OAAQ;AACJ1wB,YAAAA,WAAU0wB,mBAAmB;AAAA,UAC7B;AACD;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACJrwB,eAAKwK,aAAW;AAChB;AAAA,QACD,KAAK;AACJ,cAAIgL,IAAI/H;AACP,mBAAO9N,WAAU2oB,eAAeziB,GAAE2P,IAAI/H,UAAAA;AACvC;AAAA,QACD;AACC,eAAK9N,WAAUgL,WAAW,kBAAkBhL,WAAUiL,UAAU,eAAe,CAACmnB,WAAWlsB,CAAK,CAAA,GAAA;AAC/F,gBAAI2P,IAAI/H,cAAc+H,OAAOxV,QAAQ+xB,aAAa,YAAY;AAC7D,qBAAOpyB,WAAU2oB,eAAeziB,GAAE2P,IAAI/H,UAAAA;AAAAA,YACtC;AAAA,UACD;AACDzN,eAAKwK,aAAW;AAChBxK,eAAKuK,WAAS;AACd;AAAA;AAEF,UAAIvK,KAAKwK,YAAW;AACnB,YAAIzK,MAAKC,KAAK0oB,cAAclT,GAC5B;AAAA,YAAA,CAAKxV,KAAK0B,OAAO,UAAQ1B,KAAKwK,UAAgBxK,KAAAA,CAAAA,KAAK4K,UAAU,gBAAe,CAAC7K,KAAIC,KAAKwK,YAAY3E,CACjG7F,CAAAA;AAAAA,eAAKwK,aAAWxK,KAAKuK,WAAS;AAAA,aAC1B;AACJvK,eAAKuK,WAAUxK;AAEf,cAAIC,KAAKipB,YAAUjpB,KAAKuK,YAAavK,KAAKipB,YAAYjpB,KAAKwK,cAAc;AACxExK,iBAAK6oB;AACN,cAAI7oB,CAAAA,KAAKwK;AACR;AAEDxK,eAAKmsB,cAAcxsB,WAAUwO,YAAYnO,KAAK8F,SAAS9F,KAAKuK,QAAAA,KAAa,CAAA,CACzEvK;AAAAA,eAAKwuB,YAAYxuB,KAAK4sB,cAAc/mB,CACpC;AAAA,QAAA;AAAA,MACD;AACD7F,WAAK6vB,cAAY;AAAA,IAClB;AAGAlwB,IAAAA,WAAUuyB,0BAA0B,SAAS1wB,QAAAA;AAC5C,UAAIsuB,SAAS,CAAA;AACb,eAAQ3rB,KAAK3C,QAAM;AAClB,YAAG2C,EAAE4N,QAAQ,GAAA,MAAS,GAAE;AACvB+d,iBAAO3rB,KAAK;AAAA,QACZ;AAAA,MACD;AACD,aAAO2rB;AAAAA,IACR;AACAnwB,IAAAA,WAAUwyB,8BAA8B,SAASC,OAAOC;AACvD,UAAIC,UAAUtyB,KAAKkyB,wBAAwBE,KAAAA;AAC3C,UAAIG,gBAAgBvyB,KAAKkyB,wBAAwBG,aAAAA;AACjD,eAAQluB,KAAKouB,eAAc;AAC1B,YAAA,CAAID,QAAQnuB,CAAAA,GAAG;iBACPkuB,cAAcluB,CAAAA;AAAAA,QACrB;AAAA,MACD;AAAA,IACF;AAGAxE,IAAAA,WAAU4oB,eAAa,SAAS1iB,GAC/B;AAAA,UAAIA,KAAKA,EAAEsX,UAAU,KAAKnd,KAAKwyB;AAAS;AACxC,UAAIxyB,KAAKwK,cAAcxK,KAAKuK,UAAS;AACpCvK,aAAK+L,KAAK,cAAgB,EAAA,CAAA,EAAGzJ,MAAM0uB,SAAO;AAG1C,YAAIzH,UAAUvpB,KAAKuK;AACnB,YAAI9K,OAAOO,KAAKwK;AAEhB,YAAIioB,QAASzyB,CAAAA,KAAKwuB,aAAaxuB,KAAKwuB,UAAUa;AACvCrvB,eAAAA,KAAKmsB,YAAYgE;AAExB,YAAI3pB,KAAGxG,KAAK8F,SAAS9F,KAAKuK,QAAAA;AAC1B,YAAIkoB,UAAUzyB,KAAKmsB,YAAYuG,gBAAiB1yB,CAAAA,KAAKmsB,YAAYppB,cAAcyD,GAAGzD,WAAWgC,QAAAA,KAAW/E,KAAKmsB,YAAYppB,WAAWgC,aAAayB,GAAGxD,SAAS+B,aAAW/E,KAAKmsB,YAAYnpB,SAAS+B,QAAAA,IAAW;AAC5M,cAAI4tB,SAAQ3yB,KAAKwK,cAAY;AAC7B,eAAKxK,KAAK4K,UAAU,wBAAuB,CAACpE,IAAIX,GAAG8sB,QAAQ3yB,KAAKmsB,WAAc,CAAA,GAAA;AAC7E,gBAAIwG;AACH3yB,mBAAK+qB,YAAYvkB,GAAGzG,IAAI,IACpB;AAAA,iBAAA;AACJC,mBAAKmsB,YAAYuG,eAAe;AAChC1yB,mBAAKmyB,4BAA4B3rB,IAAIxG,KAAKmsB;AAC1CxsB,cAAAA,WAAUoP,WAAWvI,IAAIxG,KAAKmsB,WAAAA;AAC9BnsB,mBAAK4X,YAAYpR,GAAGzG,EACpB;AAAA,YAAA;AAAA,UACL,OAAU;AAENC,iBAAKuK,WAAWvK,KAAKwK,aAAa;AAClC,gBAAImoB,UAAU3yB,KAAK0B,OAAOkxB,gBAAe;AACxC5yB,mBAAKmG;AACLnG,mBAAKopB,aAAW,oBAAI5kB;AAEpB,kBAAIxE,KAAK2M,eAAe3M,KAAK0B,OAAOmxB,qBAAAA,CAAsB7yB,KAAK0B,OAAOinB,UAAAA,CAAW3oB,KAAKqK,cAAcrK,KAAK8F,SAASyjB,OAAAA,CAAAA,GAAW;AAC5H5pB,gBAAAA,WAAUiL,UAAU,aAAa,CAAC2e,SAAS9pB,MAAMoG,CACjD,CAAA;AAAA,uBAAO7F,KAAKqrB,aAAa9B;cACzB;AACDvpB,mBAAKwuB,YAAY;AACjBxuB,mBAAK4oB,aAAa5oB,KAAKipB,WAAWM;AAAAA,YACvC,OAAW;AACN,kBAAKvpB,CAAAA,KAAKopB;AACTppB,qBAAK4K,UAAU+nB,SAAO,iBAAe,kBAAiB,CAACpJ,SAAQvpB,KAAK8F,SAASyjB,OAAAA,CAAAA,CAAAA;AAAAA,YAC9E;AAAA,UACD;AAAA,QACD;AACD,YAAIvpB,KAAKwuB,cAAcxuB,KAAKwuB,UAAUa,aAAarvB,KAAKwuB,cAAc,OAAO;AAC5ExuB,eAAKuK,WAAWvK,KAAKwK,aAAa;AAClCxK,eAAK2X;QACL;AACDhY,QAAAA,WAAUiL,UAAU,aAAa,CAAC2e,SAAS9pB,MAAMoG,CAAAA,CAAAA;AAAAA,MACjD;AACD7F,WAAKuK,WAAW;AAChBvK,WAAKwK,aAAW;AAChBxK,WAAKwuB,YAAU;AACfxuB,WAAKmsB,cAAc;AACnBnsB,WAAKqwB,mBAAmB;AAAA,IACzB;AAEA1wB,IAAAA,WAAUmzB,uBAAuB;AAChC,UAAI9yB,KAAK+yB,cAAc/yB,KAAKgzB,SAAQ;AACnChzB,aAAKizB,eAAe;AACpB,eAAO;AAAA,MACT,OAAM;AACJ,eAAO;AAAA,MACP;AAAA,IACF;AACAtzB,IAAAA,WAAUgyB,cAAY,WACrB3xB;AAAAA,WAAKkzB;AACLlzB,WAAKif,gBACJjf,KAAK0B,OAAOmiB,QACZ7jB,KAAKgE,WAAWgb,cAAc,kBAE/B,CAAA;AAAA,UAAIvT,OAAOzL,KAAKA,KAAK4M,QAAQ,OAAA;AAC7B,UAAGnB,MAAK;AACPA,aAAK2K,KAAKpW,MAAM,IAClB;AAAA,MAAA,OAAM;AACJA,aAAKmzB;MACL;AAED,UAAInzB,KAAK8yB,qBAAuB,GAAA;AAC/B,eAAO;AAAA,MACP;AACD9yB,WAAK2X,iBAAAA;AAAAA,IACN;AAEAhY,IAAAA,WAAUyzB,eAAe,SAAS3zB,MACjC;AAAA,aAAA,CAAA,EAAUE,WAAUF,OAAM,OAAA,KACxBE,WAAUwD,KAAK1D,OAAM,QAAaE,KAAAA,WAAU0zB,UAAU5zB,OAAM,OAAA,KAAYE,WAAU0zB,UAAU5zB,OAAM,aACrG;AAAA,IAAA;AAEAE,IAAAA,WAAU2zB,0BAA0B,WAAA;AACnC,UAAIC,eAAe,CAAC,uBAAuB,uBAAuB,eAAe,sBACjF;AAAA,eAAQpvB,IAAI,GAAGA,IAAIovB,aAAanvB,QAAQD,KAAI;AAC3C,YAAIqvB,QAAQxzB,KAAK+L,KAAKwnB,aAAapvB,CAAAA,CAAAA;AACnC,iBAAQsvB,IAAI,GAAGD,SAASC,IAAID,MAAMpvB,QAAQqvB,KAAK;AAC9C,cAAIrZ,OAAOoZ,MAAMC,CAAAA,EAAGhvB,aAAa,UAAe+uB,KAAAA,MAAMC,CAAGhvB,EAAAA,aAAa;AACtE,cAAI+iB,QAAQxnB,KAAKynB,OAAOC,OAAO6L,aAAapvB,CAC5C,CAAA;AAAA,cAAGiW,MAAK;AACPoN,oBAAQxnB,KAAKynB,OAAOC,OAAOtN,OAAO,MAAA,KAAWpa,KAAKynB,OAAOC,OAAOtN,IAASoN,KAAAA;AAAAA,UACzE;AACD,cAAG+L,aAAapvB,MAAM,uBAAsB;AAC3CqjB,oBAAQxnB,KAAKynB,OAAOC,OAAO7I;AAAAA,UAC3B,WAAQ0U,aAAapvB,MAAM,uBAAsB;AACjDqjB,oBAAQxnB,KAAKynB,OAAOC,OAAOgM;AAAAA,UAC3B;AACD1zB,eAAK2nB,SAASgM,wBAAwBH,MAAMC,CAAAA,GAAIjM,SAAS,EACzD;AAAA,QAAA;AAAA,MACD;AAAA,IACF;AAEA7nB,IAAAA,WAAUiB,aAAa,SAASuC,MAAM1D,MAErC;AAAA,UAAA,CAAKO,KAAKgE,YAAY;AACrB,cAAM,IAAIiO,MAAM,2IAChB;AAAA,MAAA;AAED9O,aAAOA,QAAQnD,KAAK6U;AACpBpV,aAAOA,QAAQO,KAAK4M;AACpB,UAAI6c,eAAe;AAEnB,WAAIzpB,KAAKynB,OAAOC,OAAOkM,WAAU;AAChC5zB,aAAKynB,OAAOC,OAAOkM,YAAY5zB,KAAKynB,OAAOC,OAAOmM;AAAAA,MAClD;AAED,UAAIroB,YAAYxL,KAAKskB;AACrB,UAAIwP,WAAW,mBAAmB9zB,KAAK4M;AACvC,UAAImnB,WAAW,mBAAmBt0B;AAElC,UAAKO,CAAAA,KAAK4M,SAAUpB,UAAUqF,UAAUkB,QAAQ+hB,QAAc,KAAA,IAAG;AAChEtoB,kBAAUqF,aAAa,MAAMkjB;AAAAA,MAC/B,OAAQ;AACNvoB,kBAAUqF,YAAYrF,UAAUqF,UAAUkZ,QAAQ+J,UAAUC,QAAAA;AAAAA,MAC5D;AAED,UAAIC,gBAAgB;AAEpB,UAAIC,cAAej0B,KAAK4M,SAASnN,QAAQO,KAAK0B,OAAOwyB,kBAAmBl0B,KAAK+L,KAAK0d,YAAc,EAAA,CAAA,EAAG4D,YAAY;AAE/G,UAAI8G;AACJ,UAAGn0B,KAAK+L,KAAKioB,aAAAA,KAAkBh0B,KAAK+L,KAAKioB,aAAAA,EAAe,IAAG;AAC1DG,yBAAiBn0B,KAAK+L,KAAKioB,aAAAA,EAAe,CAAG3G,EAAAA;AAAAA,MAC7C;AAGD,UAAIrtB,KAAKA,KAAK4M,QAAQ,OAAA,KAAYnN,QAAQO,KAAK4M,SAASnN;AACvDO,aAAKA,KAAK4M,QAAQ,OAAA,EAAS;AAE5B5M,WAAK6oB,iBAAAA;AAEL,UAAI7oB,KAAK+L,KAAKioB,aAAgB,GAAA;AAC7Bh0B,aAAK+L,KAAKioB,aAAAA,EAAe,GAAGvmB,WAAWC,YAAY1N,KAAK+L,KAAKioB,aAAAA,EAAe,CAC5Eh0B,CAAAA;AAAAA,aAAK+L,KAAKioB,aAAiB,IAAA;AAAA,MAC3B;AAEDh0B,WAAK4M,QAAQnN;AACbO,WAAK6U,QAAQ1R;AACbnD,WAAK2M,cAAe3M,KAAK4M,SAAS;AAElC5M,WAAKo0B,YAAY;AAGjBp0B,WAAK2xB,YAAAA;AAEL3xB,WAAKszB,wBAAAA;AAEL,UAAI5zB,OAAOM,KAAK+L,KAAK,aACrB;AAAA,UAAGrM,MAAK;AACP,iBAASyE,IAAI,GAAGA,IAAIzE,KAAK0E,QAAQD,KAAK;AACrC,cAAIkwB,MAAM30B,KAAKyE,CAEf;AAAA,cAAIkwB,IAAI5vB,aAAa,UAAA,KAAezE,KAAK4M,SAASynB,IAAI5vB,aAAa,MAAWzE,KAAAA,KAAK4M,QAAQ,QAAO;AACjGynB,gBAAI3X,UAAUtZ,IAAI,QAClBpD;AAAAA,iBAAK2nB,SAAS2M,kBAAkBD,KAAK,IACzC;AAAA,UAAA,OAAQ;AACJA,gBAAI3X,UAAU6X,OAAO,QAAA;AACrBv0B,iBAAK2nB,SAAS2M,kBAAkBD,KAAK,KAAA;AAAA,UACrC;AAAA,QACD;AAAA,MACD;AAED,iBAAWJ,eAAe;AACzBj0B,aAAK+L,KAAK0d,YAAAA,EAAc,CAAG4D,EAAAA,YAAY4G;AAExC,UAAUE,OAAAA,kBAAkB,YAAYn0B,KAAK+L,KAAKioB,kBAAkBh0B,KAAK+L,KAAKioB,aAAe,EAAA,CAAA,GAAG;AAC/Fh0B,aAAK+L,KAAKioB,eAAe,CAAG3G,EAAAA,YAAY8G;AAAAA,MACxC;AAAA,IAEF;AACAx0B,IAAAA,WAAU8X,iBAAiB,SAAStU,MAAM1D,MAAAA;AACzC,WAAKO,KAAK4K,UAAU,sBAAsB,CAAC5K,KAAK4M,OAAO5M,KAAK6U,OAAOpV,QAAQO,KAAK4M,OAAOzJ,QAAQnD,KAAK6U;AAAS;AAC7G7U,WAAKY,WAAWuC,MAAM1D;AACtBO,WAAK4K,UAAU,gBAAgB,CAAC5K,KAAK4M,OAAO5M,KAAK6U,KAAAA,CAAAA;AAAAA,IAClD;AAEAlV,IAAAA,WAAUyH,SAAS,SAASjE,MAAM1D;AACjCE,MAAAA,WAAU8X,eAAetU,MAAM1D,IAChC;AAAA,IAAA;AAEAE,IAAAA,WAAU60B,mBAAmB,SAASrwB,GAAE3B,MAAKW,MAAKqI,WAAWipB,YAAAA;AAC5DA,mBAAaA,cAAc;AAE3B,UAAIC,OAAK70B,SAASC,cAAc,KAAA;AAChC40B,WAAK7jB,YAAY;AAEjB,UAAG7Q,KAAKqzB,UAAUrzB,KAAK4M,QAAM,kBAAiB;AAE7C8nB,aAAK7jB,aAAa,MAAM7Q,KAAKqzB,UAAUrzB,KAAK4M,QAAM,eAAiBzJ,EAAAA,IAAAA;AAAAA,MACnE;AAED,UAAI4N,QAAQ/Q,KAAK0Q,MAAMvM,CAAAA;AAEvB,UAAInE,KAAK4M,SAAS,WAAWzI,MAAM,KAAKnE,KAAK0B,OAAOizB,aAAa;AAChED,aAAK7jB,aAAa;AAClBrO,eAAOA,OAAK;AAAA,MACZ;AAEDxC,WAAKumB,OAAOmO,MAAM3jB,OAAO/Q,KAAKsf,GAAGgG,eAAa,GAAG9iB,MAAMiyB,UAAAA;AAEvD,UAAIG,mBAAmB50B,KAAKqzB,UAAUrzB,KAAK4M,QAAM,eAAezJ,MAAKnD,KAAK4M,KAC1E8nB;AAAAA,WAAKx0B,YAAY00B;AAEjB50B,WAAK2nB,SAASkN,cAAcH,MAAME;AAElCppB,gBAAUpL,YAAYs0B,IACvB;AAAA,IAAA;AAEA/0B,IAAAA,WAAUm1B,mBAAmB,SAASC,MAAMC,IAC3C;AAAA,UAAIC,QAAQ;AACZ,UAAA,CAAKt1B,WAAUgN,aAAY;AAC1B,YAAIuoB,UAAUv1B,WAAUwD,KAAK,SAAOxD,WAAUiN,QAAM,MAAA;AACpD,YAAIsoB;AAASF,eAAKE,QAAQH,IAAAA;AAC1BE,gBAAQ9jB,KAAKI,OAAOyjB,GAAGjwB,QAAUgwB,IAAAA,KAAKhwB,QAAY,MAAA,MAAK,KAAG,KAAG,GAAA;AAAA,MAC7D;AACD,aAAOkwB;AAAAA,IACR;AACAt1B,IAAAA,WAAUw1B,sBAAsB,WAE/B;AAAA,aAAOn1B,KAAKmD,KAAKnD,KAAK4M,QAAM,QAAU,EAAA,IAAIpI,KAAKxE,KAAK6U,MAAM9P,QAC3D,CAAA,CAAA;AAAA,IAAA;AAEApF,IAAAA,WAAUy1B,gBAAgB,WAAA;AACzB,UAAIC,KAAKr1B,KAAKm1B;AACd,UAAIG,KAAK31B,WAAUwD,KAAKC,IAAIiyB,IAAI,GAAGr1B,KAAK4M,KACxC;AAAA,UAAA,CAAKjN,WAAUgN,aAAY;AAC1B,YAAIuoB,UAAUv1B,WAAUwD,KAAK,SAAOxD,WAAUiN,QAAM,MAAA;AACpD,YAAIsoB;AAASI,eAAKJ,QAAQG,EAAAA;AAAAA,MAC1B;AACD,aAAOC;AAAAA,IACR;AACA31B,IAAAA,WAAU41B,oBAAoB,SAASxkB,OAAOgkB,MAAMC,IAEnD;AAAA,UAAIrQ,MAAM3kB,KAAK0B,OAAOijB;AACtB,UAAI6Q,OAAOzkB;AACX,UAAIkkB,QAAQj1B,KAAK80B,iBAAiBC,MAAMC,EAGxCh1B;AAAAA,WAAKy1B,iBAAiBV,MAAME,OAAO,OAAO,CAC1C;AAAA,UAAIS,YAAYT,QAAQj1B,KAAK6tB;AAC7B,eAAS1pB,IAAE,GAAGA,IAAE8wB,OAAO9wB,KAAI;AAC1B,YAAInE,KAAK2Q,SAASxM,CAAAA,GAAG;AACpBnE,eAAK0Q,MAAMvM,KAAK;AAChBuxB;AAAAA,QACH,OAAS;AACN11B,eAAK0Q,MAAMvM,CAAAA,IAAGgN,KAAK8D,MAAMugB,QAAME,YAAUvxB,EACzC;AAAA,QAAA;AACDqxB,gBAAMx1B,KAAK0Q,MAAMvM,CACjBnE;AAAAA,aAAKutB,OAAOppB,CAAInE,KAAAA,KAAK0Q,MAAMvM,IAAE,CAAA,KAAI,MAAInE,KAAKutB,OAAOppB,IAAE,CAAA,MAAKnE,KAAK2M,cAAY,IAAGgY,MAAM3kB,KAAKsf,GAAG+F,eAAerlB,KAAKsf,GAAG8F;AAAAA,MAEjH;AACDplB,WAAKutB,OAAO,YAAA,IAAgB0H;AAC5Bj1B,WAAKutB,OAAO0H,KAAUj1B,IAAAA,KAAK0Q,MAAMukB,QAAM,CAAA,IAAGj1B,KAAKutB,OAAO0H,QAAM,MAAO;AAAA,IAEpE;AAEAt1B,IAAAA,WAAUg2B,sBAAsB,SAASpoB,KAAKwD,OAAOvO;AACpD,UAAIkH,IAAI1J,KAAK0B;AACb1B,WAAKumB,OAAOhZ,KAAKwD,OAAOrH,EAAE2H,gBAAc3H,EAAE6C,YAAU7C,EAAE4C,aAAa9J,OAAKxC,KAAKsf,GAAG8F,cAAc,GAAG,CAClG;AAAA,IAAA;AAEAzlB,IAAAA,WAAUi2B,iBAAiB,SAAS/R,QAAQgS,YAE3C;AAAA,UAAIC,KAAK,IAAItxB,KAAK7E,WAAUyM,SAAAA,GAC3BkpB,KAAK,IAAI9wB,KAAK7E,WAAUwM,SACxB4pB,GAAAA,QAAQ/1B,KAAKmD,KAAKyF,UAAWjJ,WAAUsM,aAAAA,CAAAA;AAExC,UAAIupB,OAAOQ,SAASnS,OAAOvhB,MAAMyO,OAAM,EAAM,IAAA;AAC7C,UAAI6C,IAAI,IAAIpP,KAAKxE,KAAKoM,SAAAA;AAItB,UAAI6oB,QAAQj1B,KAAK80B,iBAAiBgB,IAAIR;AACtCt1B,WAAKu1B,kBAAkBC,MAAMM,IAAIR,EAAAA;AACjC,UAAI9yB,OAAK;AAETqhB,aAAO3jB,YAAY;AACnB,eAASiE,IAAE,GAAGA,IAAE8wB,OAAO9wB,KAAI;AAC1B,YAAKnE,CAAAA,KAAK2Q,SAASxM,CAAG,GAAA;AACrBnE,eAAKw0B,iBAAiBrwB,GAAE3B,MAAKoR,GAAEiQ,MAAAA;AAAAA,QAC/B;AACD,YAAA,CAAK7jB,KAAK2M,aAAY;AACrB,cAAIspB,SAAOp2B,SAASC,cAAc,KAClC;AAAA,cAAIo2B,MAAM;AACV,cAAItiB,EAAE7O,QAAAA,KAAagxB,MAAMhxB,QAAWmxB;AAAAA,mBAAO;AAE3CD,iBAAOnZ,aAAa,qBAAqB3Y,CAAAA;AACzC,cAAInE,KAAK6tB,qBAAqB7tB,KAAK2Q,SAASxM,CAAAA,GAAG;AAC9C+xB,mBAAO;AAAA,UACP;AAED,mBAAS/xB,KAAEnE,KAAK0B,OAAO4K,aAAW,GAAGnI,KAAInE,KAAK0B,OAAO6K,WAAWpI,MAAK;AACpE,kBAAMgyB,YAAYt2B,SAASC,cAAc,KAAA;AACzCq2B,sBAAUtlB,YAAU;AACpBslB,sBAAU7zB,MAAMwO,SAAO9Q,KAAK0B,OAAO2P,eAAa,IAAE;AAElD,gBAAI+kB,WAAW,IAAI5xB,KAAKoP,EAAE+E,eAAe/E,EAAEgF,SAAAA,GAAYhF,EAAExK,QAAWjF,GAAAA,IAAG;AACvEgyB,sBAAUrZ,aAAa,kBAAkB9c,KAAKqzB,UAAUgD,YAAYD,QAAAA,CAAAA;AAEpE,gBAAIE,cAAct2B,KAAKqzB,UAAUkD,eAAeH,QAAAA;AAChD,gBAAGE,aAAY;AACdH,wBAAUj2B,YAAYo2B;AAAAA,YACtB;AACD,gBAAI7Z,WAAWzc,KAAKqzB,UAAUmD,gBAAgBJ,QAAAA;AAC9C,gBAAG3Z,UAAS;AACX0Z,wBAAUzZ,UAAUtZ,IAAIqZ;YACxB;AAEDwZ,mBAAO71B,YAAY+1B,SAAAA;AAEnB,kBAAMM,aAAa52B,SAASC,cAAc,KAC1C22B;AAAAA,uBAAW5lB,YAAU;AACrBulB,uBAAW,IAAI5xB,KAAKoP,EAAE+E,YAAe/E,GAAAA,EAAEgF,YAAYhF,EAAExK,QAAAA,GAAWjF,IAAG,EACnEsyB;AAAAA,uBAAW3Z,aAAa,kBAAkB9c,KAAKqzB,UAAUgD,YAAYD;AACrEK,uBAAWn0B,MAAMwO,SAAO9Q,KAAK0B,OAAO2P,eAAa,IAAE;AACnDilB,0BAAct2B,KAAKqzB,UAAUkD,eAAeH,QAAAA;AAC5C,gBAAGE,aAAY;AACdG,yBAAWv2B,YAAYo2B;AAAAA,YACvB;AACD7Z,uBAAWzc,KAAKqzB,UAAUmD,gBAAgBJ;AAC1C,gBAAG3Z,UAAS;AACXga,yBAAW/Z,UAAUtZ,IAAIqZ,QAAAA;AAAAA,YACzB;AACDwZ,mBAAO71B,YAAYq2B;UACnB;AAEDR,iBAAOplB,YAAYqlB,MAAI,MAAIl2B,KAAKqzB,UAAUqD,gBAAgB9iB,GAAEmiB,KAAAA;AAC5D/1B,eAAK2nB,SAASgP,cAAcV,QAAQriB,CAAAA;AACpC5T,eAAK21B,oBAAoBM,QAAQj2B,KAAK0Q,MAAMvM,CAAAA,GAAI3B;AAEhDqzB,UAAAA,WAAUz1B,YAAY61B,MACtBj2B;AAAAA,eAAK4K,UAAU,cAAa,CAACqrB,QAAQriB,CACrC,CAAA;AAAA,QAAA;AACDpR,gBAAMxC,KAAK0Q,MAAMvM,CAGjByP;AAAAA,YAAE5T,KAAKmD,KAAKC,IAAIwQ,GAAE,GAAE,KAAA;AACpBA,YAAI5T,KAAKmD,KAAKyzB,UAAUhjB,CAAAA;AAAAA,MACxB;AAAA,IACF;AAEAjU,IAAAA,WAAUk3B,qBAAqB,WAC9B;AAAA,aAAO72B,KAAKgE,WAAWgb,cAAc,eACtC;AAAA,IAAA;AAEArf,IAAAA,WAAUwzB,eAAa,WAAA;AAGtB,UAAKnzB,CAAAA,KAAKqzB,UAAUrzB,KAAK4M,QAAQ,OAAU;AAAA;AAE3C,UAAIiX,SAAS7jB,KAAK+L,KAAK,gBAAkB,EAAA,CAAA;AACzC,UAAI8pB,aAAY71B,KAAK+L,KAAK,cAAA,EAAgB;AAC1C,UAAIrC,IAAI1J,KAAK0B;AAEbmiB,aAAO3jB,YAAY;AAEnB21B,MAAAA,WAAU31B,YAAY;AAEtB,UAAI42B,OAAQptB,EAAEigB,aAAcjgB,EAAEqtB,cAAgB,uBAAuB,OAAQrtB,EAAEigB,YAAcjgB,CAAAA,EAAEstB,YAAc,qBAAqB;AAClInB,MAAAA,WAAUhlB,YAAY,iBAAiBimB;AAEvC92B,WAAKwQ,UAAU;AACfxQ,WAAK0Q,QAAQ,CAAA;AACb1Q,WAAKutB,SAAS,EAACzc,QAAQ,EACvB9Q;AAAAA,WAAKo0B,YAAY;AAEjBp0B,WAAKglB,UAEL;AAAA,UAAIpR,GAAEkiB;AACN,UAAIT,KAAKr1B,KAAKm1B,oBAAAA,GACbG,KAAK31B,WAAUy1B;AAEhBxhB,UAAIkiB,KAAK91B,KAAK2M,cAAchN,WAAUwD,KAAK6B,WAAWqwB,EAAAA,IAAMA;AAG5Dr1B,WAAKoM,YAAUwH;AAEf,UAAIqjB,gBAAgBj3B,KAAKqzB,UAAUrzB,KAAK4M,QAAM,OAAA,EAASyoB,IAAGC,IAAGt1B,KAAK4M,KAElE;AAAA,UAAIsqB,eAAel3B,KAAK62B,mBAAAA;AACxB,UAAGK,cAAa;AACfA,qBAAah3B,YAAY+2B;AACzBj3B,aAAK2nB,SAASwP,eAAeD,cAAcD,aAAAA;AAAAA,MAC3C;AAEDj3B,WAAKmM,YAAYmpB;AACjB31B,MAAAA,WAAUi2B,eAAe/R,QAAQgS,UAAAA;AAEjC,UAAI71B,KAAK2M;AACR3M,aAAKo3B,mBAAmBvB,YAAUR,IAAGS,EAAAA;AAAAA,WAClC;AACH91B,aAAKq3B,mBAAmBxB,YAAUR,IAAGS,EAAAA;AACrC,YAAIpsB,EAAE4tB,WAAW;AAChB,cAAItD,gBAAgB;AAEpB,cAAGh0B,KAAK+L,KAAKioB,aAAAA,GAAgB;AAC5Bh0B,iBAAK+L,KAAKioB,aAAe,EAAA,CAAA,EAAGvmB,WAAWC,YAAY1N,KAAK+L,KAAKioB,aAAe,EAAA,CAAA,CAAA;AAC5Eh0B,iBAAK+L,KAAKioB,aAAAA,IAAiB;AAAA,UAC3B;AAED,cAAIuD,KAAK13B,SAASC,cAAc,KAChCy3B;AAAAA,aAAG1mB,YAAYmjB;AACfuD,aAAGj1B,MAAMk1B,aAAW;AACpBD,aAAGj1B,MAAMod,UAAQ;AACjB,cAAI+X,aAAaz3B,KAAKutB,OAAOvtB,KAAKutB,OAAOmK;AACzC,cAAIvkB,SAASzJ,EAAEib,MAAM3kB,KAAKsf,GAAG8F,cAAcplB,KAAKsf,GAAG+F;AACnD,cAAIsS,cAAcxmB,KAAK5C,IAAIkpB,aAAatkB,QAAQ;AAChDnT,eAAKumB,OAAOgR,IAAII,aAAa,GAAG,CAChC9B;AAAAA,UAAAA,WAAUpoB,WAAW6Y,aAAaiR,IAAG1B;AAErC,cAAI+B,KAAKL,GAAGjzB,UAAU;AACtBszB,aAAG/mB,YAAYmjB,gBAAc;AAC7B4D,aAAGt1B,MAAMk1B,aAAW;AACpBI,aAAGt1B,MAAMod,UAAQ;AACjB1f,eAAKumB,OAAOqR,IAAI53B,KAAKsf,GAAG8F,cAAc,GAAG,GAAG,CAAA;AAE5CmS,aAAGn3B,YAAYw3B,EAAAA;AACf53B,eAAK+L,KAAKioB,aAAAA,IAAe,CAACuD,IAAGK,EAAAA;AAC7Bj4B,UAAAA,WAAU6B,MAAMxB,KAAK+L,KAAKioB,aAAAA,EAAe,IAAI,SAASh0B,KAAKgoB,OAAOyB,YAClE;AAAA,QAAA;AAAA,MACD;AAAA,IACF;AACA9pB,IAAAA,WAAU03B,qBAAmB,SAASjb,GAAEiZ,IAAGS,IAAAA;AAC1C,UAAIpsB,IAAE7J,SAASC,cAAc,KAAA;AAC7B4J,QAAEmH,YAAU;AAEZ,UAAI1N,OAAO,IAAIqB,KAAK,MAAK,GAAE,GAAExE,KAAK0B,OAAO4K,YAAW,GAAE;AACtD,eAASnI,IAAEnE,KAAK0B,OAAO4K,aAAW,GAAGnI,IAAInE,KAAK0B,OAAO6K,WAAWpI,KAAK;AACpE,YAAI0zB,KAAGh4B,SAASC,cAAc,KAAA;AAC9B+3B,WAAGhnB,YAAU;AACbgnB,WAAGv1B,MAAMwO,SAAO9Q,KAAK0B,OAAO2P,eAAa;AACzC,YAAIN,QAAQ/Q,KAAKsf,GAAG8F;AACpB,YAAIplB,KAAK0B,OAAOizB,aAAa;AAC5BkD,aAAGhnB,aAAa;AAAA,QAChB;AACDgnB,WAAGv1B,MAAMyO,QAAQA,QAAQ;AAEzB,YAAI+mB,UAAUn4B,WAAU0zB,UAAU0E,WAAW50B,IAC7C00B;AAAAA,WAAG33B,YAAY43B;AACf93B,aAAK2nB,SAASqQ,cAAcH,IAAIC,OAEhCpuB;AAAAA,UAAEtJ,YAAYy3B,EACd10B;AAAAA,eAAKnD,KAAKmD,KAAKC,IAAID,MAAK,GAAE,MAC1B;AAAA,MAAA;AACDiZ,QAAEhc,YAAYsJ,CAAAA;AACd,UAAI1J,KAAK0B,OAAOu2B;AACf7b,UAAEiR,YAAYrtB,KAAK0B,OAAO2P,gBAAcrR,KAAK0B,OAAOu2B,cAAYj4B,KAAK0B,OAAO4K;AAAAA,IAC9E;AAEA3M,IAAAA,WAAUsM,eAAe,WAAA;AACxB,UAAGtM,WAAU+B,OAAOw2B,UAAS;AAC5B,eAAO,IAAI1zB,KAAK7E,WAAU+B,OAAOw2B,QAAAA;AAAAA,MACjC;AACD,aAAO,oBAAI1zB;AAAAA,IACZ;AAEA7E,IAAAA,WAAUuzB,iBAAiB,WAC1BlzB;AAAAA,WAAK2Q,WAAS;AACd3Q,WAAK6tB,oBAAoB;AAAA,IAC1B;AAEAluB,IAAAA,WAAU81B,mBAAmB,SAASK,IAAIqC,GAAG14B,MAAM0qB,MAAMiO,UACxDp4B;AAAAA,WAAKkzB;AACL,UAAImF,SAAS14B,WAAU,YAAUK,KAAK4M,KACtC;AAAA,UAAIyrB,QAAO;AACV,YAAIC,WAAW,IAAI9zB,KAAKsxB;AACxB,iBAAS3xB,IAAE,GAAGA,IAAEg0B,GAAGh0B,KAAI;AACtB,cAAIk0B,OAAOC,WAAU;AACpBt4B,iBAAK6tB,qBAAqB;AAC1B7tB,iBAAK2Q,SAASxM,CAAAA,IAAK;AACnB,gBAAIi0B;AACHD;AAAAA,UACD;AACDG,qBAAW34B,WAAUwD,KAAKC,IAAIk1B,UAAUnO,MAAM1qB;AAC9C,cAAGE,WAAUwD,KAAK1D,OAAO,QAAA;AACxB64B,uBAAW34B,WAAUwD,KAAK1D,OAAO,QAAA,EAAU64B;QAC5C;AAAA,MACD;AAAA,IACF;AAEA34B,IAAAA,WAAU44B,sBAAsB,SAAShrB,KAAK8nB,IAAmBS,IAAkB5X,MAAAA;AAGlF,UAAIoX,KAAG31B,WAAUwD,KAAKC,IAAIiyB,IAAG,GAAE,OAAA,GAC9BmD,aAAa,IAAIh0B,KAAKsxB;AACvB,UAAI2C,KAAK94B,WAAUsM,aACnBjM;AAAAA,WAAKmD,KAAKyF,UAAU6vB;AACpBz4B,WAAKmD,KAAKyF,UAAUktB,EAEpB5X;AAAAA,aAAOA,QAAQ/M,KAAKwb,KAAKxb,KAAKI,OAAO+jB,GAAGvwB,QAAU+wB,IAAAA,GAAG/wB,cAAc,KAAG,KAAG,KAAG,IAAU,IAAA,CAAA;AACtF,UAAI2zB,WAAS;AAEb,eAASv0B,IAAE,GAAGA,KAAG,GAAGA,KAAK;AACxB,YAAIw0B,aAAa34B,KAAK0Q,MAAMvM,CAAAA,KAAM;AAClC,YAAIgjB,CAAAA,MAAMrN,OAAO6e,UAAa,CAAA,GAAA;AAC7BA,uBAAaA,aAAa;AAAA,QAC1B;AACDD,iBAASv0B,KAAKw0B;AAAAA,MACd;AAED,eAASC,cAAc/b,MAAAA;AACtB,YAAIqD,IAAIvgB,WAAU4tB,OAAOzc;AACzB,YAAGnR,WAAU4tB,OAAOK,QAAQ/Q,OAAM,CAAA,MAAOxO,QAAW;AACnD6R,cAAIvgB,WAAU4tB,OAAOK,QAAQ/Q,OAAM,CAAA,KAAMld,WAAU4tB,OAAOK,QAAQ/Q,IAAM,KAAA;AAAA,QACxE;AACD,eAAOqD;AAAAA,MACP;AAGD,UAAI2Y,aAAa;AAEjB,YAAMC,QAAQj5B,SAASC,cAAc;AACrCg5B,YAAMpc,UAAUtZ,IAAI,qBAGpB;AAAA,eAASe,IAAE,GAAGA,IAAE+Z,MAAM/Z,KAAI;AACzB,YAAI0Y,MAAMhd,SAASC,cAAc;AACjC+c,YAAIH,UAAUtZ,IAAI,mBAAA;AAClByZ,YAAIva,MAAMwO,SAAS8nB,cAAcz0B,CAAK,IAAA;AACtC20B,cAAM14B,YAAYyc,GAAAA;AAElB,iBAAS4W,IAAE,GAAGA,IAAE,GAAGA,KAAK;AACvB,cAAIsF,OAAOl5B,SAASC,cAAc,KAAA;AAClC+c,cAAIzc,YAAY24B,IAAAA;AAEhB,cAAI7C,MAAM;AACV,cAAIJ,KAAGT;AACNa,mBAAO;AAAA,mBACCJ,MAAIR;AACZY,mBAAO;AAAA,mBACCJ,GAAG/wB,QAAW0zB,KAAAA,GAAG1zB,QACzBmxB;AAAAA,mBAAO;AAER,cAAIl2B,KAAK6tB,qBAAqB7tB,KAAK2Q,SAAS8iB,IAAG;AAC9CyC,mBAAO;AAAA,UACP;AAED6C,eAAKloB,YAAYqlB,MAAM,MAAMl2B,KAAKqzB,UAAU2F,iBAAiBlD,IAAI2C,EAAAA;AAEjEM,eAAKjc,aAAa,kBAAkBnd,WAAU0zB,UAAUgD,YAAYP,EACpE,CAAA;AAAA,cAAImD,aAAa;AACjB,cAAIC,aAAa;AACjB,cAAIzF,MAAM,KAAKzzB,KAAK0B,OAAOizB,aAAa;AACvCsE,0BAAc;AACdC,0BAAc;AAAA,UACd;AACD,cAAKl5B,CAAAA,KAAK6tB,qBAAsB7tB,CAAAA,KAAK2Q,SAAS8iB,CAAG,GAAA;AAChDsF,iBAAKz2B,MAAMyO,QAAQ2nB,SAASjF,CAAAA;AAC5BzzB,iBAAK2nB,SAASwR,cAAcJ,MAAMjD,EAElC;AAAA,gBAAIsD,WAAWv5B,SAASC,cAAc,KACtCs5B;AAAAA,qBAAS92B,MAAMwO,SAASnR,WAAU2f,GAAGsG,oBAAoB;AACzDwT,qBAASvoB,YAAYqoB;AACrBE,qBAASl5B,YAAYF,KAAKqzB,UAAUgG,UAAUvD;AAC9CiD,iBAAK34B,YAAYg5B,QAEjB;AAAA,gBAAIE,WAAWz5B,SAASC,cAAc;AACtCw5B,qBAASzoB,YAAYooB;AAGrBF,iBAAK34B,YAAYk5B,QAErB;AAAA,UAAA,OAAU;AACNP,iBAAK34B,YAAYP,SAASC,cAAc,KAAA,CAAA;AACxCi5B,iBAAK34B,YAAYP,SAASC,cAAc,KAAA,CAAA;AAAA,UACxC;AAED,cAAIy5B,MAAMzD,GAAG1sB,QACb0sB;AAAAA,eAAG91B,KAAKmD,KAAKC,IAAI0yB,IAAG,GAAE;AACtB,cAAIA,GAAG1sB,YAAYmwB,MAAM;AACxBzD,iBAAK,IAAItxB,KAAKsxB,GAAGnd,YAAAA,GAAemd,GAAGld,SAAY2gB,GAAAA,MAAM,GAAG,IAAI,CAAA;AAAA,QAC7D;AAED55B,QAAAA,WAAU4tB,OAAOK,QAAQzpB,CAAAA,IAAK00B;AAC9BA,sBAAcD,cAAcz0B;MAC5B;AAEDnE,WAAKoM,YAAYosB;AACjBx4B,WAAKmM,YAAY2pB;AAEjBvoB,UAAIrN,YAAY;AAChBqN,UAAInN,YAAY04B,KAAAA;AAEhB94B,WAAKwQ,UAAU;AACf,UAAIvL,QAAQsI,IAAItJ,iBAAiB;AACjCgB,YAAMtB,QAASo1B,CAAAA;AACd,cAAM51B,OAAOxD,WAAU0zB,UAAUmG,WAAWT,MAAKt0B,aAAa;AAC9D,cAAMtE,OAAO44B,MAAK/Z,cAAc,iBAAA;AAChChf,aAAKwQ,QAAAA,CAASrN,QAAQhD;AACtBH,aAAK4K,UAAU,cAAc,CAAC5K,KAAKwQ,QAASrN,CAAAA,IAAAA,GAAOA,IAAM,CAAA;AAAA,MAAA,CAAA;AAG1D,aAAOnD,KAAKmM;AAAAA,IACb;AAEAxM,IAAAA,WAAUy3B,qBAAmB,SAAShb,GAAEiZ,IAAGS,IAAG5X,MAAAA;AAE7C,UAAIoX,KAAG31B,WAAUwD,KAAKC,IAAIiyB,IAAG,GAAE,OAG/B;AAAA,UAAIoD,KAAK94B,WAAUsM;AACnBjM,WAAKmD,KAAKyF,UAAU6vB,EACpBz4B;AAAAA,WAAKmD,KAAKyF,UAAUktB,EAAAA;AAEpB5X,aAAOA,QAAQ/M,KAAKwb,KAAKxb,KAAKI,OAAO+jB,GAAGvwB,QAAAA,IAAU+wB,GAAG/wB,QAAc,MAAA,KAAG,KAAG,KAAG,QAAU,CAEtF;AAAA,UAAI+L,SAAUK,KAAK8D,MAAMmH,EAAEgE,eAAalC,IAAAA,IAAQle,KAAKsf,GAAGsG;AAExD5lB,WAAKutB,OAAOzc,SAASA,SAAS9Q,KAAKsf,GAAGsG;AACtC5lB,WAAKutB,OAAOK,UAAU;AAEtB,aAAOjuB,WAAU44B,oBAAoBnc,GAAGiZ,IAAIS,IAAI5X,IAEjD;AAAA,IAAA;AAEAve,IAAAA,WAAUqC,UAAU,SAAUF,UAC7B;AAAA,UAAA,CAAKA,UAAU;AACdA,mBAAWnC,WAAUsG,SAAWxG,EAAAA;AAAAA,MAChC;AACD,UAAIE,WAAU4L,UAAU5L,WAAU4L,OAAOzJ,QAAW,GAAA;AACnD,eAAOnC,WAAU4L,OAAOzJ,QACxB;AAAA,MAAA;AAED,UAAInC,WAAU2L,UAAU3L,WAAU2L,OAAOxJ,QAAAA,GAAW;AACnD,eAAOnC,WAAU2L,OAAOxJ,QAAAA;AAAAA,MACxB;AAED,aAAO;AAAA,IACR;AAEAnC,IAAAA,WAAU85B,WAAW,SAAS3uB,UAAUoK,KAAAA;AACvC,UAAIrS,WAAW7C,KAAK0B,OAAOg4B,SAAS72B;AACpC,eAASsB,IAAE,GAAGA,IAAEtB,SAASuB,QAAQD,KAAK;AACrC,YAAGtB,SAASsB,CAAG/B,EAAAA,UAAU0I,UAAU;AAClC,cAAIlD,UAAU/E,SAASsB,GAAGyD;AAC1B,mBAAS6rB,IAAE,GAAGA,IAAE7rB,QAAQxD,QAAQqvB,KAAK;AACpC,gBAAG7rB,QAAQ6rB,CAAAA,EAAGve,OAAOA,KAAK;AACzB,qBAAOtN,QAAQ6rB,CAAAA,EAAGjM;AAAAA,YAClB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACD,aAAO;AAAA,IACR;AACA7nB,IAAAA,WAAUg6B,mBAAmB,SAASC,WAAWC,YAAAA;AAChD,UAAI1W,OAAOxjB,WAAUm6B,WAAWF,SAChC;AAAA,UAAA,CAAKzW;AAAM,eAAO;AAClBA,WAAK/P,OAAO,GAAG+P,KAAK/e,MAAAA;AACpB+e,WAAKtf,KAAKuK,MAAM+U,MAAM0W,cAAc,CAAA,CAAA;AACpCl6B,MAAAA,WAAUiL,UAAU,iBAAiB,CACrCjL,CAAAA;AAAAA,MAAAA,WAAUo6B,cACVp6B;AAAAA,MAAAA,WAAUq6B;AACV,aAAO;AAAA,IACR;AACAr6B,IAAAA,WAAUwO,cAAc,SAAS0L,QAAQogB;AACxC,UAAI91B,GAAGgQ,GAAG8E;AAEVghB,cAAQA,SAAS,CAAA;AAEjB,WAAK91B,IAAE,GAAGA,IAAE81B,MAAM71B,QAAQD,KAAG;AAC5B,YAAG0V,WAAWogB,MAAM91B;AACnB,iBAAO81B,MAAM91B,IAAE,CAEjB;AAAA,UAAI0V,iBAAiBA,UAAU,UAAU;AACxCZ,iBAASgB,OAAOigB,OAAOrgB,MAAAA;AACvB1F,YAAI,CAACpG,OAAMvJ,MAAKsV,QAAOzU,QAAO0U,OAC9B;AAAA,aAAK5V,IAAE,GAAGA,IAAEgQ,EAAE/P,QAAQD,KAAK;AAC1B,cAAI0V,kBAAkB1F,EAAEhQ,CAAAA;AACvB8U,qBAAS9U,IAAI,IAAIgQ,EAAEhQ,CAAG0V,EAAAA,MAAAA,IAAU,IAAI1F,EAAEhQ,CAAAA;AAAAA,QACvC;AACD81B,cAAMp2B,KAAKgW,QAAQZ,MAAAA;AACnB,aAAK9U,KAAK0V,QAAQ;AACjB,cAAII,OAAO5B,UAAUzJ,eAAeR,MAAMyL,QAAQ,CAAC1V;AAClD8U,mBAAO9U,CAAAA,IAAKxE,WAAUwO,YAAY0L,OAAO1V,CAAI81B,GAAAA,KAAAA;AAAAA,QAC9C;AAAA,MACD;AACD,aAAOhhB,UAAUY;AAAAA,IAClB;AACAla,IAAAA,WAAUoP,aAAa,SAAShJ,QAAQ2T,QAAAA;AACvC,eAASxE,OAAOwE,QAAQ;AACvB,YAAIA,OAAO9K,eAAesG,GAAAA,GAAM;AAC/BnP,iBAAOmP,OAAOwE,OAAOxE,GAAAA;AAAAA,QACrB;AAAA,MACD;AACD,aAAOnP;AAAAA,IACR;AACApG,IAAAA,WAAUiwB,qBAAqB,SAASlD;AACvC,UAAInd,QAAMvP,KAAKoM,UAAUrH,QAAAA,KAAW2nB,IAAI3F,IAAE/mB,KAAK0B,OAAOqqB,aAAW/rB,KAAK2M,cAAY,IAAE+f,IAAI5F,KAAG,KAAG,MAAI;AAElG,aAAO,IAAItiB,KAAKxE,KAAKyuB,eAAelf,KAAAA,CAAAA;AAAAA,IACrC;AAEA5P,IAAAA,WAAUyG,gBAAgB,SAAS+zB,MAClC;AAAA,UAAIzN,MAAM1sB,KAAK4sB,cAAcuN,IAC7B;AAAA,aAAO,EACNh3B,MAAKnD,KAAK4vB,mBAAmBlD,GAC7BrmB,GAAAA,SAAQqmB,IAAIrmB,QAAAA;AAAAA,IAEd;AACA1G,IAAAA,WAAUy6B,SAAS,SAASvT,MAAM8B,QAAAA;AACjC,UAAI9B,QAAQA,KAAKwT,OAAM;AACtB,YAAIr6B,KAAKwyB,SAAQ;AAChBvxB,iBAAOoY,WAAW;AACjBwN,iBAAKwT,MAAAA;AAAAA,UACL,GAAC,EAAA;AAAA,QACL,OAAS;AACN,cAAA;AACC,gBAAI1R,UAAU9B,KAAK8B,UAAU9B,KAAK7F,aAAa;AAC9C6F,mBAAK8B;YACL;AACD9B,iBAAKwT;UACL,SAAQx0B;UACR;AAAA,QACD;AAAA,MACD;AAAA,IACF;AAEA,aAASy0B,kBAAkB/1B,WAAWG;AACrC,YAAM6K,QAAQ,IAAI/K,KAAKD,SAAAA;AACvB,YAAMiL,MAAM,IAAIhL,KAAKE,OAAAA;AACrB,YAAM61B,mBAAmB/qB,IAAIgrB,YAAYjrB,MAAMirB,QAAAA;AAC/C,YAAMC,mBAAmBF,oBAAoB,MAAO,OAAO;AAC3D,aAAOppB,KAAKge,IAAIsL,gBACjB;AAAA,IAAA;AAGA96B,IAAAA,WAAUquB,yBAAuB,SAASzpB,WAAWG,SAAShD;AAC7D,UAAIg5B,cAAch2B,UAAUH;AAI5B,UAAI8zB,SAASr4B,KAAK,YAAUA,KAAK4M,KAAAA;AAEjC,UAAI+tB,mBAAmB,GACtBC;AACD,UAAIl5B,OAAO0F,QAAO;AACjBuzB,2BAAmB36B,KAAK66B,gBAAgBn5B,QAAQ6C,SAChDq2B;AAAAA,yBAAiB56B,KAAK66B,gBAAgBn5B,QAAQgD,OAE9C;AAAA,YAAGH,UAAUQ,QAAYpF,IAAAA,WAAUsG,WAAWkK,SAASpL,QAAAA,GAAU;AAChE41B,6BAAoBL,CAAAA,kBAAkB/1B,WAAW5E,WAAUsG,WAAWkK,QACtE;AAAA,QAAA;AACD,YAAGzL,QAAQK,QAAAA,IAAYpF,WAAUsG,SAAWmK,EAAAA,SAASrL,QAAU,GAAA;AAC9D61B,4BAAkBN,kBAAkB51B,SAAS/E,WAAUsG,SAAWmK,EAAAA,QAAAA;AAAAA,QAClE;AAAA,MACH,OAAO;AACLwqB,yBAAiBzpB,KAAKI,MAAMmpB,cAAY,KAAG,KAAG,MAAK,EAAA;AAAA,MACnD;AAED,UAAII,cAAc;AAClB,aAAOH,mBAAmBC,gBAAe;AACxC,YAAIlgB,QAAQ/a,WAAUwD,KAAKC,IAAIsB,SAAAA,CAAUhD,OAAOusB,QAAQvsB,OAAOwsB,MAC/D;AAAA,YAAImK,UAAUA,OAAO3zB,OAAAA,MAAAA,CAAco2B,eAAgBA,eAAezC,OAAO3d,KAAU,IAAA;AAClFggB,yBAAgBh2B,UAAQgW;AAAAA,QAE3B,OAAO;AACJ,cAAIqgB,mBAAmB;AACvB,gBAAMC,gBAAgB,IAAIx2B,KAAK2M,KAAK5C,IAAImM,MAAM3V,QAAAA,GAAWR,UAAUQ,QACnE,CAAA,CAAA;AAAA,gBAAMk2B,cAAcv2B;AACpB,gBAAMw2B,sBAAsB,IAAI12B,KAAKw2B,cAAcriB,YAAAA,GAAeqiB,cAAcpiB,SAAYoiB,GAAAA,cAAc5xB,QAAW1H,GAAAA,OAAO4K;AAC5H,gBAAM6uB,oBAAoB,IAAI32B,KAAKw2B,cAAcriB,eAAeqiB,cAAcpiB,SAAAA,GAAYoiB,cAAc5xB,QAAAA,GAAW1H,OAAO6K,aAAW,EAAA;AACrI,gBAAM6uB,uBAAuB,IAAI52B,KAAKE,QAAQiU,YAAAA,GAAejU,QAAQkU,SAAAA,GAAYlU,QAAQ0E,QAAW1H,GAAAA,OAAO4K;AAC3G,gBAAM+uB,qBAAqB,IAAI72B,KAAKE,QAAQiU,YAAejU,GAAAA,QAAQkU,YAAYlU,QAAQ0E,QAAAA,GAAW1H,OAAO6K,aAAW,EAAA;AAEpH,cAAG0uB,YAAYl2B,QAAAA,IAAYs2B,mBAAmBt2B,QAAAA,GAAU;AACvDg2B,gCAAoBE,cAAcI;AAAAA,UAClC;AAED,cAAGJ,YAAYl2B,QAAYq2B,IAAAA,qBAAqBr2B,QAAU,GAAA;AACzDg2B,gCAAoBr5B,OAAO6tB;AAAAA,UAC/B,OAAU;AACNwL,gCAAoBE,YAAY5uB,SAAW,IAAA,KAAG,KAAG,MAAO4uB,YAAYttB,WAAa,IAAA,KAAG;AAAA,UACpF;AAED,cAAGqtB,cAAcj2B,QAAYo2B,IAAAA,kBAAkBp2B,QAAU,GAAA;AACxDg2B,gCAAoBr5B,OAAO8tB;AAAAA,UAC3B;AAED,cAAGwL,cAAcj2B,YAAYm2B,oBAAoBn2B,QAAAA,GAAU;AAC1Dg2B,gCAAqBG,oBAAoBn2B,QAAYi2B,IAAAA,cAAcj2B;UACnE;AAGD21B,yBAAeK;AACfD,wBAAc;AAAA,QACd;AACDp2B,kBAAUgW;AACVkgB;AAAAA,MACA;AACD,aAAOF;AAAAA,IACR;AACA/6B,IAAAA,WAAU8vB,8BAA4B,SAASzsB,UAAUs4B,WAAW17B,KAAK8uB,MACxE;AAAA,UAAIoH,KAAK,IAAItxB,KAAKxB;AAClB,UAAIu4B,MAAM7M,OAAQ,KAAI;AAGtB,UAAI9uB,IAAI2vB,qBAAqB3vB,IAAI4vB,iBAAgB;AAChD,YAAIuG;AACJ,YAAIrH;AACHqH,kBAASD,GAAGzpB,SAAAA,IAAW,KAAGypB,GAAGnoB,WAAAA,KAAiB/N,IAAI0M,cAAY,KAAG;AAAA;AAEjEypB,mBAASn2B,IAAI2M,aAAW,KAAG,MAAMupB,GAAGzpB,SAAAA,IAAW,KAAGypB,GAAGnoB,WAAAA;AACtD,YAAI6tB,WAAW57B,IAAI2M,YAAY3M,IAAI0M,cAAY;AAC/C,YAAIzE,OAAOsJ,KAAKwb,MAAO2O,aAAa,KAAG,OAAQvF,SAAUyF,OAAAA;AACzD,YAAG3zB,OAAO;AAAGA,iBAAO;AACpByzB,qBAAazzB,QAAQ,KAAG,KAAK2zB,WAAW,KAAK;AAAA,MAC7C;AAED,UAAIC,KAAK,IAAIj3B,KAAKxB,WAAS,IAAEs4B,YAAUC,GACvC;AAAA,UAAIlD,SAASr4B,KAAK,YAAUA,KAAK4M,KAEjC;AAAA,UAAI8uB,aAAa,GAChBC;AACD,UAAI/7B,IAAIwH,QAAO;AACds0B,qBAAa17B,KAAK66B,gBAAgBj7B,KAAKk2B,EACvC6F;AAAAA,mBAAW37B,KAAK66B,gBAAgBj7B,KAAK67B;MACvC,OAAO;AACLE,mBAAWxqB,KAAKI,MAAM+pB,YAAU,KAAG,KAAG,MAAK,EAAA;AAAA,MAC3C;AAED,aAAOI,aAAWH,OAAOI,WAASJ,KAAI;AACrC,YAAI7gB,QAAQ/a,WAAUwD,KAAKC,IAAI0yB,IAAIl2B,IAAIquB,SAAOsN,KAAK37B,IAAIsuB,MACvD;AAAA,YAAImK,UAAUA,OAAOvC,EAAAA,GAAI;AACxBwF,wBAAc5gB,QAAMob,MAAIyF;AACxBI,sBAAYJ;AAAAA,QACZ;AAEDzF,aAAKpb;AACLghB,sBAAYH;AAAAA,MACZ;AAED,aAAOD;AAAAA,IACR;AAEA37B,IAAAA,WAAU2xB,oBAAoB,WAAA;AAC7B,aAAOtxB,KAAKgC,QAAAA;AAAAA,IACb;AAEArC,IAAAA,WAAUi8B,wBAAwB;AACjC,UAAG57B,KAAKuL,UAAUvL,KAAKuL,OAAOvL,KAAK4M,KAAAA,GAAO;AACzC,eAAO5M,KAAKuL,OAAOvL,KAAK4M,KAAAA,EAAOzK;AAAAA,MACjC,WAAUnC,KAAKsL,UAAUtL,KAAKsL,OAAOtL,KAAK4M,QAAO;AAC/C,eAAO5M,KAAKsL,OAAOtL,KAAK4M,KAAOxK,EAAAA;AAAAA,MAC/B;AACD,aAAO;AAAA,IACR;AAEAzC,IAAAA,WAAUk8B,kBAAkB,WAC3B;AAAA,UAAIC,QAAQ97B,KAAKiG,SAAAA;AACjB,aAAQjG,KAAKskB,QAAQwX,MAAM34B,QAAQ24B,MAAMr8B;AAAAA,IAC1C;AACAE,IAAAA,WAAUo8B,oBAAoB,WAAA;AAC7B,UAAID,QAAQ97B,KAAKiG,SACjB;AAAA,aAAO61B,MAAM5S,gBAAgB,QAAQ4S,MAAM5S,gBAAgB7a;AAAAA,IAC5D;AAAA,EAEA;AC37De,QAAA2tB,mBAAA,EACdx6B,OAAO,SAAUgiB,KAAIhiB,QAAOqc,SAAAA;AAC3B,QAAI2F,IAAGyY;AACNzY,MAAAA,IAAGyY,iBAAiBz6B,QAAOqc,SAAS,KAAA;AAAA,aAE5B2F,IAAG5d;AACX4d,MAAAA,IAAG5d,YAAY,OAAKpE,QAAOqc,OAC5B;AAAA,EAAA,GACDqe,aAAa,SAAU1Y,KAAIhiB,QAAOqc,SAAAA;AACjC,QAAI2F,IAAGC;AACND,MAAAA,IAAGC,oBAAoBjiB,QAAOqc,SAAS,KAAA;AAAA,aAE/B2F,IAAGN;AACXM,MAAAA,IAAGN,YAAY,OAAK1hB,QAAOqc,OAC5B;AAAA,EAAA,EAAA;ACZa,WAAAse,mBAAAA;AAEd,QAAIC,YAAY,SAAUj1B,UAAUmb,aACnCnb;AAAAA,iBAAWA,YAAY60B,iBAAiBx6B;AACxC8gB,oBAAcA,eAAe0Z,iBAAiBE;AAC9C,UAAIna,WAAW,CACf;AAAA,UAAIsa,aAAa,EAChBpU,QAAQ,SAASzE,KAAIhiB,QAAOyF,UAAUq1B,SAAAA;AACrCva,iBAASle,KAAK,EAAC6B,SAAS8d,KAAIhiB,OAAMA,QAAOyF,UAAoBq1B,QAASA,CAAAA;AACtEn1B,iBAASqc,KAAIhiB,QAAOyF,UAAUq1B,OAC9B;AAAA,MAAA,GACDC,QAAQ,SAAS/Y,KAAIhiB,QAAOyF,UAAUq1B;AACrCha,oBAAYkB,KAAIhiB,QAAOyF,UAAUq1B,OAAAA;AACjC,iBAAQn4B,IAAI,GAAGA,IAAI4d,SAAS3d,QAAQD,KAAI;AACvC,cAAI0Z,UAAUkE,SAAS5d,CAAAA;AACvB,cAAI0Z,QAAQnY,YAAY8d,OAAM3F,QAAQrc,UAAUA,UAASqc,QAAQ5W,aAAaA,YAAY4W,QAAQye,YAAYA,SAAS;AACtHva,qBAAS3O,OAAOjP,GAAG;AACnBA;AAAAA,UACA;AAAA,QACD;AAAA,MACD,GACD4jB,WAAW,WACV;AAAA,YAAIyU,cAAcza,SAAS9T,MAAAA;AAE3B,iBAAS9J,IAAI,GAAGA,IAAIq4B,YAAYp4B,QAAQD,KAAI;AAC3C,cAAI0Z,UAAU2e,YAAYr4B,CAC1Bk4B;AAAAA,qBAAWE,OAAO1e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAU4W,QAAQye;AAC5ED,qBAAWE,OAAO1e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAUoH,MACpEguB;AAAAA,qBAAWE,OAAO1e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAU,KAAA;AACpEo1B,qBAAWE,OAAO1e,QAAQnY,SAASmY,QAAQrc,OAAOqc,QAAQ5W,UAAU;QACpE;AACD8a,iBAAS3O,OAAO,GAAG2O,SAAS3d;MAC5B,GACDyW,QAAQ,WACP;AAAA,eAAOuhB,UAAUp8B,KAAKwB,OAAOxB,KAAKk8B,WAClC;AAAA,MAAA,EAAA;AAEF,aAAOG;AAAAA,IACT;AAEC,WAAOD,UAAAA;AAAAA,EACR;ACzCe,WAASvhB,SAAOlb;AAG/B,QAAIy8B,YAAYD;AAEhBx8B,IAAAA,WAAU6B,QAAQ46B,UAAUnU;AAC5BtoB,IAAAA,WAAUu8B,cAAcE,UAAUG;AAClC58B,IAAAA,WAAU88B,kBAAkBL,UAAUrU;AACtCpoB,IAAAA,WAAUmoB,uBAAuBsU,UAAUvhB;AAG3Clb,IAAAA,WAAU+8B,QAAQ,SAAS5F,KAC1B;AAAA,UAAI6F,OAAOt3B,OAAOgT,UAAUukB,QAAQ,WAAA;AAAY,eAAO58B,KAAK+pB,QAAQ,cAAc,EAAI;AAAA,MAAA;AACtF,aAAO4S,KAAKvuB,MAAM0oB,GACnB;AAAA,IAAA;AAEAn3B,IAAAA,WAAUisB,UAAU,SAAShsB;AAC5B,UAAIA,OAAAA,OAAcA,OAAO,UAAU;AAClC,eAAUA,CAAAA,EAAAA,IAAI+Y,eAAe/Y,IAAIgZ,YAAYhZ,IAAIwJ;AAAAA,MACnD,OAAQ;AACN,eAAO;AAAA,MACP;AAAA,IACF;AAEAzJ,IAAAA,WAAUgsB,YAAY,SAAS/rB;AAC9B,aAAQA,OAAAA,OAAcA,OAAO;AAAA,IAC9B;AAAA,EAEA;AC9Be,WAASib,SAAOlb,YAE/B;AAAA,KAAA,WAAA;AAGC,UAAIk9B,WAAW,IAAIC,OAAO,gBAAgB,IAAA;AAC1C,UAAIC,cAAc,IAAID,OAAO,MAAM;AAEnC,eAASE,cAAcC;AACtB,gBAAQA,WAAW,IACjBlT,QAAQ8S,UAAU,GACnB9S,EAAAA,QAAQgT,aAAa,GACtB;AAAA,MAAA;AAED,UAAIG,eAAe,IAAIJ,OAAO,KAAK;AACnC,eAASK,aAAar2B;AACrB,gBAAQA,OAAO,IAAIijB,QAAQmT,cAAc,OACzC;AAAA,MAAA;AAEDv9B,MAAAA,WAAUgoB,WAAW,EACpByV,oBAAoB,SAASC;AAC5B,YAAIC,aAAa,CAAC,GAAA;AAClB,iBAAQn5B,MAAKk5B,MAAK;AACjB,cAAA,OAAUA,KAAKl5B,EAAM,KAAA,cAAA,OAAqBk5B,KAAKl5B,EAAAA,KAAM,UAAU;AAC9D,gBAAI2C,OAAOq2B,aAAaH,cAAcK,KAAKl5B,EAC3Cm5B,CAAAA,CAAAA;AAAAA,uBAAWz5B,KAAKM,KAAI,OAAO2C,OAAO,GAAA;AAAA,UAClC;AAAA,QACD;AACDw2B,mBAAWz5B,KAAK,GAChB;AAAA,eAAOy5B,WAAWxtB,KAAK;MACvB,GACDytB,eAAe,SAAShwB,KAAKiwB,QAAAA;AAC5B,iBAAQr5B,MAAKq5B,QAAO;AACnBjwB,cAAIuP,aAAa3Y,IAAG64B,cAAcQ,OAAOr5B,EAAAA,CAAAA,CAAAA;AAAAA,QACzC;AACD,eAAOoJ;AAAAA,MACP,GAEDqa,WAAW,SAASra,KAAKuqB,SAAAA;AACxB,eAAO93B,KAAKu9B,cAAchwB,KAAK,EAAC,cAAcuqB,QAC9C,CAAA;AAAA,MAAA,GACDtQ,OAAO,SAASA,OAAAA;AACf,eAAO7nB,WAAUgoB,SAASyV,mBAAmB,EAAC,cAAc5V,MAC5D,CAAA;AAAA,MAAA,GAIDwQ,eAAe,SAASzqB,KAAKuqB;AAC5B93B,aAAK4nB,UAAUra,KAAKuqB,OAEpB;AAAA,MAAA,GACDqB,eAAe,SAAS5rB,KAAKpK,MAC5BnD;AAAAA,aAAK4nB,UAAUra,KAAK5N,WAAU0zB,UAAUoK,SAASt6B,IAAAA,CAAAA;AAAAA,MACjD,GAEDg0B,gBAAgB,SAAS5pB,KAAKuqB,SAAAA;AAC7B93B,aAAK4nB,UAAUra,KAAKuqB;MACpB,GACDjD,eAAe,SAAStnB,KAAKuqB;AAC5B93B,aAAK4nB,UAAUra,KAAKuqB,OACpB;AAAA,MAAA,GAEDnB,eAAe,SAASppB,KAAKpK,MAC5BnD;AAAAA,aAAK60B,cAActnB,KAAK5N,WAAU0zB,UAAUoK,SAASt6B,IAAAA,CAAAA;AAAAA,MACrD,GAEDwwB,yBAAyB,SAASpmB,KAAKia,OAAAA;AACtC,eAAOxnB,KAAKu9B,cAAchwB,KAAK,EAACmwB,MAAO,UAAU,cAAalW,MAAAA,CAAAA;AAAAA,MAC9D,GAED8M,mBAAmB,SAAS/mB,KAAKsI,UAAAA;AAChC,eAAO7V,KAAKu9B,cAAchwB,KAAK,EAAC,gBAAgBsI,WAAW,SAAS;MACpE,GAGD8nB,mBAAkB,SAASC,YAE1B;AAAA,eAAOj+B,WAAUgoB,SAASyV,mBAAmB,EAAC,cAAcQ;MAC5D,GAGDC,WAAW,SAASr8B,QAAO+L,KAAAA;AAC1BvN,aAAK89B,iBAAiBt8B,QAAO+L,GAC7B;AAAA,MAAA,GAGDuwB,kBAAkB,SAASt8B,QAAO+L;AACjCA,YAAIuP,aAAa,cAAckgB,cAAcr9B,WAAU0zB,UAAU0K,WAAWv8B,OAAMuB,YAAYvB,OAAMwB,UAAUxB,MAE9G,CAAA,CAAA;AAAA,YAAG7B,WAAU+B,OAAOioB,UAAS;AAC5Bpc,cAAIuP,aAAa,iBAAiB,IAAA;AAAA,QAElC;AAED,YAAGtb,OAAMw8B,sBAAqB;AAC7BzwB,cAAIuP,aAAa,aAAa;QAC9B;AAGDvP,YAAIuP,aAAa,iBACfnd,WAAUsG,WAAWojB,aAAa7nB,OAAMzB,KAAM,SAAS;MACzD,GAEDk+B,iBAAiB,SAASz8B,QAAO+L,KAAAA;AAChCvN,aAAK89B,iBAAiBt8B,QAAO+L,GAC7B;AAAA,MAAA,GAED2wB,gBAAgB,SAASC,iBAAiBC;AACzC,YAAInlB,SAAS,EACZ6D,cAAa,SAAS1C,MAAMiE,OAAAA;AAC3Bre,eAAKoa,IAAQiE,IAAAA;AAAAA,QACb;AAGF8f,wBAAgB/vB,MAAMpO,MAAM,CAACo+B,KAAKnlB,MAClC,CAAA;AAAA,eAAOA;AAAAA,MAEP,GAEDolB,oBAAoB,SAAS78B,QAC5B;AAAA,eAAOxB,KAAKo9B,mBAAmBp9B,KAAKk+B,eAAel+B,KAAKi+B,iBAAiBz8B,MACzE,CAAA;AAAA,MAAA,GAID88B,sBAAsB,WACrB;AAAA,eAAOt+B,KAAKo9B,mBAAmB,EAACM,MAAM,MAAA,CAAA;AAAA,MACtC,GACDa,sBAAsB,SAAS/W;AAC9B,eAAOxnB,KAAKo9B,mBAAmB,EAACM,MAAM,gBAAgB,cAAclW;MACpE,GACDgX,6BAA6B,SAAShX,OACrC;AAAA,eAAOxnB,KAAKu+B,qBAAqB/W,KAAAA;AAAAA,MACjC,GACDiX,sBAAsB;AACrB,eAAOz+B,KAAKo9B,mBAAmB,EAACM,MAAM;MACtC,GACDgB,uBAAuB,SAASl9B,QAAAA;AAC/B,YAAIm9B,QAAQ3+B,KAAKk+B,eAAel+B,KAAK89B,kBAAkBt8B;AAEvDm9B,cAAM,MAAA,IAAU;AAEhB,eAAO3+B,KAAKo9B,mBAAmBuB,KAAAA;AAAAA,MAE/B,GACDC,wBAAwB,WAAA;AACvB,eAAO5+B,KAAKo9B,mBAAmB,EAACM,MAAO,UAAU,cAAa/9B,WAAU8nB,OAAOC,OAAOmX,aAAAA,CAAAA;AAAAA,MACtF,GAGDC,gBAAgB,WAAA;AACf,eAAO9+B,KAAKo9B,mBAAmB,EAACM,MAAM;MACtC,GAEDqB,mBAAmB,SAASv9B,QAC3B;AAAA,eAAOxB,KAAK0+B,sBAAsBl9B;MAClC,GAEDw9B,oBAAoB,SAASx9B,QAAOgrB,QAAQnO;AAC3C,eAAOre,KAAKo9B,mBAAmB,EAACM,MAAO,YAAY,cAAc,CAC/DlR,OAAOhF,UAAUnZ,SAAYme,OAAOzsB,KAAKysB,OAAOhF,OACjD,MACAnJ,KAED,EAAA,CAAA;AAAA,MAAA,GAED4gB,eAAe,WACd;AAAA,eAAOj/B,KAAK8+B,eACZ;AAAA,MAAA,GACDI,kBAAkB,SAAS19B;AAC1B,eAAOxB,KAAK++B,kBAAkBv9B,MAC9B;AAAA,MAAA,GACD29B,qBAAqB,WACpB;AAAA,eAAOn/B,KAAK4+B,uBAAAA;AAAAA,MACZ,GAEDQ,eAAe,SAAS7xB,KAAK8xB,UAC5Br/B;AAAAA,aAAKu9B,cAAchwB,KAAK,EACvBxN,IAAKs/B,WAAS,IACd,aAAY,aACZ,eAAc,OAGf,CAAA;AAAA,MAAA,GACDC,aAAa,SAAS/xB,KAAK8xB,UAC1Br/B;AAAAA,aAAKu9B,cAAchwB,KAAK,EACvB,mBAAkB8xB,WAAS,IAC3B3B,MAAO,OAER,CAAA;AAAA,MAAA,GACD6B,YAAY,SAAShyB;AACpBvN,aAAKu9B,cAAchwB,KAAK,EACvBmwB,MAAO;MAER,GACD8B,gBAAgB,SAASjyB,KAAKpK;AAC7B,YAAIs8B,WAAYt8B,KAAK4B,QAAYpF,IAAAA,WAAUwM,UAAUpH,QAAa5B,KAAAA,KAAK4B,QAAapF,KAAAA,WAAUyM,UAAUrH,QACxG/E;AAAAA,aAAKu9B,cAAchwB,KAAK,EACvBmwB,MAAO,YACP,cAAc/9B,WAAU0zB,UAAUoK,SAASt6B,IAC3C,GAAA,iBAAiBs8B,WAAW,SAAS,QAAA,CAAA;AAAA,MAEtC,GACDC,iBAAiB,SAASnyB,KACzBvN;AAAAA,aAAKu9B,cAAchwB,KAAK,EACvBmwB,MAAO,eAER,CAAA;AAAA,MAAA,GAGDiC,mBAAmB,SAASpyB,KAAKpK,MAChC;AAAA,YAAI0gB,SAAStW,IAAIyR,cAAc;AAC/B,YAAI8Y,UAAUvqB,IAAIyR,cAAc,kBAAA;AAChC,YAAIqgB,WAAW1/B,WAAU+O,IAAQ,IAAA;AACjC1O,aAAKu9B,cAAc1Z,QAAQ,EAAE9jB,IAAMs/B,SAAAA,CAAAA;AACnCr/B,aAAKu9B,cAAczF,SAAS,EAAE,mBAAmBuH;MAEjD,GACDO,iBAAiB,SAASryB,KAAK/L,QAAAA;AAC9BxB,aAAK69B,UAAUr8B,QAAO+L,GACtB;AAAA,MAAA,GAEDsyB,oBAAoB,SAAStyB,KAAAA;AAC5BA,YAAIuP,aAAa,eAAe,MAChC;AAAA,MAAA,GAEDgjB,qBAAqB,SAASvyB,KAAAA;AAC7BA,YAAIuP,aAAa,eAAe;MAChC,GAEDijB,iCAAiC,SAASvY,OAAAA;AACzC,eAAOxnB,KAAKo9B,mBAAmB,EAACM,MAAO,UAAU,cAAalW,OAAOwY,UAAW,IAChF,CAAA;AAAA,MAAA,GAEDC,YAAY,SAAS1yB,KAAK8xB;AACzBr/B,aAAKu9B,cAAchwB,KAAK,EACvBxN,IAAKs/B,WAAS,GAAA,CAAA;AAAA,MAEf,GACDa,UAAU,SAAS3yB,KAAK8xB,UACvBr/B;AAAAA,aAAKs/B,YAAY/xB,KAAK8xB,QAAAA;AAAAA,MACtB,GACDc,cAAc,SAAS5yB,KACtB;AAAA,eAAOvN,KAAK0/B,gBAAgBnyB,GAAAA;AAAAA,MAC5B,GACD6yB,SAAS,SAAS7yB,KACjB;AAAA,eAAOvN,KAAKu/B,WAAWhyB,GAAAA;AAAAA,MACvB,GACD8yB,aAAa,SAAS9yB;AACrBvN,aAAKu9B,cAAchwB,KAAK,EACvBmwB,MAAO,WAER,CAAA;AAAA,MAAA,GAED4C,cAAc,SAAS/yB,KAAAA;AACtBA,YAAIuP,aAAa,QAAQ,QACzBvP;AAAAA,YAAIuP,aAAa,eAAe,MAAA;AAChCvP,YAAIlN,WAAWyc,aAAa,QAAQ,SACpC;AAAA,MAAA,GAEDyjB,0BAAyB,SAASC;AACjC,eAAOxgC,KAAKo9B,mBAAmB,EAACM,MAAO,UAAU,cAAa/9B,WAAU8nB,OAAOC,OAAO8Y,aAAaR,UAAW,IAAA,CAAA;AAAA,MAC9G,GACDS,qBAAqB,SAASC;AAC7B,eAAO1gC,KAAKo9B,mBAAmB,EAACM,MAAO,UAAU,cAAa/9B,WAAU8nB,OAAOC,OAAOgZ;MACtF,GACDC,gBAAgB,SAASpzB,KAAKqzB;AAC7BrzB,YAAIuP,aAAa,cAAc8jB,UAC/B;AAAA,MAAA,GAEDC,0BAA0B,SAASC,aAAAA;AAClC,YAAItZ,QAAQ;AAEZ,gBAAQsZ,aAAAA;AAAAA,UACP,KAAK;AACJtZ,oBAAQ7nB,WAAU8nB,OAAOC,OAAOvM;AAChC;AAAA,UACD,KAAK;AACJqM,oBAAQ7nB,WAAU8nB,OAAOC,OAAOqZ;AAChC;AAAA,UACD,KAAK;AACJvZ,oBAAQ7nB,WAAU8nB,OAAOC,OAAOloB;AAChC;AAAA,UACD,KAAK;AACJgoB,oBAAQ7nB,WAAU8nB,OAAOC,OAAOsZ,OAAO,MAAMrhC,WAAU8nB,OAAOC,OAAOuZ;AACrE;AAAA,QAKF;AAAA,eAAOthC,WAAUgoB,SAASyV,mBAAmB,EAAC,cAAc5V;MAC5D,GAGD0Z,yBAAyB,SAASC,aACjC;AAAA,eAAO,4CAA0CA,cAAY;AAAA,MAC7D,GAEDC,iBAAiB,SAAS7zB,KACzBA;AAAAA,YAAIuP,aAAa,QAAQ,OAAA;AAAA,MAEzB,GAEDukB,kBAAkB,SAAS9zB,KAAKmB,MAAAA;AAC/BnB,YAAIuP,aAAa,QAAQ;AACzB,YAAGpO,MAAI;AACNnB,cAAIuP,aAAa,mBAAmBpO,IAAAA;AAAAA,QACpC;AAAA,MAGD,GAED4yB,eAAe,SAAS/zB,KACvBA;AAAAA,YAAIuP,aAAa,QAAQ;MACzB,GAEDykB,2BAA2B;AAC1B,eAAO;AAAA,MACP,GAEDC,iBAAiB,SAASj0B,KAAKsW,QAAAA;AAC9BtW,YAAIuP,aAAa,cAAc+G;MAC/B,GAED4d,2BAA2B,SAASja,OACnC;AAAA,eAAO7nB,WAAUgoB,SAASyV,mBAAmB,EAACM,MAAO,UAAU,cAAalW,OAAOwY,UAAW,IAC9F,CAAA;AAAA,MAAA,GAED0B,aAAa,SAASn0B;AACrBA,YAAIuP,aAAa,QAAQ,SACzB;AAAA,MAAA,GAED6kB,oBAAoB,SAASp0B,KAAAA;AAC5BA,YAAIuP,aAAa,eAAe,OAChC;AAAA,MAAA,GAED8kB,mBAAmB,SAASr0B,KAAAA;AAC3BA,YAAIuP,aAAa,eAAe,MAChC;AAAA,MAAA,EAAA;AAGF,eAAS+kB,aACR;AAAA,eAAA,CAAQliC,WAAU+B,OAAO8f;AAAAA,MACzB;AAED,eAAQrd,KAAKxE,WAAUgoB,UAAS;AAC/BhoB,QAAAA,WAAUgoB,SAASxjB,CAAK,IAAA,SAAU29B;AACjC,iBAAO,WAAA;AACN,gBAAGD,WAAAA,GAAa;AACf,qBAAO;AAAA,YACP;AACD,mBAAOC,QAAQ1zB,MAAMpO,MAAMiU,SAAAA;AAAAA,UAC/B;AAAA,QACG,EAAEtU,WAAUgoB,SAASxjB;MACtB;AAAA,IAGD;EAED;ACtWA,WAAS49B,gBAAgBC,MAAAA;AACxB,QAAIz/B,MAAI,GAAGC,OAAK,GAAGokB,QAAM,GAAGqb,SAAO;AACnC,QAAID,KAAKE,uBAAuB;AAC/B,UAAIC,MAAMH,KAAKE,sBAAAA;AACf,UAAI/hC,OAAON,SAASM;AACpB,UAAIiiC,UAAWviC,SAASmgB,mBACvBngB,SAASM,KAAKsN,cACd5N,SAASM;AAEV,UAAIktB,YAAYpsB,OAAOohC,eAAeD,QAAQ/U,aAAaltB,KAAKktB;AAChE,UAAIH,aAAajsB,OAAOqhC,eAAeF,QAAQlV,cAAc/sB,KAAK+sB;AAClE,UAAII,YAAY8U,QAAQ9U,aAAantB,KAAKmtB,aAAa;AACvD,UAAIH,aAAaiV,QAAQjV,cAAchtB,KAAKgtB,cAAc;AAC1D5qB,YAAO4/B,IAAI5/B,MAAO8qB,YAAYC;AAC9B9qB,aAAO2/B,IAAI3/B,OAAO0qB,aAAaC;AAE/BvG,cAAQ/mB,SAASM,KAAK6gB,cAAcmhB,IAAIvb;AACxCqb,eAASpiC,SAASM,KAAK2gB,eAAeqhB,IAAIF;AAAAA,IAC5C,OAAQ;AACN,aAAMD,MAAM;AACXz/B,cAAMA,MAAMyzB,SAASgM,KAAKxb,WAAU,EACpChkB;AAAAA,eAAOA,OAAOwzB,SAASgM,KAAKO,YAAW,EAAA;AACvCP,eAAOA,KAAKQ;AAAAA,MACZ;AAED5b,cAAQ/mB,SAASM,KAAK6gB,cAAcghB,KAAKhhB,cAAcxe;AACvDy/B,eAASpiC,SAASM,KAAK2gB,eAAekhB,KAAKlhB,eAAeve;AAAAA,IAC1D;AACD,WAAO,EAAEwkB,GAAG5V,KAAKI,MAAMhP,GAAAA,GAAMukB,GAAG3V,KAAKI,MAAM/O,OAAOuO,OAAMixB,KAAKhhB,aAAalQ,QAAOkxB,KAAKlhB,cAAc8F,OAAOzV,KAAKI,MAAMqV,KAAAA,GAAQqb,QAAQ9wB,KAAKI,MAAM0wB,MAClJ,EAAA;AAAA,EAAA;AAKA,WAASQ,yBAAyBj8B,IAAIqgB;AACrC,QAAIjT,IAAI/T,SAASmgB;AACjB,QAAImiB,MAAMJ,gBAAgBlb;AAE1B,WAAO,EACNC,GAAGtgB,GAAGymB,UAAUrZ,EAAEuZ,aAAagV,IAAIrb,IAAID,KAAKqG,YAC5CnG,GAAGvgB,GAAG4mB,UAAUxZ,EAAE0Z,YAAY6U,IAAIpb,IAAIF,KAAKwG,UAE7C;AAAA,EAAA;AAEA,WAASqV,gBAAgBV,MAAAA;AACxB,QAAIz/B,MAAI,GAAGC,OAAK,GAAGokB,QAAM,GAAGqb,SAAO;AACnC,QAAID,KAAKE,uBAAuB;AAC/B,UAAIC,MAAMH,KAAKE,sBAAAA;AACf,UAAI/hC,OAAON,SAASM;AACpB,UAAIiiC,UAAWviC,SAASmgB,mBACvBngB,SAASM,KAAKsN,cACd5N,SAASM;AAEV,UAAIktB,YAAYpsB,OAAOohC,eAAeD,QAAQ/U,aAAaltB,KAAKktB;AAChE,UAAIH,aAAajsB,OAAOqhC,eAAeF,QAAQlV,cAAc/sB,KAAK+sB;AAClE,UAAII,YAAY8U,QAAQ9U,aAAantB,KAAKmtB,aAAa;AACvD,UAAIH,aAAaiV,QAAQjV,cAAchtB,KAAKgtB,cAAc;AAC1D5qB,YAAO4/B,IAAI5/B,MAAO8qB,YAAYC;AAC9B9qB,aAAO2/B,IAAI3/B,OAAO0qB,aAAaC;AAE/BvG,cAAQ/mB,SAASM,KAAK6gB,cAAcmhB,IAAIvb;AACxCqb,eAASpiC,SAASM,KAAK2gB,eAAeqhB,IAAIF;AAAAA,IAC5C,OAAQ;AACN,aAAMD,MAAM;AACXz/B,cAAMA,MAAMyzB,SAASgM,KAAKxb,WAAU,EAAA;AACpChkB,eAAOA,OAAOwzB,SAASgM,KAAKO,YAAW;AACvCP,eAAOA,KAAKQ;AAAAA,MACZ;AAED5b,cAAQ/mB,SAASM,KAAK6gB,cAAcghB,KAAKhhB,cAAcxe;AACvDy/B,eAASpiC,SAASM,KAAK2gB,eAAekhB,KAAKlhB,eAAeve;AAAAA,IAC1D;AACD,WAAO,EAAEwkB,GAAG5V,KAAKI,MAAMhP,MAAMukB,GAAG3V,KAAKI,MAAM/O,IAAAA,GAAOuO,OAAMixB,KAAKhhB,aAAalQ,QAAOkxB,KAAKlhB,cAAc8F,OAAOzV,KAAKI,MAAMqV,KAAQqb,GAAAA,QAAQ9wB,KAAKI,MAAM0wB,MAAAA,EAAAA;AAAAA,EAClJ;AAEA,WAASU,aAAa9b;AACrB,QAAIA,CAAAA;AAAM,aAAO;AAEjB,QAAIhW,YAAYgW,KAAKhW,aAAa;AAClC,QAAGA,UAAU+xB;AACZ/xB,kBAAYA,UAAU+xB;AAEvB,SAAI/xB,UAAUkB;AACblB,kBAAY;AAEb,WAAOA,aAAa;AAAA,EACrB;AAEA,WAASgyB,cAAch9B;AACtB,QAAIi9B;AACJ,QAAIj9B,EAAEk9B;AACLD,YAAMj9B;AAAAA,SACF;AACJA,UAAIA,KAAK5E,OAAOO;AAChBshC,YAAMj9B,EAAEE,UAAUF,EAAEisB;AACpB,UAAIgR,IAAIE,cAAcn9B,EAAEo9B,cAAc;AACrCH,cAAMj9B,EAAEo9B,aAAe,EAAA,CAAA;AAAA,MACvB;AAAA,IACD;AACD,WAAOH;AAAAA,EACR;AAEA,WAASI,UAAUr9B,GAAGksB,WAAWoR,QAChC;AAAA,QAAGA,WAAW90B;AACb80B,eAAS;AAEV,QAAIL,MAAMj9B,EAAEE,UAAUF,EAAEisB;AACxB,QAAI7uB,MAAM;AAEV,WAAO6/B,KAAI;AACV7/B,YAAM0/B,aAAaG,GAAAA;AAEnB,UAAG7/B,KAAI;AACN,YAAImgC,MAAMngC,IAAI8O,QAAQggB,SAAAA;AACtB,YAAIqR,OAAO,GAAE;AACZ,cAAKD,CAAAA;AACJ,mBAAOL;AAGR,cAAItgC,OAAQ4gC,QAAQ,OAAUngC,IAAIogC,OAAOD,MAAM,CAAI,KAAA,IAAIxG;AACvD,cAAIhW,QAAUwc,MAAMrR,UAAU3tB,UAAUnB,IAAImB,UAAAA,CAAgBnB,IAAIogC,OAAOD,MAAMrR,UAAU3tB,MAASw4B,EAAAA,KAAAA;AAEhG,cAAIp6B,QAAQokB;AACX,mBAAOkc;AAAAA,QACR;AAAA,MACD;AAEDA,YAAIA,IAAIr1B;AAAAA,IACR;AACD,WAAO;AAAA,EACR;AAIA,WAAS61B,UAAUzc;AAClB,QAAInH,UAAU,OACb8X,aAAa;AACd,QAAGv2B,OAAOmgB,kBAAiB;AAC1B,UAAI9e,QAAQrB,OAAOmgB,iBAAiByF,MAAM,IAC1CnH;AAAAA,gBAAUpd,MAAM,SAAA;AAChBk1B,mBAAal1B,MAAM,YAAA;AAAA,IACrB,WAAUukB,KAAK0c,cAAa;AAC1B7jB,gBAAUmH,KAAK0c,aAAa;AAC5B/L,mBAAa3Q,KAAK0c,aAAa,YAC/B;AAAA,IAAA;AAED,QAAIC,gBAAgB;AACpB,QAAIC,mBAAmBP,UAAU,EAACn9B,QAAO8gB,QAAO,mBAAmB,KAAA;AACnE,QAAG4c,kBAAiB;AACnBD,sBAAmBC,CAAAA,EAAAA,iBAAiBnhC,MAAMwO,UAAU;AAAA,IACpD;AACD0yB,oBAAgBA,iBAAAA,CAAmB3c,KAAiB;AAEpD,WAAQnH,WAAW,UAAU8X,cAAc,YAAagM,CAAAA;AAAAA,EACzD;AAEA,WAASE,uBAAuB7c;AAC/B,WAAQM,CAAAA,MAAMN,KAAKpiB,aAAa,gBAAiBoiB,KAAKpiB,aAAa,cAAY,KAAK;AAAA,EACrF;AAEA,WAASk/B,QAAQ9c,MAChB;AAAA,QAAI+c,cAAc,EAACznB,GAAK,MAAMlM,MAAQ;AACtC,QAAG2zB,YAAY/c,KAAKgd,SAASC,gBAAe;AAC3C,aAAA,CAAA,CAASjd,KAAKpiB,aAAa,MAAA;AAAA,IAC3B;AACD,WAAO;AAAA,EACR;AAEA,WAAShD,UAAUolB,MAClB;AAAA,QAAIkd,aAAa,EAACC,OAAQ,MAAMrb,QAAS,MAAMsb,UAAW,MAAM9mB,QAAS,MAAMtD,QAAS;AACxF,QAAGkqB,WAAWld,KAAKgd,SAASlhB,YAAAA,CAAAA,GAAe;AAC1C,aAAA,CAAQkE,KAAKqd,aAAa,UAAA;AAAA,IAC1B;AAED,WAAO;AAAA,EACR;AAGA,WAASC,kBAAkBvkB,MAC1B;AAAA,QAAIwkB,QAAQxkB,KAAK3b,iBAAiB,CACjC,WACA,cACA,SACA,UACA,YACA,UACA,UACA,UACA,SACA,cACA,qBACC6L,KAAK,IAAA,CAAA;AAEP,QAAIu0B,aAAat2B,MAAMsK,UAAUpK,MAAMmI,KAAKguB,OAAO,CAAA;AAEnD,aAAQjgC,IAAI,GAAGA,IAAIkgC,WAAWjgC,QAAQD,KAAI;AACzCkgC,iBAAWlgC,CAAAA,EAAGmgC,YAAYngC;AAAAA,IAI1B;AAEDkgC,eAAWE,KAAK,SAASpoB,GAAGC,GAAAA;AAC3B,UAAGD,EAAEoF,aAAa,KAAKnF,EAAEmF,aAAa,GAAE;AACvC,eAAO;AAAA,MACP;AACD,UAAGpF,EAAEoF,aAAa,KAAKnF,EAAEmF,aAAa,GAAE;AACvC,eAAA;AAAA,MACA;AAED,UAAIpF,EAAEoF,aAAanF,EAAEmF,UAAS;AAE7B,eAAOpF,EAAEmoB,YAAYloB,EAAEkoB;AAAAA,MACvB;AACD,UAAInoB,EAAEoF,WAAWnF,EAAEmF,UAAU;AAC5B,eAAQ;AAAA,MACR;AACD,aAAO;AAAA,IACT,CAEC;AAAA,aAAQpd,IAAI,GAAGA,IAAIkgC,WAAWjgC,QAAQD,KAAI;AACzC,UAAI0iB,OAAOwd,WAAWlgC;AACtB,UAAIqgC,WAAWd,uBAAuB7c,IAAUplB,KAAAA,UAAUolB,IAAS8c,KAAAA,QAAQ9c,UAAUyc,UAAUzc,IAAAA;AAC/F,WAAI2d,SAAQ;AACXH,mBAAWjxB,OAAOjP,GAAG,CACrBA;AAAAA;AAAAA,MACA;AAAA,IACD;AACD,WAAOkgC;AAAAA,EACR;AAGA,WAASI;AACR,WAAO5kC,SAAS60B,KAAKgQ,oBAAoB7kC,SAAS60B,KAAKiQ;AAAAA,EACxD;AAOA,WAASC,mBAAAA;AACR,QAAIC,gBAAgBhlC,SAASglC;AAC7B,QAAIA,cAAc7B,YAAY;AAC7B6B,sBAAgBA,cAAc7B,WAAW6B;AAAAA,IACzC;AACD,QAAIA,kBAAkBhlC,SAASM,QAAQN,SAASilC,cAAc;AAC7DD,sBAAgBhlC,SAASilC,eAAeC,aAAallC,SAASM;AAAAA,IAC9D;AAED,WAAO0kC;AAAAA,EACR;AAOA,WAASG,YAAYt/B,SAAAA;AACpB,SAAKA,SAAS;AACb,aAAO7F,SAASM;AAAAA,IAChB;AACD,QAAA,CAAKskC,wBAAwB;AAC5B,aAAO5kC,SAASM;AAAAA,IAChB;AACD,WAAOuF,QAAQ+H,eAAe/H,UAAUA,QAAQ+H,aAAa;AAC5D,UAAI/H,mBAAmBu/B,YAAY;AAClC,eAAOv/B,QAAQw/B;AAAAA,MACf;AAAA,IACD;AACD,WAAOrlC,SAASM;AAAAA,EACjB;AAEA,WAASglC,gBAAgBz/B,SACxB;AAAA,WAAA,CAAA,CAASs/B,YAAYt/B,OACtB;AAAA,EAAA;AAEe,QAAA0/B,cAAA,EAOd3X,iBAAiB,SAASA,gBAAgB4X,YACzC;AAAA,WAAOrlC,KAAKslC,UAAUD,UAAAA,EAAY7iC;AAAAA,EAClC,GAODkrB,gBAAgB,SAASA,eAAe2X,YAAAA;AACvC,WAAOrlC,KAAKslC,UAAUD,UAAY9iC,EAAAA;AAAAA,EAClC,GAEDgjC,cAAc,SAASA,aAAavD,MACnC;AAAA,QAAIz/B,MAAI,GAAGC,OAAK;AAChB,WAAMw/B,MAAM;AACXz/B,YAAMA,MAAMyzB,SAASgM,KAAKxb,SAC1BhkB;AAAAA,aAAOA,OAAOwzB,SAASgM,KAAKO;AAC5BP,aAAOA,KAAKQ;AAAAA,IACZ;AACD,WAAO,EAACjgC,KAAUC,KAAMA;AAAAA,EACxB,GAEDgjC,eAAe,SAASA,cAAcxD,MACrC;AAAA,QAAIG,MAAMH,KAAKE;AAEf,QAAI3/B,MAAM,GACTC,OAAO;AAGR,SAAK,OAAOijC,KAAKC,UAAUC,SAAAA,GAAY;AACtC,UAAIxlC,OAAON,SAASM;AACpB,UAAIiiC,UAAUviC,SAASmgB;AACvB,UAAIqN,YAAYpsB,OAAOohC,eAAeD,QAAQ/U,aAAaltB,KAAKktB;AAChE,UAAIH,aAAajsB,OAAOqhC,eAAeF,QAAQlV,cAAc/sB,KAAK+sB;AAClE,UAAII,YAAY8U,QAAQ9U,aAAantB,KAAKmtB,aAAa;AACvD,UAAIH,aAAaiV,QAAQjV,cAAchtB,KAAKgtB,cAAc;AAE1D5qB,YAAO4/B,IAAI5/B,MAAO8qB,YAAYC;AAC9B9qB,aAAO2/B,IAAI3/B,OAAO0qB,aAAaC;AAAAA,IAClC,OAAQ;AAIL,UAAIjD,QAAQrqB,SAASC,cAAc,KACnCoqB;AAAAA,YAAM5nB,MAAM2K,WAAS;AACrBid,YAAM5nB,MAAME,OAAK;AACjB0nB,YAAM5nB,MAAMC,MAAI;AAChB2nB,YAAM5nB,MAAMyO,QAAM;AAClBmZ,YAAM5nB,MAAMwO,SAAS;AAErBjR,eAASM,KAAKC,YAAY8pB;AAC1B,UAAI0b,WAAW1b,MAAMgY,sBACrB3/B;AAAAA,YAAO4/B,IAAI5/B,MAAMqjC,SAASrjC;AAC1BC,aAAO2/B,IAAI3/B,OAAOojC,SAASpjC;AAE3B0nB,YAAMzc,WAAWC,YAAYwc,KAAAA;AAAAA,IAC7B;AAED,WAAO,EAAE3nB,KAAK4O,KAAKI,MAAMhP,MAAMC,MAAM2O,KAAKI,MAAM/O,IAAAA,EAAAA;AAAAA,EAChD,GAED8iC,WAAW,SAASA,UAAUtD,MAC7B;AAAA,QAAIA,KAAKE,uBAAuB;AAC/B,aAAOliC,KAAKwlC,cAAcxD,IAC7B;AAAA,IAAA,OAAS;AACN,aAAOhiC,KAAKulC,aAAavD,IACzB;AAAA,IAAA;AAAA,EACD,GAEDh8B,SAAS,SAASN,SAASmgC,UAAAA;AAC1B,SAAIngC,WAAYmgC,CAAAA,UAAS;AACxB,aAAO;AAAA,IACP;AACD,WAAO7/B,QAAQN,SAASmgC,QAAAA;AAAAA,EACxB,GACDC,aAAa,SAASC,SAASC,eAC9B;AAAA,QAAGA,cAAcC,aAAY;AAC5BD,oBAAcv4B,WAAW6Y,aAAayf,SAASC,cAAcC;IAChE,OAAO;AACJD,oBAAcv4B,WAAWrN,YAAY2lC,OACrC;AAAA,IAAA;AAAA,EACD,GACDxR,QAAQ,SAAS1N;AAChB,QAAIA,QAAQA,KAAKpZ,YAAY;AAC5BoZ,WAAKpZ,WAAWC,YAAYmZ,IAC5B;AAAA,IAAA;AAAA,EACD,GACDqf,WAAW,SAASC,OAAO34B,QAAAA;AAC1B,WAAOA,OAAO44B,SAASD;EACvB,GACDhC,mBACAxB,cACAO,WACA8B,aACAG,iBACAV,sBACAG,kBACAnC,0BACAI,eACAH;AAGD,MAAI18B;AACJ,MAAGqgC,QAAQhuB,UAAUrS,SAAQ;AAC5BA,cAAU,SAASN,SAASmgC;AAC3B,aAAOngC,QAAQM,QAAQ6/B,QACzB;AAAA,IAAA;AAAA,EACA,OAAK;AACJ,QAAIS,UAAUD,QAAQhuB,UAAUiuB,WAAWD,QAAQhuB,UAAUkuB,qBAAqBF,QAAQhuB,UAAUmuB;AACpGxgC,cAAU,SAASN,SAASmgC;AAC3B,UAAIriB,MAAK9d;AACT,SAAG;AACF,YAAI4gC,QAAQlwB,KAAKoN,KAAIqiB,QAAAA,GAAU;AAC9B,iBAAOriB;AAAAA,QACP;AACDA,QAAAA,MAAKA,IAAGijB,iBAAiBjjB,IAAG/V;AAAAA,MAC5B,SAAQ+V,QAAO,QAAQA,IAAGkjB,aAAa;AACxC,aAAO;AAAA,IACT;AAAA,EACA;ACpZA,MAAIC,oBAA2B1lC,OAAAA,WAAW;AAI3B,QAAA2lC,MAAA,EACd9Z,MAAM6Z,sBAAsBjB,UAAUC,UAAU5zB,QAAQ,MAAW,KAAA,KAAK2zB,UAAUC,UAAU5zB,QAAQ,cAAc,IAClH80B,SAASF,qBAAsBjB,UAAUC,UAAU5zB,QAAQ,OAAA,KAAY,GACvE+0B,UAAUH,qBAAsBjB,UAAUC,UAAU5zB,QAAQ,QAAa,KAAA,GACzEg1B,SAASJ,sBAAsBjB,UAAUC,UAAU5zB,QAAQ,QAAA,KAAa,KAAK2zB,UAAUC,UAAU5zB,QAAQ,WAAA,KAAgB,IACzHi1B,MAAML,qBAAsBjB,UAAUC,UAAU5zB,QAAQ,cAAc,GACtEk1B,QAAQN,qBAAsBjB,UAAUC,UAAUlb,OAAO,QAAA,KAAa,GACtEyc,QAAQP,qBAAsBjB,UAAUC,UAAU5zB,QAAQ,MAAU,KAAA,IACpEo1B,SAAUR,qBAA4BjB,OAAAA,aAAa;ACbrC,WAAS7qB,SAAOlb;AAE/BA,IAAAA,WAAUkB,aAAa,WACtBlB;AAAAA,MAAAA,WAAUiL,UAAU,aAAa,CAAA,CAAA;AACjC5K,WAAKonC,SAEL;AAAA,UAAGpnC,KAAKgE,YAAW;AAElBhE,aAAKgE,WAAW9D,YAAY;AAAA,MAE5B;AAED,UAAGF,KAAKy8B,iBAAgB;AACvBz8B,aAAKy8B,gBAAAA;AAAAA,MACL;AAED,UAAGz8B,KAAK+5B,eAAc;AACrB/5B,aAAK+5B,cAAAA;AAAAA,MACL;AAED,UAAG/5B,KAAK+W,OAAO/W,KAAK+W,IAAIlW,YAAW;AAClCb,aAAK+W,IAAIlW,WAAAA;AAAAA,MACT;AAGDb,WAAKqjB,gBAAAA;AAEL,eAAQlf,KAAKnE,MAAK;AACjB,YAAGmE,EAAE4N,QAAQ,SAAS,GAAE;AAAA,iBAChB/R,KAAKmE,CAAAA;AAAAA,QACZ;AAAA,MACD;AACDxE,MAAAA,WAAU8gB,aAAa;AAAA,IACxB;AAAA,EAEA;ACnCe,WAAQ4mB,YAAC51B,MACvB;AAAA,QAAA,OAAWA,SAAS,YAAmBA,OAAAA,SAAS,UAAU;AACzD,aAAOA;AAAAA,IACP;AACD,QAAIwH,SAAS;AACb,aAAS/D,OAAOzD,MAAM;AACrB,UAAI61B,aAAa;AACjB,UAAI71B,KAAK7C,eAAesG,MAAM;AAC7B,YAAA,OAAWzD,KAAKyD,GAAS,MAAA,UAAU;AAClCoyB,uBAAaC,mBAAmB91B,KAAKyD,GAAAA,CAAAA;AAAAA,QACrC,WAAiBzD,OAAAA,KAAKyD,SAAS,UAAU;AACzCoyB,uBAAa71B,KAAKyD,GAAAA;AAAAA,QACtB,OAAU;AACNoyB,uBAAaC,mBAAmB9iB,KAAKC,UAAUjT,KAAKyD,GAAAA,CAAAA,CAAAA;AAAAA,QACpD;AACDoyB,qBAAapyB,MAAM,MAAMoyB;AAEzB,YAAIruB,OAAO7U,QAAQ;AAClBkjC,uBAAa,MAAMA;AAAAA,QACnB;AACDruB,kBAAUquB;AAAAA,MACV;AAAA,IACD;AACD,WAAOruB;AAAAA,EACR;ACtBe,WAAS4B,SAAOlb;AAE/BA,IAAAA,WAAU6nC,UAAUvmC,OAAOumC;AAE3B,aAASC,aAAantB,QAAQlB;AAC7B,UAAIH,SAAS,EACZqB,OAAQA;AAGT,UAAIlB,KAAKhV,WAAW,GAAG;AACtB,cAAM,IAAI6N,MAAM;MAChB;AACD,UAAImH,KAAKhV,WAAW,GAAG;AACtB,YAAA,OAAWgV,KAAK,CAAO,MAAA,UAAU;AAChCH,iBAAOyuB,MAAMtuB,KAAK,CAAA;AAClBH,iBAAO0uB,QAAQ;AAAA,QAClB,OAAS;AACN1uB,iBAAOyuB,MAAMtuB,KAAK,CAAA,EAAGsuB;AACrBzuB,iBAAO0uB,QAASvuB,KAAK,CAAA,EAAGuuB,SAAS;AACjC1uB,iBAAOhS,WAAWmS,KAAK,CAAA,EAAGnS;AAC1BgS,iBAAO2uB,UAAUxuB,KAAK,CAAA,EAAGwuB;AAAAA,QACzB;AACD,YAAIttB,WAAW,UAAU,OAAO;AAC/B,cAAIlB,KAAK,CAAG3H,EAAAA,MAAM;AACjB,gBAAW2H,OAAAA,KAAK,GAAG3H,SAAS,UAAU;AACrCwH,qBAAOxH,OAAOo2B,YAAUzuB,KAAK,GAAG3H,IACrC;AAAA,YAAA,OAAW;AACNwH,qBAAOxH,OAAO2H,KAAK,CAAA,EAAG3H;AAAAA,YACtB;AAAA,UACL,OAAU;AACNwH,mBAAOxH,OAAO;AAAA,UACd;AAAA,QACD;AACD,eAAOwH;AAAAA,MACP;AAEDA,aAAOyuB,MAAMtuB,KAAK,CAClB;AAAA,cAAOkB;QACN,KAAK;AAAA,QACL,KAAK;AACJrB,iBAAOhS,WAAWmS,KAAK;AACvBH,iBAAO2uB,UAAUxuB,KAAK,CACvB;AAAA;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AACJ,cAAIA,KAAK,CAAI,GAAA;AACZ,uBAAWA,KAAK,CAAA,MAAO,UAAU;AAChCH,qBAAOxH,OAAOo2B,YAAUzuB,KAAK,CAClC,CAAA;AAAA,YAAA,OAAW;AACNH,qBAAOxH,OAAO2H,KAAK,CAAA;AAAA,YACnB;AAAA,UACL,OAAU;AACNH,mBAAOxH,OAAO;AAAA,UACd;AACDwH,iBAAOhS,WAAWmS,KAAK,CAAA;AACvBH,iBAAO2uB,UAAUxuB,KAAK;AACvB;AAAA,MAED;AAAA,aAAOH;AAAAA,IACR;AACAtZ,IAAAA,WAAUmoC,OAAO,EAGhB7N,OAAO,MAGP3f,QAAQ,OAERytB,wBAAwBF,aACxBG,OAAO,SAASv2B,MAAAA;AACf,UAAWA,OAAAA,SAAS;AAAU,eAAOA;AAErC,UAAI7R;AACJ6R,aAAOA,KAAKsY,QAAQ,UAAS,EAC7B;AAAA,UAAA,OAAWke,cAAc,eAAgBtoC,CAAAA,WAAUktB,KAAKC,MAAM;AAC7DltB,cAAM,IAAKqoC,YAAaC,gBAAgBz2B,MAAM;MAC9C,WAAM,OAAWxQ,OAAOknC,kBAAkB,aAAa;AACvDvoC,cAAM,IAAIqB,OAAOknC,cAAc;AAC/BvoC,YAAI+nC,QAAQ;AACZ/nC,YAAIwoC,QAAQ32B;MACZ;AACD,aAAO7R;AAAAA,IACP,GACDyoC,QAAQ,SAASC,SAASC,KAAK3oC,KAC9B;AAAA,UAAA,OAAW2oC,IAAIC,UAAU,eAAeD,IAAIC,SAAS,KAAK;AACzD,YAAIC,MAAQF,CAAAA,IAAIG,cAAe1oC,KAAKgoC,MAAMO,IAAIlsB,gBAAgBksB,OAAQA,IAAIG,eAAeH;AACzF,YAAIE,OAAOA,IAAIzoB,oBAAoB,QAAA,CAASyoB,IAAIphB,qBAAqB,eAAejjB,QAAQ;AAC3F,iBAAOqkC,IAAIphB,qBAAqBihB,SAAS,CACzC;AAAA,QAAA;AAAA,MACD;AACD,UAAI1oC;AAAYD,QAAAA,WAAUiL,UAAU,kBAAiB,CAAC,iBAAiBqJ,UAAU,CAAA,GAAIrU,GACrF,CAAA;AAAA,aAAOC,SAASC,cAAc,KAAA;AAAA,IAC9B,GACD6oC,OAAO,SAASC,UAAUC,QACzB;AAAA,UAAA,CAAKA,OAAOhF;AAAUgF,iBAASA,OAAOH,eAAeG;AACrD,UAAIlpC,WAAUktB,KAAKC,MAAM;AACxB,eAAO+b,OAAOC,YAAYF,QAAW,KAAA,CAAA;AAAA,MACxC,OAAS;AACN,YAAI1qB,OAAO,CACX;AAAA,YAAI6qB;AACJ,YAAIC,OAAOH,OAAOI,iBAAeJ,QAAQK,SAASN,UAAUC,QAAQ,MAAMM,YAAYC,UAAU,IAAA;AAEhG,eAAO,MAAK;AACXL,kBAAQC,IAAIK,YAAAA;AACZ,cAAGN,OAAM;AACR7qB,iBAAKra,KAAKklC;UACf,OAAS;AACJ;AAAA,UACA;AAAA,QACD;AACD,eAAO7qB;AAAAA,MACP;AAAA,IACD,GACDorB,OAAO,SAAS5nC,QACf;AAAA,aAAO1B,KAAKupC,MACV7nC,OAAO4Y,UAAU,OAClB5Y,OAAOgmC,KACPhmC,OAAO+P,QAAQ,IACd/P,OAAOimC,SAAS,MACjBjmC,OAAOuF,UACPvF,OAAOkmC,OAAAA;AAAAA,IAER,GACD4B,KAAK,SAAS9B,MAAK+B,QAAQ7B;AAC1B,UAAIlmC,SAAS+lC,aAAa,OAAOxzB,SAAAA;AACjC,aAAOjU,KAAKspC,MAAM5nC,MAClB;AAAA,IAAA,GACDgoC,SAAS,SAAShC,MAAKE;AACtB,UAAIlmC,SAAS+lC,aAAa,OAAOxzB;AACjCvS,aAAOimC,QAAQ;AACf,aAAO3nC,KAAKspC,MAAM5nC,MAClB;AAAA,IAAA,GACDioC,KAAK,SAASjC,MAAKkC,UAAUH,QAAQ7B;AACpC,UAAIlmC,SAAS+lC,aAAa,OAAOxzB,SAAAA;AACjC,aAAOjU,KAAKspC,MAAM5nC,MAClB;AAAA,IAAA,GACDmoC,KAAK,SAASnC,MAAK+B,QAAQ7B,SAO1B;AAAA,UAAIlmC,SAAS+lC,aAAa,UAAUxzB,SACpC;AAAA,aAAOjU,KAAKspC,MAAM5nC,MAAAA;AAAAA,IAClB,GACDooC,MAAM,SAASpC,MAAKkC,UAAUH,QAAQ7B,SACrC;AAAA,UAAI3zB,UAAU7P,UAAU,GAAG;AAC1BwlC,mBAAW;AAAA,MACd,WAAa31B,UAAU7P,UAAU,KAAA,OAAY,YAAa,YAAY;AACnEqlC,iBAASG;AACTA,mBAAW;AAAA,MACX;AACD,UAAIloC,SAAS+lC,aAAa,QAAQxzB,SAClC;AAAA,aAAOjU,KAAKspC,MAAM5nC,MAAAA;AAAAA,IAClB,GACDqoC,UAAU,SAASrC,MAAKkC,UAAUhC;AACjCgC,iBAAYA,aAAa,OAAO,KAAKvkC,OAAOukC,QAE5C;AAAA,UAAIloC,SAAS+lC,aAAa,QAAQxzB;AAClCvS,aAAOimC,QAAQ;AACf,aAAO3nC,KAAKspC,MAAM5nC,MAAAA;AAAAA,IAClB,GACD6nC,OAAO,SAASjvB,QAAQotB,MAAKkC,UAAUjC,OAAO8B,QAAQ7B,SAAAA;AACrD,aAAO,IAAIjoC,WAAU6nC,SAAS,SAASwC,SAASC,QAC/C;AAAA,YAAI91B,WAAY+1B,mBAAmB77B,UAAAA,CAAc1O,WAAUktB,KAAKC,OAAO,IAAIod,mBAAmB,IAAIjpC,OAAOknC,cAAc;AACvH,YAAIgC,OAAQzE,UAAUC,UAAUyE,MAAM,aAAmB,MAAA,QAAQ1E,UAAUC,UAAUyE,MAAM,UAAU,QAAQ1E,UAAUC,UAAUyE,MAAM,cAAc;AAErJ,YAAA,CAAA,CAAMzC,OAAO;AACZxzB,YAAE8nB,iBAAiB,oBAAoB,WAAA;AACtC,gBAAK9nB,EAAEk2B,cAAc,KAAOF,QAAQh2B,EAAEk2B,cAAc,GAAI;AACvD,kBAAIl2B,EAAEq0B,UAAU,OAAOr0B,EAAEkI,iBAAiB;AACzC,qBAAK1c,WAAUiL,UAAU,eAAe,CAACuJ,CAAAA,CAAAA;AAAK;AAAA;AAE/CkF,yBAAW;AACV,oBAAW,OAAA,UAAW,YAAY;AACjCowB,yBAAOr7B,MAAMnN,QAAQ,CAAC,EAACqpC,QAAOn2B,GAAGo2B,UAAS7C,KAAAA,CAAAA,CAAAA;AAAAA,gBAC1C;AACDsC,wBAAQ71B,CAAAA;AACR,2BAAW,UAAW,YAAY;AACjCs1B,2BAAS;AACTt1B,sBAAI;AAAA,gBACJ;AAAA,cACD,GAAE;YACH;AAAA,UACN,CAAA;AAAA,QACI;AAED,YAAImG,UAAU,SAAUta,CAAAA,KAAKi6B,OAAO;AACnCyN,UAAAA,SAAQA,KAAI31B,QAAQ,GAAA,KAAM,IAAE,MAAI,OAAK,UAAO,oBAAIvN,QAAOg2B,QAAU,IAAA;AAAA,QACjE;AAEDrmB,UAAEq2B,KAAKlwB,QAAQotB,MAAKC;AAEpB,YAAIC,SAAQ;AACX,mBAAS1yB,OAAO0yB;AACfzzB,cAAEs2B,iBAAiBv1B,KAAK0yB,QAAQ1yB,GACrC,CAAA;AAAA,QAAA,WAAcoF,OAAOowB,YAAAA,KAAiB,UAAUpwB,UAAU,SAASA,UAAU,UAAU;AACnFnG,YAAEs2B,iBAAiB,gBAAgB,mCACvC;AAAA,QAAA,WAAcnwB,UAAU,OAAO;AAC3BsvB,qBAAW;AAAA,QACX;AAEDz1B,UAAEs2B,iBAAiB,oBAAoB,gBAAA;AAEvCt2B,UAAEw2B,KAAKf,QAAAA;AAEP,YAAKjC,CAAAA;AAAO,iBAAO,EAAC2C,QAAOn2B,GAAGo2B,UAAS7C,KAAAA;AAAAA,MAC1C,GAAI7kB,KAAK7iB,IAAAA,CAAAA;AAAAA,IACP,GACD4qC,cAAc,SAAS9T,KACtB;AAAA,UAAIA,IAAI/kB,QAAQ,GAAA,KAAA;AACf,eAAO;AAAA;AAEP,eAAO;AAAA,IACR;AAGFpS,IAAAA,WAAUkrC,QAAQlrC,WAAUmoC;AAAAA,EAE5B;AC9Ne,WAASjtB,SAAOlb,YAAAA;AAE/B,QAAImrC,uBAAuB,SAAUC,QAAQC,KAAAA;AAC5C,UAAIC,OAAO;AACX,UAAIphB,OAAOkhB,OAAOX,MAAM,YAAA;AACxB,eAASjmC,IAAI,GAAGA,IAAI0lB,KAAKzlB,QAAQD,KAAK;AACrC,gBAAQ0lB,KAAK1lB;UACZ,KAAK;AAAA,UACL,KAAK;AAAM8mC,oBAAQ,iBAAiB9mC,IAAI;AACvC;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AAAM8mC,oBAAQ,kBAAkB9mC,IAAI;AACxC;AAAA,UACD,KAAK;AAAM8mC,oBAAQ,iBAAiB9mC,IAAI,eAAeA,IAAI;AAC1D;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACJ8mC,oBAAQ,iBAAiB9mC,IAAI;AAC7B;AAAA,UACD,KAAK;AACJ8mC,oBAAQ,iBAAiB9mC,IAAI;AAC7B;AAAA,UACD,KAAK;AAAM8mC,oBAAQ,iBAAiB9mC,IAAI;AACvC;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AAAM8mC,oBAAQ,6BAA6B9mC,IAAI;AACnD;AAAA,UACD,KAAK;AAAM8mC,oBAAQ,iBAAiB9mC,IAAI;AACvC;AAAA,UACD,KAAK;AAAM8mC,oBAAQ,mDAAmD9mC,IAAI;AACzE;AAAA,UACD,KAAK;AAAM8mC,oBAAQ,kDAAkD9mC,IAAI;AACxE;AAAA,QAIF;AAAA,MAAA;AACD,UAAI+mC,OAAO;AACX,UAAIF;AAAKE,eAAO,eAAeA,OAAO;AACtC,aAAO,IAAI9yB,SAAS,QAAQ,4BAA4B6yB,OAAO,sBAAsBC,OAAO,IAC7F;AAAA,IAAA;AACA,QAAIC,kBAAkB,SAAUJ,QAAQC,KAAAA;AACvC,aAAO,SAAS7nC,MAAAA;AACf,eAAO4nC,OAAOhhB,QAAQ,cAAc,SAAU5N,GAAAA;AAC7C,kBAAQA,GAAAA;AAAAA,YACP,KAAK;AAAM,qBAAO6uB,MAAMrrC,WAAUwD,KAAKioC,SAASjoC,KAAKkoC,WAAAA,CAAAA,IAAgB1rC,WAAUwD,KAAKioC,SAASjoC,KAAKiG,QAAAA,CAAAA;AAAAA,YAClG,KAAK;AAAM,qBAAO4hC,MAAMrrC,WAAUwD,KAAKioC,SAAUjoC,KAAKmoC,gBAAgB,CAAM3rC,IAAAA,WAAUwD,KAAKioC,SAAUjoC,KAAKyV,aAAa,CACvH;AAAA,YAAA,KAAK;AAAM,qBAAOoyB,MAAM7nC,KAAKkoC,WAAAA,IAAeloC,KAAKiG,QACjD;AAAA,YAAA,KAAK;AAAM,qBAAO4hC,MAAO7nC,KAAKmoC,YAAAA,IAAgB,IAAMnoC,KAAKyV,SAAAA,IAAa;AAAA,YACtE,KAAK;AAAM,qBAAOoyB,MAAMrrC,WAAUwD,KAAKioC,SAASjoC,KAAKooC,eAAmB,IAAA,GAAA,IAAO5rC,WAAUwD,KAAKioC,SAASjoC,KAAKwV,YAAgB,IAAA,GAAA;AAAA,YAC5H,KAAK;AAAM,qBAAOqyB,MAAM7nC,KAAKooC,mBAAmBpoC,KAAKwV,YAAAA;AAAAA,YACrD,KAAK;AAAM,qBAAOqyB,MAAMrrC,WAAU8nB,OAAOtkB,KAAKqoC,UAAUroC,KAAKsoC,UAAe9rC,CAAAA,IAAAA,WAAU8nB,OAAOtkB,KAAKqoC,UAAUroC,KAAK4F,OAAAA,CAAAA;AAAAA,YACjH,KAAK;AAAM,qBAAOiiC,MAAMrrC,WAAU8nB,OAAOtkB,KAAKuoC,SAASvoC,KAAKsoC,UAAe9rC,CAAAA,IAAAA,WAAU8nB,OAAOtkB,KAAKuoC,SAASvoC,KAAK4F,OAC/G,CAAA;AAAA,YAAA,KAAK;AAAM,qBAAOiiC,MAAMrrC,WAAU8nB,OAAOtkB,KAAKwoC,YAAYxoC,KAAKmoC,iBAAiB3rC,WAAU8nB,OAAOtkB,KAAKwoC,YAAYxoC,KAAKyV,SACvH,CAAA;AAAA,YAAA,KAAK;AAAM,qBAAOoyB,MAAMrrC,WAAU8nB,OAAOtkB,KAAKyoC,WAAWzoC,KAAKmoC,YAAAA,CAAAA,IAAiB3rC,WAAU8nB,OAAOtkB,KAAKyoC,WAAWzoC,KAAKyV;YACrH,KAAK;AAAM,qBAAOoyB,MAAMrrC,WAAUwD,KAAKioC,UAAUjoC,KAAK0oC,YAAgB,IAAA,MAAM,KAAK,CAAKlsC,IAAAA,WAAUwD,KAAKioC,UAAUjoC,KAAKkJ,SAAa,IAAA,MAAM,KAAK,CAC5I;AAAA,YAAA,KAAK;AAAM,qBAAO2+B,OAAQ7nC,KAAK0oC,YAAgB,IAAA,MAAM,KAAK,KAAO1oC,KAAKkJ,SAAa,IAAA,MAAM,KAAK;AAAA,YAC9F,KAAK;AAAM,qBAAO2+B,MAAM7nC,KAAK0oC,YAAAA,IAAgB1oC,KAAKkJ,SAClD;AAAA,YAAA,KAAK;AAAM,qBAAO2+B,MAAMrrC,WAAUwD,KAAKioC,SAASjoC,KAAK0oC,YAAAA,CAAAA,IAAiBlsC,WAAUwD,KAAKioC,SAASjoC,KAAKkJ,SACnG,CAAA;AAAA,YAAA,KAAK;AAAM,qBAAO2+B,MAAMrrC,WAAUwD,KAAKioC,SAASjoC,KAAK2oC,cAAAA,CAAAA,IAAmBnsC,WAAUwD,KAAKioC,SAASjoC,KAAKwK,WACrG,CAAA;AAAA,YAAA,KAAK;AAAM,qBAAOq9B,MAAO7nC,KAAK0oC,YAAAA,IAAgB,KAAK,OAAO,OAAS1oC,KAAKkJ,SAAa,IAAA,KAAK,OAAO;AAAA,YACjG,KAAK;AAAM,qBAAO2+B,MAAO7nC,KAAK0oC,YAAAA,IAAgB,KAAK,OAAO,OAAS1oC,KAAKkJ,SAAAA,IAAa,KAAK,OAAO;AAAA,YACjG,KAAK;AAAM,qBAAO2+B,MAAMrrC,WAAUwD,KAAKioC,SAASjoC,KAAK4oC,mBAAmBpsC,WAAUwD,KAAKioC,SAASjoC,KAAK6oC,WAAAA,CAAAA;AAAAA,YACrG,KAAK;AAAM,qBAAOhB,MAAMrrC,WAAUwD,KAAKioC,SAASzrC,WAAUwD,KAAK8oC,cAAc9oC,IAAAA,CAAAA,IAASxD,WAAUwD,KAAKioC,SAASzrC,WAAUwD,KAAK+oC,WAAW/oC,IACxI,CAAA;AAAA,YAAA;AAAS,qBAAOgZ;AAAAA,UAEpB;AAAA,QAAA,CAAA;AAAA,MACA;AAAA,IACA;AACA,QAAIgwB,kBAAkB,SAAUpB,QAAQC,KACvC;AAAA,YAAMnhB,OAAOkhB,OAAOX,MAAM;AAC1B,aAAO,SAAUjnC,MAChB;AAAA,YAAIipC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAC1B;AAAA,YAAIC,OAAOlpC,KAAKinC,MAAM,mBAEtB;AAAA,iBAASjmC,IAAI,GAAGA,IAAI0lB,KAAKzlB,QAAQD,KAAK;AACrC,kBAAQ0lB,KAAK1lB,CAAAA,GAAAA;AAAAA,YACZ,KAAK;AAAA,YACL,KAAK;AACJioC,kBAAI,CAAA,IAAKC,KAAKloC,CAAAA,KAAM;AACpB;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AACJioC,kBAAI,CAAMC,KAAAA,KAAKloC,CAAM,KAAA,KAAK;AAC1B;AAAA,YACD,KAAK;AACJioC,kBAAI,CAAA,IAAKC,KAAKloC,CAAK,IAAA,KAAKkoC,KAAKloC,CAAAA,IAAK,KAAK,OAAO;AAC9C;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACJioC,kBAAI,CAAA,IAAKC,KAAKloC,CAAM,KAAA;AACpB;AAAA,YACD,KAAK;AACJioC,kBAAI,CAAA,IAAKC,KAAKloC,CAAM,KAAA;AACpB;AAAA,YACD,KAAK;AACJioC,kBAAI,CAAKC,IAAAA,KAAKloC,CAAM,KAAA;AACpB;AAAA,YACD,KAAK;AAAA,YACL,KAAK;AACJioC,kBAAI,KAAKA,IAAI,CAAA,IAAK,OAAOC,KAAKloC,MAAM,IAAIwe,YAAAA,KAAiB,OAAO,IAAI;AACpE;AAAA,YACD,KAAK;AACJypB,kBAAI,CAAA,IAAKC,KAAKloC,CAAM,KAAA;AACpB;AAAA,YACD,KAAK;AACJioC,kBAAI,CAAKzsC,IAAAA,WAAU8nB,OAAOtkB,KAAKmpC,iBAAiBD,KAAKloC,CAAAA,CAAAA,KAAO;AAC5D;AAAA,YACD,KAAK;AACJioC,kBAAI,CAAA,IAAKzsC,WAAU8nB,OAAOtkB,KAAKopC,gBAAgBF,KAAKloC,OAAO;AAC3D;AAAA,UAAA;AAAA,QAIF;AAED,YAAI6mC,KAAK;AACR,iBAAO,IAAIxmC,KAAKA,KAAKgoC,IAAIJ,IAAI,CAAA,GAAIA,IAAI,CAAIA,GAAAA,IAAI,CAAIA,GAAAA,IAAI,IAAIA,IAAI,CAAA,GAAIA,IAAI,CACrE,CAAA,CAAA;AAAA,QAAA;AAED,eAAO,IAAI5nC,KAAK4nC,IAAI,CAAA,GAAIA,IAAI,CAAIA,GAAAA,IAAI,CAAIA,GAAAA,IAAI,IAAIA,IAAI,CAAA,GAAIA,IAAI,CAAA,CAAA;AAAA,MAC9D;AAAA,IACA;AAEA,QAAIK,aAAap+B;AACjB,aAASq+B;AACR,UACC;AAAA,YAAIt0B,SAAS,qBAAA;AACbq0B,qBAAa;AAAA,MACb,SAAO5mC,GACP4mC;AAAAA,qBAAa;AAAA,MACb;AACD,aAAOA;AAAAA,IACR;AAEA,aAASE,SACR;AAAA,UAAI1zB,SAAS;AACb,UAAItZ,WAAU+B,OAAOkrC,QAAQ,QAAQ;AACpC,YAAGH,eAAep+B,QAAU;AAC3Bo+B,uBAAaC,kBAAAA;AAAAA,QACb;AACDzzB,iBAASwzB;AAAAA,MACX,OAAQ;AACNxzB,iBAAStZ,WAAU+B,OAAOkrC;AAAAA,MAC1B;AACD,aAAO3zB;AAAAA,IACR;AACAtZ,IAAAA,WAAUwD,OAAO,EAChBrC,MAAK,WACJ;AAAA,UAAI2I,IAAI9J,WAAU8nB,OAAOtkB,KAAKwoC;AAC9B,UAAIx3B,IAAIxU,WAAU8nB,OAAOtkB,KAAKmpC,mBAAmB,CAAA;AACjD,eAASnoC,IAAI,GAAGA,IAAIsF,EAAErF,QAAQD;AAC7BgQ,UAAE1K,EAAEtF,CAAIA,CAAAA,IAAAA;AAET,UAAIsF,IAAI9J,WAAU8nB,OAAOtkB,KAAKyoC;AAC9B,UAAIz3B,IAAIxU,WAAU8nB,OAAOtkB,KAAKopC,kBAAkB,CAAA;AAChD,eAASpoC,IAAI,GAAGA,IAAIsF,EAAErF,QAAQD;AAC7BgQ,UAAE1K,EAAEtF,CAAAA,CAAAA,IAAIA;AAAAA,IACT,GACDyE,WAAU,SAASzF,MAAAA;AAClB,UAAI0pC,MAAM,IAAIroC,KAAKrB,IACnBA;AAAAA,WAAKsH,SAAS,CAAA;AACdtH,WAAKuH,WAAW,CAAA;AAChBvH,WAAK2pC,WAAW,CAAA;AAChB3pC,WAAK4pC,gBAAgB,CAAA;AACrB,UAAI5pC,KAAKkJ,eACPlJ,KAAKiG,QAAAA,IAAYyjC,IAAIzjC,QAAajG,KAAAA,KAAKyV,aAAai0B,IAAIj0B,SAAAA,KAAczV,KAAKwV,YAAAA,IAAgBk0B,IAAIl0B,YAChGxV;AAAAA,aAAK8oB,QAAQ9oB,KAAKq3B,QAAAA,IAAY,KAAK,KAAK,OAAQ,KAAKr3B,KAAKkJ;AAC3D,aAAOlJ;AAAAA,IACP,GACD8sB,WAAU,SAAS9sB;AAClB,cAAQA,KAAK4B,QAAU,IAAA,MAAO5B,KAAKwrB,kBAAoB,IAAA,MAAI;AAAA,IAC3D,GACD3pB,YAAW,SAAS7B,MACnB;AAAA,UAAI8tB,QAAM9tB,KAAK4F;AACf,UAAIpJ,WAAU+B,OAAOsrC,iBAAgB;AACpC,YAAI/b,UAAQ;AAAGA,kBAAM;AAAA;AAChBA;AAAAA,MACL;AACD,aAAOjxB,KAAK4I,UAAU5I,KAAKoD,IAAID,MAAM,KAAE8tB,OAAM,KAAA,CAAA;AAAA,IAC7C,GACDgc,aAAY,SAAS9pC;AACpBA,WAAK+pC,QAAQ;AACb,aAAOltC,KAAK4I,UAAUzF,IAAAA;AAAAA,IACtB,GACDgqC,YAAW,SAAShqC;AACnBA,WAAKiqC,SAAS;AACd,aAAOptC,KAAKitC,YAAY9pC,IAAAA;AAAAA,IACxB,GACDyzB,WAAU,SAASzzB;AAClB,aAAOnD,KAAK4I,UAAUzF,IACtB;AAAA,IAAA,GACDkqC,WAAU,SAASlqC,MAAMmqC,KACxB;AAAA,UAAIC,QAAQ,IAAI/oC,KAAKrB,KAAK4B,QAE1BwoC,CAAAA;AAAAA,YAAML,QAAQK,MAAMnkC,YAAYkkC,GAGhC;AAAA,UAAGA,OAAOn8B,KAAKI,MAAM+7B,QAAQA,MAAM,GAAE;AACpC,YAAIE,aAAaD,QAASpqC,CAAAA,MACzBsqC,OAAOD,aAAa,KAAG,KAAG,KAAG;AAC9B,YAAGC,QAAQtqC,KAAKwrB,kBAAuB4e,KAAAA,MAAM5e,qBAAoB;AAChE,cAAI+e,QAAQD,QAAQ,KAAI,KAAK;AAC7BF,gBAAMthB,QAAQshB,MAAM/S,aAAa,KAAKkT,SAAS,KAAK,KAAK,GAAA;AAAA,QACzD;AAAA,MACD;AAED,UAAIJ,OAAO,MAAA,CAAOnqC,KAAKkJ,SAAckhC,KAAAA,MAAMlhC,gBACzCkhC,MAAMnkC,QAAAA,IAAYjG,KAAKiG,QAAAA,KAAamkC,MAAM30B,SAAazV,IAAAA,KAAKyV,cAAc20B,MAAM50B,YAAAA,IAAgBxV,KAAKwV,YACtG40B;AAAAA,cAAMthB,QAAQshB,MAAM/S,YAAY,KAAK,KAAK,OAAQ,KAAK+S,MAAMlhC;AAC9D,aAAOkhC;AAAAA,IACP,GACDnqC,KAAI,SAASD,MAAKmqC,KAAI7tC;AACrB,UAAI8tC,QAAM,IAAI/oC,KAAKrB,KAAK4B,QACxB,CAAA;AAAA,cAAOtF;QACN,KAAK;AACJ8tC,kBAAQ5tC,WAAUwD,KAAKkqC,UAAUE,OAAOD,GAAAA;AACxC;AAAA,QACD,KAAK;AACJC,kBAAQ5tC,WAAUwD,KAAKkqC,UAAUE,OAAOD,MAAM,CAAA;AAC9C;AAAA,QACD,KAAK;AAASC,gBAAMH,SAASG,MAAM30B,SAAW00B,IAAAA,GAAAA;AAAM;AAAA,QACpD,KAAK;AAAQC,gBAAMI,QAAQJ,MAAM50B,YAAc20B,IAAAA,GAAAA;AAAM;AAAA,QACrD,KAAK;AAKJC,gBAAMthB,QAAQshB,MAAM/S,QAAY8S,IAAAA,MAAM,KAAK,KAAK,GAAA;AAChD;AAAA,QACD,KAAK;AACJC,gBAAMthB,QAAQshB,MAAM/S,QAAY8S,IAAAA,MAAM,KAAK,GAC3C;AAAA;AAAA,QACD;AACC,iBAAO3tC,WAAUwD,KAAK,SAAO1D,IAAAA,EAAM0D,MAAKmqC,KAAI7tC;;AAE9C,aAAO8tC;AAAAA,IACP,GACDnC,UAAS,SAASwC;AACjB,UAAIA,MAAI;AAAI,eAAO,MAAIA;AACvB,aAAOA;AAAAA,IACP,GACDlnC,MAAK,SAASvD,MACb;AAAA,aAAO,IAAIqB,KAAKrB,KAAK4B,QACrB,CAAA;AAAA,IAAA,GACD8oC,aAAY,SAAS9C,QAAOC;AAC3B,UAAI2B,OAAAA,GAAU;AACb,eAAOxB,gBAAgBJ,QAAOC,GAAAA;AAAAA,MAC9B;AAEDD,eAAOA,OAAOhhB,QAAQ,cAAa,SAAS5N,GAC3C;AAAA,gBAAOA;UACN,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB,KAAK;AAAM,mBAAO;AAAA,UAClB;AAAS,mBAAOA;AAAAA,QAAAA;AAAAA,MAEpB;AACE,UAAI6uB;AAAKD,iBAAOA,OAAOhhB,QAAQ,cAAa,aAAA;AAC5C,UAAI4S,OAAO,IAAIvkB,SAAS,QAAO,aAAY2yB,SAAO,IAElD;AAAA,aAAOpO,KAAK9Z,KAAKljB;IACjB,GACDmuC,aAAY,SAAS/C,QAAQC,KAAK+C;AACjC,UAAIC,qBAAqBrB,OAAWR,IAAAA,kBAAkBrB;AACtD,UAAImD,mBAAmBD,mBAAmBjD,QAAQC,GAAAA;AAElD,UAAIkD,iBAAiB;AAIrB,UAAIC,iBAAiB;AAGrB,UAAIC,iBAAiB;AAErB,UAAIC,UAAU;AAEd,UAAIC,YAAY,SAAUC,SAAAA;AACzB,eAAOL,eAAezI,KAAKpgC,OAAOkpC,OACrC,CAAA;AAAA,MAAA;AAEE,UAAIC,YAAY,SAAUD,SACzB;AAAA,eAAOJ,eAAe1I,KAAKpgC,OAAOkpC;MACrC;AACE,UAAIE,YAAY,SAAUF,SAAAA;AACzB,eAAOH,eAAe3I,KAAKpgC,OAAOkpC,OAAAA,CAAAA;AAAAA,MACrC;AACE,UAAIG,YAAY,SAAUH,SACzB;AAAA,eAAOF,QAAQ5I,KAAK8I;MACvB;AAEE,UAAII,WAAWX,mBAAmB,qBAAqBhD;AACvD,UAAI4D,WAAWZ,mBAAmB,qBAAqBhD;AACvD,UAAI6D,WAAWb,mBAAmB,qBAAqBhD,GAAAA;AAEvD,aAAO,SAAUpN,YAAAA;AAEhB,YAAKmQ,CAAAA,eAAAA,CAAgBpuC,WAAU+B,OAAOotC,oBAAoB;AACzD,cAAIlR,cAAcA,WAAWsO,YAAY;AACxC,mBAAO,IAAI1nC,KAAKo5B,UACrB;AAAA,UAAA,kBAAsBA,eAAe,UAAU;AAC1C,mBAAO,IAAIp5B,KAAKo5B,UAAAA;AAAAA,UACrB,WAAe0Q,UAAU1Q,aAAa;AACjC,mBAAO+Q,SAAS/Q,UACrB;AAAA,UAAA,WAAe4Q,UAAU5Q,aAAa;AACjC,mBAAOgR,SAAShR,UACrB;AAAA,UAAA,WAAe6Q,UAAU7Q,UAAAA,GAAa;AACjC,mBAAOiR,SAASjR,UACrB;AAAA,UAAA,WAAe8Q,UAAU9Q,UAAAA,GAAa;AACjC,mBAAO,IAAIp5B,KAAKo5B,UAAAA;AAAAA,UAChB;AAAA,QACD;AAED,eAAOqQ,iBAAiB73B,KAAKzW,YAAWi+B;MAC3C;AAAA,IACE,GACDsO,YAAY,SAASqB;AACpB,UAAIA,CAAAA;AAAO,eAAO;AAClBA,cAAQvtC,KAAK4I,UAAU,IAAIpE,KAAK+oC;AAChC,UAAIwB,OAAOxB,MAAMxkC,OACjB;AAAA,UAAIgmC,SAAS,GAAG;AACfA,eAAO;AAAA,MACP;AACD,UAAIC,iBAAiB,IAAIxqC,KAAK+oC,MAAMxoC;AACpCiqC,qBAAe9B,QAAQK,MAAMnkC,QAAAA,KAAa,IAAI2lC,KAC9C;AAAA,UAAIE,cAAcD,eAAer2B,YAAAA;AACjC,UAAIu2B,eAAe/9B,KAAKI,OAAQy9B,eAAexU,YAAY,IAAIh2B,KAAKyqC,aAAa,GAAG,CAAA,EAAGzU,aAAa,KACpG;AAAA,UAAI2U,cAAc,IAAIh+B,KAAK8D,MAAOi6B,eAAe;AACjD,aAAOC;AAAAA,IACP,GACDlD,eAAe,SAASsB,OACvB;AAAA,aAAOvtC,KAAKksC,WAAWlsC,KAAKovC,eAAe7B,KAC3C,CAAA;AAAA,IAAA,GACD6B,gBAAgB,SAASjsC,MAAAA;AACxB,aAAO,IAAIqB,KAAKrB,KAAKooC,eAAAA,GAAkBpoC,KAAKmoC,YAAenoC,GAAAA,KAAKkoC,cAAcloC,KAAK0oC,YAAAA,GAAe1oC,KAAK2oC,cAAAA,GAAiB3oC,KAAK4oC,cAC7H,CAAA;AAAA,IAAA,EAAA;AAAA,EAGF;ACvWe,WAASlxB,SAAOlb;AAkB/BA,IAAAA,WAAU+B,SAAO,EAChB2tC,cAAc,YACdC,YAAY,SACZC,WAAW,YACXC,WAAW,MACX/R,UAAU,SACVgS,WAAW,SACXpW,WAAW,MAEXqW,aAAa,kBACbC,UAAU,kBACVb,oBAAoB,OACpBhhB,iBAAgB,MAChB/B,WAAW,GACX6jB,uBAAuB,WACvBC,4BAA4B,WAC5BC,WAAW,GACXC,oBAAoB,GACpBC,uBAAuB,MACvBjzB,kBAAkB,MAClBiwB,iBAAiB,MACjB1gC,YAAY,GACZC,WAAW,IACXod,UAAU,OACVoN,aAAa,MACbC,WAAW,MACXiZ,aAAa,MACbje,iBAAiB,MACjBvc,iBAAiB,MACjB2W,qBAAqB,MACrBwG,gBAAgB,MAChBC,mBAAmB,MACnBhP,QAAQ,MACRxS,cAAc,IACd6+B,qBAAoB,OACpBC,oBAAmB,OACnBC,qBAAqB,OACrBC,uBAAuB,MACvB1rB,KAAI,OAEJze,uBAAuB,OACvBoqC,qBAAqB,GACrBC,sBAAsB,IAEtBjZ,WAAU,MACVkZ,wBAAwB,KAExBC,eAAe,MACfvc,iBAAiB,MACjBvL,QAAQ,MACRhiB,cAAc,MACd+pC,YAAY,OACZC,OAAM,MACNC,WAAU,MACVC,YAAW,KACXC,mBAAmB,OACnBC,qBAAoB,MAEpBxiB,kBAAkB,OAElB5sB,gBAAgB,MAChByvB,gBAAgB,OAChB4f,YAAY,CAAC,aAAa,aAAA,GAC1BC,cAAc,CAAC,gBAAgB,aAAa,aAC5CC,GAAAA,cAAc,CAAC,gBAAgB,mBAC/BC,eAAe,CAAC,mBAChBzX,UAAU,EACT72B,UAAU,CACT,EAACuX,MAAM,eAAehY,QAAQ,QAAQ4E,MAAM,YAAYqzB,OAAO,KAAA,GAC/D,EAACjgB,MAAM,QAAQtJ,QAAQ,IAAI9J,MAAM,QAAQ5E,QAAQ,aAGnDgvC,2BAA2B,MAC3Bzc,aAAa,OAEbrY,YAAY,SACZ+0B,cAAc,GACdC,sBAAsB,MACtB9vB,qBAAqB,MACrBgD,2BAA2B,MAE3BooB,KAAK,QACL1oC,iBAAiB,iBACjByW,aAAa,KAGdhb;AAAAA,IAAAA,WAAU+B,OAAOwvC,aAAaK,WAAW5xC,WAAU+B,OAAOwvC,aAAaphC,KACvEnQ;AAAAA,IAAAA,WAAU+B,OAAOyvC,cAAcI,WAAW5xC,WAAU+B,OAAOyvC,cAAcrhC;AAEzEnQ,IAAAA,WAAU6xC,WAAW,EACpBC,WAAW,SAASA,UAAUtuC,MAAAA;AAC7B,UAAI6kC,QAAQroC,WAAU0zB,UAAUqe,YAAY/xC,WAAU0zB,UAAUmG;AAChE,aAAOwO,MAAM7kC,IAAAA;AAAAA,IACb,GACDwuC,YAAY,SAASA,WAAWxuC,MAC/B;AAAA,UAAI4nC,SAASprC,WAAU0zB,UAAUue,cAAcjyC,WAAU0zB,UAAUgD;AACnE,aAAO0U,OAAO5nC,IACd;AAAA,IAAA,EAAA;AAGFxD,IAAAA,WAAU0zB,YAAU,CAAA;AACpB1zB,IAAAA,WAAUmlB,iBAAe,WAIxB;AAAA,UAAIlR,IAAEjU,WAAUwD,KAAK0qC;AACrB,UAAInkC,IAAE/J,WAAU+B;AAChB,UAAIkY,IAAI,SAASuC,GAAEC,GAClB;AAAA,iBAAS1S,MAAK0S;AACb,cAAKD,CAAAA,EAAEzS;AAAIyS,cAAEzS,EAAAA,IAAG0S,EAAE1S,EACrB;AAAA,MAAA;AACCkQ,QAAEja,WAAU0zB,WAAU,EACrBoK,UAAS7pB,EAAElK,EAAE2lC,eACbC,YAAW17B,EAAElK,EAAE4lC,UAAAA,GACfE,WAAU,SAASqC,IAAGC;AACrB,YAAGpoC,EAAEib,KAAK;AACT,iBAAOhlB,WAAU0zB,UAAUoK,SAAS99B,WAAUwD,KAAKC,IAAI0uC,IAAI,IAAE,UAAQ,cAAYnyC,WAAU0zB,UAAUoK,SAASoU;QAC9G;AACD,eAAOlyC,WAAU0zB,UAAUoK,SAASoU,MAAI,cAAYlyC,WAAU0zB,UAAUoK,SAAS99B,WAAUwD,KAAKC,IAAI0uC,QAAM,KAAA,CAAA;AAAA,MAC1G,GACDC,gBAAen+B,EAAElK,EAAE2lC,YAAAA,GACnB9Y,gBAAgB,SAASpzB,MAAAA;AACxB,eAAO;AAAA,MACP,GACDqzB,iBAAiB,SAASrzB,MAAAA;AACzB,eAAO;AAAA,MACP,GAED6uC,kBAAiBp+B,EAAElK,EAAE8lC,SACrByC,GAAAA,iBAAgBr+B,EAAElK,EAAE+zB,QAAAA,GACpB1F,YAAWnkB,EAAElK,EAAE+lC,SACfyC,GAAAA,aAAYt+B,EAAElK,EAAE+lC,SAAAA,GAChB0C,YAAWv+B,EAAElK,EAAE+lC,SACfpW,GAAAA,WAAUzlB,EAAElK,EAAE2vB,SAAAA,GAEd+Y,aAAax+B,EAAElK,EAAE6lC,YAGjBlZ,aAAaziB,EAAElK,EAAEgmC,aAAahmC,EAAEgnC,UAChClX,GAAAA,YAAW75B,WAAUwD,KAAK2qC,YAAYpkC,EAAEgmC,aAAYhmC,EAAEgnC,UACtDf,GAAAA,UAAShwC,WAAUwD,KAAK2qC,YAAYpkC,EAAEimC,UAAU,OAAO,QACvD0C,cAAa,SAAS9iC,OAAMC,KAAIhJ;AAE/B,YAAGA,GAAGoG,UAAU,WAAWpG,GAAGoG,UAAU,YAAW;AAClD,iBAAOjN,WAAU0zB,UAAU8e,WAAW5iC,KAAAA;AAAAA,QAC1C,OAAQ;AACJ,iBAAO5P,WAAU0zB,UAAU8e,WAAW5iC,KAAO,IAAA,QAAM5P,WAAU0zB,UAAU8e,WAAW3iC;QAClF;AAAA,MACD,GACDuuB,YAAW,SAASxuB,OAAMC,KAAIhJ,IAAAA;AAC7B,eAAOA,GAAGM;AAAAA,MACV,GACDwrC,aAAY,SAAS/iC,OAAMC,KAAIhJ,IAAAA;AAC9B,eAAO;AAAA,MACP,GACDwyB,kBAAiB,SAASplB;AACzB,eAAO;AAAA,MACP,GACD8iB,iBAAgB,SAAS9iB,IACxB;AAAA,eAAO;AAAA,MACP,GACD2+B,gBAAe,SAAShjC,OAAMC,KAAIhJ;AACjC,eAAO7G,WAAU0zB,UAAU8e,WAAW5iC;MACtC,GACDijC,gBAAe,SAASjjC,OAAMC,KAAIhJ;AACjC,eAAOA,GAAGM;AAAAA,MACV,GACD2rC,mBAAoB,SAAStvC,MAAM8xB;AAClC,eAAO,kBAAgBA,QAAM;AAAA,MAC7B,GACDyd,mBAAoB,SAASnjC,OAAOC,KAAKhO,QAAAA;AACxC,eAAO;AAAA,MACP,GACDmxC,qBAAsB,SAASpjC,OAAOC,KAAKhO,QAAAA;AAC1C,eAAO;AAAA,MACP,GAEDoxC,qBAAqBjzC,WAAUwD,KAAK0qC,YAAY,gBAChDgF,GAAAA,cAAc,SAAStjC,OAAOC,KAAKhO,QAClC;AAAA,eAAO,mBAAmBA,OAAMsF,OAAO,6BAA6BnH,WAAU0zB,UAAUuf,oBAAoBrjC,KAAAA,IAAS,2BAA2B5P,WAAU0zB,UAAUuf,oBAAoBpjC,GACxL;AAAA,MAAA,GAEDsjC,gBAAgBl/B,EAAE,OAAA,GAClBm/B,qBAAqBn/B,EAAE,OACvBo/B,eAAep/B,EAAE,OACjBq/B,eAAer/B,EAAE;AAGlB5T,WAAK4K,UAAU,oBAAmB,CAAA,CAAA;AAAA,IACnC;AAAA,EAGA;AClNe,WAASiQ,SAAOlb,YAE/BA;AAAAA,IAAAA,WAAUuzC,UAAU,CAAA;AACpBvzC,IAAAA,WAAUynC,WAAW;AACpBpnC,WAAKkzC,UAAU;AACflzC,WAAKmzC,UAAU;AAEfnzC,WAAKipB,WAAW;AAChBjpB,WAAK4oB,aAAa;AAClB5oB,WAAKuK,WAAW;AAChBvK,WAAKwK,aAAa;AAClBxK,WAAKwuB,YAAY;AACjBxuB,WAAKopB,aAAa;AAElBppB,WAAKozC;AACLpzC,WAAK4K,UAAU,cAAc,CAAA,CAAA;AAAA,IAC9B;AACAjL,IAAAA,WAAUwH,WAAW,SAASpE,YAAYC,UAAU8D,MAAM/G,KAAIszC,YAAAA;AAC7D,UAAKp/B,CAAAA,UAAU7P;AACd,eAAOpE,KAAK0V;AACb,UAAIlP,KAAKzD;AACT,UAAIkR,UAAU7P,UAAU,GAAG;AAC1BoC,aAAK6sC,cAAc;AACnB7sC,WAAGzD,aAAaA;AAChByD,WAAGxD,WAAWA;AACdwD,WAAGM,OAAOA;AACVN,WAAGzG,KAAKA;AAAAA,MACR;AACDyG,SAAGzG,KAAKyG,GAAGzG,MAAMJ,WAAU+O,IAC3BlI;AAAAA,SAAGM,OAAON,GAAGM,QAAQ;AAErB,UAAA,OAAWN,GAAGzD,cAAc;AAAWyD,WAAGzD,aAAa/C,KAAKqzB,UAAUsc,SAASnpC,GAAGzD,UAClF;AAAA,UAAA,OAAWyD,GAAGxD,YAAY;AAAWwD,WAAGxD,WAAWhD,KAAKqzB,UAAUsc,SAASnpC,GAAGxD,QAC9E;AAAA,UAAI4Q,KAAK5T,KAAK0B,OAAOoqB,kBAAkB9rB,KAAK0B,OAAOqqB,aAAa;AAChE,UAAIvlB,GAAGzD,WAAWgC,QAAayB,KAAAA,GAAGxD,SAAS+B,QAC1CyB;AAAAA,WAAGxD,SAASipB,QAAQzlB,GAAGxD,SAAS+B,QAAY6O,IAAAA,CAAAA;AAE7CpN,SAAGzD,WAAWgqC,gBAAgB,CAC9BvmC;AAAAA,SAAGxD,SAAS+pC,gBAAgB,CAAA;AAE5BvmC,SAAG4D,SAASpK,KAAKqK,cAAc7D,EAAAA;AAE/B,UAAImsB,SAAU3yB,CAAAA,KAAKkzC,QAAQ1sC,GAAGzG,EAAAA;AAC9BC,WAAKkzC,QAAQ1sC,GAAGzG,EAAMyG,IAAAA;AACtBxG,WAAKszC,cAAc9sC,EAAAA;AACnB,WAAKxG,KAAKksB;AACTlsB,aAAK4K,UAAU+nB,SAAS,iBAAiB,kBAAkB,CAACnsB,GAAGzG,IAAIyG;AACpE,aAAOA,GAAGzG;AAAAA,IACX;AACAJ,IAAAA,WAAUorB,cAAc,SAAShrB,KAAIwzC,QACpC;AAAA,UAAI/sC,KAAKxG,KAAKkzC,QAAQnzC;AACtB,UAAKwzC,CAAAA,WAAAA,CAAYvzC,KAAK4K,UAAU,uBAAuB,CAAC7K,KAAIyG,SAASxG,KAAK4K,UAAU,gCAAgC,CAAC7K,KAAIyG,EACxH,CAAA;AAAA;AACD,UAAIA,IAAI;AACP,YAAG7G,WAAUsG,SAAAA,EAAWojB,aAAatpB,KAAG;AACvCJ,UAAAA,WAAUwG,SAAAA;AAAAA,QACV;eACMnG,KAAKkzC,QAAQnzC;AACpBC,aAAKszC,cAAc9sC;AAEnB,YAAGxG,KAAKuK,YAAY/D,GAAGzG,IAAG;AACzBC,eAAKuK,WAAW;AAChBvK,eAAKwK,aAAW;AAChBxK,eAAKwuB,YAAU;AAAA,QACf;AAAA,MACD;AAEDxuB,WAAK4K,UAAU,kBAAkB,CAAC7K,KAAIyG,EACvC,CAAA;AAAA,IAAA;AACA7G,IAAAA,WAAUmG,WAAW,SAAS/F,KAC7B;AAAA,aAAOC,KAAKkzC,QAAQnzC,GAAAA;AAAAA,IACrB;AACAJ,IAAAA,WAAU6zC,WAAW,SAASzzC,KAAI0zC;AACjC,UAAIA,CAAAA,KAAK1zC;AACR0zC,aAAK1zC,KAAKA;AAEXC,WAAKkzC,QAAQnzC,GAAM0zC,IAAAA;AAAAA,IACpB;AACA9zC,IAAAA,WAAUiyB,eAAe,SAAS7xB,KAAIua,QAAAA;AACrC,eAASnW,IAAInE,KAAK0zC,UAAUtvC,SAAS,GAAGD,KAAK,GAAGA;AAC/C,YAAInE,KAAK0zC,UAAUvvC,CAAAA,EAAGM,aAAazE,KAAK0B,OAAOwC,eAAoBnE,KAAAA;AAClEua,iBAAOta,KAAK0zC,UAAUvvC,IAAIA,CAC7B;AAAA,IAAA;AACAxE,IAAAA,WAAUg0C,gBAAgB,SAAS5zC,KAAI6zC,QAAAA;AACtC,UAAI7zC,OAAM6zC;AAAQ;AAClB,UAAIptC,KAAKxG,KAAKkzC,QAAQnzC;AACtB,UAAIyG,IAAI;AACPA,WAAGzG,KAAK6zC;AACR5zC,aAAKkzC,QAAQU,MAAUptC,IAAAA;AAAAA,eAChBxG,KAAKkzC,QAAQnzC,GAAAA;AAAAA,MACpB;AACDC,WAAK4xB,aAAa7xB,KAAI,SAAS8xB,GAAAA;AAC9BA,UAAE/U,aAAa,YAAY82B,MAC3B/hB;AAAAA,UAAE/U,aAAand,WAAU+B,OAAOwC,iBAAiB0vC,MACnD;AAAA,MAAA,CAAA;AACC,UAAI5zC,KAAK4oB,cAAc7oB;AAAIC,aAAK4oB,aAAagrB;AAC7C,UAAI5zC,KAAKipB,YAAYlpB;AAAIC,aAAKipB,WAAW2qB;AAEzC5zC,WAAK4K,UAAU,mBAAmB,CAAC7K,KAAI6zC;IACxC;AAEA,KAAA,WAAA;AACC,UAAIjV,QAAQ,CAAC,QAAQ,QAAQ,cAAc,aAAa,YAAY;AACpE,UAAIkV,gBAAgB,SAASz5B,MAAAA;AAC5B,eAAO,SAASra,KAAAA;AAAM,iBAAQJ,WAAUmG,SAAS/F,KAAKqa;;MACxD;AACC,UAAI05B,gBAAgB,SAAS15B,MAAAA;AAC5B,eAAO,SAASra,KAAIse;AACnB,cAAI7X,KAAK7G,WAAUmG,SAAS/F;AAC5ByG,aAAG4T,IAAAA,IAAQiE;AACX7X,aAAGutC,WAAW;AACdvtC,aAAG4D,SAASpK,KAAKqK,cAAc7D;AAC/B7G,UAAAA,WAAU2zC,cAAc9sC,IAAI,IAC/B;AAAA,QAAA;AAAA,MACA;AACC,eAASrC,IAAI,GAAGA,IAAIw6B,MAAMv6B,QAAQD,KAAK,GAAG;AACzCxE,QAAAA,WAAU,aAAag/B,MAAMx6B,IAAI,CAAA,CAAA,IAAM0vC,cAAclV,MAAMx6B,CAAAA,CAAAA;AAC3DxE,QAAAA,WAAU,aAAag/B,MAAMx6B,IAAI,CAAA,CAAA,IAAM2vC,cAAcnV,MAAMx6B;MAC3D;AAAA,IACD;AAEDxE,IAAAA,WAAU2zC,gBAAgB,SAAS9sC,IAAImT,OAAAA;AACtC,UAAI3Z,KAAKg0C,kBAAkBxtC,EAC1BxG;AAAAA,aAAK2X;;AAEL3X,aAAKi0C,YAAYztC,GAAGzG,EACtB;AAAA,IAAA;AACAJ,IAAAA,WAAUq0C,oBAAoB,SAASxtC,IACtC;AAAA,UAAA,CAAIxG,KAAKoM,aAAcpM,CAAAA,KAAKmM,WAAU;AACrC,eAAO;AAAA,MACP;AAGD,UAAI+nC,mBAAoB1tC,GAAGzD,WAAWgC,QAAY/E,IAAAA,KAAKmM,UAAUpH,QAAa/E,KAAAA,KAAKoM,UAAUrH,QAAAA,IAAYyB,GAAGxD,SAAS+B,QAAAA;AAErH,UAAGmvC,kBAAiB;AAGnB,YAAIC,cAAc3tC,GAAGzD,WAAWsJ,SAAAA,GAC/B+nC,aAAa5tC,GAAGxD,SAASqJ,aAAc7F,GAAGxD,SAAS2K,eAAa,IAChE+iB,WAAW1wB,KAAK0B,OAAO6K,WACvBkkB,YAAYzwB,KAAK0B,OAAO4K;AAEzB,YAAI+nC,oBAAqBr0C,KAAK2M,eAAAA,GAAkBynC,aAAa1jB,YAAY0jB,cAAc3jB,eAAe0jB,eAAezjB,YAAYyjB,cAAc1jB;AAE/I,YAAG4jB,mBAAkB;AACpB,iBAAO;AAAA,QACV,OAAO;AAGJ,cAAIvoB,kBAAkBtlB,GAAGxD,SAAS+B,YAAYyB,GAAGzD,WAAWgC,QAAc,MAAA,MAAK,KAAG,KACjFuvC,kBAAkB,MAAMt0C,KAAK0B,OAAO6K,YAAYvM,KAAK0B,OAAO4K;AAE7D,iBAAA,CAAA,EAAWwf,iBAAiBwoB,mBAAqBH,cAAczjB,YAAY0jB,aAAa3jB;AAAAA,QAExF;AAAA,MACH,OAAM;AACJ,eAAO;AAAA,MACP;AAAA,IACF;AACA9wB,IAAAA,WAAU0K,gBAAgB,SAAS7D,IAAAA;AAIlC,UAAI+tC,eAAe,IAAI/vC,KAAKgC,GAAGxD,SAAS+B,QAAY,IAAA,CAAA;AACpD,aACCyB,GAAGzD,WAAW4V,kBAAkB47B,aAAa57B,YAAAA,KAC7CnS,GAAGzD,WAAW6V,eAAe27B,aAAa37B,SAAAA,KAC1CpS,GAAGzD,WAAWqG,QAAAA,MAAcmrC,aAAanrC,QACnC5C,KAAAA,GAAGxD,SAAS+B,QAAAA,IAAYyB,GAAGzD,WAAWgC,QAAAA,IAAc,MAAO,KAAK,KAAK;AAAA,IAC7E;AAEApF,IAAAA,WAAU60C,qBAAqB,SAASC;AAEvC,UAAIC,QAAQ;AAEZ,eAAS30C,OAAMC,KAAKkzC;AACnB,YAAIlzC,KAAKg0C,kBAAkBh0C,KAAKkzC,QAAQnzC;AACvC,cAAK00C,CAAAA,cAAcz0C,KAAKkzC,QAAQnzC,GAAAA,EAAIqK;AACnC,gBAAIpK,KAAK20C,aAAa50C,KAAIC,KAAKkzC,QAAQnzC,GAAAA,CAAAA;AACtC20C,oBAAM7wC,KAAK7D,KAAKkzC,QAAQnzC,GAAAA,CAAAA;AAAAA;AAAAA;AAE5B,aAAO20C;AAAAA,IACR;AACA/0C,IAAAA,WAAUg1C,eAAe,SAAS50C,KAAIyG,IACrC;AAAA,UAAIouC,SAAS50C,KAAK,YAAYA,KAAK4M,KAAAA;AACnC,aAAO,SAAWgoC,OAAO70C,KAAIyG,EAAM,IAAA;AAAA,IACpC;AACA7G,IAAAA,WAAUk1C,sBAAsB,SAASruC,IAAAA;AACxC,eAASA,GAAG4D;AAAAA,IACb;AACAzK,IAAAA,WAAUgY,mBAAmB,SAAShO,KAAKmrC;AAC1C,UAAIC,OAAO;AACX,UAAKprC,CAAAA,KAAK;AACTorC,eAAO;AACP,YAAI/0C,KAAKg1C,aAAa;AACrBh1C,eAAKizB,eAAe;AACpB;AAAA,QACA;AACDjzB,aAAKizB,eAAe;AAEpBjzB,aAAKozC;AACLzpC,cAAM3J,KAAKw0C,qBAAqBx0C,KAAK2M,eAAe3M,KAAK0B,OAAO41B,UAAAA;AAAAA,MAChE;AACD,eAAQnzB,IAAG,GAAGyN,MAAMjI,IAAIvF,QAAQD,IAAIyN,KAAKzN,KAAI;AAC5CnE,aAAKi1C,mBAAmBtrC,IAAIxF,CAAAA,CAAAA;AAAAA,MAC5B;AAED,UAAInE,KAAK0B,OAAO41B,aAAct3B,CAAAA,KAAK2M,aAAa;AAE/C,YAAIuoC,MAAM,CAAA;AACV,YAAIC,MAAM,CAAA;AACV,iBAAShxC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,cAAInE,KAAK60C,oBAAoBlrC,IAAIxF,CAAAA,CAAAA;AAChC+wC,gBAAIrxC,KAAK8F,IAAIxF,CAEbgxC,CAAAA;AAAAA;AAAAA,gBAAItxC,KAAK8F,IAAIxF,CAAAA,CAAAA;AAAAA,QACd;AAED,YAAInE,CAAAA,KAAK+L,KAAK,eAAA,GAAiB;AAC9B,cAAIlF,WAAUlH,WAAU2b,qBAAqBC,YAAYvb,KAAK4M,KAC9D;AAAA,gBAAM,IAAIqF,MAAMpL;QAChB;AAGD7G,aAAKo1C,qBAAqBp1C,KAAK+L,KAAK,iBAAiB,CACrD/L;AAAAA,aAAK2M,cAAc;AACnB3M,aAAK0X,YAAYy9B,KAAKL,IACtB90C;AAAAA,aAAK2M,cAAc;AAGnB3M,aAAKo1C,qBAAqBp1C,KAAK+L,KAAK,cAAgB,EAAA,CAAA;AACpD/L,aAAK2M,cAAc;AACnB3M,aAAK0X,YAAYw9B,KAAKJ,IAExB;AAAA,MAAA,OAAQ;AACN,YAAIO,SAASx1C,SAAS8e,uBACtB;AAAA,YAAI22B,mBAAmBt1C,KAAK+L,KAAK,cAAgB,EAAA,CAAA;AACjD/L,aAAKo1C,qBAAqBC;AAC1Br1C,aAAK0X,YAAY/N,KAAKmrC;AACtBQ,yBAAiBl1C,YAAYi1C,MAC7Br1C;AAAAA,aAAKo1C,qBAAqBE;AAAAA,MAE1B;AAED,UAAGP,MAAK;AACP/0C,aAAK4K,UAAU,gBAAgB,CAC/B,CAAA;AAAA,MAAA;AAAA,IACF;AAGAjL,IAAAA,WAAU41C,kBAAkB,SAAS1vC,GACpC;AAAA,UAAI1C,OAAOxD,WAAUyG,cAAcP,CAAG1C,EAAAA;AACtC,WAAIxD,WAAUiL,UAAU,mBAAmB,CAACzH,IAAAA,CAAAA;AAC3C;AACDxD,MAAAA,WAAU8X,eAAetU,MAAM,KAAA;AAAA,IAChC;AAEAxD,IAAAA,WAAU61C,qBAAqB,SAAShvC,IACvC;AAAA,UAAIgH,SAASxN,KAAKo1C;AAClB,UAAIK,WAAWz1C,KAAKmO,YAAY3H,EAAAA;AAGhC,eAAQoN,IAAIpN,GAAGkvC,OAAO9hC,IAAIpN,GAAGmvC,OAAO/hC,KAAI;AAEvC6hC,iBAASC,QAAQ9hC;AACjB6hC,iBAASE,QAAQ/hC,IAAE;AAEnB,YAAIzQ,OAAOxD,WAAUwD;AACrB,YAAIyyC,OAAOj2C,WAAUyM;AACrBwpC,eAAOzyC,KAAKC,IAAIwyC,MAAMH,SAASI,QAAQ,MACvCD;AAAAA,eAAOzyC,KAAKC,IAAIwyC,MAAMH,SAASC,OAAO,KAAA;AACtC,YAAIzgB,QAAQt1B,WAAUm2C,UAAUF,MAAMzyC,KAAKC,IAAIwyC,MAAM,GAAG,KAAQxxC,CAAAA,EAAAA;AAEhE,YAAIsoB,MAAM1sB,KAAK+1C,mBAAmBN,QAAAA;AAClC,YAAIO,OAAQtpB,IAAIupB,KAAKvpB,IAAI5F;AAEzB,YAAItD,MAAK3jB,SAASC,cAAc,KAAA;AAChCH,QAAAA,WAAU6B,MAAMgiB,KAAI,SAAS,SAAS3d,GAAAA;AAAGlG,UAAAA,WAAU41C,gBAAgB1vC;QAAG,CACtE2d;AAAAA,QAAAA,IAAG3S,YAAY;AACf2S,QAAAA,IAAGlhB,MAAMC,MAAMmqB,IAAI3F,IAAI;AACvBvD,QAAAA,IAAGlhB,MAAME,OAAOkqB,IAAI5F,IAAI;AACxBtD,QAAAA,IAAGlhB,MAAMyO,QAAQilC,OAAO;AACxBxyB,QAAAA,IAAGtjB,YAAYP,WAAU0zB,UAAUof,kBAAkBmD,MAAM3gB;AAC3Dj1B,aAAK0zC,UAAU7vC,KAAK2f,GAAAA;AAEpBhW,eAAOpN,YAAYojB,GAAAA;AAAAA,MACnB;AAAA,IACF;AAEA7jB,IAAAA,WAAUs1C,qBAAqB,SAASl1C,KAAAA;AACvC,UAAIA,CAAAA;AAAI;AACR,UAAIyG;AACJ,iBAAGzG,OAAc;AAChByG,aAAKxG,KAAKkzC,QAAQnzC,GAElByG;AAAAA;AAAAA,aAAKzG;AACN,UAAIyG,CAAAA;AAAI;AACRA,SAAG4D,SAASzK,WAAU0K,cAAc7D,EAAAA;AAAAA,IACrC;AACA7G,IAAAA,WAAUiG,YAAY,kBAAkBjG,WAAUs1C;AAClDt1C,IAAAA,WAAUiG,YAAY,gBAAgBjG,WAAUs1C,kBAAAA;AAEhDt1C,IAAAA,WAAU+X,cAAc,SAAS/N,KAAKmrC,MAAAA;AACrCnrC,YAAM3J,KAAKk2C,mBAAmBvsC,KAAKmrC,IACnC;AAAA,UAAIzpC,aAAa,CAAA;AACjB,eAASlH,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AAC/B,YAAInE,KAAK2M,aAAY;AACpB,cAAGhN,WAAUiN,SAAS,SAAQ;AAC7B5M,iBAAKm2C,iBAAiBxsC,IAAIxF,CAAAA,CAAAA;AAAAA,UAC9B,OAAQ;AAEJ,gBAAIiyC,UAAUz2C,WAAU+B,OAAO20C;AAC/B,gBAAGD,YAAYA,UAAQ,KAAKzsC,IAAIxF,CAAGmyC,EAAAA,UAAUF,SAAQ;AAEpDp2C,mBAAKm2C,iBAAiBxsC,IAAIxF,CAAAA,CAAAA;AAAAA,YAC/B,WAAaiyC,YAAY/nC,UAAa1E,IAAIxF,GAAGmyC,WAAWF,SAAQ;AAE3Dz2C,cAAAA,WAAU61C,mBAAmB7rC,IAAIxF,CAAAA,CAAAA;AAAAA,YACtC;;UAGI;AAAA,QAIJ,OAAO;AACJ,cAAIqC,KAAKmD,IAAIxF,CACb;AAAA,cAAIqJ,SAAS7N,WAAUuR,cAAc1K,GAAGkvC,KAAAA;AACxC,eAAKloC;AAAQ;AAEb,eAAInC,WAAW7E,GAAGkvC,KAAO,GAAA;AACxBrqC,uBAAW7E,GAAGkvC,KAAAA,IAAS,EACtBa,MAAM/oC,QACN6nC,QAAQx1C,SAAS8e,uBAAAA,GACjB5N,OAAOvD,OAAOyS;UAEf;AAED,cAAIzU,YAAYH,WAAW7E,GAAGkvC;AAC9B11C,eAAKw2C,aAAahwC,IAAIgF,UAAU6pC,QAAQ7pC,UAAUuF,KAAAA;AAAAA,QAClD;AAED,eAAQ5M,KAAKkH,YAAW;AACvB,YAAIG,YAAYH,WAAWlH,CAC3B;AAAA,YAAGqH,UAAU+qC,QAAQ/qC,UAAU6pC,QAAO;AACrC7pC,oBAAU+qC,KAAKn2C,YAAYoL,UAAU6pC,MACrC;AAAA,QAAA;AAAA,MACD;AAAA,IACH;AAEA11C,IAAAA,WAAU82C,0BAA0B,SAASxxC,OAAAA;AAC5C,eAASd,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAK;AACtC,aAAKc,MAAMd,CAAG0M,EAAAA,aAAa,IAAIkB,QAAQ,kBAAA,KAAA,IAA2B;AACjE,iBAAO9M,MAAMd,CACb;AAAA,QAAA;AAAA,MACD;AAED,aAAOc,MAAM,CACd;AAAA,IAAA;AAEAtF,IAAAA,WAAUu2C,qBAAqB,SAASvsC,KAAKmrC,MAC5C;AAAA,UAAI4B,KAAK12C,KAAKsf,GAAG6F;AACjB,UAAIwxB,QAAQ32C,KAAKutB,OAAOK;AACxB,UAAI1N,IAAIlgB,KAAKutB,OAAOK,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AACjD,UAAInc,OAAOzR,KAAK+L,KAAK,cAAA,EAAgB;AAErC,UAAK/L,CAAAA,KAAK2M,aAAa;AACtBhD,cAAM3J,KAAK42C,wBAAwBjtC,KAAKmrC,IACxC;AAAA,MAAA,OACI;AACJnrC,cAAM3J,KAAK62C,yBAAyBltC,KAAKmrC,IAAAA;AAAAA,MACzC;AACD,UAAI90C,KAAK2M,aAAa;AACrB,YAAImoC;AACH90C,eAAKutB,OAAOK,UAAU+oB;AAAAA,aAClB;AACJ,cAAIG,YAAYrlC,KAAKxN,iBAAiB;AACtC,cAAI6yC,UAAU1yC,QAAQ;AACrB,qBAASD,IAAI,GAAGA,IAAI2yC,UAAU1yC,QAAQD,KAAK;AAC1C+b,gBAAE/b,CACF;AAAA,kBAAIc,QAAQ6xC,UAAU3yC,GAAGF,iBAAiB,qBAAA;AAC1C,kBAAI8yC,aAAa/2C,KAAKutB,OAAOzc,SAAS9Q,KAAKsf,GAAGsG;AAC9C,kBAAK1F,EAAE/b,CAAAA,IAAMuyC,KAAKK,YAAY;AAG7B,oBAAIC,UAAUD;AACd,oBAAG/2C,KAAK0B,OAAO20C,mBAAiB,MAAMr2C,KAAK0B,OAAO20C,oBAAoBn2B,EAAE/b,CAAMnE,KAAAA,KAAK0B,OAAO20C,kBAAiB;AAC1GW,4BAAU92B,EAAE/b,KAAKuyC;AAAAA,gBACxB,YAAiB12C,KAAK0B,OAAO20C,mBAAmB,KAAKK,KAAKK,YAAW;AAC9DC,6BAAWh3C,KAAK0B,OAAO20C,mBAAmB,KAAKK;AAAAA,gBAC/C;AAEDI,0BAAU3yC,GAAG7B,MAAMwO,SAAUkmC,UAAUh3C,KAAKsf,GAAGsG,oBAAqB;AAAA,cACpE;AAED1F,gBAAE/b,CAAAA,KAAM+b,EAAE/b,IAAI,CAAA,KAAM,KAAKxE,WAAU82C,wBAAwBxxC,OAAO6b;AAAAA,YAClE;AACDZ,cAAE+2B,QAAQ;AACV,kBAAMnzB,WAAW9jB,KAAKgE,WAAWgb,cAAc;AAC/C,gBAAI8E,SAAShD,eAAegD,SAASozB,iBAAiBv3C,WAAU4tB,OAAO4pB,cAAcx3C,WAAU2f,GAAG+F,cAAc;AAE/G,kBAAI+xB,iBAAiBz3C,WAAU4tB,QAC9B8pB,YAAYD,eAAeA,eAAe1f,UAC1C4f,GAAAA,cAAcF,eAAexpB,QAAQ3f,MAAAA;AAEtCopC,2BAAc13C,WAAU2f,GAAG+F,gBAAgB;AAC3CrlB,mBAAKu1B,kBAAkB8hB,WAAWr3C,KAAKoM,WAAWpM,KAAKmM,SACvDxM;AAAAA,cAAAA,WAAU4tB,OAAOK,UAAU0pB;AAE3Bt3C,mBAAKumB,OAAOvmB,KAAK+L,KAAK,gBAAkB,EAAA,CAAA,GAAIsrC,SAC5C13C;AAAAA,cAAAA,WAAUi2B,eAAe51B,KAAK+L,KAAK,kBAAkB,CACrDpM,CAAAA;AAAAA,cAAAA,WAAU44B,oBAAoBv4B,KAAK+L,KAAK,cAAgB,EAAA,CAAA,GAAI/L,KAAKm1B,oBAAuBn1B,GAAAA,KAAKoM;AAE7FgrC,6BAAeD,aAAa;AAAA,YAC5B;AAAA,UACL,OAAU;AACN,gBAAA,CAAKxtC,IAAIvF,UAAUpE,KAAK+L,KAAK,eAAiB,EAAA,CAAA,EAAGzJ,MAAMk1B,cAAc;AACpEtX,gBAAE,CAAA,IAAA;AACH,gBAAIvW,IAAIvF,UAAU8b,EAAE,CAAA,KAAA,IAAU;AAK7B,kBAAIq3B,yBAAyBr3B,EAAE,KAAK,KAAKw2B,KAAK;AAE9C,kBAAIc,wBAAwBD;AAC5B,kBAAIE,4BAA4BF,wBAAwB;AACxD,kBAAIv3C,KAAK0B,OAAO8uC,wBAAwB;AACvCgH,wCAAwBrmC,KAAK7C,IAAIipC,uBAAuBv3C,KAAK0B,OAAO8uC;AACpEiH,4CAA4BD,wBAAwB;AAAA,cACpD;AAED,kBAAIE,oBAAoB13C,KAAK+L,KAAK,eAAiB,EAAA,CAAA;AACnD2rC,gCAAkBp1C,MAAMwO,SAAS2mC;AACjCC,gCAAkBp1C,MAAMk1B,aAActX,EAAE,CAAO,KAAA,KAAI,WAAW;AAC9Dw3B,gCAAkBp1C,MAAMod,UAAWQ,EAAE,WAAW,SAAS;AAGzD,kBAAIy3B,iBAAiB33C,KAAK+L,KAAK,iBAAiB,CAChD4rC;AAAAA,6BAAer1C,MAAMwO,SAAS2mC;AAC9BE,6BAAer1C,MAAMk1B,aAActX,EAAE,CAAA,KAAA,KAAW,WAAW;AAC3Dy3B,6BAAer1C,MAAMod,UAAWQ,EAAE,CAAA,KAAA,KAAW,SAAS;AACtDy3B,6BAAe9mC,YAAYqP,EAAE,KAAK,uBAAuB;AACzDlgB,mBAAKo0B,aAAalU,EAAE,CAAK,IAAA,KAAKw2B;AAC9B,kBAAG12C,KAAK0B,OAAO8uC,wBAAuB;AACrCxwC,qBAAKo0B,YAAYjjB,KAAK7C,IAAItO,KAAK0B,OAAO8uC,wBAAwBxwC,KAAKo0B;cACnE;AACDlU,gBAAE,CAAK,IAAA;AAEP,kBAAIs3B,yBAAyBD,uBAAuB;AAEnDG,kCAAkBp1C,MAAMs1C,YAAY;AAGpCD,+BAAer1C,MAAM2K,WAAW;AAChC0qC,+BAAer1C,MAAMC,MAAM;AAC3Bo1C,+BAAer1C,MAAME,OAAO;AAAA,cAC5B;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAAA,MACD;AACD,aAAOmH;AAAAA,IACR;AACAhK,IAAAA,WAAU4xB,kBAAkB,SAAS/qB,IAGpC;AAAA,UAAIqxC,WAAW73C,KAAKmD,KAAKyzB,UAAU,IAAIpyB,KAAKgC,GAAGzD,UAC/C,CAAA;AAAA,aAAOoO,KAAKI,OAAOsmC,SAAS9yC,QAAY/E,IAAAA,KAAKoM,UAAUrH,QAAc,MAAA,KAAK,KAAK,KAAK,IAAA;AAAA,IACrF;AACApF,IAAAA,WAAUm4C,6BAA6B,SAAStxC,IAAAA;AAC/C,UAAIxD,WAAWwD,GAAGxD;AAClB,UAAIhD,KAAK0B,OAAO2uC,uBAAuB;AACtC,YAAI0H,eAAevxC,GAAGxD,WAAWwD,GAAGzD,cAAc;AAClD,YAAIg1C,cAAc/3C,KAAKg4C,sBAAsB;AAC5Ch1C,qBAAWhD,KAAKmD,KAAKC,IAAIJ,UAAUhD,KAAKg4C,uBAAuBD,aAAa,QAAA;AAAA,QAC5E;AAAA,MACD;AACD,aAAO/0C;AAAAA,IACR;AACArD,IAAAA,WAAUi3C,0BAA0B,SAASjtC,KAAKmrC,MACjDnrC;AAAAA,UAAI46B,KAAK,SAASpoB,GAAGC;AACpB,YAAID,EAAEpZ,WAAWgC,QAAaqX,KAAAA,EAAErZ,WAAWgC,QAAAA;AAC1C,iBAAOoX,EAAEpc,KAAKqc,EAAErc,KAAK,IAAA;AACtB,eAAOoc,EAAEpZ,aAAaqZ,EAAErZ,aAAa,IAAK;AAAA,MAC5C;AACC,UAAI8E,OAAO;AACX,UAAIowC,gBAAgB,CAEpBj4C;AAAAA,WAAKg4C,uBAAuB7mC,KAAK8D,MAAMjV,KAAKsf,GAAG4F,mBAAmB,KAAKllB,KAAK0B,OAAO2P,YAEnF;AAAA,eAASlN,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAIqC,KAAKmD,IAAIxF;AAGb,YAAI2xB,KAAKtvB,GAAGzD;AACZ,YAAIuyB,KAAK9uB,GAAGxD;AAEZ,YAAIk1C,KAAKpiB,GAAGzpB,SACZ;AAAA,YAAI8rC,KAAK7iB,GAAGjpB,SAAAA;AACZ7F,WAAGkvC,QAAQ11C,KAAKuxB,gBAAgB/qB,EAAAA;AAChC,YAAIxG,KAAK2Q,SAASnK,GAAGkvC,KAAO,GAAA;AAE3B/rC,cAAIyJ,OAAOjP,GAAE,CACbA;AAAAA;AACA;AAAA,QACA;AAED,YAAA,CAAK0D,KAAKrB,GAAGkvC,KAAAA;AAAQ7tC,eAAKrB,GAAGkvC,KAAAA,IAAS,CAEtC;AAAA,YAAA,CAAKZ,MAAM;AACVtuC,aAAG4xC,SAAS;AAEZ,cAAI1D,QAAQ7sC,KAAKrB,GAAGkvC,KAEpB;AAAA,iBAAOhB,MAAMtwC,QAAQ;AACpB,gBAAIi0C,OAAO3D,MAAMA,MAAMtwC,SAAS,CAAA;AAChC,gBAAIk0C,aAAat4C,KAAK83C,2BAA2BO,IAAAA;AACjD,gBAAIC,WAAWvzC,QAAAA,KAAayB,GAAGzD,WAAWgC,QAAAA,GAAW;AACpD2vC,oBAAMthC,OAAOshC,MAAMtwC,SAAS,GAAG,CACpC;AAAA,YAAA,OAAW;AACN;AAAA,YACA;AAAA,UACD;AACD,cAAIm0C,aAAa7D,MAAMtwC;AACvB,cAAIo0C,YAAY;AAChB,mBAAS/kB,IAAI,GAAGA,IAAIihB,MAAMtwC,QAAQqvB,KAAK;AACtC,gBAAI4kB,OAAO3D,MAAMjhB,CACjB;AAAA,gBAAI6kB,aAAat4C,KAAK83C,2BAA2BO,IACjD;AAAA,gBAAIC,WAAWvzC,QAAayB,KAAAA,GAAGzD,WAAWgC,QAAW,GAAA;AACpDyzC,0BAAY;AACZhyC,iBAAG8vC,UAAU+B,KAAK/B;AAClBiC,2BAAa9kB;AACbjtB,iBAAG4xC,SAAS;AACZ;AAAA,YACA;AAAA,UACD;AAED,cAAI1D,MAAMtwC;AACTswC,kBAAMA,MAAMtwC,SAAS,CAAA,EAAGg0C,SAAS;AAElC,eAAKI,WAAW;AACf,gBAAI9D,MAAMtwC,QAAQ;AACjB,kBAAIswC,MAAMtwC,UAAUswC,MAAMA,MAAMtwC,SAAS,CAAA,EAAGkyC,SAAS;AACpD,oBAAA,CAAK5B,MAAMA,MAAMtwC,SAAS,CAAGkyC,EAAAA;AAC5B9vC,qBAAG8vC,UAAU;AAAA;AAEb,uBAAK7iB,IAAI,GAAGA,IAAIihB,MAAMtwC,QAAQqvB,KAAK;AAClC,wBAAIglB,aAAa;AACjB,6BAASzpC,IAAI,GAAGA,IAAI0lC,MAAMtwC,QAAQ4K,KAAK;AACtC,0BAAI0lC,MAAM1lC,GAAGsnC,WAAW7iB,GAAG;AAC1BglB,qCAAa;AACb;AAAA,sBACA;AAAA,oBACD;AACD,wBAAKA,CAAAA,YAAY;AAChBjyC,yBAAG8vC,UAAU7iB;AACb;AAAA,oBACA;AAAA,kBACD;AACFjtB,mBAAG4xC,SAAS;AAAA,cAClB,OAAY;AACN,oBAAIM,cAAchE,MAAM,CAAG4B,EAAAA;AAC3B,qBAAK7iB,IAAI,GAAGA,IAAIihB,MAAMtwC,QAAQqvB,KAAK;AAClC,sBAAIihB,MAAMjhB,CAAAA,EAAG6iB,UAAUoC;AACtBA,kCAAchE,MAAMjhB,CAAAA,EAAG6iB;AAAAA,gBACxB;AACD9vC,mBAAG8vC,UAAUoC,cAAc;AAC3BlyC,mBAAG4xC,SAAS;AAAA,cACZ;AAAA,YAED;AACA5xC,iBAAG8vC,UAAU;AAAA,UACd;AAED5B,gBAAMthC,OAAOmlC,YAAYA,cAAc7D,MAAMtwC,SAAS,IAAI,GAAGoC,EAE7D;AAAA,cAAIkuC,MAAMtwC,UAAUswC,MAAMiE,aAAa,IAAI;AAC1CjE,kBAAMiE,YAAYjE,MAAMtwC;AACxBoC,eAAGoyC,SAASlE,MAAMtwC;AAAAA,UACtB,OAAU;AACNoC,eAAGoyC,SAAUpyC,GAAS,SAAIA,GAAGoyC,SAAS;AAAA,UACtC;AAAA,QACD;AAED,YAAIV,KAAKl4C,KAAK0B,OAAO4K,cAAc6rC,MAAMn4C,KAAK0B,OAAO6K,WAAW;AAG/D0rC,wBAAcp0C,KAAK2C,EAAAA;AACnBmD,cAAIxF,CAAKqC,IAAAA,KAAKxG,KAAK64C,YAAYryC,EAAAA;AAE/B,cAAI0xC,KAAKl4C,KAAK0B,OAAO4K,YAAY;AAChC9F,eAAGzD,WAAW0H,SAASzK,KAAK0B,OAAO4K;AACnC9F,eAAGzD,WAAW2H,WAAW,CAAA;AAAA,UACzB;AACD,cAAIytC,MAAMn4C,KAAK0B,OAAO6K,WAAW;AAChC/F,eAAGxD,SAAS0H,WAAW,CAAA;AACvBlE,eAAGxD,SAASyH,SAASzK,KAAK0B,OAAO6K,SAAAA;AAAAA,UACjC;AAED,cAAI/F,GAAGzD,aAAayD,GAAGxD,YAAYk1C,MAAMl4C,KAAK0B,OAAO6K,WAAW;AAC/D5C,gBAAIyJ,OAAOjP,GAAG,CACdA;AAAAA;AACA;AAAA,UACA;AAAA,QACD;AAAA,MACD;AACD,UAAK2wC,CAAAA,MAAM;AACV,iBAAS3wC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpCwF,cAAIxF,GAAGy0C,SAAS/wC,KAAK8B,IAAIxF,CAAAA,EAAGuxC,OAAOiD;AAAAA,QACnC;AACD,iBAASx0C,IAAI,GAAGA,IAAI8zC,cAAc7zC,QAAQD;AACzC8zC,wBAAc9zC,CAAGy0C,EAAAA,SAAS/wC,KAAKowC,cAAc9zC,CAAAA,EAAGuxC,OAAOiD;AAAAA,MACxD;AAED,aAAOhvC;AAAAA,IACR;AACAhK,IAAAA,WAAUm5C,cAAc,SAASnvC,KAChCA;AAAAA,UAAI46B,KAAK,SAASpoB,GAAGC,GACpB;AAAA,YAAID,EAAEpZ,WAAWgC,QAAAA,KAAaqX,EAAErZ,WAAWgC,QAAAA,GAAW;AACrD,cAAIoX,EAAE/R,UAAWgS,CAAAA,EAAEhS;AAAQ,mBAAO;AAClC,eAAK+R,EAAE/R,UAAUgS,EAAEhS;AAAQ,mBAAA;AAC3B,iBAAO+R,EAAEpc,KAAKqc,EAAErc,KAAK,IAAK;AAAA,QAC1B;AACD,eAAOoc,EAAEpZ,aAAaqZ,EAAErZ,aAAa,IAAK;AAAA,MAC5C;IACA;AAEApD,IAAAA,WAAUo5C,gCAAgC,SAAShkB,MAAMC,IAAIxzB,QAAAA;AAC5D,UAAI2c,OAAOne,KAAK0Q,MAAMtM;AACtB,UAAI40C,mBAAmB;AACvB,UAAIC,YAAYlkB;AAChB,UAAImkB,UAAU;AACd,UAAIC,aAAa,IAAI30C,KAAKwwB,EAC1B;AAAA,UAAGr1B,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKwwB,EAAKjwB,CAAAA,EAAAA,QAAAA,KAAaiwB,GAAGjwB,QAAU,GAAA;AACnEo0C,qBAAax5C,WAAUwD,KAAKyzB,UAAUuiB,UAAAA;AACtCA,qBAAax5C,WAAUwD,KAAKC,IAAI+1C,YAAY,GAAG,KAC/C;AAAA,MAAA;AACD,aAAMF,YAAYE,YAAW;AAC5BD,kBAAU;AACV,YAAIE,YAAYp5C,KAAKwM,kBAAkBysC,WAAW,OAAOz3C,MACzD;AAAA,YAAI63C,gBAAgBD,YAAYj7B;AAChC,aAAIne,KAAK2Q,SAAS0oC,aAAe,GAAA;AAChCL,6BAAmB;AACnB;AAAA,QACA;AACDC,oBAAYt5C,WAAUwD,KAAKC,IAAI61C,WAAW,GAAG,KAAA;AAAA,MAC7C;AACD,aAAOC,WAAWF;AAAAA,IACnB;AAEAr5C,IAAAA,WAAUk3C,2BAA2B,SAASltC,KAAKmrC,MAClD90C;AAAAA,WAAK84C,YAAYnvC,GACjB;AAAA,UAAI2vC,MAAM,CACV;AAAA,UAAIC,QAAQ,CACX,CAAA,GACA,CACA,GAAA,CAAA,GACA,IACA,CACA,GAAA,CAAA,GACA;AAED,UAAIhrC,MAAMvO,KAAKutB,OAAOK;AACtB,UAAI7qB;AACJ,UAAIob,OAAOne,KAAK0Q,MAAMtM;AACtB,UAAIo1C,cAAc,CAAA;AAElB,eAASr1C,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAIqC,KAAKmD,IAAIxF,CAAAA;AACb,YAAIpE,MAAKyG,GAAGzG;AACZ,YAAKy5C,CAAAA,YAAYz5C,MAAK;AACrBy5C,sBAAYz5C,GAAM,IAAA,EACjB05C,aAAa,MACbC,YAAY;QAEb;AACD,YAAIC,aAAaH,YAAYz5C,GAAAA;AAC7B,YAAI+1B,KAAM/yB,cAAcyD,GAAGzD;AAC3B,YAAIuyB,KAAK9uB,GAAGxD;AAEZ,YAAI8yB,KAAK91B,KAAKoM,WAAW;AACxButC,qBAAWF,cAAc;AACzB3jB,eAAK91B,KAAKoM;AAAAA,QACV;AACD,YAAIkpB,KAAKt1B,KAAKmM,WAAW;AACxBwtC,qBAAWD,aAAa;AACxBpkB,eAAKt1B,KAAKmM;AAAAA,QACV;AAED,YAAIytC,WAAW55C,KAAKwM,kBAAkBspB,IAAI,OAAOtvB,EACjDA;AAAAA,WAAGkvC,QAAQkE,WAAWz7B;AAEtB,YAAIne,KAAK2Q,SAASnK,GAAGkvC,KAAAA,KAAUlvC,GAAG4D;AAAQ;AAE1C,YAAIyvC,WAAW75C,KAAKwM,kBAAkB8oB,IAAI,MAAM9uB,EAAO2X,KAAAA;AACvD3X,WAAGmvC,QAASkE,WAAW17B,QAASA;AAChC3X,WAAGszC,UAAUD,WAAWD;AAExBpzC,WAAGqvC,SAAS1kC,KAAK8D,OAAOjV,KAAKyuB,eAAeqH,GAAG/wB,QAAAA,GAAW,CAAK/E,IAAAA,KAAKoM,UAAUrH,QAAc,MAAA,KAAK,KAAK,MAAO,KAAKoZ;AAElH,YAAI66B,mBAAmBr5C,WAAUo5C,8BAA8BjjB,IAAIR,IAAI9uB,EAAAA;AAEvE,aAAIwyC,kBAAiB;AACpBj2C,uBAAa;AACb;AAAA,QACA;AAGD,YAAI2xC,QAAQ6E,MAAM/yC,GAAGqvC;AAErB,YAAIkE;AAEJ,aAAKA,aAAa,GAAGA,aAAarF,MAAMtwC,QAAQ21C;AAC/C,cAAIrF,MAAMqF,UAAYpE,EAAAA,SAASnvC,GAAGkvC;AACjC;AAEF,YAAKlvC,CAAAA,GAAG8vC,YAAYxB,MAAM;AACzBtuC,aAAG8vC,UAAUyD;AAAAA,QACb;AAED,YAAIvzC,GAAGkvC,QAAQlvC,GAAGszC,WAAW37B,MAAM;AAClCpb,uBAAa;AACbu2C,cAAIz1C,KAAK2C,EACTkuC;AAAAA,gBAAMqF,UAAcvzC,IAAAA;AAEpB+H,cAAI/H,GAAGqvC,MAAAA,IAAUnB,MAAMtwC,SAAS;AAChCoC,aAAGwzC,eAAeL,WAAWF;AAC7BjzC,aAAGyzC,cAAcN,WAAWD;AAAAA,QAC/B,OAAS;AACN,cAAIhzC,OAAO1G,KAAK64C,YAAYryC,EAC5BE;AAAAA,eAAK3G,KAAKyG,GAAGzG;AACb2G,eAAKozC,UAAU37B,OAAO3X,GAAGkvC;AACzBhvC,eAAKivC,QAAQx3B;AACbzX,eAAKgvC,QAAQlvC,GAAGkvC;AAChBhvC,eAAKmvC,SAASrvC,GAAGqvC;AACjBnvC,eAAK4vC,UAAU9vC,GAAG8vC;AAClB5vC,eAAK1D,WAAWhD,KAAKmD,KAAKC,IAAI0yB,IAAIpvB,KAAKozC,SAAS,KAChDpzC;AAAAA,eAAKszC,eAAeL,WAAWF;AAC/B,cAAIE,WAAWF,aAAa;AAC3BE,uBAAWF,cAAc;AAAA,UACzB;AAEDH,cAAIz1C,KAAK6C,IAAAA;AACTguC,gBAAMqF,UAAcrzC,IAAAA;AACpB3D,uBAAa2D,KAAK1D;AAElBuL,cAAI/H,GAAGqvC,UAAUnB,MAAMtwC,SAAS;AAChCD;AACA;AAAA,QACA;AAAA,MACD;AACD,aAAOm1C;AAAAA,IACR;AACA35C,IAAAA,WAAUu6C,cAAc,WAAA;AACvB,UAAI/9B,IAAI,IAAI3X,KAAKxE,KAAK+C,UAAAA;AACtB,UAAIqZ,IAAI,IAAI5X,KAAKxE,KAAKgD;AACtBhD,WAAK+C,aAAaoZ;AAClBnc,WAAKgD,WAAWoZ;AAAAA,IACjB;AACAzc,IAAAA,WAAUk5C,cAAc,SAASryC;AAChCxG,WAAKk6C,YAAY7hC,YAAY7R;AAC7B,aAAO,IAAIxG,KAAKk6C;AAAAA,IAEjB;AACAv6C,IAAAA,WAAU+zC,YAAY,CACtB/zC;AAAAA,IAAAA,WAAUyzC,aAAa,WACtB;AAAA,eAASjvC,IAAI,GAAGA,IAAInE,KAAK0zC,UAAUtvC,QAAQD,KAAK;AAC/C,YAAIvE,MAAMI,KAAK0zC,UAAUvvC;AACzB,YAAIvE,IAAI6N;AAAY7N,cAAI6N,WAAWC,YAAY9N,GAC/C;AAAA,MAAA;AACDI,WAAK0zC,YAAY;IAClB;AACA/zC,IAAAA,WAAUiY,cAAc,SAAS7X,KAAAA;AAChC,UAAIyG,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvBC,WAAKi0C,YAAYl0C,GAAAA;AAEjB,UAAIyG,MAAMxG,KAAKg0C,kBAAkBxtC,EAAOxG,KAAAA,KAAK20C,aAAa50C,KAAIyG,QAAQxG,KAAK2M,eAAe3M,KAAK0B,OAAO41B,aAAa9wB,GAAG4D,SAAS;AAC9H,YAAIpK,KAAK0B,OAAO+vB,eAAc;AAC7BzxB,eAAK2X,iBACR;AAAA,QAAA,OAAO;AACJ,cAAG3X,KAAKiG,SAAWxG,EAAAA,QAAQ,YAAYO,KAAKiG,SAAAA,EAAWsjB,YAAYvpB,KAAKqK,cAAc7D,KAAI;AACzFxG,iBAAK2X,iBACT;AAAA,UAAA,OAAQ;AACJ3X,iBAAK2X,iBAAiB,CAACnR,EAAK,GAAA,IAAA;AAAA,UAC5B;AAAA,QACD;AAAA,MACD;AAAA,IACF;AACA7G,IAAAA,WAAUs0C,cAAc,SAASl0C,KAAAA;AAChCC,WAAK4xB,aAAa7xB,KAAI,SAAS8mB,MAAM1iB,GAAAA;AACpC,YAAI0iB,KAAKpZ;AACRoZ,eAAKpZ,WAAWC,YAAYmZ,IAC7BlnB;AAAAA,QAAAA,WAAU+zC,UAAUtgC,OAAOjP,GAAG,CAChC;AAAA,MAAA,CAAA;AAAA,IACA;AACAxE,IAAAA,WAAUw6C,eAAe,SAASh3C,MACjC;AAAA,UAAIi3C,KAAKj3C,KAAKkJ,SAAAA,IAAa,KAAKlJ,KAAKwK;AACrC,aAASwD,KAAKI,OAAO6oC,KAAK,KAAK,MAAOp6C,KAAK0B,OAAO4K,aAAa,KAAK,KAAK,OAAQtM,KAAK0B,OAAO2P,gBAAgB,KAAK,KAAK,IAAWrR,KAAAA,KAAK0B,OAAO2P,eAAe;AAAA,IAC9J;AACA1R,IAAAA,WAAU06C,gBAAgB,SAAS7zC,IAAI8zC;AACtCA,mBAAaA,cAAc;AAC3B,UAAIF,KAAK5zC,GAAGzD,WAAWsJ,aAAa,KAAK7F,GAAGzD,WAAW4K,WACvD;AAAA,UAAI4sC,KAAM/zC,GAAGxD,SAASqJ,SAAa,IAAA,KAAK7F,GAAGxD,SAAS2K,WAAAA,KAAkBhO,WAAU+B,OAAO6K,YAAY;AACnG,UAAIhK,MAAMvC,KAAKm6C,aAAa3zC,GAAGzD,UAE/B;AAAA,UAAI+N,SAASK,KAAK5C,IAAI+rC,aAAaC,KAAKH,MAAMp6C,KAAK0B,OAAO2P,eAAe,EACzE;AAAA,aAAO,EACN9O,KACAuO,OAAQA;AAAAA,IAEV;AACAnR,IAAAA,WAAU62C,eAAe,SAAShwC,IAAI6uC,QAAQmF;AAC7C,UAAIC,OAAO96C,WAAU2f,GAAGkG;AACxB,UAAIk1B,cAAe16C,KAAK0B,OAA4B,wBAAI,IAAI+4C;AAC5D,UAAIj0C,GAAGkvC,QAAQ;AAAG;AAElB,UAAIloC,SAAS7N,WAAUuR,cAAc1K,GAAGkvC,KACxC;AAAA,UAAA,CAAKloC;AAAQ;AAEb6nC,eAASA,UAAU7nC;AAEnB,UAAImtC,QAAQ36C,KAAKq6C,cAAc7zC,IAAI7G,WAAU2f,GAAG4F,gBAAAA;AAChD,UAAI3iB,MAAMo4C,MAAMp4C,KACfuO,SAAS6pC,MAAM7pC;AAEhB,UAAI8pC,WAAWp0C,GAAGoyC,UAAU;AAC5B,UAAIiC,YAAYr0C,GAAG8vC,WAAW;AAE9BkE,oBAAcA,eAAehtC,OAAOyS;AACpC,UAAGjgB,KAAK0B,OAAOquC,oBAAmB;AACjCyK,uBAAex6C,KAAK0B,OAAOquC;AAAAA,MAC3B;AAED,UAAIh/B,QAAQI,KAAK8D,OAAOulC,cAAcE,eAAeE,QACrD;AAAA,UAAIp4C,OAAOq4C,YAAY9pC,QAAQ;AAC/B,UAAA,CAAKvK,GAAG4xC;AAAQrnC,gBAAQA,SAAS6pC,WAAWC;AAC5C,UAAI76C,KAAK0B,OAAOwE,uBAAuB;AACtC,YAAI6R,SAAQ/X,KAAK0B,OAAO4uC;AACxB,YAAIwK,SAAS96C,KAAK0B,OAAO6uC;AACzB/tC,eAAOq4C,YAAY9iC,SAAQ+iC;AAC3B,YAAIl0B,QAASpgB,GAAS,UAAKo0C,WAAWC,YAAY,KAAK9iC,SAAQ+iC,SAAS,IAAI;AAC5E/pC,gBAAQI,KAAK8D,MAAMulC,cAAcE,cAAcl4C,OAAOokB,KAAAA;AAAAA,MACtD;AAED,UAAG9V,SAAS,IAAG;AACdtK,WAAGoG,QAAQ;AAAA,MACb,WAAUkE,SAAS,IAAG;AACpBtK,WAAGoG,QAAQ;AAAA,MACb,OAAM;AACJpG,WAAGoG,QAAQ;AAAA,MACX;AAED,UAAIgH,IAAI5T,KAAK+6C,cAAcv0C,IAAIk0C,cAAcl4C,MAAMD,KAAKwO,OAAOD,QAAQtK,GAAGw0C,aAAar7C,WAAU0zB,UAAUgf,aAAa7rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,GAAK7G,WAAU0zB,UAAU0K,WAAWv3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,CAAAA;AAEpN,UAAGA,GAAGoG,UAAU,YAAW;AAC1BgH,UAAE8I,UAAUtZ,IAAI;MAClB,WAAWoD,GAAGoG,UAAU,SAAQ;AAC9BgH,UAAE8I,UAAUtZ,IAAI,sBAAA;AAAA,MAChB;AAEDpD,WAAK2nB,SAASkW,UAAUr3B,IAAIoN,CAAAA;AAC5B5T,WAAK0zC,UAAU7vC,KAAK+P,CACpByhC;AAAAA,aAAOj1C,YAAYwT,CAEnB;AAAA,UAAIqnC,iBAAiBjlB,SAAUh2B,KAAK0B,OAAOijB,MAAMnX,OAAOlL,MAAMskB,QAAQpZ,OAAOlL,MAAME,MAAM;AAEzFA,aAAOA,OAAOy4C,iBAAiBP;AAE/B,UAAI16C,KAAKipB,YAAYziB,GAAGzG,IAAI;AAE3B6T,UAAEtR,MAAM44C,SAAS;AACjBnqC,gBAAQI,KAAK5C,IAAIwC,OAAOpR,WAAU2f,GAAGqG,YAAAA;AACrC/R,YAAI/T,SAASC,cAAc,KAC3B8T;AAAAA,UAAEkJ,aAAa,YAAYtW,GAAGzG;AAC9B6T,UAAEkJ,aAAa9c,KAAK0B,OAAOwC,iBAAiBsC,GAAGzG,EAAAA;AAE/CC,aAAK2nB,SAASkW,UAAUr3B,IAAIoN,CAE5BA;AAAAA,UAAE/C,YAAY;AACd,YAAI7Q,KAAK0B,OAAOijB;AAAKniB;AACrBxC,aAAKumB,OAAO3S,GAAG7C,OAAOD,QAAQtO,MAAMD,GAAAA;AAGpC,YAAGiE,GAAG20C,OAAM;AACXvnC,YAAEtR,MAAM84C,YAAY,oCAAoC50C,GAAG20C,KAC3D;AAAA,QAAA;AACD,YAAIE,WAAW17C,WAAU0zB,UAAUif,YAAY9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAE3E;AAAA,YAAG60C,UAAS;AACXznC,YAAE/C,aAAa,MAAMwqC;AAAAA,QACrB;AACD,YAAIvJ,KAAKjyC,SAASC,cAAc,KAChCgyC;AAAAA,WAAGxvC,MAAMg5C,WAAW;AAEpB1nC,UAAExT,YAAY0xC,EAAAA;AACd9xC,aAAK+L,KAAK,cAAA,EAAgB,CAAG3L,EAAAA,YAAYwT;AACzC5T,aAAK0zC,UAAU7vC,KAAK+P,CAEpBk+B;AAAAA,WAAG5xC,YAAY,sCAAsCsG,GAAGM,OAAO;AAC/D9G,aAAKu7C,UAAUzJ,GAAG9yB,cAAc,UAEhCrf;AAAAA,QAAAA,WAAU6B,MAAMxB,KAAKu7C,SAAS,WAAW,SAAS11C;AACjD,cAAIA,EAAE21C;AAAU,mBAAO;AACvB,cAAItQ,OAAOrlC,EAAE41C;AACb,cAAIvQ,QAAQvrC,WAAUmmB,KAAKC;AAAWpmB,YAAAA,WAAUmpB,SAAS;AACzD,cAAIoiB,QAAQvrC,WAAUmmB,KAAKE;AAAarmB,YAAAA,WAAUmpB,SAAS;AAE3D,cAAGoiB,QAAQvrC,WAAUmmB,KAAKC,aAAamlB,QAAQvrC,WAAUmmB,KAAKE,aAAY;AACzE,gBAAGngB,EAAEqiB;AAAgBriB,gBAAEqiB,eACvB;AAAA,UAAA;AAAA,QACJ,CACEvoB;AAAAA,QAAAA,WAAU6B,MAAMxB,KAAKu7C,SAAS,eAAe,SAAU11C,GAAAA;AACtDA,YAAE6jB,eAAe;AACjB,iBAAO;AAAA,QACV;AACE/pB,QAAAA,WAAUy6B,OAAOp6B,KAAKu7C,SAAS,IAAA;AAE/Bv7C,aAAK+L,KAAK,cAAA,EAAgB,CAAGmhB,EAAAA,aAAa;AAAA,MAC1C;AACD,UAAIltB,KAAKsf,GAAGkG,eAAe,KAAKxlB,KAAK4oB,cAAcpiB,GAAGzG,IAAI;AAEzD,YAAIC,KAAK0B,OAAOwE,yBAAyBlG,KAAKwK;AAC7CoJ,YAAEtR,MAAM44C,SAAS;AAClB,YAAIQ,QAAQ17C,KAAK0B,OAAO,YAAa1B,KAAKipB,YAAYziB,GAAGzG,KAAM,SAAS,SAAA;AACxE,YAAI47C,YAAY;AAEhB,YAAIC;AAEJ,iBAASz3C,IAAI,GAAGA,IAAIu3C,MAAMt3C,QAAQD,KAAK;AACtC,gBAAM03C,cAAcH,MAAMv3C,CAC1By3C;AAAAA,qBAAW57C,KAAK2nB,SAAS8Y,oBAAoBob,WAC7CF;AAAAA,uBAAa,6BAA6BE,WAAuB77C,YAAAA,KAAKynB,OAAOC,OAAOm0B,WAAAA,CAAAA,KAAiBD,QACrG;AAAA,QAAA;AACD,YAAIh8C,MAAMI,KAAK+6C,cAAcv0C,IAAIhE,OAAOi4C,OAAO,GAAGl4C,KAAKk4C,MAAM,MAAM,IAAI,qCAAqCkB,WAAW;AAEvH,YAAGn1C,GAAG20C,OAAM;AACXv7C,cAAI0C,MAAM84C,YAAY,oCAAoC50C,GAAG20C,KAAAA;AAAAA,QAC7D;AACD,YAAG30C,GAAGs1C,WAAU;AACfl8C,cAAI0C,MAAM84C,YAAY,+BAA+B50C,GAAGs1C,SAAAA;AAAAA,QACxD;AAGD97C,aAAK+L,KAAK,gBAAgB,CAAG3L,EAAAA,YAAYR,GACzCI;AAAAA,aAAK0zC,UAAU7vC,KAAKjE,GAAAA;AAAAA,MACpB;AACD,UAAGI,KAAK0B,OAAOC,kBAAkB3B,KAAKuK,YAAY/D,GAAGzG,IAAG;AACvDC,aAAK+7C,uBAAuBv1C,EAC5B;AAAA,MAAA;AAAA,IACF;AACA7G,IAAAA,WAAUo7C,gBAAgB,SAAUv0C,IAAIsgB,GAAGC,GAAGjH,GAAGI,GAAG5d,OAAO05C,UAAUC,UAAUha,QAC9E;AAAA,UAAIruB,IAAI/T,SAASC,cAAc,KAC/B;AAAA,UAAIC,MAAKyG,GAAGzG;AACZ,UAAIm8C,MAAK,SAAW,sCAAsC;AAE1D,UAAIpgB,QAAQn8B,WAAUsG;AACtB,UAAG61B,MAAMvS,WAAW/iB,GAAGzG,IAAG;AACzBm8C,QAAAA,OAAM;AAAA,MACN;AAED,UAAGpgB,MAAMzS,aAAa7iB,GAAGzG,IAAG;AAC3Bm8C,QAAAA,OAAM;AAAA,MACN;AAED,UAAIC,MAAMx8C,WAAU0zB,UAAUif,YAAY9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EACtE;AAAA,UAAI21C;AAAKD,QAAAA,MAAKA,MAAK,MAAMC;AAEzB,UAAGn8C,KAAK0B,OAAOwE,uBAAuB;AACrCg2C,QAAAA,OAAM;AAAA,MACN;AAED,UAAIE,WAAWt8B,IAAI;AACnB,UAAI5c,OAAO,kBAAkBnD,GAAOC,KAAAA,KAAK0B,OAAOwC,eAAoBnE,KAAAA,GAAAA,YAAcm8C;oCAC/Cn1B,CAAU/mB,OAAAA,KAAK0B,OAAU,MAAI,WAAS,OAAWolB,GAAAA,CAAAA,aAAcs1B,sBAAsBl8B,CAAS5d,OAAAA,SAAS;sBACrHkE,GAAGzD,WAAWgC,4BAA4ByB,GAAGxD,SAAS+B,QAG3E6O,CAAAA;AAAAA;AAAAA,QAAE1T,YAAYgD;AAEd,UAAIsI,YAAYoI,EAAEtP,UAAU,MAAMjE;AAElC,UAAA,CAAK4hC,UAAUtiC,WAAU08C,YAAY7wC,WAAWhF,IAAIsZ,GAAGI,GAAG87B,UAAUC,WAAW;AAC9E,YAAGz1C,GAAG20C,OAAM;AACX3vC,oBAAUlJ,MAAM84C,YAAY,oCAAoC50C,GAAG20C;QACnE;AACD,YAAG30C,GAAGs1C,WAAU;AACftwC,oBAAUlJ,MAAM84C,YAAY,+BAA+B50C,GAAGs1C;QAC9D;AAED,eAAOtwC;AAAAA,MACT,OAAQ;AACNA,oBAAYoI,EAAEvT;AACd,YAAGmG,GAAG20C,OAAM;AACX3vC,oBAAUlJ,MAAM84C,YAAY,oCAAoC50C,GAAG20C,KAAAA;AAAAA,QACnE;AACD,YAAG30C,GAAGs1C,WAAU;AACftwC,oBAAUlJ,MAAM84C,YAAY,+BAA+B50C,GAAGs1C,SAAAA;AAAAA,QAC9D;AAED,YAAIQ,aAAa;AACjBA,sBAAc,2CAA2CN,WAAW;AACpEM,sBAAc,2BAA2BL,WAAW;AAEpD,YAAIM,eAAe;AACnB,YAAIta,UAAUz7B,GAAGg2C,iBAAiB;AACjCD,yBAAe,uBAAuBA;AAEvCD,sBAAc,iBAAiBC,eAAe,sBAAsBta,SAAS,sBAAsB,MAAM;AAEzGz2B,kBAAUtL,YAAYo8C;AAAAA,MACtB;AAED,aAAO9wC;AAAAA,IACR;AACA7L,IAAAA,WAAU08C,cAAc,WAAA;AACvB,aAAO;AAAA,IACR;AACA18C,IAAAA,WAAUuR,gBAAgB,SAAS1R;AAClC,UAAIQ,KAAK4M,SAAS;AAAO,eAAO5M,KAAK+L,KAAK,gBAAgB,CAAG1L,EAAAA;AAC7D,aAAOL,KAAK+L,KAAK,cAAgB,EAAA,CAAA,EAAG8F,WAAWrS,GAChD;AAAA,IAAA;AACAG,IAAAA,WAAU6M,oBAAoB,SAASrJ,MAAMs5C,MAC5C;AAAA,UAAIj9C,MAAM2R,KAAK8D,OAAOjV,KAAKyuB,eAAetrB,MAAM,CAAKnD,IAAAA,KAAKoM,cAAc,KAAK,KAAK,KAAK,IAAA;AAEvF,UAAIqwC,QAAQz8C,KAAKmD,KAAK8sB,UAAU9sB;AAAO3D;AACvC,aAAOA;AAAAA,IACR;AAIAG,IAAAA,WAAU+8C,iBAAiB,SAAS1rC,OAAO2rC,WAAWC,YAAAA;AACrD,WAAI58C,KAAKmsB;AACR,eAAOnb;AACR,WAAIhR,KAAKmsB,YAAY0wB;AACpB78C,aAAKmsB,YAAY0wB,eAAe7rC;AAAAA;AAEhCA,gBAAQhR,KAAKmsB,YAAY0wB;AAE1B,UAAIC,QAAQH,YAAY3rC;AACxB,aAAO8rC,QAAQH,YAAaC,YAAW;AACtC5rC;AACA8rC,iBAASH;AAAAA,MACT;AACD3rC,cAAQG,KAAK5C,IAAIyC,OAAO,CACxB;AAAA,aAAOA;AAAAA,IACR;AAEArR,IAAAA,WAAUo2C,qBAAqB,SAASvvC;AACvC,UAAIme,MAAM3kB,KAAK0B,OAAOijB;AACtB,UAAIo4B,UAAU/8C,KAAKutB;AACnB,UAAIzG,IAAIi2B,QAAQv2C,GAAGkvC;AACnB,UAAIO,KAAK8G,QAAQv2C,GAAGmvC;AACpB,UAAIhxB,KAAK;AACRmC,YAAIi2B,QAAQA,QAAQrlB,UAAcqlB,IAAAA,QAAQv2C,GAAGmvC,KAAAA,IAASoH,QAAQ,CAC9D9G;AAAAA,aAAK8G,QAAQA,QAAQrlB,UAAAA,IAAcqlB,QAAQv2C,GAAGkvC,KAAAA,IAASqH,QAAQ,CAAA;AAAA,MAC/D;AAED,UAAI9G,MAAMnvB;AAAGmvB,aAAK8G,QAAQv2C,GAAGmvC,QAAQ,CAAA;AACrC,UAAIe,KAAK12C,KAAKsf,GAAG6F;AAEjB,UAAInU,QAAQxK,GAAG8vC;AACf,UAAG9vC,GAAGzG,MAAMC,KAAKuK,UAAS;AACzB,YAAIwsC,aAAagG,QAAQnvB,QAAQpnB,GAAGqvC,SAAS,CAAA,IAAKkH,QAAQnvB,QAAQpnB,GAAGqvC,MAAS71C,IAAAA,KAAKsf,GAAGsG;AACtF5U,gBAAQrR,WAAU+8C,eAAe1rC,OAAO0lC,IAAIK,UAAAA;AAAAA,MAC5C;AACD,UAAIiG,iBAAkBhsC,QAAQ0lC;AAC9B,UAAI3vB,IAAIg2B,QAAQnvB,QAAQpnB,GAAGqvC,MAAAA,KAAWkH,QAAQjsC,SAAU9Q,KAAKsf,GAAGiG,qBAAqB,IAAK,KAAMy3B;AAChG,aAAO,EAACl2B,GAAKmvB,IAAOlvB,EACrB;AAAA,IAAA;AAEApnB,IAAAA,WAAUw2C,mBAAmB,SAAU3vC,IACtC;AAAA,UAAIgH,SAASxN,KAAKo1C;AAClB,UAAI1oB,MAAM1sB,KAAK+1C,mBAAmBvvC,EAClC;AAAA,UAAIugB,IAAI2F,IAAI3F;AACZ,UAAID,IAAI4F,IAAI5F;AACZ,UAAImvB,KAAKvpB,IAAIupB;AAEb,UAAIgH,gBAAgB;AAIpB,UAAKhH,CAAAA;AAAI;AAET,UAAIiH,YAAYv9C,WAAU+B,OAAOwuC,uBAAuBlwC,KAAK4M,SAAS,aACnEpG,GAAG4D,UAAUzK,WAAU+B,OAAOyuC;AAEjC,UAAIv8B,IAAI/T,SAASC,cAAc,KAAA;AAC/B,UAAIq9C,aAAc32C,GAAGoI,eAAe,cAAmBpI,KAAAA,GAAGwzC,cACzDoD,cAAe52C,GAAGoI,eAAe,aAAA,KAAkBpI,GAAGyzC;AAEvD,UAAIoD,cAAcH,cAAc12C,GAAG4D,UAAU+yC;AAC7C,UAAIG,eAAeJ,cAAc12C,GAAG4D,UAAUgzC;AAE9C,UAAIG,QAAQ;AACZ,UAAIrB,MAAK;AACT,UAAK11C,CAAAA,GAAG4D,UAAU8yC,WAAW;AAC5BK,gBAAQ;AACRrB,QAAAA,MAAK;AAAA,MACL;AACD,UAAGiB,YAAW;AACbjB,QAAAA,OAAM;AAAA,MACN;AACD,UAAGkB,aAAY;AACdlB,QAAAA,OAAM;AAAA,MACN;AACD,UAAGmB,aAAY;AACdJ,yBAAiB;AAAA,MACjB;AACD,UAAGK,cAAa;AACfL,yBAAiB;AAAA,MACjB;AAED,UAAId,MAAMx8C,WAAU0zB,UAAUif,YAAY9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA;AACtE,UAAI21C,KAAI;AACPD,QAAAA,OAAM,MAAMC;AAAAA,MACZ;AAED,UAAIqB,WAAYh3C,GAAG20C,QAAS,sCAAsC30C,GAAG20C,QAAQ,MAAO;AACpF,UAAIA,QAAS30C,GAAGs1C,YAAa,iCAAiCt1C,GAAGs1C,YAAY,MAAO;AAEpF,UAAI2B,aAAa,CAChB,qBACA,SAAS12B,IAAI,MACb,UAAUD,IAAI,MACd,YAAYmvB,KAAKnvB,KAAKy2B,QAAQ,IAAI,MAAM,MACxC,aAAav9C,KAAKsf,GAAG6F,aAAa,KAAK,MACvCg2B,OACAqC,UACCh3C,GAAGw0C,eAAe,IAClBlrC,KAAK,GAAA;AAEP,UAAI5M,OAAO,oBAAoBsD,GAAGzG,KAAK,OAAOC,KAAK0B,OAAOwC,kBAAkB,OAAOsC,GAAGzG,KAAK,cAAam8C,MAAK,cAAYuB,aAAW,MAAIz9C,KAAK2nB,SAAS0W,mBAAmB73B,EAAI,IAAA;AAC7K,UAAI02C,WAAW;AACdh6C,gBAAQ+5C;AAAAA,MACR;AACD,UAAGt9C,WAAUsG,WAAWxG,QAAQ,SAAQ;AACvC+G,aAAK7G,WAAUmG,SAASU,GAAGzG;MAC3B;AAED,UAAIyG,GAAG4D,QAAO;AACblH,gBAAQ,0CAA0CvD,WAAU0zB,UAAUkf,eAAe/rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EACjH,CAAA;AAAA,MAAA;AAEDtD,cAAQ;AACRA,cAAQvD,WAAU0zB,UAAUmf,eAAehsC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAM;AAC7EtD,cAAQ;AACRA,cAAQ;AAER0Q,QAAE1T,YAAYgD;AAEdlD,WAAK0zC,UAAU7vC,KAAK+P,EAAEvT,UAAAA;AACtBmN,aAAOpN,YAAYwT,EAAEvT;IACtB;AAEAV,IAAAA,WAAU+oB,gBAAgB,SAAS7B,MAAAA;AAClC,UAAI9mB,MAAK;AACT,aAAO8mB,QAAAA,CAAS9mB,OAAM8mB,KAAKpiB,cAAc;AACxC1E,QAAAA,MAAK8mB,KAAKpiB,aAAazE,KAAK0B,OAAOwC,eACnC2iB;AAAAA,eAAOA,KAAKpZ;AAAAA,MACZ;AACD,aAAO1N;AAAAA,IACR;AAEAJ,IAAAA,WAAUurB,OAAO,SAASnrB,KACzB;AAAA,UAAIC,KAAKipB,YAAYlpB;AAAI;AACzBC,WAAK8oB,SAAS,OAAO/oB,GAAAA;AACrBC,WAAKipB,WAAWlpB;AAChBC,WAAK4X,YAAY7X,GAAAA;AAAAA,IAClB;AACAJ,IAAAA,WAAUmpB,WAAW,SAASrpB,MAAMM;AACnC,UAAIA,OAAMC,KAAKipB,YAAYlpB;AAAI;AAC/B,UAAIyG,KAAKxG,KAAK8F,SAAS9F,KAAKipB,QAC5B;AAAA,UAAIziB,IAAI;AACP,YAAI/G;AAAM+G,aAAGM,OAAO9G,KAAKu7C,QAAQl9B;AACjCre,aAAKipB,WAAW;AAChBjpB,aAAKu7C,UAAU;AACfv7C,aAAK4X,YAAYpR,GAAGzG,EAAAA;AACpBC,aAAK09C,iBAAiBl3C,IAAI/G;MAC1B;AAAA,IACF;AACAE,IAAAA,WAAU+9C,mBAAmB,SAASl3C,IAAI/G,MAAAA;AACzC,UAAIO,KAAKopB,YAAY;AACpB,YAAK3pB,CAAAA,MAAM;AACV,cAAI+G;AACHxG,iBAAK+qB,YAAYvkB,GAAGzG,IAAI,IAAA;AAAA,QAC5B,OAAS;AACNC,eAAK4K,UAAU,gBAAgB,CAACpE,GAAGzG,IAAIyG;QACvC;AACDxG,aAAKopB,aAAa;AAAA,MACpB,OAAQ;AACN,YAAI3pB,MAAK;AACRO,eAAK4K,UAAU,kBAAkB,CAACpE,GAAGzG,IAAIyG,EAAAA,CAAAA;AAAAA,QACzC;AAAA,MACD;AAAA,IACF;AAEA7G,IAAAA,WAAUm2C,YAAY,SAAS/gB,MAAMC,IAAAA;AACpC,UAAI/b,SAAS,CAAA;AACb,eAASkD,KAAKnc,KAAKkzC,SAAS;AAC3B,YAAI1sC,KAAKxG,KAAKkzC,QAAQ/2B,CAAAA;AACtB,YAAI3V,OAAUuuB,CAAAA,QAAAA,CAASC,MAAQxuB,GAAGzD,aAAaiyB,MAAMxuB,GAAGxD,WAAW+xB;AAClE9b,iBAAOpV,KAAK2C,EACb;AAAA,MAAA;AACD,aAAOyS;AAAAA,IACR;AACAtZ,IAAAA,WAAUg+C,mBAAmB,SAAS59C,KACrC;AAAA,UAAA,CAAKA;AACJ;AACD,UAAI69C,kBAAkBj+C,WAAU+zC;AAChC,eAASvvC,IAAE,GAAGA,IAAEy5C,gBAAgBx5C,QAAQD,KAAK;AAC5C,YAAI05C,iBAAiBD,gBAAgBz5C,CAAAA;AACrC,YAAI05C,eAAep5C,aAAa9E,WAAU+B,OAAOwC,eAAAA,KAAoBnE,KAAI;AACxE,iBAAO89C;AAAAA,QACP;AAAA,MACD;AACD,aAAO;AAAA,IACR;AACAl+C,IAAAA,WAAUm+C,YAAY,SAAS/9C,KAAIN;AAClC,UAAI4G;AACJ,UAAGtG,OAAaA,OAAAA,QAAO,UAAS;AAC/BN,eAAOM,IAAGN;AACV4G,kBAAUtG,IAAGsG;AACbtG,QAAAA,MAAKA,IAAGsG;AAAAA,MACR;AACD,UAAIG,KAAAA,OAAazG,OAAM,YAAA,OAAmBA,OAAM,WAAYJ,WAAUmG,SAAS/F,GAAMA,IAAAA;AACrFN,aAAOA,QAAME,WAAUiN;AAEvB,UAAA,CAAKpG,MAAOxG,KAAK2K,WAAW,4BAA4B3K,KAAK4K,UAAU,wBAAwB,CAACpE,IAAI/G,IACnG,CAAA;AAAA;AAED,UAAIw4B,cAAct4B,WAAU+B,OAAOu2B;AACnCt4B,MAAAA,WAAU+B,OAAOu2B,cAAczxB,GAAGzD,WAAWsJ,SAAAA;AAC7C,UAAI6nB,kBAAkBv0B,WAAU+B,OAAOwyB;AACvCv0B,MAAAA,WAAU+B,OAAOwyB,kBAAkB;AAEnC,UAAI6pB,iBAAiBv3C,GAAG20C;AACxB,UAAI6C,sBAAsBx3C,GAAGs1C;AAC7B,UAAIn8C,WAAU+B,OAAO0vC,2BAA2B;AAC/C5qC,WAAG20C,QAAQx7C,WAAU+B,OAAOkuC;AAC5BppC,WAAGs1C,YAAYn8C,WAAU+B,OAAOmuC;AAAAA,MAChC;AAEDlwC,MAAAA,WAAU8X,eAAe,IAAIjT,KAAKgC,GAAGzD,aAAatD,IAElD;AAAA,eAASw+C,wBACRz3C;AAAAA,WAAG20C,QAAQ4C;AACXv3C,WAAGs1C,YAAYkC;AAAAA,MACf;AAEDr+C,MAAAA,WAAU+B,OAAOu2B,cAAcA;AAC/Bt4B,MAAAA,WAAU+B,OAAOwyB,kBAAkBA;AAEnC,UAAIv0B,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAAA,GAAO;AAC/C,YAAIwb,WAAWtb,WAAUqC,QAAAA;AACzB,YAAI8I,WAAWmQ,SAAS9Y;AAExB,YAAIX,SAAQ7B,WAAUmG,SAASU,GAAGzG,EAElC;AAAA,YAAGyB,QAAM;AACR,cAAA,CAAI6E,SAAQ;AACX,gBAAIA,UAAU7E,OAAMsJ;AACpB,gBAAGiD,MAAMkK,QAAQ5R,OAAS,GAAA;AACzBA,wBAAUA,QAAQ,CAAA;AAAA,YAClB,WAAK,OAAUA,YAAY,YAAY1G,WAAU+B,OAAO6D,qBAAqBc,QAAQ0L,QAAQpS,WAAU+B,OAAO6D,iBAAsB,IAAA,IAAE;AACtIc,wBAAUA,QAAQf,MAAM3F,WAAU+B,OAAO6D,mBAAmB,CAC5D;AAAA,YAAA;AAAA,UACD;AACD,cAAIhD,MAAM0Y,SAASijC,cAAc73C;AACjC,cAAI7D,OAAOyY,SAASkjC,YAAY38C,OAAMuB,UACtC;AAAA,cAAIyI,YAAY7L,WAAUqE,WAAWgb,cAAc,4BACnDxc;AAAAA,iBAAOA,QAAQgJ,UAAUwV,cAAc/F,SAASnG,MAAM;AACtDvS,gBAAMA,MAAMiJ,UAAUsV,eAAe,IAAI7F,SAAS0S,KAAG;AAErD,cAAI1S,SAASmjC,0BAA0B;AACtC,gBAAIj8B,YAAYlH,SAASrV,YAAY,YAAY,WAChDq4C;AAAAA,oCAAAA;AACAhjC,uBAASiI,YAAYf;YAC1B,CACI;AAAA,UAAA;AAEDlH,mBAASojC,SAAS,EACjB77C,MACAD,IAED,CAAA;AAAA,cAAA,CAAK0Y,SAASmjC,uBAA0B,GAAA;AACvCH;UACA;AAAA,QACD;AAAA,MACH,OAAM;AACJA,8BAAAA;AAAAA,MACA;AAEDt+C,MAAAA,WAAUiL,UAAU,uBAAuB,CAACpE,IAAI/G,IACjD,CAAA;AAAA,IAAA;AAAA,EAGA;AClxCe,WAASob,SAAOlb,YAG/BA;AAAAA,IAAAA,WAAU2+C,sBAAsB,SAASC,GAAAA;AACxC,UAAGA,EAAE9wC;AAAY;AACjB,UAAI+wC,OAAO7+C,WAAUoM,KAAK,gBAAgB,CAE1C;AAAA,UAAI0yC,QAAQD,KAAKE;AACjB,UAAI7tC,YAAYlR,WAAUmS,cAAc2sC,KAAAA;AACxC,UAAG5tC,UAAUkB,QAAQ,sBAAsB,KAAK0sC,MAAME,iBAAgB;AACrEF,gBAAQA,MAAME;AAAAA,MACd;AAED9tC,kBAAYlR,WAAUmS,cAAc2sC,KACpC;AAAA,UAAIA,SAAS5tC,UAAUkB,QAAQ,kBAAwB,MAAA,GAAG;AACzD0sC,cAAMr+C,YAAYm+C;MAClB;AAAA,IACF;AAEA5+C,IAAAA,WAAUi/C,0BAA0B,SAASL,GAAG/8C,QAAAA;AAC/C,UAAIwL,OAAOrN,WAAU06C,cAAc74C,QAAO,CAAA;AAC1C+8C,QAAEj8C,MAAMC,MAAMyK,KAAKzK,MAAM;AACzBg8C,QAAEj8C,MAAMwO,SAAS9D,KAAK8D,SAAS;AAAA,IAChC;AAEAnR,IAAAA,WAAUo8C,yBAAyB,SAASv6C;AAC3C,UAAI+8C,IAAI1+C,SAASC,cAAc,KAAA;AAE/By+C,QAAEzhC,aAAa,YAAYtb,OAAMzB,EAAAA;AACjCw+C,QAAEzhC,aAAa9c,KAAK0B,OAAOwC,iBAAiB1C,OAAMzB;AAClDC,WAAK0zC,UAAU7vC,KAAK06C,CAAAA;AACpBv+C,WAAK4+C,wBAAwBL,GAAG/8C;AAEhC,UAAIyB,MAAMjD,KAAKqzB,UAAUqf,kBAAkBlxC,OAAMuB,YAAYvB,OAAMwB,UAAUxB,MAAAA;AAC7E,UAAI0B,OAAOlD,KAAKqzB,UAAUsf,oBAAoBnxC,OAAMuB,YAAYvB,OAAMwB,UAAUxB,MAChF+8C;AAAAA,QAAE1tC,YAAY;AACd,UAAG5N;AACFs7C,UAAE1tC,aAAa,MAAM5N;AACtB,UAAGC;AACFq7C,UAAEr+C,YAAYgD;AACflD,WAAKs+C,oBAAoBC,CAC1B;AAAA,IAAA;AAAA,EAEA;AC3Ce,WAAS1jC,SAAOlb,YAG/BA;AAAAA,IAAAA,WAAUk/C,SAASpW,MAAM,EACxBqW,UAAU,SAASrtC,MAAM82B,KAExB;AAAA,UAAGA,IAAIG,eAAeH,IAAIG,YAAYroC,YAAW;AAChD,eAAO;AAAA,MACP;AAED,UAAA;AACC,YAAIiqC,SAAS3qC,WAAUmoC,KAAKE,MAAMO,IAAIlsB;AACtC,YAAI0iC,aAAap/C,WAAUmoC,KAAKO,OAAO,QAAQiC,MAAAA;AAC/C,YAAGyU,cAAcA,WAAWhc,YAAY,QAAO;AAC9C,iBAAO;AAAA,QACP;AAAA,MACD,SAAOl9B;MACP;AACD,aAAO;AAAA,IACP,GACDmiC,OAAO,SAASgX,QAAAA;AACf,UAAIvW;AAEJ,UAAA,CAAKuW,OAAO1U,OAAO5B,aAAa;AAC/BsW,eAAO1U,OAAO5B,cAAc/oC,WAAUmoC,KAAKE,MAAMgX,OAAO1U,OAAOjuB,YAC/D;AAAA,MAAA;AAEDosB,YAAM9oC,WAAUmoC,KAAKO,OAAO,QAAQ2W,OAAO1U,MAC3C;AAAA,UAAI7B,IAAI1F,WAAW;AAAQ,eAAO;AAClC,UAAIkc,YAAYxW,IAAIhkC,aAAa,cACjC;AAAA,UAAIw6C,WAAW;AACd,YAAIh+C,OAAO5B,QAAQ;AAClB4B,iBAAO5B,OAAO6/C,eAAeD;AAAAA,QAC7B;AACDt/C,QAAAA,WAAUu/C,eAAeD;AAAAA,MACzB;AAED,UAAIzzB,OAAO7rB,WAAUmoC,KAAKa,MAAM,kBAAkBqW,OAAO1U;AACzD,eAASnmC,IAAI,GAAGA,IAAIqnB,KAAKpnB,QAAQD,KAAK;AACrC,YAAI0e,OAAO2I,KAAKrnB,CAAAA,EAAGM,aAAa,KAChC;AAAA,YAAI06C,MAAMx/C,WAAUm6B,WAAWjX,IAC/B;AAAA,YAAA,CAAKs8B,KAAK;AACTx/C,UAAAA,WAAUm6B,WAAWjX,IAAQs8B,IAAAA,MAAM,CACnC;AAAA,QAAA;AACDA,YAAI/rC,OAAO,GAAG+rC,IAAI/6C,MAClB;AAAA,YAAIg7C,OAAOz/C,WAAUmoC,KAAKa,MAAM,WAAWnd,KAAKrnB,CAChD,CAAA;AAAA,iBAASsvB,IAAI,GAAGA,IAAI2rB,KAAKh7C,QAAQqvB,KAAK;AACrC,cAAI4rB,MAAMD,KAAK3rB;AACf,cAAIkL,QAAQ0gB,IAAI/hB;AAChB,cAAI19B,MAAM,EAAEsV,KAAKkqC,KAAK3rB,CAAAA,EAAGhvB,aAAa,OAAU+iB,GAAAA,OAAO43B,KAAK3rB,CAAGhvB,EAAAA,aAAa,OAC5E,EAAA;AAAA,mBAASuK,IAAI,GAAGA,IAAI2vB,MAAMv6B,QAAQ4K,KAAK;AACtC,gBAAIquB,OAAOsB,MAAM3vB;AACjB,gBAAIquB,KAAKwG,YAAY,WAAWxG,KAAKwG,YAAY;AAChD;AACDjkC,gBAAIy9B,KAAKwG,YAAYxG,KAAKiiB;AAAAA,UAC1B;AACDH,cAAIt7C,KAAKjE;QACT;AAAA,MACD;AACD,UAAI4rB,KAAKpnB;AACRzE,QAAAA,WAAUiL,UAAU,iBAAiB,CAEtC,CAAA;AAAA,UAAI20C,KAAK5/C,WAAUmoC,KAAKa,MAAM,cAAcqW,OAAO1U,MACnD;AAAA,eAASnmC,IAAI,GAAGA,IAAIo7C,GAAGn7C,QAAQD,KAAK;AACnC,YAAIq7C,MAAM7/C,WAAU8/C,eAAeF,GAAGp7C,CAAAA,CAAAA;AACtCxE,QAAAA,WAAU+/C,UAAUF,IAAIplC,IAAQolC,IAAAA,IAAI14C;AAAAA,MACpC;AAED,UAAI6C,MAAM,CACV8+B;AAAAA,YAAM9oC,WAAUmoC,KAAKa,MAAM,WAAWqW,OAAO1U;AAE7C,eAASnmC,IAAI,GAAGA,IAAIskC,IAAIrkC,QAAQD,KAAK;AACpC,YAAIqC,KAAKmD,IAAIxF,CAAAA,IAAKxE,WAAU8/C,eAAehX,IAAItkC;AAC/CxE,QAAAA,WAAUggD,YAAYn5C,EACtB;AAAA,MAAA;AACD,aAAOmD;AAAAA,IACP,EAAA;AAAA,EAGF;AC/Ee,WAASkR,SAAOlb;AAG/BA,IAAAA,WAAUigD,OAAOjgD,WAAUk/C,SAASe,OAAO,EAC1Cd,UAAU,SAASrtC,MAClB;AAAA,UAAGA,eAAeA,SAAS,UAAS;AACnC,eAAO;AAAA,MACV,WAAS,OAAUA,SAAS,UAAS;AAClC;AACC,cAAIwH,SAASwL,KAAKujB,MAAMv2B;AACxB,iBAAOwI,OAAO5B,UAAUC,SAASlC,KAAK6C,YAAY,qBAChDgB,OAAO5B,UAAUC,SAASlC,KAAK6C,MAAY,MAAA;AAAA,QAC7C,SAAQ4mC,KAAAA;AACR,iBAAO;AAAA,QACP;AAAA,MACD;AACD,aAAO;AAAA,IACP,GACD7X,OAAO,SAASv2B,MACf;AAAA,UAAIquC,SAAS,CAEb;AAAA,UAAA,OAAWruC,QAAQ,UAAU;AAC5BA,eAAOgT,KAAKujB,MAAMv2B,IAClB;AAAA,MAAA;AACD,UAAIwI,OAAO5B,UAAUC,SAASlC,KAAK3E,UAAU,kBAAkB;AAC9DquC,iBAASruC;AAAAA,MACZ,OAAS;AACN,YAAGA,MAAK;AACP,cAAGA,KAAKquC,QAAO;AACdA,qBAASruC,KAAKquC;AAAAA,UACnB,WAAaruC,KAAKA,MAAK;AAClBquC,qBAASruC,KAAKA;AAAAA,UACd;AAAA,QACD;AAAA,MACD;AACDquC,eAASA,UAAU,CAEnB;AAAA,UAAIruC,KAAKsuC,cAAc;AACtB,YAAI9+C,OAAO5B,QAAQ;AAClB4B,iBAAO5B,OAAO6/C,eAAeztC,KAAKsuC;AAAAA,QAClC;AACDpgD,QAAAA,WAAUu/C,eAAeztC,KAAKsuC;AAAAA,MAC9B;AAED,UAAIC,cAAevuC,QAAQA,KAAKuuC,cAAevuC,KAAKuuC,cAAc;AAClE,UAAIC,qBAAqB;AACzB,eAAS/qC,OAAO8qC,aAAa;AAC5B,YAAIA,YAAYpxC,eAAesG,GAAAA,GAAM;AACpC+qC,+BAAqB;AACrB,cAAIpmB,aAAammB,YAAY9qC,GAC7B;AAAA,cAAIiqC,MAAMx/C,WAAUm6B,WAAW5kB;AAC/B,cAAKiqC,CAAAA,KAAK;AACTx/C,YAAAA,WAAUm6B,WAAW5kB,GAAOiqC,IAAAA,MAAM;UAClC;AACDA,cAAI/rC,OAAO,GAAG+rC,IAAI/6C,MAClB;AAAA,mBAASqvB,IAAI,GAAGA,IAAIoG,WAAWz1B,QAAQqvB,KAAK;AAC3C,gBAAIysB,SAASrmB,WAAWpG;AACxB,gBAAI7zB,MAAM,EAAEsV,KAAKgrC,OAAO7hC,OAAOmJ,OAAO04B,OAAO14B,MAC7C;AAAA,qBAAS24B,cAAcD,QAAQ;AAC9B,kBAAIA,OAAOtxC,eAAeuxC,UAAa,GAAA;AACtC,oBAAIA,cAAc,WAAWA,cAAc;AAC1C;AACDvgD,oBAAIugD,UAAAA,IAAcD,OAAOC,UACzB;AAAA,cAAA;AAAA,YACD;AACDhB,gBAAIt7C,KAAKjE,GACT;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AACD,UAAIqgD;AACHtgD,QAAAA,WAAUiL,UAAU,iBAAiB,CAAA,CAAA;AAEtC,UAAIjB,MAAM,CAAA;AACV,eAASxF,IAAI,GAAGA,IAAI27C,OAAO17C,QAAQD,KAAK;AACvC,YAAI3C,SAAQs+C,OAAO37C,CACnBxE;AAAAA,QAAAA,WAAUggD,YAAYn+C,MACtBmI;AAAAA,YAAI9F,KAAKrC,MAAAA;AAAAA,MACT;AACD,aAAOmI;AAAAA,IACP;EAGF;AClFe,WAASkR,SAAOlb,YAG/BA;AAAAA,IAAAA,WAAUygD,OAAOzgD,WAAUk/C,SAASuB,OAAO,EAC1CtB,UAAU,SAASrtC,MAAAA;AAClB,iBAAUA,SAAS,UAAS;AAC3B,eAAO,IAAIqrB,OAAO,kBAAA,EAAoB2I,KAAKh0B,IAC3C;AAAA,MAAA;AAED,aAAO;AAAA,IACP,GACDu2B,OAAM,SAASlR;AACd,UAAIrlB,OAAOqlB,IAAIsT,MAAMtN,OAAO98B,KAAKqgD,UAAQ,WAASrgD,KAAKsgD,OAAM;AAC7D,UAAK7uC,CAAAA,KAAKrN;AAAQ;AAGlBqN,WAAK,KAAGA,KAAK,CAAA,EAAGsY,QAAQ,aAAY;AAGpCtY,WAAK,CAAA,IAAGA,KAAK,CAAGsY,EAAAA,QAAQ,wBAAuB,GAE/CtY;AAAAA,WAAK,CAAGA,IAAAA,KAAK,GAAGsY,QAAQ,gBAAe;AAGvC,UAAIw2B,WAAS;AACb,UAAInW;AACJ,UAAIoW,UAAU1jB,OAAO,QAAM98B,KAAKygD,UAAQ,kBAAgBzgD,KAAK0gD,QAAM,KAAI,GAAA;AACvE,cAAQtW,QAAMoW,QAAQG,KAAKlvC,IAAAA,OAAW,MAAK;AAC1C,YAAI5L,IAAE,CAAA;AACN,YAAI+6C;AACJ,YAAIC,UAAU;AACd,gBAAQD,QAAMC,QAAQF,KAAKvW,MAAM,CAAA,CAAA,OAAS;AACzCpqC,eAAK8gD,YAAYF,MAAMtoC,SAAAA,GAAWzS;AACnC,YAAIA,EAAE6I,QAAQ7I,EAAE9F;AAAI8F,YAAE9F,KAAK8F,EAAE6I;AAC7B6xC,iBAAS18C,KAAKgC,CACd;AAAA,MAAA;AACD,aAAO06C;AAAAA,IACP,GACDO,aAAY,SAAShqB,KAAIl3B,KACxB;AAAA,UAAIgU,IAAIkjB,IAAI/kB,QAAQ;AACnB,UAAI6B,KAAAA;AAAO;AAEZ,UAAIwG,OAAO0c,IAAIiqB,OAAO,GAAEntC,CAAAA,EAAG+O;AAC3B,UAAItE,QAAQyY,IAAIiqB,OAAOntC,IAAE,CAAGmW,EAAAA,QAAQ,QAAO,GAAKA,EAAAA,QAAQ,YAAW,EACnE;AAAA,UAAI3P,QAAM;AACTA,eAAK;AAAA,eACGA,QAAM,WAAU;AACxBA,eAAO;AACPiE,gBAAQre,KAAKw5B,WAAWnb,OAAM,GAAE,CAAA;AAAA,MAChC,WACQjE,QAAM,SAAQ;AACtBA,eAAO;AACPiE,gBAAQre,KAAKw5B,WAAWnb,OAAM,GAAE,CAAA;AAAA,MAChC;AACDze,UAAIwa,IAAAA,IAAMiE;AAAAA,IACV,GACDmb,YAAW,SAASnb,OAAM2iC,IAAGC,IAC5B;AAAA,UAAI9sC,IAAIkK,MAAM/Y,MAAM,GAEpB;AAAA,UAAI47C,UAAU;AACd,UAAI/sC,EAAE,CAAG,GAAA;AACR6sC,aAAG7sC,EAAE,CAAA,EAAG4sC,OAAO,GAAE;AACjBE,aAAG9sC,EAAE,GAAG4sC,OAAO,GAAE;AACjBG,kBAAa/sC,CAAAA,EAAAA,EAAE,CAAG,EAAA,CAAA,KAAM;AAAA,MACxB;AACD,UAAIwZ,KAAKxZ,EAAE,CAAA,EAAG4sC,OAAO,GAAE,CAAA;AACvB,UAAII,KAAKnrB,SAAS7hB,EAAE,CAAA,EAAG4sC,OAAO,GAAE,CAAA,GAAG,MAAI;AACvC,UAAI1rB,KAAKlhB,EAAE,GAAG4sC,OAAO,GAAE;AAEvB,UAAGphD,WAAU+B,OAAOgvC,cAAcwQ,SAAQ;AACzC,eAAO,IAAI18C,KAAKA,KAAKgoC,IAAI7e,IAAGwzB,IAAG9rB,IAAG2rB,IAAGC,EAAAA,CAAAA;AAAAA,MACxC,OAAO;AACJ,eAAO,IAAIz8C,KAAKmpB,IAAGwzB,IAAG9rB,IAAG2rB,IAAGC,EAC5B;AAAA,MAAA;AAAA,IACD,GACDZ,SAAQ,mBACRI,SAAQ,gBACRC,OAAM,cACNJ,OAAM;EAGP;ACjFe,WAAQc,gBAACzhD,YAAAA;AACvB,YAAO,WACN;AAAA,UAAI4I,MAAM,CAAA;AACV,eAAS4T,KAAKnc,KAAKkzC,SAAQ;AAC1B,YAAI1sC,KAAKxG,KAAKkzC,QAAQ/2B,CAAAA;AACtB,YAAI3V,GAAGzG,GAAGuY,SAAWvG,EAAAA,QAAQ,YAAW;AACvCxJ,cAAI/B,GAAGzG,EAAAA,IAAMyG;AAAAA,QACb;AAAA,MACD;AACD,aAAO+B;AAAAA,IACP,GAAEsa,KAAKljB,UAAAA;AAAAA,EACT;ACNe,WAASkb,SAAOlb;AAE/BA,IAAAA,WAAUwzC,UAAU,CAAA;AACpBxzC,IAAAA,WAAUqzB,QAAQ,SAAS0U,MAAK3S,MAC/B2S;AAAAA,MAAAA,OAAMA,QAAO1nC,KAAKqhD;AAElB,UAAI3Z,CAAAA,MAAI;AAEP;AAAA,MACA;AAEDA,MAAAA,SAAQA,KAAI31B,QAAQ,aAAa,MAAM,OAAO,gBAAe,oBAAKvN,QAAQmqB,kBAAAA;AAC1E,UAAI3uB,KAAK0B,OAAO4/C;AAAkB5Z,QAAAA,QAAO,UAAU1nC,KAAK0O,IAAAA;AACxD,UAAIsmB;AACJD,aAAOA,QAAQ/0B,KAAK6U;AACpB,eAAS0sC,aAAaC,UAAAA;AACrB7hD,QAAAA,WAAU8hD,QAAQD;AAClB7hD,QAAAA,WAAUiL,UAAU,aAAa,CACjC,CAAA;AAAA,MAAA;AACD,UAAI5K,KAAK+yB,YAAY;AACpB,YAAI2uB,KAAK1hD,KAAKqzB,UAAU+e;AAExBrd,eAAO/0B,KAAKmD,KAAKnD,KAAK+yB,aAAa,QAAU,EAAA,IAAIvuB,KAAKuwB,KAAKhwB,QAAAA,CAAAA,CAAAA;AAC3D,eAAOgwB,OAAO/0B,KAAKoM;AAAW2oB,iBAAO/0B,KAAKmD,KAAKC,IAAI2xB,UAAU/0B,KAAK+yB;AAClEiC,aAAKD;AAEL,YAAI4sB,aAAa;AACjB,eAAO3sB,KAAKh1B,KAAKmM,WAAW;AAC3B6oB,eAAKh1B,KAAKmD,KAAKC,IAAI4xB,IAAI,GAAGh1B,KAAK+yB,UAAAA;AAC/B,cAAI/yB,KAAKmzC,QAAQuO,GAAG3sB,IAAU4sB,CAAAA,KAAAA;AAC7B5sB,mBAAO/0B,KAAKmD,KAAKC,IAAI2xB,MAAM,GAAG/0B,KAAK+yB,UAAAA;AAAAA;AAAkB4uB,yBAAa;AAAA,QACnE;AAED,YAAIC,UAAU5sB;AACd,WAAG;AACFA,eAAK4sB;AACLA,oBAAU5hD,KAAKmD,KAAKC,IAAI4xB,QAAQh1B,KAAK+yB,UACxC;AAAA,QAAA,SAAW6uB,UAAU7sB,QAAQ/0B,KAAKmzC,QAAQuO,GAAGE,OAAAA,CAAAA;AAE3C,YAAI5sB,MAAMD;AACT,iBAAO;AAERp1B,QAAAA,WAAUmoC,KAAK0B,IAAI9B,OAAM,WAAWga,GAAG3sB,QAAQ,SAAS2sB,GAAG1sB,EAAKusB,GAAAA,YAAAA;AAEhE,eAAOxsB,OAAOC,IAAI;AACjBh1B,eAAKmzC,QAAQuO,GAAG3sB,IAAS,CAAA,IAAA;AACzBA,iBAAO/0B,KAAKmD,KAAKC,IAAI2xB,MAAM,GAAG/0B,KAAK+yB,UAAAA;AAAAA,QACnC;AAAA,MACH,OAAQ;AACNpzB,QAAAA,WAAUmoC,KAAK0B,IAAI9B,MAAK6Z,YAAAA;AAAAA,MACxB;AAGDvhD,WAAK4K,UAAU,SAAS,CACxB5K,CAAAA;AAAAA,WAAK4K,UAAU,eAAe;AAC9B,aAAO;AAAA,IACR;AAEAjL,IAAAA,WAAUk/C,WAAW,CAAA;AAGZgD,aAACliD,UAAAA;AACAmiD,aAACniD,UACDoiD;AAAAA,aAACpiD;AAEXA,IAAAA,WAAU8hD,UAAU,SAAUzC,QAC7Bh/C;AAAAA,WAAK4K,UAAU,iBAAiB;AAEhC,UAAIjB;AACJ,UAAI6M,QAAQ;AAEZ,UAAIwrC,cAAc;AAClB,eAAQ79C,KAAKnE,KAAK6+C,UAAS;AAC1B,YAAIoD,SAASjiD,KAAK6+C,SAAS16C,CAAAA;AAC3B,YAAG89C,OAAOnD,SAASE,OAAO1U,OAAOjuB,cAAc2iC,OAAO1U,MAAAA,GAAQ;AAC7D,cACC;AAAA,gBAAIsW,QAAQ5B,OAAO1U,OAAOjuB;AAC1B,gBAAGlY,MAAM,OAAM;AACdy8C,sBAAQ5B;AAAAA,YACR;AACDr1C,kBAAMs4C,OAAOja,MAAM4Y,KACnB;AAAA,gBAAA,CAAIj3C,KAAI;AACP6M,sBAAQ;AAAA,YACR;AAAA,UACD,SAAM3Q,GAAAA;AACN2Q,oBAAQ;AAAA,UACR;AACDwrC,wBAAc;AACd;AAAA,QACA;AAAA,MACD;AAED,UAAA,CAAIA,aAAY;AACf,YAAGhiD,KAAKkiD,YAAYliD,KAAKA,KAAKkiD,QAAAA,GAAU;AACvC,cACCv4C;AAAAA,kBAAM3J,KAAKA,KAAKkiD,UAAUla,MAAMgX,OAAO1U,OAAOjuB,YAC9C;AAAA,UAAA,SAAOxW,GACP2Q;AAAAA,oBAAQ;AAAA,UACR;AAAA,QACJ,OAAO;AACJA,kBAAQ;AAAA,QACR;AAAA,MACD;AAED,UAAGA,SAAUwoC,OAAO1U,OAAO9B,UAAUwW,OAAO1U,OAAO9B,UAAU,KAAK;AACjExoC,aAAK4K,UAAU,eAAe,CAACo0C,OAAO1U,MAAAA,CAAAA;AACtC3gC,cAAM,CACN;AAAA,MAAA;AAED3J,WAAKmiD,iBAAiBx4C,GAAAA;AAGtB3J,WAAK4K,UAAU,SAAS,CACxB5K,CAAAA;AAAAA,WAAK4K,UAAU,WAAW,CAAA,CAAA;AAAA,IAC3B;AACAjL,IAAAA,WAAUwiD,mBAAmB,SAASx4C,KACrC3J;AAAAA,WAAKksB,WAAW;AAChBlsB,WAAKg1C,cAAc;AACnB,eAAS7wC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAKnE,CAAAA,KAAK4K,UAAU,kBAAkB,CAACjB,IAAIxF,CAAM,CAAA,CAAA;AAAA;AACjDnE,aAAKmH,SAASwC,IAAIxF,CAClB,CAAA;AAAA,MAAA;AACDnE,WAAKg1C,cAAc;AACnB,UAAIh1C,KAAKizB;AAAcjzB,aAAK2X,iBAAAA;AAE5B3X,WAAKksB,WAAW;AAChB,UAAIlsB,KAAKoiD;AAAapiD,aAAKoiD,YAC3BpiD;AAAAA,WAAKoiD,cAAc;AAAA,IACpB;AACAziD,IAAAA,WAAUggD,cAAc,SAASn+C,QAChCA;AAAAA,MAAAA,OAAMsF,OAAQtF,OAAMsF,QAAQtF,OAAM6gD,aAAc;AAChD7gD,MAAAA,OAAMuB,aAAapD,WAAU2iD,WAAW9gD,OAAMuB;AAC9CvB,MAAAA,OAAMwB,WAAWrD,WAAU2iD,WAAW9gD,OAAMwB,QAC7C;AAAA,IAAA;AAEArD,IAAAA,WAAU2iD,aAAa,SAASn/C;AAC/B,UAAIA,CAAAA;AACH,eAAO;AACR,iBAAWA,QAAQ,UAAU;AAC5B,eAAOxD,WAAU6xC,SAASC,UAAUtuC,IAAAA;AAAAA,MACpC;AACI,eAAO,IAAIqB,KAAKrB,IAAAA;AAAAA,IACtB;AAEA,UAAMo/C,sBAAsBC,gBAAmB7iD,UAC/CA;AAAAA,IAAAA,WAAUkoC,YAAY,WAAA;AACrB,YAAM4a,UAAU,CAAA;AAChB,YAAMC,YAAYH,oBAAAA;AAClB,eAASpmC,KAAKumC,WAAU;AAEvB,cAAMC,gBAAgB,CAAA;AACtB,YAAIn8C,KAAKk8C,UAAUvmC,CAEnB;AAAA,iBAAQjH,OAAO1O,IAAG;AACjB,cAAI0O,IAAImuB,OAAO,CAAA,KAAM,OAAOnuB,IAAImuB,OAAO,CAAM,KAAA,KAAI;AAChD;AAAA,UACA;AAED,cAAIuf;AACJ,gBAAMC,WAAWr8C,GAAG0O,GAAAA;AACpB,cAAGvV,WAAU6Z,MAAMd,OAAOmqC,QAAAA,GAAU;AACnCD,0BAAcjjD,WAAUkZ,QAAQlZ,WAAU0zB,UAAUue,UAAcjyC,IAAAA,WAAU0zB,UAAUue,WAAWiR,QAAAA,IAAYljD,WAAU0zB,UAAUgD,YAAYwsB;UACjJ,OAAQ;AACJD,0BAAcC;AAAAA,UACd;AAEDF,wBAAcztC,GAAAA,IAAO0tC;AAAAA,QACrB;AAEDH,gBAAQ5+C,KAAK8+C,aACb;AAAA,MAAA;AACD,aAAOF;AAAAA,IACR;AAmEA9iD,IAAAA,WAAUqoC,QAAQ,SAASv2B,MAAMzK,MAAAA;AAChChH,WAAKkiD,WAAWl7C;AAChBhH,WAAKyhD,QAAQ,EAACnX,QAAQ,EAACjuB,cAAc5K,KACtC,EAAA,CAAA;AAAA,IAAA;AACA9R,IAAAA,WAAUmjD,OAAO,SAASpb,MAAKtxB,MAAAA;AAC9B,iBAAWA,QAAQ,UAAU;AAC5BpW,aAAKkiD,WAAW9rC;AAChBA,eAAOnC,UAAU,CAAA;AAAA,MACjB;AAEDjU,WAAKqhD,YAAY3Z;AACjB1nC,WAAKoiD,cAAchsC;AACnBpW,WAAKgzB,MAAM0U,MAAK1nC,KAAK6U;IACtB;AAEAlV,IAAAA,WAAUojD,cAAc,SAAStjD,MAAAA;AAChC,UAAIA,QAAQ;AAAOA,eAAO;AAC1BO,WAAK+yB,aAAatzB;AAAAA,IACnB;AAEAE,IAAAA,WAAUm6B,aAAa,SAAS1f,MAAM4oC,OAAAA;AACrC,UAAIA,OAAO;AACVhjD,aAAK85B,WAAW1f,QAAQ4oC,MAAM/0C,MAAM;AACpC,eAAOjO,KAAK85B,WAAW1f,IAAAA;AAAAA,MACvB;AACDpa,WAAK85B,WAAW1f,QAASpa,KAAK85B,WAAW1f,SAAS,CAClD;AAAA,aAAOpa,KAAK85B,WAAW1f;IACxB;AACAza,IAAAA,WAAU+/C,YAAY,CAAA;AAEtB//C,IAAAA,WAAU8/C,iBAAiB,SAAS54B,MACnC;AAAA,UAAI1S,IAAI,CAAA;AACR,eAAShQ,IAAI,GAAGA,IAAI0iB,KAAKyW,WAAWl5B,QAAQD;AAC3CgQ,UAAE0S,KAAKyW,WAAWn5B,CAAGiW,EAAAA,IAAAA,IAAQyM,KAAKyW,WAAWn5B,CAAAA,EAAGka;AAEjD,eAASla,IAAI,GAAGA,IAAI0iB,KAAKhV,WAAWzN,QAAQD,KAAK;AAChD,YAAIgiC,QAAQtf,KAAKhV,WAAW1N,CAAAA;AAC5B,YAAIgiC,MAAMO,YAAY;AACrBvyB,YAAEgyB,MAAMpD,OAAWoD,IAAAA,MAAM9lC,aAAa8lC,MAAM9lC,WAAWi/C,YAAY;AAAA,MACpE;AAED,WAAKnrC,EAAErN;AAAMqN,UAAErN,OAAO+f,KAAKxmB,aAAawmB,KAAKxmB,WAAWi/C,YAAY;AAEpE,aAAOnrC;AAAAA,IACR;AACAxU,IAAAA,WAAUiG,YAAY,SAAS,WAC9B;AAAA,UAAI5F,KAAK0B,OAAOuhD,iBAAiB,MAAM;AACtC,YAAI9uC;AACJA,YAAInU,KAAK0B,OAAOuhD,eAAepjD,SAASC,cAAc,KAAA;AACtDqU,UAAEtD,YAAY;AACdsD,UAAE7R,MAAME,OAAO2O,KAAKI,OAAOvR,KAAKkmB,KAAK,OAAO,KAAK;AACjD/R,UAAE7R,MAAMC,MAAM4O,KAAKI,OAAOvR,KAAKkjD,KAAK,MAAM,CAAA,IAAK;AAC/CljD,aAAKskB,KAAKlkB,YAAY+T,CAAAA;AAAAA,MACtB;AAAA,IACF,CACAxU;AAAAA,IAAAA,WAAUiG,YAAY,SAAS,WAAA;AAC9B,UAAIuO,IAAInU,KAAK0B,OAAOuhD;AACpB,UAAI9uC,KAAYA,OAAAA,KAAK,UAAU;AAC9B,YAAGA,EAAE1G,YAAY;AAChB0G,YAAE1G,WAAWC,YAAYyG,CACzB;AAAA,QAAA;AACDnU,aAAK0B,OAAOuhD,eAAe;AAAA,MAC3B;AAAA,IACF,CAAA;AAAA,EAGA;ACtTe,WAASpoC,SAAOlb,YAE/BA;AAAAA,IAAAA,WAAUwjD,qBAAqB,CAAA;AAC/BxjD,IAAAA,WAAUyjD,cAAc,SAAShpC,MAChC;AAAA,UAAI1Y,SAAS1B,KAAK0B,OAAOg4B,SAAS72B;AAClC,UAAIsB,IAAI;AACR,WAAKA,GAAGA,IAAIzC,OAAO0C,QAAQD,KAAK;AAC/B,YAAIzC,OAAOyC,GAAGiW,QAAQA,MAAM;AAC3B;AAAA,QACA;AAAA,MACD;AAED,UAAIjW,MAAMzC,OAAO0C,QAAQ;AAExB,eAAO;AAAA,MACP;AAED,UAAIiC,UAAU3E,OAAOyC,CAAAA;AACrB,WAAKxE,WAAU8mB,WAAW;AACzB9mB,QAAAA,WAAU0jD,YAAAA;AAAAA,MACV;AACD,UAAIx/B,SAASlkB,WAAU8mB,UAAUzH,cAAc,IAAI3Y,QAAQtG;AAC3D,UAAI8mB,OAAOhD,OAAOoiB;AAElB,UAAIhtB,SAAS,EACZ5S,SACAwd,QACAgD,MACAy8B,UAAS,SAAS98C;AACjB,eAAO7G,WAAU4jD,YAAYl9C,QAAQW,IAAAA,EAAMw8C,UAAU38B,MAAOrgB,MAAI,IAAKH;MACrE,GACDo9C,UAAS,SAASplC,OAAO7X,IAAAA;AACxB,eAAO7G,WAAU4jD,YAAYl9C,QAAQW,IAAAA,EAAM08C,UAAU78B,MAAMxI,OAAQ7X,MAAI,CAAE,GAAGH;MAC5E,EAGF;AAAA,UAAIwX,UAAUle,WAAUwjD,mBAAmB,SAAO98C,QAAQW,OAAK,UAC/D;AAAA,aAAO6W,UAAQA,QAAQ5E,MAAAA,IAAQA;AAAAA,IAChC;AACAtZ,IAAAA,WAAUwjD,mBAAmBQ,uBAAuB,SAAS1qC,QAC5DA;AAAAA,aAAO2qC,UAAU3qC,OAAO4N;AACxB,aAAO5N;AAAAA,IACR;AACAtZ,IAAAA,WAAUwjD,mBAAmBU,qBAAqB,SAAS5qC;AAC1DA,aAAO2qC,UAAU3qC,OAAO4N,KAAKQ,qBAAqB,QAAU,EAAA,CAAA;AAC5D,aAAOpO;AAAAA,IACR;AACAtZ,IAAAA,WAAUwjD,mBAAmBW,uBAAuB,SAAS7qC,QAAAA;AAC5DA,aAAO2qC,UAAU3qC,OAAO4N,KAAKQ,qBAAqB,UAAA,EAAY;AAC9D,aAAOpO;AAAAA,IACR;AACAtZ,IAAAA,WAAUwjD,mBAAmBY,mBAAmB,SAAS9qC;AACxDA,aAAO2qC,UAAU3qC,OAAO4N,KAAKQ,qBAAqB,QAClD;AAAA,aAAOpO;AAAAA,IACR;AAEAtZ,IAAAA,WAAUwjD,mBAAmBa,WAAW,EACvCC,UAAU,EACTnzC,QAAO,GAERmzB,GAAAA,UAAU,EACTnzB,QAAQ,IAAA,GAET6X,QAAQ,EACP7X,QAAQ,MAETozC,MAAM,EACLpzC,QAAQ,GAAA,EAAA;AAKVnR,IAAAA,WAAU4jD,cAAY,EACrBU,UAAS,EACR78C,QAAQ,SAAS+8C,KAChB;AAAA,aAAO;AAAA,IACP,GACDT,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG9E,QAAAA;AAChCmlB,WAAK3mB,YAAYme,SAAO;AAAA,IACxB,GACDmlC,WAAU,SAAS38B,MAAKrgB,IAAG9E,QAC1B;AAAA,aAAOmlB,KAAK3mB,aAAW;AAAA,IACvB,GACDm6B,OAAO,SAASxT,MACf;AAAA,IAAA,EAAA,GAEFod,UAAS,EACR78B,QAAO,SAAS+8C,KACf;AAAA,YAAMC,cAAcD,IAAIC,cAAc,gBAAgBD,IAAIC,iBAAiB;AAC3E,aAAO,wCAAwCA,WAC/C;AAAA,IAAA,GACDV,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAAA;AAC7B7G,MAAAA,WAAU4jD,YAAYtf,SAASogB,WAAWx9B,IAAMxI,EAAAA,QAAMA,SAAO;AAAA,IAC7D,GACDmlC,WAAU,SAAS38B,MAAKrgB,IACvB;AAAA,aAAO7G,WAAU4jD,YAAYtf,SAASogB,WAAWx9B,IAAAA,EAAMxI;AAAAA,IACvD,GACDgc,OAAM,SAASxT,MACd;AAAA,UAAI1K,IAAIxc,WAAU4jD,YAAYtf,SAASogB,WAAWx9B;AAClDlnB,MAAAA,WAAUy6B,OAAOje,GAAG,IACpB;AAAA,IAAA,GACDkoC,YAAY,SAASx9B,MAAAA;AACpB,aAAOA,KAAKQ,qBAAqB,UAAY,EAAA,CAAA;AAAA,IAC7C,KAEFsB,QAAO,EACNvhB,QAAO,SAAS+8C,KAAAA;AAEf,UAAIjhD,OAAK;AACT,eAASiB,IAAE,GAAGA,IAAIggD,IAAIv8C,QAAQxD,QAAQD;AACrCjB,gBAAM,oBAAkBihD,IAAIv8C,QAAQzD,GAAG+Q,MAAI,OAAKivC,IAAIv8C,QAAQzD,CAAAA,EAAGqjB,QAAM;AACtEtkB,cAAM;AACN,aAAOA;AAAAA,IACP,GACDwgD,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG29C,KAAAA;AAChC,UAAIx7B,SAAS9B,KAAKxmB;AAClB,UAAKsoB,CAAAA,OAAO27B,iBAAiBH,IAAII,UAAU;AAC1C5kD,QAAAA,WAAU6B,MAAMmnB,QAAQ,UAAUw7B,IAAII,QACtC57B;AAAAA,eAAO27B,gBAAgB;AAAA,MACvB;AACD,UAAWjmC,OAAAA,SAAS;AACnBA,iBAASsK,OAAO/gB,QAAQ,CAAI,KAAA,CAAE,GAAEyW;AACjCsK,aAAOtK,QAAMA,SAAO;AAAA,IACpB,GACDmlC,WAAU,SAAS38B,MAAKrgB,IAAAA;AACvB,aAAOqgB,KAAKxmB,WAAWge;AAAAA,IACvB,GACDgc,OAAM,SAASxT,MAAAA;AACd,UAAI1K,IAAE0K,KAAKxmB;AAAYV,MAAAA,WAAUy6B,OAAOje,GAAG,IAAA;AAAA,IAC3C,KAEF+nC,MAAK,EACJ98C,QAAO,SAAS+8C,KAAAA;AACf,WAAKA,IAAIK,aAAa;AAErBL,YAAIK,cAAc,CAAC,SAAS,MAAM,MAAM,IAAA;AAAA,MACxC;AAEDL,UAAIM,qBAAqB;AACzB,UAAID,cAAcL,IAAIK;AAEtB,UAAI5gD,MAAMjE,WAAU+B;AACpB,UAAIgjD,KAAK/kD,WAAUwD,KAAKyF,UAAUjJ,WAAUsM;AAC5C,UAAI04C,OAAO,KAAG,IAAI5b,QAAQ;AAC1B,UAAGppC,WAAU+B,OAAOkjD,mBAAkB;AACrCD,eAAO,KAAG/gD,IAAI2I,YAAU;AACxBw8B,gBAAQ,KAAGnlC,IAAI0I;AACfo4C,WAAGj6C,SAAS7G,IAAI0I,UAAAA;AAAAA,MAChB;AACD,UAAIpJ,OAAO;AAEX,eAASiH,IAAI,GAAGA,IAAIq6C,YAAYpgD,QAAQ+F,KAAK;AAC5C,YAAI22B,cAAc0jB,YAAYr6C;AAG9B,YAAIA,IAAI,GAAG;AACVjH,kBAAQ;AAAA,QACR;AACD,YAAI2hD,iBAAiB;AACrB,YAAIj9C,UAAU;AACd,gBAAQk5B,aACP;AAAA,UAAA,KAAK;AACJ+jB,6BAAiB;AACjBV,gBAAIM,mBAAmB,KAAKt6C;AAE5B,gBAAI26C;AACJ,gBAAIC;AACJ,gBAAIC;AACJ,gBAAGb,IAAIc,YAAW;AACjB,kBAAK99B,CAAAA,MAAMg9B,IAAIc,UAAa,GAAA;AAC3BH,gBAAAA,SAAQX,IAAIc;AAAAA,cACpB,WAAkBd,IAAIc,WAAWphD,MAAM;AAE/BkhD,6BAAaZ,IAAIc,WAAW,CAC5BD;AAAAA,2BAAWb,IAAIc,WAAW;cAC1B;AAAA,YACD;AAEDH,YAAAA,SAAQA,UAAS;AACjB,gBAAI3xC,SAASA,UAAUhC,KAAK8D,MAAM6vC,SAAQ,CAC1CC;AAAAA,yBAAaA,cAAcL,GAAG/rC,YAAAA,IAAgBxF;AAC9C6xC,uBAAWA,YAAYD,aAAaD;AAEpC,qBAAS3gD,IAAI4gD,YAAY5gD,IAAI6gD,UAAU7gD;AACtCyD,yBAAW,oBAAiB,IAAS,OAAQ,IAAK;AACnD;AAAA,UACD,KAAK;AACJi9C,6BAAiB;AACjBV,gBAAIM,mBAAmB,CAAKt6C,IAAAA;AAE5B,qBAAShG,IAAE,GAAGA,IAAI,IAAIA;AACrByD,yBAAS,oBAAkBzD,IAAE,OAAKnE,KAAKynB,OAAOtkB,KAAKyoC,WAAWznC,CAAG,IAAA;AAClE;AAAA,UACD,KAAK;AACJ0gD,6BAAiB;AACjBV,gBAAIM,mBAAmB,CAAA,IAAKt6C;AAE5B,qBAAShG,IAAE,GAAGA,IAAI,IAAIA;AACrByD,yBAAS,oBAAkBzD,IAAE,OAAKA,IAAE;AACrC;AAAA,UACD,KAAK;AACJ0gD,6BAAiB;AACjBV,gBAAIM,mBAAmB,CAAA,IAAKt6C;AAE5B,gBAAIhG,IAAI4kC;AACR,gBAAImc,QAAQR,GAAGt7C,QAAAA;AACf+6C,gBAAIgB,eAAe,CAAA;AAEnB,mBAAMhhD,IAAEwgD,MAAK;AACZ,kBAAIT,OAAKlkD,KAAKqzB,UAAU6e,YAAYwS,EACpC98C;AAAAA,yBAAS,oBAAkBzD,IAAE,OAAK+/C,OAAK;AACvCC,kBAAIgB,aAAathD,KAAKM;AACtBugD,iBAAGz4B,QAAQy4B,GAAG3/C,QAAU/E,IAAAA,KAAK0B,OAAOqqB,YAAU,KAAG,GACjD;AAAA,kBAAIgD,OAAQ21B,GAAGt7C,QAAAA,KAAW87C,QAAO,IAAE;AACnC/gD,kBAAE4qB,OAAK,KAAG,KAAG21B,GAAGr4C,aAAW,KAAGq4C,GAAG/2C;YACjC;AACD;AAAA,QAAA;AAGF,YAAG/F,SAAQ;AAEV,cAAIw9C,YAAYzlD,WAAUgoB,SAASkZ,yBAAyBC;AAC5D,cAAInX,YAAWw6B,IAAIx6B,WAAW,wBAAwB;AACtDzmB,kBAAQ,oBAAkB2hD,iBAAe,OAAKl7B,YAAWy7B,YAAU,MAAIx9C,UAAQ;AAAA,QAC/E;AAAA,MACD;AAGD,aAAO,mCAAiC1E,OAAK,mHAAiHA,OAAK;AAAA,IACnK,GACDwgD,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG9E;AAChC,UAAIkC,MAAMjE,WAAU+B;AACpB,UAAI+H,IAAEod,KAAKQ,qBAAqB,QAChC;AAAA,UAAI5hB,MAAM/D,OAAO+iD;AACjB,UAAI1hD,YAAYC;AAEhB,UAAGY,IAAIyhD,UAAU;AAChB,YAAA,CAAKx+B,KAAKy+B,WAAU;AACnB,cAAIpiD,OAAO,qFAAmFvD,WAAU8nB,OAAOC,OAAO29B,WAAS;AAC/H,eAAK1lD,WAAU+B,OAAOouC;AACrB5sC,mBAAO2jB,KAAK83B,gBAAgBz+C,YAAUgD;AACvC2jB,eAAK83B,gBAAgBz+C,YAAUgD;AAC/B2jB,eAAKy+B,YAAU;AAAA,QACf;AACD,YAAIthB,QAAMnd,KAAK83B,gBAAgBt3B,qBAAqB,SAAS,CAC7D2c;AAAAA,cAAMuhB,UAAW5lD,WAAUwD,KAAK8sB,UAAUzpB,GAAGzD,UAAAA,MAAc,KAAKpD,WAAUwD,KAAK8sB,UAAUzpB,GAAGxD,cAAY;AAExGyG,UAAEhE,IAAI,CAAI+/C,CAAAA,EAAAA,WAASxhB,MAAMuhB;AACzB97C,UAAGhE,IAAI,CAAA,IAAKgE,EAAErF,SAAO,CAAA,EAAIohD,WAASxhB,MAAMuhB;AAExC,YAAIvhB,CAAAA,MAAMvmB,iBAAgB;AACzBumB,gBAAMvmB,kBAAkB;AAEvB9d,UAAAA,WAAU6B,MAAMwiC,OAAO,SAAS,WAChC;AAAA,gBAAGA,MAAMuhB,SAAS;AACjB,kBAAI3lD,MAAM,CAAA;AACVD,cAAAA,WAAU4jD,YAAYW,KAAKV,UAAU38B,MAAKjnB,KAAI8B,MAAAA;AAE9CqB,2BAAapD,WAAUwD,KAAKyF,UAAUhJ,IAAImD,UAAAA;AAC1CC,yBAAWrD,WAAUwD,KAAKyF,UAAUhJ,IAAIoD,QAExC;AAAA,kBAAA,CAAKA,aAAaD,cAAgBC,CAAAA,YAAAA,CAAaD,eAAeyD,GAAGxD,SAASqJ,SAAe,MAAA,KAAK7F,GAAGxD,SAAS2K,WAAAA,MAAiB;AAC1H3K,2BAAWrD,WAAUwD,KAAKC,IAAIJ,UAAU,GAAG,KAAA;AAAA,YACnD,OAAW;AACJD,2BAAa;AACbC,yBAAW;AAAA,YACX;AAEDyG,cAAEhE,IAAI,CAAI+/C,CAAAA,EAAAA,WAASxhB,MAAMuhB;AACzB97C,cAAGhE,IAAI,CAAKgE,IAAAA,EAAErF,SAAO,CAAA,EAAIohD,WAASxhB,MAAMuhB;AAExCE,kCAAsBh8C,GAAE,GAAE1G,cAAYyD,GAAGzD,UAAAA;AACzC0iD,kCAAsBh8C,GAAE,GAAEzG,YAAUwD,GAAGxD;UAC7C,CACK;AAAA,QAAA;AAAA,MACD;AAED,UAAGY,IAAI8hD,iBAAiB9hD,IAAIkoB,gBAAgB;AAC3C,YAAI65B,0BAA0B,WAE7B;AAAA,cAAA,EAAM/hD,IAAI8hD,iBAAiB9hD,IAAIkoB,iBAAgB;AAE9C;AAAA,UACA;AACD/oB,uBAAa,IAAIyB,KAAKiF,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,OAAM5U,EAAEhE,IAAI,IAAI4Y,OAAM5U,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,OAAM,GAAE5U,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,KAAAA;AAClFrb,qBAAW,IAAIwB,KAAKzB,WAAWy3B,QAAa76B,IAAAA,WAAU+B,OAAOoqB,iBAAiB,KAAK,GACnF25B;AAAAA,gCAAsBh8C,GAAG,GAAGzG,QAAAA;AAAAA,QACjC;AACI,iBAAQmB,IAAE,GAAGA,IAAE,GAAGA,KAAK;AACtB,cAAIsF,CAAAA,EAAEtF,GAAGsZ,iBAAiB;AACzBhU,cAAEtF,CAAGsZ,EAAAA,kBAAkB;AACvB9d,YAAAA,WAAU6B,MAAMiI,EAAEtF,CAAAA,GAAI,UAAUwhD,uBAChC;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAED,eAASF,sBAAsBh8C,IAAEtF,IAAEyP,GAClC;AAAA,YAAIgyC,cAAclkD,OAAOyjD;AACzB,YAAIU,eAAejyC,EAAEvH,SAAW,IAAA,KAAGuH,EAAEjG,WACrC;AAAA,YAAIm4C,cAAcD;AAClB,YAAIE,cAAc;AAClB,iBAAS/2C,IAAE,GAAGA,IAAE42C,YAAYxhD,QAAQ4K,KAAK;AACxC,cAAIg3C,MAAMJ,YAAY52C,CACtB;AAAA,cAAIg3C,QAAQH,cAAc;AACzBE,0BAAc;AACd;AAAA,UACA;AACD,cAAIC,MAAMH;AACTC,0BAAcE;AAAAA,QACf;AAEDv8C,QAAAA,GAAEtF,KAAEsB,IAAI,CAAA,CAAA,EAAI4Y,QAAM,cAAcwnC,eAAaC;AAC7C,YAAA,EAAKC,eAAeD,cAAa;AAChCr8C,UAAAA,GAAEtF,KAAEsB,IAAI,IAAIwgD,gBAAiB;AAAA,QAC7B;AACDx8C,QAAAA,GAAEtF,KAAEsB,IAAI,CAAA,CAAA,EAAI4Y,QAAMzK,EAAExK,QAAAA;AACpBK,QAAAA,GAAEtF,KAAEsB,IAAI,CAAI4Y,CAAAA,EAAAA,QAAMzK,EAAEgF,SACpBnP;AAAAA,QAAAA,GAAEtF,KAAEsB,IAAI,CAAA,CAAA,EAAI4Y,QAAMzK,EAAE+E,YAAAA;AAAAA,MACpB;AAED8sC,4BAAsBh8C,GAAE,GAAEjD,GAAGzD;AAC7B0iD,4BAAsBh8C,GAAE,GAAEjD,GAAGxD,QAAAA;AAAAA,IAC7B,GACDwgD,WAAU,SAAS38B,MAAMrgB,IAAI9E;AAC5B,UAAI+H,IAAIod,KAAKQ,qBAAqB,QAAA;AAClC,UAAI5hB,MAAM/D,OAAO+iD;AAEjBj+C,SAAGzD,aAAW,IAAIyB,KAAKiF,EAAEhE,IAAI,CAAA,CAAA,EAAI4Y,OAAM5U,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,OAAM5U,EAAEhE,IAAI,CAAA,CAAA,EAAI4Y,OAAM,GAAE5U,EAAEhE,IAAI,CAAA,CAAA,EAAI4Y;AACnF7X,SAAGxD,WAAS,IAAIwB,KAAKiF,EAAEhE,IAAI,CAAG,IAAA,CAAA,EAAG4Y,OAAM5U,EAAEhE,IAAI,CAAG,IAAA,CAAA,EAAG4Y,OAAM5U,EAAEhE,IAAI,KAAG,CAAG4Y,EAAAA,OAAM,GAAE5U,EAAEhE,IAAI,CAAG,IAAA,CAAA,EAAG4Y;AAEzF,UAAK5U,EAAAA,EAAEhE,IAAI,CAAI4Y,CAAAA,EAAAA,SAAS5U,EAAEhE,IAAI,KAAG,CAAG4Y,EAAAA,QAAO;AAE1C,YAAI6nC,WAAWvmD,WAAUmG,SAASnG,WAAUwpB,YAC5C;AAAA,YAAG+8B,UAAS;AACX1/C,aAAGzD,aAAamjD,SAASnjD;AACzByD,aAAGxD,WAAWkjD,SAASljD;AAAAA,QACvB;AAAA,MACD;AAED,UAAIwD,GAAGxD,YAAUwD,GAAGzD;AACnByD,WAAGxD,WAASrD,WAAUwD,KAAKC,IAAIoD,GAAGzD,YAAWpD,WAAU+B,OAAOqqB,WAAU,QAAA;AACzE,aAAO,EACNhpB,YAAY,IAAIyB,KAAKgC,GAAGzD,UACxBC,GAAAA,UAAU,IAAIwB,KAAKgC,GAAGxD,QAEvB,EAAA;AAAA,IAAA,GACDq3B,OAAM,SAASxT;AACdlnB,MAAAA,WAAUy6B,OAAOvT,KAAKQ,qBAAqB,QAAA,EAAU;IACrD,EAOF,EAAA;AAAA,aAAS8+B,kBACR;AAAA,YAAMC,iBAAiBzmD,WAAU+B,OAAOkrC,QAAQ;AAChD,YAAMyZ,0BAA0BplD,OAAO,MAAA,KAAA,CAAA,CAAaA,OAAO,IAAA,KAASA,OAAO,MAAY,KAAA,sBAAsBpB,SAASM;AACtH,UAAIimD,kBAAkBC,uBAAuB;AAC5C,eAAO1mD,WAAUihB;AAAAA,MACpB,OAAS;AACN,eAAO/gB,SAASM;AAAAA,MAChB;AAAA,IACD;AAEFR,IAAAA,WAAU+mB,iBAAiB,SAASyb;AACnC,UAAIA,CAAAA,KAAI;AACP;AAAA,MACA;AAEDA,UAAI7/B,MAAMC,MAAM4O,KAAK5C,IAAI43C,kBAAkBrlC,eAAe,IAAIqhB,IAAIrhB,eAAa,GAAG,KAAK;AACvFqhB,UAAI7/B,MAAME,OAAO2O,KAAK5C,IAAI43C,gBAAAA,EAAkBnlC,cAAc,IAAImhB,IAAInhB,cAAY,GAAG,CAAA,IAAK;AAAA,IAEvF;AAEArhB,IAAAA,WAAU2mD,YAAU,SAASnkB;AAC5B,UAAIA,KAAI;AACPA,YAAI7/B,MAAMod,UAAQ;AAElB1f,aAAK0mB,eAAeyb,GAAAA;AAAAA,MACpB;AACD,UAAGxiC,WAAU+B,OAAO0uC,qBAAoB;AACvCvwC,iBAASmgB,gBAAgBtD,UAAUtZ,IAAI,4BAAA;AACvC+iD,0BAAkBzpC,UAAUtZ,IAAI;MAChC;AACDpD,WAAKumD,WACLvmD;AAAAA,WAAKwmD,OAAOlkD,MAAMod,UAAU;AAAA,IAC7B;AACA/f,IAAAA,WAAU0rB,eAAa,SAAStrB,KAAAA;AAC/B,UAAKA,CAAAA;AAAI;AACT,UAAKC,CAAAA,KAAK4K,UAAU,oBAAmB,CAAC7K,OAAM;AAC7C,YAAIC,KAAKopB;AACRppB,eAAKopB,aAAa;AACnB;AAAA,MACA;AACDppB,WAAKsmD,UAAUnkB,GACf;AAAA,UAAIA,MAAMniC,KAAKqjD;AACfrjD,WAAK0mB,eAAeyb;AACpBniC,WAAKymD,eAAe1mD,KAAGoiC,GACvBniC;AAAAA,WAAK2nB,SAASmY,oBAAoBqC;AAElCniC,WAAK4K,UAAU,cAAa,CAAC7K,GAAAA,CAAAA;AAAAA,IAC9B;AACAJ,IAAAA,WAAU8mD,iBAAiB,SAAS1mD,KAAIoiC;AACvC,UAAI37B,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,UAAI0J,IAAI04B,IAAI9a,qBAAqB,MAAA;AACjC,UAAIsZ,iBAAiB,CAAA;AAErB,UAAIhhC,WAAU0zB,UAAUqzB,iBAAiB;AACxC/lB,uBAAe98B,KAAK,EAAA;AACpB,YAAI8iD,gBAAgBhnD,WAAU0zB,UAAUqzB,gBAAgBlgD,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EACpFm6B;AAAAA,uBAAe98B,KAAK8iD,aACpBl9C;AAAAA,UAAE,GAAGvJ,YAAY;AACjBuJ,UAAE,CAAGvJ,EAAAA,YAAYymD;AAAAA,MACnB,OAAQ;AACN,YAAIC,aAAa5mD,KAAKqzB,UAAUgf,aAAa7rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA;AACzE,YAAIqgD,eAAe7mD,KAAKqzB,UAAUmf,eAAehsC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAO,KAAA,IAAIu6C,OAAO,GAAG,EAAA;AAElGpgB,uBAAe98B,KAAK+iD,UAAAA;AACpBjmB,uBAAe98B,KAAKgjD,WAAAA;AACpBp9C,UAAE,CAAA,EAAGvJ,YAAY0mD;AACjBn9C,UAAE,GAAGvJ,YAAY2mD;AAAAA,MACjB;AAED7mD,WAAK2nB,SAASgZ,eAAewB,KAAMxB,eAAe7wB,KAAK,GAAA,CAAA;AAEvD,UAAIq0C,MAAMnkD,KAAK0B,OAAOg4B,SAAS72B;AAC/B,eAASsB,IAAI,GAAGA,IAAIggD,IAAI//C,QAAQD,KAAK;AACpC,YAAI2iD,cAAc3C,IAAIhgD,CAAAA;AACtB,YAAI0iB,OAAOlnB,WAAUonD,2BAA2BD,WAChD;AAAA,YAAI92C,QAAQhQ,KAAKujD,YAAYuD,YAAY9/C,IAAAA;AACzC,YAAIqX,QAAS7X,GAAGsgD,YAAY1kD,MAAYiM,MAAAA,SAAa7H,GAAGsgD,YAAY1kD,MAAAA,IAAU0kD,YAAYE;AAC1Fh3C,cAAM0zC,UAAUttC,KAAKpW,MAAM6mB,MAAMxI,OAAO7X,IAAIsgD,WAC5C;AAAA,YAAI3C,IAAIhgD,CAAAA,EAAGk2B;AACVrqB,gBAAMqqB,MAAMjkB,KAAKpW,MAAM6mB,IAAAA;AAAAA,MACxB;AAEDlnB,MAAAA,WAAUwpB,eAAeppB;AAAAA,IAC1B;AAEAJ,IAAAA,WAAUonD,6BAA6B,SAAS1gD;AAC/C,aAAO1G,WAAU8mB,UAAUzH,cAAc,IAAI3Y,QAAQtG,EAAAA,EAAAA,EAAMkmC;AAAAA,IAC5D;AAEAtmC,IAAAA,WAAUsnD,gBAAc,SAASzgD,IAAAA;AAChC,UAAI29C,MAAMnkD,KAAK0B,OAAOg4B,SAAS72B;AAC/B,eAASsB,IAAE,GAAGA,IAAIggD,IAAI//C,QAAQD,KAAK;AAClC,YAAI0iB,OAAOlnB,WAAU8mB,UAAUzH,cAAc,IAAImlC,IAAIhgD,CAAGpE,EAAAA,EAAAA,EAAAA;AACxD8mB,eAAMA,OAAKA,KAAKof,cAAYpf;AAC5B,YAAI7W,QAAMhQ,KAAKujD,YAAYY,IAAIhgD,CAAAA,EAAG6C,IAClC;AAAA,YAAIuB,MAAIyH,MAAMwzC,UAAUptC,KAAKpW,MAAK6mB,MAAKrgB,IAAI29C,IAAIhgD,CAAAA,CAAAA;AAC/C,YAAIggD,IAAIhgD,GAAG/B,UAAQ;AAClBoE,aAAG29C,IAAIhgD,CAAAA,EAAG/B,UAAQmG;AAAAA,MACnB;AACD,aAAO/B;AAAAA,IACR;AACA7G,IAAAA,WAAUunD,kBAAgB,SAASz1C,MAClC;AAAA,UAAI1R,MAAGJ,WAAUwpB;AACjB,UAAI3iB,KAAGxG,KAAK8F,SAAS/F,GAAAA;AAGrBC,WAAK+O,WAAWvI,IAAIiL;AAEpBzR,WAAKwzC,SAAShtC,GAAGzG,IAAGyG;AACpBxG,WAAK09C,iBAAiBl3C,IAAG,IACzBxG;AAAAA,WAAK2X;IACN;AACAhY,IAAAA,WAAUwnD,gBAAc,SAASpnD;AAChCJ,MAAAA,WAAUynD,YAAY,OAAOpnD,KAAKqjD,YAAAA,CAAAA;AAAAA,IACnC;AAEA1jD,IAAAA,WAAUq6B,YAAU,SAASmI,KAAAA;AAC5B,UAAIA;AAAKA,YAAI7/B,MAAMod,UAAQ;AAC3B1f,WAAKqnD,WACL;AAAA,UAAG1nD,WAAU+B,OAAO0uC,qBAAoB;AACvCvwC,iBAASmgB,gBAAgBtD,UAAU6X,OAAO;AAC1C4xB,wBAAkBzpC,EAAAA,UAAU6X,OAAO,4BAAA;AAAA,MACnC;AAAA,IACF;AACA50B,IAAAA,WAAU0nD,aAAW,WACpB;AAAA,UAAIrnD,KAAKwmD;AACRxmD,aAAKwmD,OAAO/4C,WAAWC,YAAY1N,KAAKwmD,MAAAA;AACzCxmD,WAAKwmD,SAAO;AAAA,IACb;AAEA7mD,IAAAA,WAAU4mD,aAAW,WACpB;AAAA,UAAGvmD,KAAKwmD,QAAQ;AACf;AAAA,MACA;AAEDxmD,WAAKwmD,SAAO3mD,SAASC,cAAc,KACnCE;AAAAA,WAAKwmD,OAAO31C,YAAU;AACtB7Q,WAAKwmD,OAAOlkD,MAAMod,UAAU;AAE5B/f,MAAAA,WAAU6B,MAAMxB,KAAKwmD,QAAQ,aAAa7mD,WAAU2nD;AACpD3nD,MAAAA,WAAU6B,MAAMxB,KAAKwmD,QAAQ,WAAW7mD,WAAU4nD,WAAAA;AAElDpB,wBAAkB/lD,YAAYJ,KAAKwmD;IACpC;AACA7mD,IAAAA,WAAU6nD,gBAAc,WACvB;AAAA,UAAI/1C,OAAOzR,KAAKinD,cAAc,CAAE,GAAEjnD,KAAK+O,WAAW/O,KAAK8F,SAAS9F,KAAKmpB,YAAAA,CAAAA,CAAAA;AACrE,UAAInpB,KAAK2K,WAAW,aAAmB3K,KAAAA,CAAAA,KAAK4K,UAAU,eAAc,CAAC5K,KAAKmpB,cAAc1X,MAAMzR,KAAKopB,UAAAA,CAAAA;AAClG;AACDppB,WAAKknD,gBAAgBz1C;AACrBzR,WAAKmnD,cAAAA;AAAAA,IACN;AACAxnD,IAAAA,WAAU8nD,gBAAgB,SAAS1nD,KAAIoiC;AACtCniC,WAAKmpB,eAAeppB;AACpBC,WAAK0nD,mBAAmB;AAExB1nD,WAAK2nD,iBAAiB3nD,KAAKymB;AAC3BzmB,WAAKymB,YAAY0b;AACjBniC,WAAKsmD,UAAUnkB,GAAAA;AAAAA,IAChB;AACAxiC,IAAAA,WAAUynD,cAAc,SAAS3nD,MAAM0iC;AACtC,UAAIA,MAAMA,OAAOxiC,WAAU0jD,YAAAA;AAE3B,UAAI7hD,SAAQ7B,WAAUmG,SAAS9F,KAAKmpB;AACpC,UAAG3nB;AACFxB,aAAK09C,iBAAiBl8C,QAAO/B;AAC9B,UAAIA;AACHE,QAAAA,WAAUgY,iBAAAA;AACX3X,WAAKg6B,UAAUmI,GAAAA;AAEf,UAAIniC,KAAK0nD,kBAAiB;AACzB1nD,aAAKymB,YAAYzmB,KAAK2nD;AACtB3nD,aAAK0nD,mBAAmB;AAAA,MACxB;AACD1nD,WAAK2nD,iBAAiB3nD,KAAKmpB,eAAe;AAC1CnpB,WAAK2nB,SAASkY,mBAAmBsC,GACjCniC;AAAAA,WAAK+5B;AACL/5B,WAAK4K,UAAU,mBAAkB,CAClC,CAAA;AAAA,IAAA;AACAjL,IAAAA,WAAUo6B,gBAAgB;AACzB,UAAIp6B,WAAU8mB,cAAc9mB,WAAU+nD;AACrC/nD,QAAAA,WAAU8mB,UAAUhZ,WAAWC,YAAY/N,WAAU8mB;AACtD9mB,MAAAA,WAAU8mB,YAAY;AAAA,IACvB;AACA9mB,IAAAA,WAAUioD,kBAAgB,WACzB;AAAA,UAAG5nD,KAAKmpB,cAAa;AACpBnpB,aAAK4K,UAAU,iBAAgB,CAAC5K,KAAKmpB,gBAAgBnpB,KAAKopB,UAAAA,CAAAA;AAAAA,MAC1D;AAEDppB,WAAKmnD;IACN;AACAxnD,IAAAA,WAAUkoD,eAAeloD,WAAUioD;AAEnCjoD,IAAAA,WAAUmoD,wBAAsB,WAAA;AAC/B,UAAG9nD,KAAKqjD,cAAc5lC,iBAAgB;AACrC;AAAA,MACA;AACD,YAAMic,WAAW15B,KAAKqjD,YAAAA;AACtB3pB,eAASjc,kBAAkB;AAE3B9d,MAAAA,WAAU6B,MAAMk4B,UAAU,SAAS,SAAS7zB,GAE3C;AAAA,YAAGA,EAAEE,OAAOC,QAAQ,2BAA6B,GAAA;AAChDrG,UAAAA,WAAUioD,gBACV;AAAA,QAAA;AAED,cAAMG,eAAepoD,WAAU6tB,YAAYxnB,QAAQH,EAAEE,QAAQ,cAAA;AAC7D,aAAIgiD,cAAc;AACjB,gBAAMC,gBAAgBroD,WAAU6tB,YAAYxnB,QAAQH,EAAEE,QAAQ,wCAAA;AAC9D,cAAGiiD,eAAc;AAChB,kBAAM14C,QAAQwK,OAAOkuC,cAAcvjD,aAAa;AAChD,kBAAMuL,QAAQrQ,WAAU4jD,YAAY5jD,WAAU+B,OAAOg4B,SAAS72B,SAASyM,KAAOtI,EAAAA,IAAAA;AAC9EgJ,kBAAMi4C,aAAatoD,WAAU6tB,YAAYxnB,QAAQgiD,eAAe,sBAAsBA,eAAeniD,CAAAA;AAAAA,UACrG;AACD;AAAA,QACA;AAED,cAAMqiD,SAASH,eAAeA,aAAatjD,aAAa,iBAAiB;AAEzE,gBAAOyjD,QACN;AAAA,UAAA,KAAK;AAAA,UACL,KAAK;AACJ,gBAAGvoD,WAAU+B,OAAOymD,iBAAgB;AACnC;AAAA,YACA;AACDxoD,YAAAA,WAAU6nD;AACV;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AACJ,gBAAG7nD,WAAU+B,OAAOymD,iBAAgB;AACnC;AAAA,YACA;AACD,gBAAIz+C,IAAE/J,WAAU8nB,OAAOC,OAAOiD;AAE9BhrB,YAAAA,WAAUirB,gBAAgB,EAAC/jB,SAAS6C,GAAGmhB,OAAOlrB,WAAU8nB,OAAOC,OAAOoD,wBAAwB7jB,UAAU,WAAA;AACvGtH,cAAAA,WAAUorB,YAAYprB,WAAUwpB,YAChCxpB;AAAAA,cAAAA,WAAUypB,aAAa;AACvBzpB,cAAAA,WAAUwnD;YACV,GACDzlD,QAAQ,EAACspB,IAAIrrB,WAAU8nB,OAAOC,OAAOuD;AAErC;AAAA,UACD,KAAK;AAAA,UACL,KAAK;AACJtrB,YAAAA,WAAUioD,gBAAAA;AACV;AAAA,UAED;AACCjoD,YAAAA,WAAUiL,UAAU,oBAAoB,CAACs9C,QAAQH,cAAcliD,CAAAA,CAAAA;AAAAA,QAAAA;AAAAA,MAEnE,CACClG;AAAAA,MAAAA,WAAU6B,MAAMk4B,UAAU,WAAW,SAAS7zB,GAC7C;AAAA,YAAIrE,SAAQqE,KAAK5E,OAAOO;AACxB,YAAIuE,SAASF,EAAEE,UAAUF,EAAEisB;AAC3B,YAAIi2B,eAAehiD,OAAOiZ,cAAc,cAExC;AAAA,YAAA,CAAI+oC,cAAa;AAChBA,yBAAehiD,OAAO0H,WAAWuR,cAAc;QAC/C;AAED,iBAAQnZ,KAAGrE,QAAOi6C;UACjB,KAAK,IAAG;AACP,iBAAK51C,KAAGrE,QAAOg6C;AAAU;AACzB,gBAAGuM,gBAAgBA,aAAavqC,OAAM;AACrCuqC,2BAAavqC,MACb;AAAA,YAAA;AACD;AAAA,UACA;AAAA,UACD,KAAK7d,WAAUmmB,KAAKC;AACnB,iBAAKlgB,KAAGrE,QAAOg6C;AAAU;AACzB,gBAAGuM,gBAAgBA,aAAavqC,OAAM;AACrCuqC,2BAAavqC,MAClB;AAAA,YAAA,OAAS;AACJ,kBAAG7d,WAAU+B,OAAOymD,iBAAgB;AACnC;AAAA,cACA;AACDxoD,cAAAA,WAAU6nD,cACV;AAAA,YAAA;AACD;AAAA,UACD,KAAK7nD,WAAUmmB,KAAKE;AACnBrmB,YAAAA,WAAUioD,gBACV;AAAA;AAAA,QAAA;AAAA,MAKJ;IACA;AACAjoD,IAAAA,WAAUyoD,kBAAgB,WACzB;AAAA;AAAA,IAUD;AAEAzoD,IAAAA,WAAU0oD,mBAAmB,WAC5B1oD;AAAAA,MAAAA,WAAU6B,MAAM2kD,gBAAmB,GAAA,aAAaxmD,WAAU2nD,eAC1D3nD;AAAAA,MAAAA,WAAU6B,MAAM2kD,gBAAmB,GAAA,WAAWxmD,WAAU4nD,WAAAA;AACxD5nD,MAAAA,WAAU0oD,mBAAmB,WAAA;AAAA;IAC9B;AACA1oD,IAAAA,WAAU2nD,kBAAkB,SAASzhD,GAAAA;AACpC,UAAIlG,WAAU2oD,eAAc;AAC3B,YAAA,CAAKzoD,SAAS0oD,kBAAiB;AAC9BpC,4BAAkBzpC,UAAUtZ,IAAI,kBAChCvD;AAAAA,mBAAS0oD,mBAAmB;AAAA,QAC5B;AACD,YAAIC,KAAK7oD,WAAU0jD;AACnB,YAAIr3C,MAAM,CAACnG,EAAEknB,OAAOlnB,EAAEmnB,KAAAA;AACtBw7B,WAAGlmD,MAAMC,MAAM5C,WAAU8oD,UAAU,CAAA,IAAGz8C,IAAI,CAAA,IAAGrM,WAAU2oD,cAAc,CAAA,IAAG;AACxEE,WAAGlmD,MAAME,OAAO7C,WAAU8oD,UAAU,CAAGz8C,IAAAA,IAAI,KAAGrM,WAAU2oD,cAAc,KAAG;AAAA,MACzE;AAAA,IACF;AACA3oD,IAAAA,WAAU+oD,gBAAgB,SAAS7iD,GAAAA;AAClC,UAAI2iD,KAAK7oD,WAAU0jD;AACnB1jD,MAAAA,WAAU8oD,YAAY,CAACD,GAAGjmB,YAAYimB,GAAGhiC,SAAAA;AACzC7mB,MAAAA,WAAU2oD,gBAAgB,CAACziD,EAAEknB,OAAOlnB,EAAEmnB;IACvC;AACArtB,IAAAA,WAAU4nD,cAAc,WAAA;AACvB,UAAI5nD,WAAU8oD,WAAU;AACvB9oD,QAAAA,WAAU8oD,YAAY9oD,WAAU2oD,gBAAgB;AAChDnC,wBAAAA,EAAkBzpC,UAAU6X,OAAO,kBAAA;AACnC10B,iBAAS0oD,mBAAmB;AAAA,MAC5B;AAAA,IACF;AACA5oD,IAAAA,WAAU0jD,cAAY,WAAA;AACrB,WAAKrjD,KAAKymB,WAAU;AACnB,YAAI7S,IAAE/T,SAASC,cAAc,KAAA;AAC7B8T,UAAE/C,YAAU;AACZ,YAAIlR,WAAU+B,OAAOouC;AACpBl8B,YAAE/C,aAAW;AACd,YAAIlR,WAAU4jD,YAAYoF;AACzB/0C,YAAE/C,aAAW;AACd,YAAIlR,WAAU+B,OAAOijB;AACpB/Q,YAAE/C,aAAW;AACd,YAAIlR,WAAU+B,OAAO0uC;AACpBx8B,YAAE/C,aAAa;AAEhB+C,UAAEtR,MAAMk1B,aAAW;AACnB,YAAIt0B,OAAOlD,KAAK4oD;AAEhB,YAAI9+B,UAAU9pB,KAAK0B,OAAOwvC;AAG1BhuC,gBAAQ;AACR,YAAI04C,WAAW;AACf,iBAASz3C,IAAI,GAAGA,IAAI2lB,QAAQ1lB,QAAQD,KAAK;AACxCy3C,qBAAW57C,KAAK2nB,SAAS4Y,yBAAyBzW,QAAQ3lB;AAC1DjB,kBAAQ,UAAQ04C,WAAS,mBAAkB9xB,QAAQ3lB,CAAG,IAAA,+BAA6BxE,WAAU+B,OAAOijB,MAAI,UAAQ,UAAQ,cAAcmF,QAAQ3lB,CAAAA,IAAK,qCAAqC2lB,QAAQ3lB,CAAAA,IAAK,kBAAkBxE,WAAU8nB,OAAOC,OAAOoC,QAAQ3lB,CAAAA,CAAAA,IAAM;AAAA,QAC7P;AAED2lB,kBAAU9pB,KAAK0B,OAAOyvC;AACtB,YAAIxsB,MAAMhlB,WAAU+B,OAAOijB;AAC3B,iBAASxgB,IAAI,GAAGA,IAAI2lB,QAAQ1lB,QAAQD,KAAK;AACxCy3C,qBAAW57C,KAAK2nB,SAAS4Y,yBAAyBzW,QAAQ3lB,CAE1DjB,CAAAA;AAAAA,kBAAQ;AAERA,kBAAQ,UAAQ04C,WAAS,mBAAkB9xB,QAAQ3lB,CAAG,IAAA,+BAA6BwgB,MAAI,SAAO,WAAS,cACpGmF,QAAQ3lB,CAAAA,IAAK,qCACb2lB,QAAQ3lB,CAAAA,IAAK,kBAAkBxE,WAAU8nB,OAAOC,OAAOoC,QAAQ3lB,MAAM;AAAA,QACxE;AACDjB,gBAAQ;AACRA,gBAAM;AACN0Q,UAAE1T,YAAUgD;AACZ,YAAIvD,WAAU+B,OAAO+uC,eAAc;AAClC9wC,UAAAA,WAAU6B,MAAMoS,EAAEvT,YAAY,aAAaV,WAAU+oD,aAAAA;AACrD/oD,UAAAA,WAAU6B,MAAMoS,EAAEvT,YAAY,eAAe,SAASwF,GACrDA;AAAAA,cAAEqiB;AACF,mBAAO;AAAA,UACX;AACGtU,YAAEvT,WAAWiC,MAAM0uB,SAAS;AAC5BrxB,UAAAA,WAAU0oD,iBAAAA;AAAAA,QAEV;AAEDroD,aAAK2nB,SAAS2Y,aAAa1sB,CAE3B5T;AAAAA,aAAKumD;AACLvmD,aAAKwmD,OAAOlgC,aAAa1S,GAAE5T,KAAKwmD,OAAOnmD,UAAAA;AAEvCL,aAAKymB,YAAU7S;AAEf,YAAIuwC,MAAInkD,KAAK0B,OAAOg4B,SAAS72B;AAC7BK,eAAK;AACL,iBAASiB,IAAE,GAAGA,IAAIggD,IAAI//C,QAAQD,KAAK;AAClC,cAAI6L,QAAMhQ,KAAKujD,YAAYY,IAAIhgD,GAAG6C,IAClC;AAAA,cAAA,CAAKgJ;AAAO;AACZm0C,cAAIhgD,CAAGpE,EAAAA,KAAG,UAAQC,KAAK0O,IAAAA;AACvB,cAAIyO,SAAS;AACb,cAAIgnC,IAAIhgD,GAAGgZ,QAAO;AACjB,gBAAIy+B,WAAWj8C,WAAUgoB,SAASoY,gCAAgC//B,KAAKynB,OAAOC,OAAO,YAAUy8B,IAAIhgD,CAAAA,EAAGgZ;AACtGA,qBAAS,UAAQy+B,WAAS,oDAAkDz3C,IAAE,cAAYA,IAAE,qCAAmCggD,IAAIhgD,CAAAA,EAAGgZ,SAAO,kBAAgBnd,KAAKynB,OAAOC,OAAO,YAAUy8B,IAAIhgD,CAAAA,EAAGgZ,UAAQ;AAAA,UACzM;AAED,cAAInd,KAAK0B,OAAOouC,WAAU;AACzB5sC,oBAAM;AAAA,UACN;AAED,cAAI2lD,aAAa7oD,KAAKynB,OAAOC,OAAO,aAAWy8B,IAAIhgD,CAAGiW,EAAAA,IAAAA;AACtD,cAAUyuC,OAAAA,eAAe,UAAS;AACjCA,yBAAa1E,IAAIhgD,CAAGiW,EAAAA;AAAAA,UACpB;AACDlX,kBAAM,cAAYihD,IAAIhgD,CAAAA,EAAGpE,KAAG,gDAA8CokD,IAAIhgD,GAAGiW,OAAK,OAAK+C,SAAQ,YAAU0rC,aAAW,mBAAiB74C,MAAM5I,OAAOgP,KAAKpW,MAAKmkD,IAAIhgD,CACpKjB,CAAAA;AAAAA,kBAAM;AAAA,QACN;AAED,YAAI4lD,KAAGl1C,EAAEyT,qBAAqB,KAC9B;AAAA,iBAASljB,IAAE,GAAGA,IAAE2kD,GAAG1kD,QAAQD,KAAK;AAC/B,cAAI4kD,OAAOD,GAAG3kD,CACd;AAAA,cAAI0M,YAAYlR,WAAUmS,cAAci3C,IACxC;AAAA,cAAIl4C,aAAa,iBAAiB;AACjCk4C,iBAAK7oD,YAAYgD;AACjB;AAAA,UACA;AAAA,QACD;AAGDvD,QAAAA,WAAUqpD,oBAAoB7E;AAG9BnkD,aAAKooD,gBAAAA;AAELpoD,aAAK8nD,sBAAsB9nD,IAAAA;AAE3B4T,UAAEtR,MAAMk1B,aAAW;AAAA,MACnB;AAGD,aAAOx3B,KAAKymB;AAAAA,IACb;AAEA9mB,IAAAA,WAAUqpD,sBAAsB,SAASnmD,UAIxC;AAAA,eAAQsB,IAAI,GAAGA,IAAItB,SAASuB,QAAQD,KAAI;AACvC,YAAIkC,UAAUxD,SAASsB,CACvB;AAAA,YAAA,CAAIkC,QAAQtG,MAAOJ,CAAAA,WAAU8mB,UAAUzH,cAAc,IAAI3Y,QAAQtG,EAChE,EAAA;AAAA;AAED,YAAIkpD,aAAatpD,WAAU8mB,UAAUzH,cAAc,IAAI3Y,QAAQtG,EAAAA,EAAAA;AAC/D,YAAIynB,QAAQyhC,WAAWjqC,cAAc,OAAA;AAErC,YAAIkqC,aAAavpD,WAAUonD,2BAA2B1gD,OACtD;AAAA,eAAM6iD,eAAeA,WAAWlqC,eAAc;AAC7CkqC,uBAAaA,WAAWjjB;AAAAA,QACxB;AAED,YAAIkjB,WAAW;AAEf,YAAGD,YAAY;AACd,cAAIllB,QAAQklB,WAAWlqC,cAAc,yBAAA;AACrC,cAAGglB,OAAM;AACR39B,oBAAQ+iD,UAAUplB,MAAMjkC,MAAM,WAAWJ,WAAU+O,IACnD;AAAA,gBAAA,CAAIs1B,MAAMjkC;AACTikC,oBAAMjkC,KAAKsG,QAAQ+iD;AACpB5hC,kBAAM1K,aAAa,OAAOzW,QAAQ+iD,OAAAA;AAClCD,uBAAW;AAAA,UACX;AAAA,QACD;AAGD,YAAGA,UAAS;AACX,cAAIvF,UAAUjkD,WAAU4jD,YAAYl9C,QAAQW,IAC5C;AAAA,cAAG48C,QAAQvpB,OAAM;AAChB16B,YAAAA,WAAU6B,MAAMgmB,OAAO,SAAS,SAAUnhB;AACzC,qBAAO,WAAA;AAEN,oBAAI2J,QAAQrQ,WAAU4jD,YAAYl9C,SAAQW;AAC1C,oBAAI6f,OAAOlnB,WAAUonD,2BAA2B1gD,QAAAA;AAEhD,oBAAG2J,SAASA,MAAMqqB;AACjBrqB,wBAAMqqB,MAAMjkB,KAAKzW,YAAWknB;cACnC;AAAA,YACK,EAAExgB,OACH,CAAA;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACF;AAEA1G,IAAAA,WAAUiG,YAAY,mBAAmB,SAASyjD,QAAQzV;AACzD,UAAG5zC,KAAKmpB,gBAAgBkgC;AACvBrpD,aAAKmpB,eAAeyqB;AAAAA,IACtB;AAEAj0C,IAAAA,WAAUipD,qBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA,EAO9B;ACp1Be,WAAS/tC,SAAOlb,YAAAA;AAG/BA,IAAAA,WAAUolB,qBAAqB,WAAA;AAC9B,UAAIukC,SAAStpD,KAAK0B,OAAOivC,WACpBjL,UAAUC,UAAU5zB,QAAQ,mBAC9B2zB,UAAUC,UAAU5zB,QAAQ,MAAA,KAAA,MAC5B2zB,UAAUC,UAAU5zB,QAAQ,SAAA,KAAA,MAC5B2zB,UAAUC,UAAU5zB,QAAQ,OAAW,KAAA,OAAA,CAAQ9Q,OAAOsoD,aACrD7jB,UAAU8jB,aAAa,cAAc9jB,UAAU+jB,iBAAiB;AAEpE,UAAGH,QAAO;AACTtpD,aAAKsf,GAAG+F,eAAe;AACvBrlB,aAAKwyB,UAAU;AAAA,MACf;AAED,UAAGxyB,KAAK0B,OAAOivC,OAAM;AAEpB,YAAI+Y,uBAAuB;AAC3B;AACC7pD,mBAAS8pD,YAAY;QACrB,SAAQ9jD;AACR6jD,iCAAuB;AAAA,QACvB;AAED,YAAIA,sBAAsB;AACzB1pD,eAAK4pD,cAAc,CAAC,aAAa,cAAc,UAAa,GAAA,SAAUpjD,IACrE;AAAA,gBAAIA,GAAGqjD,WAAWrjD,GAAGqjD,QAAQzlD,SAAS;AAAG,qBAAO;AAChD,gBAAIoC,GAAGqjD,QAAQ;AACd,qBAAO,EACN9jD,QAAQS,GAAGT,QACXgnB,OAAOvmB,GAAGqjD,QAAQ,CAAG98B,EAAAA,OACrBC,OAAOxmB,GAAGqjD,QAAQ,GAAG78B,OACrBC,SAASzmB,GAAGqjD,QAAQ,CAAA,EAAG58B,SACvBG,SAAS5mB,GAAGqjD,QAAQ,CAAA,EAAGz8B;;AAGxB,qBAAO5mB;AAAAA,UACZ,GAAM,WACF;AAAA,mBAAO;AAAA,UACX,CAAA;AAAA,QACG,WAAUvF,OAAO6oD,gBAAgB7oD,OAAOykC,UAAUqkB,gBAAgB;AAClE/pD,eAAK4pD,cAAc,CAAC,eAAe,eAAe,WAAA,GAAc,SAAUpjD,IACzE;AAAA,gBAAIA,GAAGwjD,eAAe;AAAS,qBAAO;AACtC,mBAAOxjD;AAAAA,UACP,GAAE,SAAUA,IAAAA;AACZ,oBAASA,MAAOA,GAAGwjD,eAAe;AAAA,UACtC;QACA,WAAa/oD,OAAOykC,UAAUukB,kBAAkB;AAC7CjqD,eAAK4pD,cAAc,CAAC,iBAAiB,iBAAiB,aAAgB,GAAA,SAAUpjD;AAC/E,gBAAIA,GAAGwjD,eAAexjD,GAAG0jD;AAAsB,qBAAO;AACtD,mBAAO1jD;AAAAA,UACP,GAAE,SAAUA,IACZ;AAAA,mBAAA,CAASA,MAAMA,GAAGwjD,eAAexjD,GAAG0jD;AAAAA,UACxC;QACG;AAAA,MACD;AAAA,IACF;AAEAvqD,IAAAA,WAAUiqD,gBAAgB,SAASxlC,OAAO+lC,UAAU9xB,QAGnD;AAAA,UAAI3e,QAAQ0wC,SAASpxC,OAAOwQ,WAAW6gC,aAAaC;AACpD,UAAIC,eAAe;AAEnB,eAASC,iBAAiB9kD,SAAS0U,MAAMnT,UAAAA;AAExCtH,QAAAA,WAAU6B,MAAMkE,SAAS0U,MAAM,SAASvU,GAAAA;AACvC,cAAGlG,WAAUo8B,qBAAoB;AAChC,mBAAO;AAAA,UACX,OAAQ;AACJ,gBAAI1D,OAAOxyB,CAAAA;AAAI;AACf,mBAAOoB,SAASpB,CAChB;AAAA,UAAA;AAAA,QACJ,GAAK,EAAE4kD,SAAS;MACd;AAED,eAASC,sBAAsBC,MAAMC,MAAMzgC,MAAM0gC,QAAAA;AAChD,aAAKF,QAASC,CAAAA;AAAM,iBAAO;AAE3B,YAAIz2C,IAAIw2C,KAAK5kD;AACb,eAAMoO,KAAKA,KAAKxU,WAAU2kB,MAAK;AAC9BnQ,cAAIA,EAAE1G;AAAAA,QACN;AACD,YAAG0G,KAAKxU,WAAU2kB,MAAK;AAEtB,iBAAO;AAAA,QACP;AAGD,YAAG3kB,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUsG,WAAWxG,IAAM,GAAA;AAClE,cAAIwb,WAAWtb,WAAU4L,OAAO5L,WAAUsG,WAAWxG,IACrD;AAAA,cAAGwb,SAAS6vC,YAAW;AACtB,mBAAO;AAAA,UACP;AAAA,QACD;AAED,YAAIn9B,KAAKxc,KAAKge,IAAIw7B,KAAK39B,QAAQ49B,KAAK59B;AACpC,YAAIlY,KAAK3D,KAAKge,IAAIw7B,KAAK59B,QAAQ69B,KAAK79B;AACpC,YAAIY,KAAKk9B,UAAU/1C,KAAGqV,SAAAA,CAAUwD,MAAO7Y,KAAG6Y,KAAK,IAAI;AAClD,cAAIg9B,KAAK59B,QAAQ69B,KAAK79B,OAAO;AAC5BptB,YAAAA,WAAUqoB,OAAOiC;UACrB,OAAS;AACLtqB,YAAAA,WAAUqoB,OAAOgC,oBAAAA;AAAAA,UACjB;AACD,iBAAO;AAAA,QACP;AACD,eAAO;AAAA,MACP;AAED,eAAS+gC,YAAYllD,GACpB;AAAA,YAAIwyB,OAAOxyB,CAAI;AAAA;AACf,YAAImlD,MAAMrrD,WAAUsG,SAAWujB,EAAAA,WAC9BvO,WAAWtb,WAAU4L,SAAS5L,WAAU4L,OAAO5L,WAAUiN,KAAS,IAAA;AAEnE,YAAIq+C,kBAAkBtrD,WAAUgY;AAChC,YAAGqzC,OAAO,YAAY/vC,UAAS;AAE9Btb,UAAAA,WAAUgY,mBAAmB;AAC5B,gBAAI5X,MAAKJ,WAAUsG,SAAWsjB,EAAAA;AAC9B,gBAAI/iB,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,gBAAI+K,WAAWmQ,SAAS9Y;AAExB,gBAAIwH,MAAMhK,WAAUm2C,UAAUtvC,GAAGzD,YAAYyD,GAAGxD;AAChD,qBAAQmB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAI;AAClC,kBAAGwF,IAAIxF,CAAG2G,EAAAA,QAAAA,KAAatE,GAAGsE,QAAU,GAAA;AACnCnB,oBAAIyJ,OAAOjP,GAAG,CACdA;AAAAA;AAAAA,cACA;AAAA,YACD;AACDqC,eAAG8vC,UAAU3sC,IAAIvF,SAAS;AAC1BoC,eAAGoyC,SAASjvC,IAAIvF;AAEhBpE,iBAAK0X,YAAY,CAAClR,KAAK7G,WAAUsG,SAAAA,EAAWxG;UAEhD;AAAA,QACG;AAEDE,QAAAA,WAAUyoB,eAAeviB;AAEzB,YAAGmlD,OAAO,YAAY/vC,UAAS;AAC9Btb,UAAAA,WAAUgY,mBAAmBszC;AAAAA,QAC7B;AAED,YAAIplD,EAAEqiB;AACLriB,YAAEqiB;AACHriB,UAAE6jB,eAAe;AACjB,eAAO;AAAA,MACP;AAGD8gC,uBAAiB3qD,SAASM,MAAMikB,MAAM,IAAI,SAASve,GAAAA;AAClD,YAAIwyB,OAAOxyB,CAAAA;AAAI;AAEf,YAAIqpB,MAAMi7B,SAAStkD,CAAAA;AACnB,aAAIqpB;AAAK;AACT,YAAI1F,WAAU;AACbuhC,sBAAY77B,GAAAA;AAEZ,cAAIrpB,EAAEqiB;AACLriB,cAAEqiB,eACHriB;AAAAA,YAAE6jB,eAAe;AACjB/pB,UAAAA,WAAUurD,mBACV;AAAA,iBAAO;AAAA,QACP;AAKDd,kBAAUD,SAAStkD,CAEnB;AAAA,YAAA,CAAKykD;AAAa;AAGlB,YAAA,CAAKF,SAAQ;AACZC,wBAAc;AACd;AAAA,QACA;AAID,YAAI3wC,OAAO3T,UAAUqkD,QAAQrkD,UAAWoL,KAAKge,IAAIzV,OAAOqT,QAAQq9B,QAAQr9B,SAAS,KAAO5b,KAAKge,IAAIzV,OAAOsT,QAAQo9B,QAAQp9B,KAAAA,IAAS,GAAG;AACnIq9B,wBAAc;AACd/wC,uBAAaN,KAAAA;AAAAA,QACb;AAAA,MAEH,CAGCwxC;AAAAA,uBAAiBxqD,KAAK+L,KAAK,gBAAgB,CAAI,GAAA,eAAeo/C;AAC9DX,uBAAiBxqD,KAAK+L,KAAK,cAAgB,EAAA,CAAA,GAAI,eAAe,SAASlG;AACtE,YAAIwyB,OAAOxyB;AAAI;AACf,YAAIykD,aAAY;AACf,cAAIzkD,KAAKA,EAAEqiB;AACVriB,cAAEqiB,eAAAA;AACHriB,YAAE6jB,eAAe;AACjB,iBAAO;AAAA,QACP;AAAA,MACH,CAGC8gC;AAAAA,uBAAiBxqD,KAAKskB,MAAMF,MAAM,IAAI,SAASve,GAAAA;AAE9C,YAAGhG,YAAYA,SAASM,MAAK;AAC5BN,mBAASM,KAAKuc,UAAUtZ,IAAI,sBAC5B;AAAA,QAAA;AAED,YAAIi1B,OAAOxyB,CAAAA;AAAI;AACflG,QAAAA,WAAUyrD,iBAAiBvlD,EAAEwlD;AAE7B,YAAIC;AACJ9hC,oBAAY6gC,cAAc;AAC1BC,sBAAc;AACdgB,qBAAalB,UAAUD,SAAStkD,CAAAA;AAEhC,aAAKylD,YAAW;AACfjB,wBAAc;AACd;AAAA,QACA;AAGD,YAAIr+C,MAAM,oBAAIxH;AAEd,aAAK6lD,eAAgB7gC,CAAAA,aAAaxd,MAAMu+C,eAAe,KAAI;AAC1D5qD,UAAAA,WAAUqoB,OAAOyB,aAAa6hC,UAAAA;AAC9BrqD,iBAAOoY,WAAW,WAAA;AACjB,gBAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,YACA;AAED9gB,YAAAA,WAAU6oB,cAAc8iC;UACxB,GAAE,EAAA;AAEH,cAAIzlD,EAAEqiB;AACLriB,cAAEqiB,eAAAA;AACHriB,YAAE6jB,eAAe;AACjB/pB,UAAAA,WAAU4rD,mBAAmB;AAC7B,iBAAO;AAAA,QACP;AACDhB,uBAAev+C;AAIf,YAAIq+C,eAAe7gC,aAAAA,CAAc7pB,WAAU+B,OAAOmvC;AACjD;AAED,YAAI2a,UAAU7rD,WAAU+oB,cAAc7oB,SAASglC,aAC/C;AAAA,YAAI4mB,WAAW9rD,WAAU+oB,cAAc4iC,WAAWvlD,MAClD;AAAA,YAAI2lD,aAAahyC,SAAQ/Z,WAAU+oB,cAAchP,OAAO3T,UAAU;AAElE,YAAGylD,WAAWC,YAAYD,WAAWC,YAAYD,WAAWE,YAC5D;AACC,cAAG7lD,EAAEqiB,gBAAgB;AACpBriB,cAAEqiB,eACF;AAAA,UAAA;AACDriB,YAAE6jB,eAAe;AACjB/pB,UAAAA,WAAU0oB,qBAAqB;AAC/B1oB,UAAAA,WAAUqoB,OAAOyB,aAAa6hC,UAC9B5xC;AAAAA,mBAAS4xC;AACT,iBAAO;AAAA,QACP;AAEDtyC,gBAAQK,WAAW,WAClB;AAAA,cAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,UACA;AACD+I,sBAAY;AACZ,cAAIzjB,SAAS2T,OAAO3T;AACpB,cAAI8K,YAAYlR,WAAUmS,cAAc/L,MAAAA;AACxC,cAAIA,UAAU8K,UAAUkB,QAAQ,UAAgB,KAAA;AAC/ChM,qBAASA,OAAO44C;AAEjBh/C,UAAAA,WAAU2oB,eAAe5O,QAAQ3T,MACjC;AAAA,cAAIpG,WAAU6K,cAAc7K,WAAU6K,cAAc,UAAS;AAC5D7K,YAAAA,WAAUiyB,aAAajyB,WAAU4K,UAAU,SAASsc,MAAM1iB,GACzD0iB;AAAAA,mBAAKvkB,MAAMod,UAAQ;AACnB/f,cAAAA,WAAU+zC,UAAUtgC,OAAOjP,GAAG,CAAA;AAAA,YACnC;UACI;AAED,cAAIxE,WAAU+B,OAAOkvC,WAAW;AAC/BjxC,YAAAA,WAAUgsD;UACV;AACDhsD,UAAAA,WAAUiY,YAAYjY,WAAU4K,QAAAA;AAAAA,QACnC,GAAI5K,WAAU+B,OAAOmvC,UAEnBn3B;AAAAA,iBAAS4xC;AAAAA,MACX,CACC;AAAA,eAASH,YAAYtlD,GACpB;AAAA,YAAIwyB,OAAOxyB,CAAI;AAAA;AACflG,QAAAA,WAAUisD,iBAAAA;AACV,YAAIpiC,WAAU;AACb7pB,UAAAA,WAAU4oB,aAAc4hC,SAAStkD;AACjClG,UAAAA,WAAUwoB,oBAAoB;AAAA,QAC9B;AACDxoB,QAAAA,WAAU4K,WAAW;AACrB5K,QAAAA,WAAU6K,aAAW;AACrB7K,QAAAA,WAAU6uB,YAAU;AACpB7uB,QAAAA,WAAUyrD,iBAAiB;AAC3B9xC,qBAAaN,KAAAA;AACbwQ,oBAAY8gC,cAAc;AAC1BD,sBAAc;AAAA,MACd;AAGDG,uBAAiBxqD,KAAK+L,KAAK,cAAgB,EAAA,CAAA,GAAIqY,MAAM,CAAI,GAAA,SAASve;AACjE,YAAGhG,YAAYA,SAASM,MAAK;AAC5BN,mBAASM,KAAKuc,UAAU6X,OAAO;QAC/B;AAED,YAAI8D,OAAOxyB,CAAAA;AAAI;AAEf,YAAGlG,WAAU+B,OAAOovC,mBAAkB;AACrC,eAAKtnB,aAAakhC,sBAAsBhxC,QAAQ0wC,SAAS,KAAK,GAAM,GAAA;AACnEzqD,YAAAA,WAAU4rD,mBAAmB;AAAA,UAC7B;AAAA,QACD;AAED,YAAI/hC,WAAW;AACd7pB,UAAAA,WAAU0oB,qBAAqB;AAC/BhP,qBAAW,WACV1Z;AAAAA,YAAAA,WAAU0oB,qBAAqB;AAAA,UAC/B,GAAE,GACH;AAAA,QAAA;AAED8iC,oBAAYtlD,CACZ;AAAA,YAAIlG,WAAU4rD,kBAAiB;AAC9B5rD,UAAAA,WAAU4rD,mBAAmB;AAC7B,cAAI1lD,EAAEqiB;AACLriB,cAAEqiB,eAAAA;AACHriB,YAAE6jB,eAAe;AACjB,iBAAO;AAAA,QACP;AAAA,MACH,CAEC/pB;AAAAA,MAAAA,WAAU6B,MAAM3B,SAASM,MAAMikB,MAAM,CAAI+mC,GAAAA,WAAAA;AAAAA,IAC1C;AAEAxrD,IAAAA,WAAUgsD,mBAAmB,WAC5BhsD;AAAAA,MAAAA,WAAUisD;AAEV,UAAIC,SAASlsD,WAAUmsD,cAAcjsD,SAASC,cAAc,KAC5D+rD;AAAAA,aAAOh7C,YAAU;AAEjBlR,MAAAA,WAAUurD,mBAAmB,CAAA;AAE7BrrD,eAASM,KAAKC,YAAYyrD;IAC3B;AACAlsD,IAAAA,WAAUurD,qBAAqB,SAASpqD;AACvC,UAAI+qD,SAASlsD,WAAUmsD;AACvB,UAAID,QAAO;AACV,YAAI3H,OAAO;AACX,YAAIvkD,WAAU4K,YAAAA,CAAazJ,MAAK;AAC/B,cAAI0F,KAAK7G,WAAUmG,SAASnG,WAAU4K,QAAAA;AACtC,cAAI/D;AACH09C,mBAAO,WAAW19C,GAAG4D,SAASzK,WAAU0zB,UAAUgf,aAAa7rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAI7G,WAAU0zB,UAAUoK,SAASj3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,KAAO;AAAA,QAChK;AAED,YAAI7G,WAAU6K,cAAc,YAAY7K,WAAU6K,cAAc;AAC/DqhD,iBAAO3rD,aAAaP,WAAU8nB,OAAOC,OAAOqkC,kBAAkB,oBAAkB7H;AAAAA;AAEhF2H,iBAAO3rD,aAAaP,WAAU8nB,OAAOC,OAAOskC,gBAAgB,kBAAgB9H;AAAAA,MAC7E;AAAA,IACF;AACAvkD,IAAAA,WAAUisD,mBAAmB,WAC5B;AAAA,UAAIC,SAASlsD,WAAUmsD;AACvB,UAAID,UAAUA,OAAOp+C,YAAW;AAC/Bo+C,eAAOp+C,WAAWC,YAAYm+C,MAC9BlsD;AAAAA,QAAAA,WAAUmsD,cAAc;AAAA,MACxB;AAAA,IACF;AAAA,EAGA;ACrXe,WAASjxC,SAAOlb,YAE/BA;AAAAA,IAAAA,WAAUssD,cAAc,WAAA;AACvB,aAAO,EACNxgD,MAAM,EACLrE,QAAQ,WAAA;AACP,eAAO,EACN8kD,KAAK,OACLllD,MAAM,GACN23B,OAAO,EACNr8B,OAAO,0BAER6pD,GAAAA,OAAO,EACNC,WAAa,WAAA;AACZzsD,UAAAA,WAAU8X,eAAAA;AAAAA,QACV,KAEFtX,MAAM,CACL,EACCqjB,IAAIxjB,KAAKwjB,IACTxc,MAAM,EAAA,CAAA,EAAA;AAAA,MAIT,GACDlG,MAAM;AACL,YAAI0K,YAAY3L,SAASC,cAAc,KAAA;AACvC0L,kBAAUzL,KAAK,eAAcJ,WAAU+O,IAAAA;AACvClD,kBAAUlJ,MAAMyO,QAAQ;AACxBvF,kBAAUlJ,MAAMwO,SAAS;AACzBtF,kBAAUkR,UAAUtZ,IAAI;AACxBoI,kBAAU6gD,MAAM;AAChB7gD,kBAAUtL,YAAY;AAatBP,QAAAA,WAAUmB,KAAK0K,SAAAA;AAEfxL,aAAKwjB,KAAKhY;AAAAA,MACV,KAEFxE,MAAM,EAAA;AAAA,IAER;AAAA,EAEA;ACtDe,WAAS6T,SAAOlb,YAAAA;AAG/BA,IAAAA,WAAU2sD,iBAAiB,WAAA;AAC1BzsD,eAASmgB,gBAAgBlD,aAAa,wBAAwBnd,WAAU4sD,IAAAA;AAAAA,IACzE;AAEA5sD,IAAAA,WAAU6sD,iBAAiB,EAC1BzvC,kBAAkB,CAAC,GAAE,CAAA,GACrBizB,uBAAuB,CAAC,GAAE,CAC1BF,GAAAA,WAAW,CAAC,GAAE,CAAA,GAEdz+B,cAAc,CAAC,IAAG,KAClBu+B,uBAAuB,CAAC,WAAW,QAAA,GACnCC,4BAA4B,CAAC,WAAW;AAGzClwC,IAAAA,WAAU8sD,WAAW,EACpBC,4BAA4B,CAAC,IAAG,EAAA,GAChCntC,YAAY,CAAC,IAAG,KAChB4F,YAAY,CAAC,IAAG,EAOjBxlB,EAAAA;AAAAA,IAAAA,WAAU0mB,oBAAoB,WAAA;AAC7B,WAAI1mB,WAAU4sD,MAAK;AAClB,eAAOI,oBAAAA;AAAAA,MACT,OAAM;AACJ,gBAAShtD,WAAU4sD,OAAO,IAAIx6C,QAAQ,UAAA,IAAA;AAAA,MACtC;AAAA,IACF;AAEA,aAAS66C,oBAAAA;AACR,UAAIC,QAAQhtD,SAASwnB,qBAAqB,MAAA;AAC1C,eAASljB,IAAI,GAAGA,IAAI0oD,MAAMzoD,QAAQD,KAAK;AACtC,YAAIoE,MAAMskD,MAAM1oD,CAAG2oD,EAAAA,KAAK1iB,MAAM,8BAC9B;AAAA,YAAI7hC,KAAI;AACP,iBAAOA,IAAI,CAAA;AAAA,QACX;AAAA,MACD;AAAA,IACF;AAEA5I,IAAAA,WAAUotD,mBAAmB,WAAA;AAC5BC,yBACA;AAAA,YAAMC,SAAS7rC,iBAAiBphB,KAAKgE;AACrC,YAAMkpD,WAAWD,OAAO5rC,iBAAiB,uBAAA;AAEzC,UAAI8rC,gBAAAA,CAAAA,CAAkBD;AACtB,UAAIE;AACJ,UAAIC,YAAY,CAAA;AAChB,UAAIC,mBAAmB;AAEvB,UAAGH,eAAc;AAChBC,oBAAYF;AACZ,iBAAQ/oD,KAAKxE,WAAU2f,IAAG;AACzB+tC,oBAAUlpD,KAAK8oD,OAAO5rC,iBAAiB,sBAAsBld,CAC7D,EAAA;AAAA,QAAA;AAEDkpD,kBAAUh8C,eAAe47C,OAAO5rC,iBAAiB,qCAAA;AACjDgsC,kBAAUvd,YAAYmd,OAAO5rC,iBAAiB,kCAEhD;AAAA,MAAA,OAAM;AACJ+rC,oBAAYR,kBAAAA;AACZU,2BAAmB3tD,WAAU0mB;MAC7B;AAGD1mB,MAAAA,WAAU4tD,cAAc,EACvBC,OAAOJ,WACPK,aAAaN,eACbG,kBACA9vB,QAAQ6vB,UAGT;AAAA,UAAG1tD,WAAU4tD,YAAYE,aAAY;AACpC,cAAMC,iBAAiB1tD,KAAKutD,YAAY/vB;AACxC,iBAAQr5B,KAAKxE,WAAU2f,IAAG;AACzB,cAAI6H,CAAAA,MAAM6O,SAAS03B,eAAevpD,MAAK;AACtCxE,YAAAA,WAAU2f,GAAGnb,CAAK6xB,IAAAA,SAAS03B,eAAevpD,CAC1C,CAAA;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACF;AAEA,QAAIwpD;AACJ,aAAShB,sBACR;AAAA,UAAGgB,uBAAuBt/C,QAAU;AACnC,YAAIu/C,QAAQ/tD,SAASC,cAAc,KAAA;AACnC8tD,cAAMtrD,MAAM2K,WAAW;AACvB2gD,cAAMtrD,MAAME,OAAO;AACnBorD,cAAMtrD,MAAMC,MAAM;AAClBqrD,cAAM1tD,YAAY;AAIlBL,iBAASM,KAAKC,YAAYwtD,KAAAA;AAC1B,YAAIX,SAAShsD,OAAOmgB,iBAAiBwsC,MAAM5uC,cAAc,4BACzD,CAAA;AAAA,YAAI/R,WAAWggD,OAAO5rC,iBAAiB;AACvC,YAAGpU,aAAa,YAAW;AAE1B0gD,+BAAqB;AAAA,QACxB,OAAO;AACJA,+BAAqB;AAAA,QACrB;AAEDt0C,mBAAW,WAAA;AACVs0C,+BAAqB;AACrB,cAAGC,SAASA,MAAMngD,YAAW;AAC5BmgD,kBAAMngD,WAAWC,YAAYkgD,KAAAA;AAAAA,UAC7B;AAAA,QACD,GAAE,GAAA;AAAA,MACH;AACD,aAAOD;AAAAA,IACR;AAEA,QAAIE;AACJ,aAASC,0BAAAA;AACR,UAAGnuD,WAAU0mB,kBAAAA,GAAoB;AAChC,eAAO;AAAA,MACT,OAAM;AACJ,YAAGwnC,yBAAyBx/C,QAAU;AACrC,cAAIu/C,QAAQ/tD,SAASC,cAAc;AACnC8tD,gBAAMtrD,MAAM2K,WAAW;AACvB2gD,gBAAMtrD,MAAME,OAAO;AACnBorD,gBAAMtrD,MAAMC,MAAM;AAClBqrD,gBAAM1tD,YAAY;AAMlBL,mBAASM,KAAKC,YAAYwtD,KAC1B;AAAA,cAAIX,SAAShsD,OAAOmgB,iBAAiBwsC,MAAM5uC,cAAc,WAAA,CAAA;AACzD,cAAI+uC,YAAYd,OAAO5rC,iBAAiB,YAAA;AACxCxhB,mBAASM,KAAKuN,YAAYkgD;AAC1BC,iCAA0BE,CAAAA,EAAAA,cAAc;AAExC,cAAA,CAAIF,sBAAqB;AACxBx0C,uBAAW;AACVw0C,qCAAuBx/C;AAAAA,YACvB,GAAE,GACH;AAAA,UAAA;AAAA,QACJ,OAAO;AACJ,iBAAOw/C;AAAAA,QACP;AAAA,MACD;AAAA,IACF;AAEA,aAASG;AACR,UAAGruD,WAAU0mB,kBAAuB1mB,KAAAA,WAAUsuD,sBAAqB;AAClE;AAAA,MACA;AAED,UAAIC,aAAaL;AACjBA,6BAAuBx/C;AACvBs/C,2BAAqBt/C;AACrB,UAAI8/C,aAAaL,wBAAAA;AAIjB,UAAGI,eAAeC,cAAcxuD,WAAUqE,cAAcrE,WAAUsG,SAAWxG,EAAAA,MAAK;AACjFE,QAAAA,WAAU8X,eAAAA;AAAAA,MACV;AAAA,IACF;AACA9X,IAAAA,WAAU6B,MAAMP,QAAQ,oBAAoB+sD,gBAC5CruD;AAAAA,IAAAA,WAAU6B,MAAMP,QAAQ,QAAQ+sD;AAEhCruD,IAAAA,WAAUsuD,qBAAqB;AAC9B,aAAOH,wBAAAA;AAAAA,IACR;AAEAnuD,IAAAA,WAAUyuD,aAAa,SAASplB,KAAKv3B,MAAM86C,MAAAA;AAC1C,eAASr3C,OAAOzD;AACf,YAAA,OAAWu3B,IAAI9zB,GAAQ,KAAA;AACtB8zB,cAAI9zB,GAAOzD,IAAAA,KAAKyD,KAAKq3C,IACxB;AAAA,IAAA;AAEA5sD,IAAAA,WAAU0uD,UAAU,SAAShwC,OAC5Bre;AAAAA,WAAKusD,OAAOluC;AACZ1e,MAAAA,WAAU2sD;AACV,UAAG3sD,WAAUqE,YAAW;AACvBhE,aAAK4kB,WACL5kB;AAAAA,aAAKoH;MACL;AAAA,IAGF;AAEA,aAASknD,kBAAkBnrD,MAAAA;AAC1B,UAAImL,MAAMnL,KAAKwK,WACfW;AAAAA,YAAMA,MAAM,KAAK,MAAIA,MAAMA;AAC3B,UAAIpL,OAAO,+BAA8BC,KAAKkJ,SAAY,IAAA,4CACrBiC,MAAK;AAC1C,aAAOpL;AAAAA,IACR;AAEA,QAAIqrD,oBAAoB;AACxB,aAASvB,qBAAAA;AACR,YAAMxhD,YAAY7L,WAAUqE;AAE5BwqD,oBAAcD,iBAAAA;AACd,UAAG/iD,WAAU;AACZ+iD,4BAAoBE,YAAY;AAC/B,gBAAMC,WAAWttC,iBAAiB5V,SAAW6V,EAAAA,iBAAiB,uBAC9D;AAAA,cAAGqtC,YAAYA,aAAa/uD,WAAU4sD,MAAK;AAC1C5sD,YAAAA,WAAU0uD,QAAQK,QAClB;AAAA,UAAA;AAAA,QAAA,GAEC,GACH;AAAA,MAAA;AAAA,IACF;AACA/uD,IAAAA,WAAUiG,YAAY,aAAa,WAClC4oD;AAAAA,oBAAcD;IACf,CAEA5uD;AAAAA,IAAAA,WAAUilB,aAAa,WAAA;AACtB5kB,WAAK+sD,iBAEL;AAAA,UAAA,CAAK/sD,KAAKusD,MAAK;AACdvsD,aAAKusD,OAAOvsD,KAAKutD,YAAYC;AAAAA,MAC7B;AACD7tD,MAAAA,WAAU2sD,eAAAA;AACV,UAAI3sD,WAAU4sD,SAAS,QAAO;AAE7B5sD,QAAAA,WAAU0zB,UAAU0E,aAAau2B;AAAAA,MACjC,WAAS3uD,WAAU0zB,UAAU0E,eAAeu2B,mBAAkB;AAC9D3uD,QAAAA,WAAU0zB,UAAU0E,aAAap4B,WAAUwD,KAAK0qC,YAAYluC,WAAU+B,OAAO+tC,SAAAA;AAAAA,MAC7E;AAKD9vC,MAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AAEzC,YAAIioC,cAAcluC,WAAUwD,KAAK0qC,YAAY,IAAA;AAC7C,aAAIluC,WAAU0zB,UAAUs7B,gBAAe;AACtChvD,UAAAA,WAAU0zB,UAAUs7B,iBAAiBhvD,WAAU0zB,UAAUgG;AAAAA,QACzD;AACD,YAAIu1B,gBAAgBjvD,WAAU0zB,UAAUs7B;AACxChvD,QAAAA,WAAU0zB,UAAUgG,YAAY,SAASl2B,MAAAA;AACxC,cAAInD,KAAK4M,SAAS,SAAS;AAC1B,gBAAI4a,QAAQqmB,YAAY1qC;AACxB,gBAAIA,KAAKiG,aAAa,GAAG;AACxBoe,sBAAQ7nB,WAAU8nB,OAAOtkB,KAAKyoC,WAAWzoC,KAAKyV,SAAc,CAAA,IAAA,MAAM4O;AAAAA,YAClE;AACD,gBAAA,CAAKrkB,QAASxD,CAAAA,WAAUwD,KAAKyF,UAAU5I,KAAKiM,iBAAiB;AAC5Dub,sBAAQ7nB,WAAU8nB,OAAOC,OAAO2C,uBAAuB,MAAM7C;AAAAA,YAC7D;AACD,mBAAOA;AAAAA,UACX,OAAU;AACN,mBAAOonC,cAAcx4C,KAAKpW,MAAMmD,IAAAA;AAAAA,UAChC;AAAA,QACJ;AAGE,YAAGxD,WAAU+B,OAAOqb,kBAAiB;AACpC,gBAAMrd,OAAOC,WAAUoM,KAAK,mBAAmB,CAAG9H,EAAAA,iBAAiB;AACnEvE,eAAKiE,QAAS0wB;AACb,kBAAM5oB,OAAO4oB,IAAI5vB,aAAa,eAAe4vB,IAAI5vB,aAAa;AAE9D,oBAAQgH,MAAAA;AAAAA,cACP,KAAK;AAAA,cACL,KAAK;AACJ4oB,oBAAI3X,UAAUtZ,IAAI,mBAAA;AAClBixB,oBAAI3X,UAAUtZ,IAAI;AAClB;AAAA,cACD,KAAK;AAAA,cACL,KAAK;AACJixB,oBAAI3X,UAAUtZ,IAAI,uBAClB;AAAA;AAAA,cACD,KAAK;AAAA,cACL,KAAK;AACJixB,oBAAI3X,UAAUtZ,IAAI,kBAAA;AAClBixB,oBAAI3X,UAAUtZ,IAAI;AAClB;AAAA,cACD;AACCixB,oBAAI3X,UAAUtZ,IAAI,wBAClB;AAAA;AAAA,YAAA;AAAA,UACD;AAGFyrD,sBAAYlvD,WAAUoM,KAAK,iBAAmB,EAAA,CAAA,CAAA;AAAA,QAE9C;AAAA,MACH,GAAI,EAACqW,MAAM,KAAA,CAAA;AAEV,eAASysC,YAAYrjD,WAAAA;AAGpB,YAAG7L,WAAU+B,OAAOmiB,QAAO;AAC1B;AAAA,QAEA;AACD,cAAMnkB,OAAOqO,MAAMgnB,KAAKvpB,UAAUvH,iBAAiB,cAAA,CAAA;AAGnD,cAAM+M,QAAQ,CAAC,OAAO,QAAQ;AAE9B,cAAM89C,cAAc99C,MAAMvL,IAAIspD,aAC7BrvD,KAAKsvD,KAAK36B,SAAOA,IAAI5vB,aAAa,gBAAgBsqD,OACjDna,CAAAA,EAAAA,OAAOvgB,SAAOA,QAAQhmB,MAAAA;AAExB,YAAI4gD,WAAWvvD,KAAK0E,SAAS,IAAI1E,KAAK,CAAA,IAAK;AAE3CovD,oBAAYI,QAAAA,EAAUvrD,QAAQ0wB,SAAAA;AAC7B7oB,oBAAU8a,aAAa+N,KAAK46B;AAC5BA,qBAAW56B;AAAAA,QAAG;MAEf;AAAA,IAMF;AAAA,EAIA;ACjUe,WAASxZ,SAAOlb,YAE/B;AAAA,QAAIsB,OAAOkuD,QAAO;AAAA,OAElB,SAAWC,GACV;AAAA,YAAIC,UAAU;AACd,YAAIz5C,UAAU,CAAA;AACdw5C,UAAEE,GAAGC,gBAAgB,SAAS7tD,QAC7B;AAAA,cAAA,OAAW,WAAY,UAAU;AAChC,gBAAIkU,QAAQlU,SAAU;AACrB,qBAAOkU,QAAQlU,MAAQ0M,EAAAA,MAAMpO,MAAM,CAAA,CAAA;AAAA,YACvC,OAAS;AACLovD,gBAAE54C,MAAM,YAAa9U,SAAS;YAC9B;AAAA,UACJ,OAAS;AACN,gBAAIuiB,QAAQ,CACZjkB;AAAAA,iBAAKwvD,KAAK,WACT;AAAA,kBAAIxvD,QAAQA,KAAKyE,cAAa;AAC7B,oBAAA,CAAKzE,KAAKyE,aAAa,cAAA,GAAgB;AACtC,sBAAI2V,OAAO;AACX,sBAAIi1C,SAAQ;AACXj1C,2BAAO,eAAei1C,UAAQ;AAC9BpuD,2BAAOmZ,IAAQq1C,IAAAA,UAAUC;kBACzB;AACD,sBAAIC,OAAQ1uD,OAAOmZ;AAEnBpa,uBAAK8c,aAAa,gBAAgB1C,IAClC;AAAA,2BAASlF,OAAOxT;AACf,wBAAIwT,OAAK;AACRy6C,2BAAKjuD,OAAOwT,OAAOxT,OAAOwT,GAAAA;AAE5B,uBAAKlV,KAAKqnB,qBAAqB,KAAOjjB,EAAAA,QAAO;AAC5CpE,yBAAKE,YAAY;AACjBF,yBAAK6Q,aAAa;AAAA,kBAClB;AACD8+C,uBAAK7uD,KAAKd,MAAM2vD,KAAKjuD,OAAOyB,MAAMwsD,KAAKjuD,OAAOjC,IAAAA;AAC9C,sBAAIiC,OAAO+P;AACVk+C,yBAAK3nB,MAAMtmC,OAAO+P,IAEnBwS;AAAAA,wBAAMpgB,KAAK8rD,IACXN;AAAAA;AAAAA,gBACA;AACAprC,wBAAMpgB,KAAK5C,OAAOjB,KAAKyE,aAAa,cACrC,CAAA,CAAA;AAAA,cAAA;AAAA,YACL;AAEG,gBAAIwf,MAAM7f,WAAW;AAAG,qBAAO6f,MAAM,CAAA;AACrC,mBAAOA;AAAAA,UACP;AAAA,QACH;AAAA,MAKC,GAAEhjB,OAAOkuD,MAEV;AAAA,IAAA;AAAA,EAEA;ACxDe,WAASt0C,SAAOlb,YAE/B;AAAA,KAAA,WAAA;AAEC,UAAI8X,iBAAiB9X,WAAU8X,gBAC9B7W,aAAajB,WAAUiB;AACxB,UAAIgvD,oBAAoB,MACvBC,kBAAkB;AAEnB,UAAIC,sBAAsB,SAAS3sD,MAAM1D,MAAAA;AACxC,YAAIswD,QAAO/vD;AACXkB,iBAAOoY,aAAau2C;AACpB3uD,iBAAOoY,aAAas2C;AAEpB,YAAII,UAAUD,MAAKl7C,OAClBo7C,UAAUF,MAAKnjD;AAChBsjD,oBAAYlwD,MAAMmD,MAAM1D;AAExBowD,0BAAkBx2C,WAAW,WAE5B;AAAA,cAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,UACA;AAED,cAAA,CAAKsvC,MAAKnlD,UAAU,sBAAsB,CAACqlD,SAASD,SAASvwD,QAAQswD,MAAKnjD,OAAOzJ,QAAQ4sD,MAAKl7C,SAAQ;AACrGq7C,wBAAYH,OAAMC,SAASC;AAC3B;AAAA,UACA;AAEDrvD,qBAAWwV,KAAK25C,OAAM5sD,MAAM1D,IAC5BswD;AAAAA,UAAAA,MAAKnlD,UAAU,gBAAgB,CAACmlD,MAAKnjD,OAAOmjD,MAAKl7C,KAEjD3T,CAAAA;AAAAA,mBAAOoY,aAAas2C,iBACpBC;AAAAA,4BAAkB;AAAA,QACrB,GAAKlwD,WAAU+B,OAAO2vC,YAAAA;AAAAA,MACtB;AACC,UAAI8e,kBAAkB,SAAShtD,MAAM1D,MAAAA;AACpC,YAAIswD,QAAO/vD,MACVowD,MAAMn8C;AAEPi8C,oBAAYlwD,MAAMmD,MAAM1D;AAExByB,iBAAOoY,aAAas2C,iBACpBA;AAAAA,4BAAoBv2C,WAAW,WAC9B;AAAA,cAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,UACA;AAED,cAAGovC;AACF;AAEDjvD,qBAAWwN,MAAM2hD,OAAMK;QAC1B,GAAKzwD,WAAU+B,OAAO2vC,YACtB;AAAA,MAAA;AACC,eAAS6e,YAAYvwD,YAAWwD,MAAM1D,MAAAA;AACrC,YAAG0D;AACFxD,UAAAA,WAAUkV,QAAQ1R;AACnB,YAAG1D;AACFE,UAAAA,WAAUiN,QAAQnN;AAAAA,MAEnB;AACDE,MAAAA,WAAUiG,YAAY,oBAAoB;AACzC,YAAGjG,WAAU+B,OAAO2vC,cAAa;AAChC1xC,UAAAA,WAAU8X,iBAAiBq4C;AAC3BnwD,UAAAA,WAAUiB,aAAauvD;AAAAA,QAC1B,OAAO;AACJxwD,UAAAA,WAAU8X,iBAAiBA;AAC3B9X,UAAAA,WAAUiB,aAAaA;AAAAA,QACvB;AAAA,MACH,CAAA;AAAA,IAEC,GAED;AAAA,EAAA;AC3Ee,WAASyvD,oBAAoB1wD,YAAW2wD,IACtDtwD;AAAAA,SAAKuwD,aAAa5wD;AAClBK,SAAKwwD,MAAMF;AACXtwD,SAAKywD,yBAAyB;AAE9BzwD,SAAKioB,SAAS;AACb,UAAIqoC,MAAKtwD,KAAKwwD;AACd,UAAI7wD,aAAYK,KAAKuwD;AAErBvwD,WAAKywD,uBAAuB5sD,KAAKlE,WAAUiG,YAAY,gBAAgB,SAAS7F,KAAAA;AAC/E,YAAKC,CAAAA,KAAKksB,YAAYlsB,KAAK0wD,SAAS3wD;AACpCuwD,UAAAA,IAAGK,WAAW5wD,KAAG,MAAK,UAAA;AAAA,MACtB,CAEDC,CAAAA;AAAAA,WAAKywD,uBAAuB5sD,KAAKlE,WAAUiG,YAAY,gCAAgC,SAAS7F;AAC/F,YAAKC,CAAAA,KAAK0wD,SAAS3wD,GAAAA;AAAK;AACxB,YAAI6wD,IAAEN,IAAGrqD,SAASlG,GAAAA;AAElB,YAAI6wD,KAAG,cAAc5wD,KAAKopB,YAAY;AAAEknC,UAAAA,IAAGK,WAAW5wD,KAAG,KAAQ;AAAA,iBAAO;AAAA,QAAO;AAC/E,YAAI6wD,KAAG;AAAW,iBAAO;AACzB,YAAIA,KAAG;AAAgB,iBAAO;AAE9BN,QAAAA,IAAGK,WAAW5wD,KAAG,MAAK;AACtB,eAAO;AAAA,MACP;AAEDC,WAAKywD,uBAAuB5sD,KAAKlE,WAAUiG,YAAY,kBAAkB,SAAS7F;AACjF,YAAKC,CAAAA,KAAKksB,YAAYlsB,KAAK0wD,SAAS3wD;AACpCuwD,UAAAA,IAAGK,WAAW5wD,KAAG,MAAK;MACtB,CAEDC,CAAAA;AAAAA,WAAKywD,uBAAuB5sD,KAAKlE,WAAUiG,YAAY,cAAc,WAAA;AAEpE0qD,QAAAA,IAAGO,eAAa;AAChBP,QAAAA,IAAGQ,WAAS;AACZR,QAAAA,IAAGS,cAAc,CAAA;AACjBT,QAAAA,IAAGU,YAAY;AAAA,MACf,CAEDV,CAAAA;AAAAA,MAAAA,IAAG1qD,YAAY,kBAAkBjG,WAAUsxD;AAC3CX,MAAAA,IAAG1qD,YAAY,kBAAkBjG,WAAUsxD;AAC3CX,MAAAA,IAAG1qD,YAAY,kBAAkB,SAASsrD,KAAKnxD;AAC9C,YAAIJ,WAAUmG,SAAS/F,GAAAA,GAAI;AAC1BJ,UAAAA,WAAUwxD,YAAYpxD,KAAIC,KAAKoxD,cAAc;AAC7CzxD,UAAAA,WAAUorB,YAAYhrB,GAC1B;AAAA,QAAA,WAAcJ,WAAU0xD;AACpB1xD,UAAAA,WAAUsxD,iBAAiBC,KAAKnxD;MACpC,CACA;AAAA,IAAA;AAECC,SAAKu8B,SAAS;AACb,eAASrnB,OAAOlV,KAAKywD,wBAAwB;AAC5C,YAAI5yC,UAAU7d,KAAKywD,uBAAuBv7C;AAC1ClV,aAAKuwD,WAAWrtC,YAAYrF,OAC5B;AAAA,MAAA;AACD7d,WAAKywD,yBAAyB,CAAA;AAAA,IAChC;AAAA,EACA;AAEO,WAASa,gBAAgB3xD,YAAW2wD;AAC1C3wD,IAAAA,WAAU+wD,WAAS,SAAS3wD,KAC3B;AAAA,UAAGC,KAAKuxD,mBAAkB;AACzB,eAAQvxD,CAAAA,KAAKuxD,kBAAkBxxD,GAC/B;AAAA,MAAA;AACD,aAAO;AAAA,IACT;AACCJ,IAAAA,WAAUwxD,cAAY,SAASpxD,KAAGqa,MAAKiE;AACtC,UAAIte,KAAG;AACN,YAAIyG,KAAKxG,KAAK8F,SAAS/F;AACvB,YAAGyG;AAAIA,aAAG4T,IAAMiE,IAAAA;AAAAA,MACnB,OAAO;AACJre,aAAK0/C,UAAUtlC,IAAAA,IAAMiE;AAAAA,MACrB;AAAA,IACH;AACC1e,IAAAA,WAAU6xD,cAAY,SAASzxD,KAAGqa,MACjC;AAAA,UAAIra,KAAG;AACN,YAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,YAAGyG;AACF,iBAAOA,GAAG4T,IAEV;AAAA;AAAA,iBAAO;AAAA,MACX,OAAO;AACJ,eAAOpa,KAAK0/C,UAAUtlC;MACtB;AAAA,IACH;AACCza,IAAAA,WAAU8xD,wBAAsB,SAAS1xD,KAAGuC,OAAAA;AAC3C,WAAI3C,WAAUmG,SAAS/F;AACtB;AACDC,WAAK4xB,aAAa7xB,KAAG,SAAS8xB,GAC7BA;AAAAA,UAAEvvB,MAAMg5C,WAAS,MAAIh5C;AAAAA,MACxB,CACE;AAAA,UAAIkE,KAAKxG,KAAK8F,SAAS/F,GACvByG;AAAAA,SAAG,iBAAelE;AAClBtC,WAAKszC,cAAc9sC,EACrB;AAAA,IAAA;AACC7G,IAAAA,WAAUsxD,mBAAmB,SAASC,KAAInxD,KAAAA;AACzC,UAAI0R,OAAO9R,WAAU8/C,eAAeyR,IAAI7wD,UAAAA;AAExC,UAAIoR,KAAK7H,YAAY;AAAQ6H,aAAKigD,cAAc;AAChDjgD,WAAK3K,OAAO2K,KAAK3K,QAAM2K,KAAK4wC;AAC5B5wC,WAAK1O,aAAapD,WAAU6xC,SAASC,UAAUhgC,KAAK1O;AACpD0O,WAAKzO,WAAWrD,WAAU6xC,SAASC,UAAUhgC,KAAKzO,QAAAA;AAClDrD,MAAAA,WAAUwH,SAASsK,IAAAA;AACnB,UAAI9R,WAAU0xD;AACb1xD,QAAAA,WAAU8X,eAAAA;AAAAA,IACb;AACC9X,IAAAA,WAAUgyD,sBAAsB,SAAS5xD,KAAI6zC;AAC5C,UAAIj0C,CAAAA,WAAUmG,SAAS/F,GAAAA;AACtB;AACDJ,MAAAA,WAAUg0C,cAAc5zC,KAAI6zC,MAC9B;AAAA,IAAA;AACCj0C,IAAAA,WAAUiyD,kBAAkB,SAAS7xD,KAAI6zC,QAAAA;AACxC,WAAIj0C,WAAUmG,SAAS/F;AACtB;AAED,UAAG6zC,UAAU7zC,OAAM6zC,QAAO;AACzB,YAAG5zC,KAAKwxD,YAAYzxD,KAAIuwD,GAAGc,YAAiB,KAAA;AAC3CpxD,eAAKmxD,YAAYpxD,KAAIuwD,GAAGc,cAAc;AAEvCpxD,aAAK2zC,cAAc5zC,KAAI6zC,MACvB;AAAA,MAAA;AACD,aAAO5zC,KAAK+qB,YAAY6oB,QAAQ,IAAA;AAAA,IAClC;AAECj0C,IAAAA,WAAUkyD,QAAQ;AACjB7xD,WAAK+W,MAAMu5C;AAAAA,IACb;AACC3wD,IAAAA,WAAUkyD,MACX;AAAA,EAAA;ACtHO,WAASC,cAAcC,oBAAAA;AAC7B/xD,SAAKgyD,kBAAkBD;AACvB/xD,SAAKoxD,eAAe;AAEpBpxD,SAAK6Z,SAAS;AACd7Z,SAAK+wD,cAAc;AAEnB/wD,SAAKiyD,aAAa;AAClBjyD,SAAKgX,aAAa;AAClBhX,SAAKkyD,SAAS;AACdlyD,SAAKmyD,WAAW;AAChBnyD,SAAKoyD,WAAW;AAChBpyD,SAAKqyD,aAAa;AAElBryD,SAAKgxD,YAAY;AACjBhxD,SAAK6wD,eAAe;AACpB7wD,SAAK8wD,WAAW;AAChB9wD,SAAKsyD,WAAW,CAAA;AAEhBtyD,SAAKitD,SAAS,EACbsF,SAAS,qBACTC,UAAU,qBACVC,SAAS,mCACTC,SAAS,4BACTC,cAAc,gCACdn8C,OAAO,cACP+L,OAAO,2CAAA;AAERviB,SAAK4yD,kBAAkB;AACvBC,kBAAU7yD,IAAAA;AAEV,WAAOA;AAAAA,EACR;AACA8xD,gBAAcz5C,YAAY,EACzBy6C,oBAAoB,SAAUrzD,MAAMszD,OACnC;AAAA,QAAA,OAAWtzD,QAAQ,UAAU;AAC5BO,WAAKkyD,SAASzyD,KAAKA,QAAQO,KAAKkyD;AAEhC,UAAIzyD,KAAKmoC,YAAYv5B,QAAW;AAC/BrO,aAAKmyD,WAAW1yD,KAAKmoC;AAAAA,MACrB;AAED,UAAInoC,KAAKqiC,YAAYzzB,QAAW;AAC/BrO,aAAKoyD,WAAW3yD,KAAKqiC;AAAAA,MACrB;AACD9hC,WAAKgzD,WAAWD;AAAAA,IACnB,OAAS;AACN/yD,WAAKkyD,SAASzyD;AACdO,WAAKgzD,SAASD;AAAAA,IACd;AAED,QAAI/yD,KAAKkyD,UAAU,QAAQ;AAC1BlyD,WAAKgzD,SAAS;AACdhzD,WAAKizD,SAAS;AAAA,IACd;AAED,QAAIjzD,KAAKkyD,WAAW,UAAUlyD,KAAKkyD,WAAW,aAAa;AAC1DlyD,WAAKgzD,SAAS;AACdhzD,WAAKizD,SAAS;AACdjzD,WAAKkzD,mBAAmB;AACxBlzD,WAAKmyD,WAAWnyD,KAAKmyD,YAAY,CAAA;AACjCnyD,WAAKmyD,SAAS,cAAkB,IAAA;AAAA,IACnC,OAAO;AACJ,UAAGnyD,KAAKmyD,YAAAA,CAAanyD,KAAKmyD,SAAS,cAAA,GAAgB;AAClDnyD,aAAKmyD,SAAS,kBAAkB;AAAA,MAChC;AAAA,IACD;AAED,QAAInyD,KAAKkyD,WAAW,UAAU;AAC7BlyD,WAAKgzD,SAAS;AACdhzD,WAAKizD,SAAS;AACdjzD,WAAKmzD,UAAU1zD,KAAK2zD;AAAAA,IACpB;AAAA,EACD,GACDC,QAAQ,SAAU5hD,MACjB;AAAA,QAAIzR,KAAKszD;AACR,aAAO/rB,mBAAmB91B,IAAAA;AAAAA;AAE1B,aAAO4hD,OAAO5hD,IAAAA;AAAAA,EACf,GAMDmhD,mBAAmB,SAAUnzD,MAC5BO;AAAAA,SAAKszD,SAAS7zD;AAAAA,EACd,GAMD8zD,gBAAgB,SAAUtsC,KAAAA;AACzBjnB,SAAKwzD,WAAmBvsC,OAAAA,OAAO,WAAYA,IAAI3hB,MAAM,GAAO2hB,IAAAA;AAAAA,EAC5D,GAMDwsC,cAAc,WAAA;AACb,YAAQzzD,KAAK+wD,YAAY3sD;AAAAA,EACzB,GAMDsvD,iBAAiB,SAAUj0D,MAAAA;AAC1BO,SAAKizD,SAAWxzD,CAAAA,CAAAA;AAAAA,EAChB,GAMDk0D,uBAAuB,SAAUl0D,MAChCO;AAAAA,SAAK+zC,aAAat0C;AAAAA,EAClB,GAMDyX,eAAe,SAAUzX,MAAMurD;AAC9BhrD,SAAKiyD,aAAcxyD,QAAQ;AAC3BO,SAAKgX,aAAavX;AAClBO,SAAKgrD,MAAMA;AAAAA,EACX,GACD3yB,QAAQ,SAAU6S,MAAM0oB,QAAAA;AACvB5zD,SAAK4hB,eAAe;AACpBspB,SAAK90B,KAAKw9C,UAAU3yD;AACpBjB,SAAK4hB,eAAe;AAAA,EACpB,GAQD+uC,YAAY,SAAUkD,OAAO/3B,OAAOr8B,MACnC;AAAA,QAAIO,KAAK4hB;AAAc;AACvB,QAAIwhB,MAAMpjC,KAAK8zD,QAAQD,KAAAA;AAEvBp0D,WAAOA,QAAQ;AACf,QAAIs0D,WAAW/zD,KAAKuwD,WAAWiB,YAAYqC,OAAO7zD,KAAKoxD;AACvD,QAAI2C,YAAYt0D,QAAQ;AAAWA,aAAOs0D;AAC1C,QAAIj4B,OAAO;AACV97B,WAAKg0D,YAAYH,OAAO,KAAA;AACxB7zD,WAAK+wD,YAAY3tB,GAAAA,IAAOywB;AACxB7zD,WAAKuwD,WAAWY,YAAY0C,OAAO7zD,KAAKoxD,cAAc3xD,IAAAA;AACtD,UAAIO,KAAK6wD,aAAagD,KACrB7zD;AAAAA,aAAK6wD,aAAagD,KAAS,IAAA;AAAA,IAC/B,OAAS;AACN,UAAA,CAAK7zD,KAAKi0D,WAAWJ,KAAAA,GAAQ;AAC5B7zD,aAAK+wD,YAAY39C,OAAOgwB,KAAK;AAC7BpjC,aAAKuwD,WAAWY,YAAY0C,OAAO7zD,KAAKoxD,cAAc,EAAA;AAAA,MACtD;AAAA,IACD;AAEDpxD,SAAKk0D,QAAQL,OAAO/3B,OAAOr8B;AAC3B,QAAIq8B,SAAS97B,KAAKiyD;AAAYjyD,WAAK6X,SAASg8C,KAAAA;AAAAA,EAC5C,GAEDK,SAAS,SAAUn0D,KAAI+7B,OAAOr8B,MAAAA;AAC7B,QAAIq3B,MAAM;AACV,QAAI47B,UAAU1yD,KAAKi0D,WAAWl0D,GAAAA;AAC9B,QAAI2yD,SAAS;AACZ57B,YAAM92B,KAAKitD,OAAOyF,OAClB52B;AAAAA,cAAQ;AAAA,IACR;AACD,QAAI97B,KAAK4K,UAAU,aAAa,CAAC7K,KAAI+7B,OAAOr8B,MAAMizD,OAAAA,CAAAA,GAAW;AAE5D57B,YAAM92B,KAAKitD,OAAOnxB,QAAQr8B,OAAO,OAAWq3B,IAAAA;AAE5C92B,WAAKuwD,WAAWvwD,KAAKm0D,SAAS,CAAIp0D,CAAAA,EAAAA,KAAI+2B;AAEtC,UAAI47B,WAAWA,QAAQtnC,SAAS;AAC/B0L,eAAO92B,KAAKitD,OAAOyF,UAAU,OAAA;AAC7B,iBAASvuD,IAAI,GAAGA,IAAIuuD,QAAQtnC,QAAQhnB,QAAQD;AAC3C,cAAIuuD,QAAQtnC,QAAQjnB,CACnBnE;AAAAA,iBAAKuwD,WAAWvwD,KAAKm0D,SAAS,CAAIp0D,CAAAA,EAAAA,KAAIoE,GAAG2yB,GAC3C;AAAA,MAAA;AAAA,IACD;AAAA,EACD,GACDs9B,kBAAkB,SAASt4B,OAAAA;AAC1B,QAAIA,UAAU,YAAY;AACzB,aAAO;AAAA,IACP;AACD,QAAIA,UAAU,WAAW;AACxB,aAAO;AAAA,IACP;AACD,QAAIA,UAAU,WAAW;AACxB,aAAO;AAAA,IACP;AACD,WAAO;AAAA,EACP,GAED71B,UAAU,SAAUlG,KACnB;AAAA,WAAOC,KAAKuwD,WAAWiB,YAAYzxD,KAAIC,KAAKoxD;EAC5C,GACD6C,YAAY,SAAUl0D,KACrB;AAAA,WAAOC,KAAK8wD,SAAS/wD,GAAAA;AAAAA,EACrB,GACDi0D,aAAa,SAAUj0D,KAAIN,MAAM2rB;AAChC,QAAIA;AAAS3rB,aAAO,EACnB4e,OAAO5e,MAAM2rB,SAAkB9S,UAAU,WAAA;AACxC,eAAOtY,KAAKqe,MAAM/F;MAClB,EAEFtY;AAAAA,SAAK8wD,SAAS/wD,GAAAA,IAAMN;AAAAA,EACpB,GAMD40D,mBAAmB,SAAUR,OAC5B;AAAA,WAAO;AAAA,EACP,GAMDh8C,UAAU,SAAUg8C,OAAAA;AACnB,QAAI7zD,KAAKuwD,WAAWznC;AAAU9oB,WAAKuwD,WAAWznC;AAE9C,QAAW+qC,OAAAA,SAAS,eAAe7zD,KAAKgzD;AAAQ,aAAOhzD,KAAKs0D;AAC5D,QAAIt0D,KAAK6wD,aAAagD,KAAQ;AAAA,aAAO;AAErC7zD,SAAKsyD,WAAW,CAChB;AAAA,QAAA,CAAKtyD,KAAKq0D,kBAAkBR,KAAAA,KAAU7zD,KAAK4K,UAAU,qBAAqB,CAACipD,OAAO7zD,KAAKsyD,QAAY,CAAA;AAAA,aAAO;AAC1GtyD,SAAKu0D,gBAAgBv0D,KAAKw0D,YAAYX,KAAAA,GAAQA,KAC9C;AAAA,EAAA,GACDU,iBAAiB,SAAU9iD,MAAMoiD;AAChC,QAAK7zD,CAAAA,KAAK4K,UAAU,kBAAkB,CAACipD,OAAO7zD,KAAKiG,SAAS4tD,KAAQpiD,GAAAA,IAAAA,CAAAA;AAAQ,aAAO;AACnFzR,SAAKy0D,UAAUhjD,MAAMoiD,KAAAA;AAAAA,EACrB,GACDhsB,WAAW,SAAUp2B,MAAM1R,KAAAA;AAC1B,QAAIC,KAAKkzD,kBAAkB;AAC1B,aAAQlzD,KAAK00D,iBAAiBjjD,IAAAA;AAAAA,IAC9B;AAED,QAAWA,OAAAA,QAAQ;AAClB,aAAOA;AACR,eAAW1R,OAAM;AAChB,aAAOC,KAAK20D,cAAcljD,MAAM,EAAA;AAAA,SAC5B;AACJ,UAAIijC,QAAQ;AACZ,UAAI5uB,OAAO,CACX;AAAA,eAAS5Q,OAAOzD;AACf,YAAIA,KAAK7C,eAAesG,MAAM;AAC7Bw/B,gBAAM7wC,KAAK7D,KAAK20D,cAAcljD,KAAKyD,GAAAA,GAAMA,MAAMlV,KAAKqyD,UAAAA,CAAAA;AACpDvsC,eAAKjiB,KAAKqR,GAAAA;AAAAA,QACV;AACFw/B,YAAM7wC,KAAK,SAAS7D,KAAKqzD,OAAOvtC,KAAKhW,KAAK;AAC1C,UAAI9P,KAAKuwD,WAAWrR;AACnBxK,cAAM7wC,KAAK,kBAAmB7D,KAAKuwD,WAAuB,YAAA;AAC3D,aAAO7b,MAAM5kC,KAAK,GAClB;AAAA,IAAA;AAAA,EACD,GACD6kD,eAAe,SAAUljD,MAAMmjD,MAC9B;AAAA,QAAA,OAAWnjD,QAAQ;AAClB,aAAOA;AACR,QAAIijC,QAAQ,CACZ;AAAA,QAAIpN,aAAa;AACjB,aAASpyB,OAAOzD;AACf,UAAIA,KAAK7C,eAAesG,GAAM,GAAA;AAC7B,aAAKA,OAAO,QAAQA,OAAOlV,KAAKoxD,iBAAiBpxD,KAAKkyD,UAAU;AAAQ;AACxE,YAAA,OAAWzgD,KAAKyD,GAAS,MAAA,YAAA,OAAmBzD,KAAKyD,GAAS,MAAA,UAAU;AACnEoyB,uBAAa71B,KAAKyD,GACvB;AAAA,QAAA,OAAW;AACNoyB,uBAAa7iB,KAAKC,UAAUjT,KAAKyD,GAAAA,CAAAA;AAAAA,QACjC;AACDw/B,cAAM7wC,KAAK7D,KAAKqzD,QAAQuB,QAAQ,MAAM1/C,GAAAA,IAAO,MAAMlV,KAAKqzD,OAAO/rB,UAC/D,CAAA;AAAA,MAAA;AACF,WAAOoN,MAAM5kC,KAAK;EAClB,GACD+kD,eAAe,SAAUntB,MACxB;AAAA,QAAII,OAAO9nC,KAAKuwD,WAAWzoB;AAC3B,QAAI9nC,KAAKoyD;AACR,eAASl9C,OAAOlV,KAAKoyD;AACpB1qB,QAAAA,OAAMA,OAAMI,KAAK8C,aAAalD,QAAO1nC,KAAKqzD,OAAOn+C,OAAO,MAAMlV,KAAKqzD,OAAOrzD,KAAKoyD,SAASl9C,GAC1F,CAAA;AAAA,WAAOwyB;AAAAA,EACP,GACD+sB,WAAW,SAAUK,YAAYjB,OAAAA;AAChC,QAAKiB,CAAAA,YAAY;AAChB;AAAA,IACA;AACD,SAAK90D,KAAK4K,UAAU,uBAAuBipD,QAAQ,CAACA,OAAO7zD,KAAKiG,SAAS4tD,KAAQiB,GAAAA,UAAAA,IAAc,CAAC,MAAM,MAAMA,cAAc;AACzH,aAAO;AAAA,IACP;AAED,QAAIjB,OAAO;AACV7zD,WAAK6wD,aAAagD,KAAAA,KAAS,oBAAKrvD,QAAQO,QAAAA;AAAAA,IACxC;AAED,QAAIgrD,QAAO/vD;AACX,QAAI8nC,OAAO9nC,KAAKuwD,WAAWzoB;AAE3B,QAAI9nC,KAAKkyD,WAAW,UAAU;AAC7B,UAAIp2B,QAAQ97B,KAAKiG,SAAS4tD,KAAAA;AAC1B,UAAI3L,SAASloD,KAAKo0D,iBAAiBt4B,KAAAA;AACnC,UAAIi5B,0BAA0B,SAAU7I;AACvC,YAAI8I,cAAcl5B;AAClB,YAAGowB,OAAOA,IAAI7vC,gBAAgB6vC,IAAIzhB,kBAAiB;AAClD,cAAGyhB,IAAI1jB,WAAW,KAAI;AACrBwsB,0BAAc;AAAA,UACd;AACD;AACC9I,kBAAMznC,KAAKujB,MAAMkkB,IAAI7vC,YAAAA;AAAAA,UAC3B,SAAcxW,GAAAA;AAAAA,UAAI;AAAA,QACb;AAEDmvD,sBAAcA,eAAe;AAC7B,YAAIC,MAAMpB;AACV,YAAIqB,MAAMrB;AAEV,YAAI3H,KAAK;AACR8I,wBAAc9I,IAAIhE,UAAU8M;AAC5BC,gBAAM/I,IAAI+I,OAAOA;AACjBC,gBAAMhJ,IAAInsD,MAAMmsD,IAAIgJ,OAAOA;AAAAA,QAC3B;AACDnF,QAAAA,MAAKoF,oBAAoBF,KAAKC,KAAKF,aAAa9I,GAAAA;AAAAA,MACpD;AAEG,YAAMkJ,aAAa;AACnB,UAAIC;AACJ,UAAIr1D,KAAKmzD,mBAAmB/6C,UAAU;AACrCi9C,wBAAgBr1D,KAAKmzD,QAAQiC,YAAYlN,QAAQ4M,YAAYjB;MACjE,OAAU;AACN,gBAAQ/3B,OAAAA;AAAAA,UACP,KAAK;AACJu5B,4BAAgBr1D,KAAKmzD,QAAQiC,UAAAA,EAAYl7B,OAAO46B,UAChD;AAAA;AAAA,UACD,KAAK;AACJO,4BAAgBr1D,KAAKmzD,QAAQiC,YAAY1qC,OAAOmpC,KAAAA;AAChD;AAAA,UACD;AACCwB,4BAAgBr1D,KAAKmzD,QAAQiC,YAAYE,OAAOR,YAAYjB;AAC5D;AAAA,QAEF;AAAA,MAAA;AAED,UAAGwB,eAAc;AAEhB,YAAIA,CAAAA,cAAcE,SAChBF,cAAct1D,OAAOsO,UAAagnD,cAAcH,QAAQ7mD,UAAagnD,cAAcnN,WAAW75C,SAAW;AAC1G,gBAAM,IAAI4D,MAAM;QAChB;AAED,YAAGojD,cAAcE,MAAK;AACrBF,wBAAcE,KAAKR,yBAAyBS,MAAM,SAASh/C;AAC1D,gBAAGA,SAASA,MAAM0xC,QAAO;AACxB6M,sCAAwBv+C,KAAAA;AAAAA,YAC/B,OAAW;AACJu+C,sCAAwB,EAAE7M,QAAQ,SAAS7pC,OAAO7H,MAAAA,CAAAA;AAAAA,YAClD;AAAA,UACP,CAAA;AAAA,QACA,OAAS;AAEJu+C,kCAAwBM;QACxB;AAAA,MACL,OAAQ;AACJN,gCAAwB,IAAA;AAAA,MACxB;AACD;AAAA,IACA;AAED,QAAIU,cAAc,EACjBxuD,UAAU,SAASwhC;AAClB,UAAI55B,MAAM,CAEV;AAAA,UAAIglD,OAAO;AACVhlD,YAAIhL,KAAKgwD,KACT;AAAA,MAAA,WAAUiB,YAAY;AACtB,iBAAS5/C,QAAO4/C,YAAY;AAC3BjmD,cAAIhL,KAAKqR,IAAAA;AAAAA,QACT;AAAA,MACD;AAED,aAAO66C,MAAK2F,YAAY3F,OAAMtnB,KAAK55B,GAAAA;AAAAA,IACnC,GACD+4B,SAASmoB,MAAKoC;AAGf,QAAIwD,YAAY31D,KAAKgyD,mBAAmBhyD,KAAK41D,QAAS9tB,KAAK8C,aAAa5qC,KAAKgyD,eAAAA,IAAmB,CAAC,cAAchyD,KAAK41D,OAAO,iBAAiB51D,KAAKuwD,WAAWiB,YAAY,GAAG,SAAY1hD,CAAAA,EAAAA,KAAK,OAAQ;AACpM,QAAI43B,OAAM1nC,KAAK60D,cAAcc,SAC7B;AAAA,QAAIlkD;AAEJ,YAAQzR,KAAKkyD;MACZ,KAAK;AACJzgD,eAAOzR,KAAK61D,4BAA4Bf,UACxCW;AAAAA,oBAAY/tB,MAAMA,OAAMI,KAAK8C,aAAalD,IAAO1nC,IAAAA,KAAK6nC,UAAUp2B,MAAMoiD;AACtE4B,oBAAYn7C,SAAS;AACrB;AAAA,MACD,KAAK;AACJ7I,eAAOzR,KAAK61D,4BAA4Bf,UAAAA;AACxCW,oBAAY/tB,MAAMA;AAClB+tB,oBAAYn7C,SAAS;AACrBm7C,oBAAYhkD,OAAOzR,KAAK6nC,UAAUp2B,MAAMoiD;AACxC;AAAA,MACD,KAAK;AACJpiD,eAAO,CAAA;AACP,YAAIqkD,mBAAmB91D,KAAK+1D,uBAAuBjB;AACnD,iBAAS5/C,OAAO4gD,kBAAkB;AACjC,cAAI5gD,QAAQlV,KAAKoxD,gBAAgBl8C,QAAQ,QAAQA,QAAQ,SAAS;AACjE;AAAA,UACA;AACDzD,eAAKyD,GAAO4gD,IAAAA,iBAAiB5gD,GAC7B;AAAA,QAAA;AAEDugD,oBAAY/tB,MAAMA;AAClB+tB,oBAAYn7C,SAAS;AACrBm7C,oBAAYhkD,OAAOgT,KAAKC,UAAU,EACjC3kB,IAAI8zD,OACJ3L,QAAQ4M,WAAW90D,KAAKoxD,YAAAA,GACxB3/C,KAED,CAAA;AAAA;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJi2B,QAAAA,OAAMiuB,UAAU5rC,QAAQ,sBAAsB;AAC9CtY,eAAO;AAEP,gBAAQzR,KAAKiG,SAAS4tD,KACrB,GAAA;AAAA,UAAA,KAAK;AACJ4B,wBAAYn7C,SAAS;AACrBm7C,wBAAYhkD,OAAOzR,KAAK6nC,UAAUitB,YAAYjB,KAC9C;AAAA;AAAA,UACD,KAAK;AACJ4B,wBAAYn7C,SAAS;AACrBotB,YAAAA,OAAMA,QAAOA,KAAIz5B,QAAc,MAAA,MAAM,KAAK,OAAO4lD;AACjD;AAAA,UACD;AACC4B,wBAAYn7C,SAAS;AACrBm7C,wBAAYhkD,OAAOzR,KAAK6nC,UAAUitB,YAAYjB,KAAAA;AAC9CnsB,YAAAA,OAAMA,QAAOA,KAAIz5B,MAAO,EAAA,MAAO,MAAM,KAAK,OAAO4lD;AACjD;AAAA,QAEF4B;AAAAA,oBAAY/tB,MAAM1nC,KAAK60D,cAAcntB,IACrC;AAAA;AAAA,IAAA;AAGF1nC,SAAKgxD;AACL,WAAOlpB,KAAKwB,MAAMmsB,WAAAA;AAAAA,EAClB,GACDnB,aAAa,WAAA;AACZ,QAAKt0D,CAAAA,KAAK+wD,YAAY3sD,UAAUpE,KAAKgX,eAAe,OAAO;AAC1D;AAAA,IACA;AAEDhX,SAAKsyD,WAAW,CAAA;AAChB,QAAI0D,QAAQ;AAEZh2D,SAAKi2D,mBAAmB,SAASpC;AAChCmC,cAAQA,SAASh2D,KAAKq0D,kBAAkBR;IAC3C,CAEE;AAAA,QAAA,CAAKmC,UAAUh2D,KAAK4K,UAAU,qBAAqB,CAAC,IAAI5K,KAAKsyD,QAAAA,CAAAA,GAAY;AACxE,aAAO;AAAA,IACP;AAED,QAAItyD,KAAKgzD,QAAQ;AAChBhzD,WAAKy0D,UAAUz0D,KAAKk2D;IACvB,OAAS;AACNl2D,WAAKi2D,mBAAmB,SAASpC;AAChC,YAAK7zD,CAAAA,KAAK6wD,aAAagD,KAAAA,GAAQ;AAC9B,cAAI7zD,KAAKi0D,WAAWJ,KAAQ,GAAA;AAC3B;AAAA,UACA;AACD7zD,eAAKu0D,gBAAgBv0D,KAAKw0D,YAAYX,KAAQA,GAAAA,KAAAA;AAAAA,QAC9C;AAAA,MACL,CACG;AAAA,IAAA;AAAA,EACD,GAEDqC,aAAa,SAAUrC,OACtB;AAAA,QAAIva,MAAM,CAAA;AACV,QAAI6c,UAAU;AACdn2D,SAAKi2D,mBAAmB,SAASl2D,KAChC;AAAA,UAAIC,KAAK6wD,aAAa9wD,GAAAA,KAAOC,KAAKi0D,WAAWl0D,MAAI;AAChD;AAAA,MACA;AACD,UAAI8c,MAAM7c,KAAKw0D,YAAYz0D;AAC3B,UAAKC,CAAAA,KAAK4K,UAAU,kBAAkB,CAAC7K,KAAIC,KAAKiG,SAASlG,GAAK8c,GAAAA,GAAAA,CAAAA,GAAO;AACpE;AAAA,MACA;AACDy8B,UAAIv5C,GAAM8c,IAAAA;AACVs5C,gBAAU;AACVn2D,WAAK6wD,aAAa9wD,GAAAA,KAAM,oBAAKyE,QAAQO,QAAAA;AAAAA,IACxC;AACE,WAAOoxD,UAAU7c,MAAM;AAAA,EACvB,GAEDwa,SAAS,SAAUsC;AAClB,QAAIjyD,IAAI;AACR,SAAKA,IAAI,GAAGA,IAAInE,KAAK+wD,YAAY3sD,QAAQD;AACxC,UAAIiyD,WAAWp2D,KAAK+wD,YAAY5sD,CAAAA;AAAI;AACrC,WAAOA;AAAAA,EACP,GAQDkyD,cAAc,SAAUj8C,MAAMyD,SAAAA;AAC7B,SAAK7d,KAAKs2D;AAAWt2D,WAAKs2D,YAAY,CAAA;AACtCt2D,SAAKs2D,UAAUl8C,IAAQyD,IAAAA;AAAAA,EACvB,GAUDs3C,qBAAqB,SAAUF,KAAKC,KAAKhN,QAAQqO,MAChD;AAAA,QAAA,CAAIv2D,KAAKuwD,YAAW;AAEnB;AAAA,IACA;AAED,QAAIiG,UAASvB;AACb,QAAIwB,UAAWvO,WAAW,WAAWA,WAAW;AAChD,SAAKuO,SAAS;AACbz2D,WAAKg0D,YAAYiB,KAAK/M,MACtB;AAAA,IAAA;AACD,QAAKloD,KAAc,aAAMA,KAAKs2D,UAAUpO,MAAAA,KAAAA,CAAcloD,KAAKs2D,UAAUpO,QAAQqO,IAAQ,GAAA;AACpF,oBAAev2D,KAAK6wD,aAAa2F;IACjC;AAED,QAAIx2D,KAAK6wD,aAAa2F,aAAY,QAAQ;AACzCx2D,WAAK2wD,WAAWsE,KAAK;IACrB;AAED,QAAIyB,cAAczB;AAElB,YAAQ/M,QACP;AAAA,MAAA,KAAK;AAAA,MACL,KAAK;AACJ,YAAIgN,OAAOD,KAAK;AACfj1D,eAAK2wD,WAAWsE,KAAK,KAAA;AACrBj1D,eAAKuwD,WAAWvwD,KAAKm0D,SAAS,CAAIc,CAAAA,EAAAA,KAAKC,GACvCD;AAAAA,gBAAMC;AAAAA,QACN;AACD;AAAA,MACD,KAAK;AAAA,MACL,KAAK;AACJl1D,aAAKuwD,WAAWY,YAAY8D,KAAKj1D,KAAKoxD,cAAc,cAAA;AACpDpxD,aAAKuwD,WAAWvwD,KAAKm0D,SAAS,CAAIc,CAAAA,EAAAA,KAAKC,GAChCl1D;AAAAA,eAAAA,KAAK6wD,aAAa2F,OACzB;AAAA,eAAOx2D,KAAK4K,UAAU,iBAAiB,CAACqqD,KAAK/M,QAAQgN,KAAKqB,IAAAA,CAAAA;AAAAA,IAAAA;AAG5D,QAAIv2D,KAAK6wD,aAAa2F,aAAY,QAAQ;AACzC,UAAIC,SAAS;AACZz2D,aAAKuwD,WAAWY,YAAY8D,KAAKj1D,KAAKoxD,cAAc,EACpD;AAAA,MAAA;AAAA,aACMpxD,KAAK6wD,aAAa2F,OAAAA;AAAAA,IAC5B,OAAS;AAAA,aACCx2D,KAAK6wD,aAAa2F,OAAAA;AACzBx2D,WAAK2wD,WAAWuE,KAAK,MAAMl1D,KAAKuwD,WAAWiB,YAAYyD,KAAKj1D,KAAKoxD,YACjE,CAAA;AAAA,IAAA;AAEDpxD,SAAK4K,UAAU,iBAAiB,CAAC8rD,aAAaxO,QAAQgN,KAAKqB,IAAAA,CAAAA;AAAAA,EAC3D,GAEDI,gBAAgB,SAAUluB,KAAK1oC,KAC9B;AAAA,QAAGC,KAAKuwD,cAAcvwD,KAAKuwD,WAAW3lD,WAAU;AAC/C5K,WAAKuwD,WAAW3lD,UAAU,eAAe,CAAC7K,KAAI0oC,IAAI6B,MAAAA,CAAAA;AAAAA,IAClD;AACD,WAAOtqC,KAAK42D,YAAY72D,GAAAA;AAAAA,EACxB,GAED82D,4BAA4B,WAAA;AAC3B,QAAI72D,KAAKgyD,iBAAiB;AACzBhyD,WAAK8yD,mBAAmB,QAAQ,IAAA;AAChC9yD,WAAKgyD,oBAAoBhyD,KAAKgyD,gBAAgBjgD,QAAQ,GAAA,MAAA,KAAc,MAAM,OAAO;AACjF/R,WAAK82D,mBAAmB92D,KAAKgyD;AAAAA,IAC7B;AAAA,EACD,GAOD0D,aAAa,SAAUqB,MAAMtuB,KAAK1oC,KACjC;AAAA,QAAI+nC,OAAO9nC,KAAKuwD,WAAWzoB;AAE3B,QAAIW,IAAI6B,OAAO9B,WAAW,KAAI;AAC7BxoC,WAAK22D,eAAeluB,KAAK1oC,GAAAA;AACzB;AAAA,IACA;AAGD,QAAImsD;AACJ,QAAA;AACCA,YAAMznC,KAAKujB,MAAMS,IAAI6B,OAAOjuB,YAAAA;AAAAA,IAC5B,SAAQxW,GAAAA;AAER,UAAK4iC,CAAAA,IAAI6B,OAAOjuB,aAAajY,QAAQ;AACpC8nD,cAAM,CAAA;AAAA,MACN;AAAA,IACD;AAED,QAAIA,KAAK;AACR,UAAIhE,SAASgE,IAAIhE,UAAUloD,KAAKiG,SAASlG,GAAO,KAAA;AAChD,UAAIk1D,MAAM/I,IAAI+I,OAAOl1D,IAAG,CACxB;AAAA,UAAIm1D,MAAMhJ,IAAIgJ,OAAOn1D,IAAG,CAAA;AACxBg3D,WAAK5B,oBAAoBF,KAAKC,KAAKhN,QAAQgE,GAAAA;AAC3C6K,WAAKC,eACL;AAAA;AAAA,IACA;AAGD,QAAIz0D,MAAMulC,KAAKO,OAAO,QAAQI,IAAI6B,MAAAA;AAClC,SAAK/nC,KAAK;AACT,aAAOvC,KAAK22D,eAAeluB,KAAK1oC,GAAAA;AAAAA,IAChC;AACD,QAAIk3D,OAAOnvB,KAAKa,MAAM,iBAAiBpmC,GACvC;AAAA,QAAA,CAAK00D,KAAK7yD,QAAQ;AACjB,aAAOpE,KAAK22D,eAAeluB,KAAK1oC,GAChC;AAAA,IAAA;AAED,aAASoE,IAAI,GAAGA,IAAI8yD,KAAK7yD,QAAQD,KAAK;AACrC,UAAIoyD,OAAOU,KAAK9yD,CAAAA;AAChB,UAAI+jD,SAASqO,KAAK9xD,aAAa,MAC/B;AAAA,UAAIwwD,MAAMsB,KAAK9xD,aAAa,KAC5B;AAAA,UAAIywD,MAAMqB,KAAK9xD,aAAa;AAE5BsyD,WAAK5B,oBAAoBF,KAAKC,KAAKhN,QAAQqO,IAC3C;AAAA,IAAA;AACDQ,SAAKC,eACL;AAAA,EAAA,GACDJ,aAAa,SAAU72D,KAAAA;AACtB,QAAIA;AACH,eAASoE,IAAI,GAAGA,IAAIpE,IAAGqE,QAAQD;AACvBnE,eAAAA,KAAK6wD,aAAa9wD,IAAGoE,CAAAA,CAAAA;AAAAA,EAC9B,GACD6yD,gBAAgB;AACf,QAAIh3D,KAAKgxD;AAAWhxD,WAAKgxD;AAEzBhxD,SAAK4K,UAAU,uBAAuB,CACtC,CAAA;AAAA,QAAA,CAAK5K,KAAK+wD,YAAY3sD;AACrBpE,WAAK4K,UAAU,cAAc;EAC9B,GAOD9J,MAAM,SAAUnB,YAAAA;AACf,QAAIK,KAAKk3D,cAAc;AACtB;AAAA,IACA;AACDl3D,SAAKuwD,aAAa5wD;AAClB,QAAIK,KAAKuwD,WAAW4G,UAAU;AAC7Bn3D,WAAKuwD,WAAW4G,SAASn3D;IACzB;AAEDA,SAAK62D,2BAEL72D;AAAAA,SAAKm0D,WAASn0D,KAAKm0D,YAAU,CAAC,yBAAwB,IAAG,uBAAsB,iBAC/E7C;AAAAA,oBAAgBtxD,KAAKuwD,YAAYvwD;AACjC,QAAIo3D,sBAAsB,IAAI/G,oBAAoBrwD,KAAKuwD,YAAYvwD,IACnEo3D;AAAAA,wBAAoBnvC,OACpBjoB;AAAAA,SAAK4F,YAAY,aAAa,WAAA;AAAA,aACtB5F,KAAKw0D;AAELx0D,aAAAA,KAAKuwD,WAAWx5C;AAChB/W,aAAAA,KAAKuwD,WAAW8G;AAAAA,aAChBr3D,KAAKuwD,WAAWkB;AAAAA,aAChBzxD,KAAKuwD,WAAWoB;AAAAA,aAChB3xD,KAAKuwD,WAAWqB;AAAAA,aAChB5xD,KAAKuwD;AACZ6G,0BAAoB76B,OACvB;AAAA,IAAA,CAAA;AACEv8B,SAAKuwD,WAAW3lD,UAAU,wBAAwB,CAAC5K,IAAAA,CAAAA;AACnDA,SAAKk3D,eAAe;AAEpBv3D,IAAAA,WAAU03D,iBAAer3D;AAAAA,EACzB,GAEDs3D,kBAAkB,SAAU9wD,IAC3BxG;AAAAA,SAAK4F,YAAY,iBAAiBY;EAClC,GACD+wD,0BAA0B,SAAU56B,MACnC38B;AAAAA,SAAK4F,YAAY,uBAAuB+2B,IAAAA;AAAAA,EACxC,GAKD66B,eAAe,SAAUC,UAAUC,MAAAA;AAClCD,eAAWA,YAAY;AAEvBz3D,SAAK41D,QAAQ8B,SAAQ,oBAAKlzD,QAAQO;AAClC/E,SAAK23D,eAAe;AAEpB33D,SAAK43D,eAAe;AAEpB53D,SAAK4F,YAAY,iBAAiB,SAAUqvD,KAAK/M,QAAQgN,KAAK2C;AAC7D73D,WAAK83D,gBAAgB7C,KAAK/M,QAAQgN,KAAK2C,QAC1C;AAAA,IAAA,CAAA;AACE73D,SAAK4F,YAAY,cAAc;AAC9B5F,WAAK+3D,SAAAA;AAAAA,IACR;AAEE,QAAIhI,QAAO/vD;AACX,QAAIg4D,aAAa92D,SAAOutD,YAAY;AACnCsB,MAAAA,MAAKkI,WAAAA;AAAAA,IACL,GAAER,QACHz3D;AAAAA,SAAK4F,YAAY,aAAa;AAC7B4oD,oBAAcwJ,UAAAA;AAAAA,IACjB;EACE,GAMDF,iBAAiB,SAAU7C,KAAK/M,QAAQgN,KAAK2C,UAAAA;AAC5C,QAAI3P,UAAU,aAAa;AAC1BloD,WAAK23D,eAAe;AACpB,aAAO;AAAA,IACV,OAAS;AACN,aAAO;AAAA,IACP;AAAA,EACD,GAKDI,UAAU,WAAA;AACT,QAAI/3D,KAAK23D,cAAc;AACtB33D,WAAK23D,eAAe;AACpB33D,WAAKi4D;IACL;AACD,WAAO;AAAA,EACP,GAIDC,YAAY,SAAUxwB,MAAKzgC;AAC1B,QAAI6gC,OAAO9nC,KAAKuwD,WAAWzoB;AAC3B,QAAI9nC,KAAK43D;AACR,aAAO;AAAA;AAEP53D,WAAK43D,eAAe;AAErB9vB,SAAK0B,IAAI9B,MAAKzgC;EACd,GAMDkxD,kBAAkB,SAAStxC,MAAAA;AAC1B,QAAIA,KAAKxmB,YAAY;AACpB,aAAOwmB,KAAKxmB,WAAWi/C;AAAAA,IACvB;AACD,WAAO;AAAA,EACP,GAID2Y,YAAY,WAAA;AACX,QAAIlI,QAAO/vD;AACX,QAAI8nC,OAAO9nC,KAAKuwD,WAAWzoB;AAC3B,QAAIswB,UAAUp4D,KAAKuwD,WAAWiB,YAAY,GAAG;AAC7C,QAAI9pB,OAAM1nC,KAAKgyD,kBAAkBlqB,KAAK8C,aAAa5qC,KAAKgyD,mBAAmB,CAAC,cAAchyD,KAAK41D,OAAO,iBAAiBwC,OAAStoD,EAAAA,KAAK;AACrI43B,IAAAA,OAAMA,KAAI3d,QAAQ,iBAAiB,EAAA;AACnC/pB,SAAKk4D,WAAWxwB,MAAK,SAAUe,KAAAA;AAC9B,UAAI4vB,OAAOvwB,KAAKa,MAAM,cAAcF,GAAAA;AACpCsnB,MAAAA,MAAKQ,WAAWY,YAAY,GAAG,WAAWpB,MAAKoI,iBAAiBE,KAAK;AAErE,UAAIC,UAAUxwB,KAAKa,MAAM,YAAYF,GACrC;AAAA,UAAI6vB,QAAQl0D,QAAQ;AACnB2rD,QAAAA,MAAKnuC,eAAe;AAEpB,iBAASzd,IAAI,GAAGA,IAAIm0D,QAAQl0D,QAAQD,KAAK;AACxC,cAAIqkC,SAAS8vB,QAAQn0D,CAAGM,EAAAA,aAAa,QACrC;AAAA,cAAI1E,MAAKu4D,QAAQn0D,CAAAA,EAAGM,aAAa,IACjC;AAAA,cAAI+I,SAAS8qD,QAAQn0D,CAAAA,EAAGM,aAAa,QAAA;AACrC,kBAAQ+jC,QACP;AAAA,YAAA,KAAK;AACJxoC,mBAAK4K,UAAU,kBAAkB,CAAC0tD,QAAQn0D,CAAIpE,GAAAA,KAAIyN;AAClD;AAAA,YACD,KAAK;AACJxN,mBAAK4K,UAAU,kBAAkB,CAAC0tD,QAAQn0D,CAAIpE,GAAAA,KAAIyN;AAClD;AAAA,YACD,KAAK;AACJxN,mBAAK4K,UAAU,kBAAkB,CAAC0tD,QAAQn0D,CAAIpE,GAAAA,KAAIyN;AAClD;AAAA,UAEF;AAAA,QAAA;AACDuiD,QAAAA,MAAKnuC,eAAe;AAAA,MACpB;AACDmuC,MAAAA,MAAK6H,eAAe;AACpB7H,MAAAA,QAAO;AAAA,IACV,CACE;AAAA,EAAA,GAEDlvD,YAAY,WACXb;AAAAA,SAAK4K,UAAU,aAAa,CAAA,CAAA;AAC5B5K,SAAKqjB,gBAAAA;AAELrjB,SAAK+wD,cAAc,CAAA;AACnB/wD,SAAK6wD,eAAe;AACpB7wD,SAAK8wD,WAAW;AAChB9wD,SAAKmyD,WAAW;AAChBnyD,SAAKoyD,WAAW;AAAA,WACTpyD,KAAKk3D;AAAAA,EACZ,GAEDxvB,KAAK,SAASA;AACb1nC,SAAKgyD,kBAAkBhyD,KAAK82D,mBAAmBpvB;AAAAA,EAC/C,GAEDgtB,kBAAkB,SAASjjD,MAC1B;AAAA,QAAA,OAAWA,SAAS,UAAU;AAC7B,aAAOA;AAAAA,IACP;AAED,QAAI/K,OAAO1G,KAAKuwD,WAAW/2C,MAAM9S,KAAK+K,IACtC;AAAA,QAAIzR,KAAKkyD,WAAW,aAAa;aACzBxrD,KAAK3G;AAAAA,aACL2G,KAAK1G,KAAKoxD;IACjB;AAED,WAAO3sC,KAAKC,UAAUhe,IAAAA;AAAAA,EACtB,GAIDmvD,6BAA6B,SAASf,YACrC;AAAA,QAAIyD;AACJ,QAAGzD,WAAW90D,KAAKoxD,YAAkB/iD,MAAAA,QAAU;AAC9CkqD,sBAAgB,CAAA;AAChB,eAAQp0D,KAAK2wD,YAAY;AACxByD,sBAAcp0D,CAAAA,IAAKnE,KAAK61D,4BAA4Bf,WAAW3wD,CAC/D,CAAA;AAAA,MAAA;AAAA,IACJ,OAAS;AACNo0D,sBAAgBv4D,KAAK+1D,uBAAuBjB,UAAAA;AAAAA,IAC5C;AACD,WAAOyD;AAAAA,EACP,GACDxC,wBAAwB,SAASyC,aAChC;AAAA,QAAIC,SAAS;AACb,QAAGD,aAAY;AACd,UAAGA,YAAYx4D,KAAKoxD,kBAAkB,WAAU;AAC/CqH,iBAAS,CAAA;AACTA,eAAO14D,KAAKy4D,YAAYz4D;AACxB04D,eAAOz4D,KAAKoxD,YAAgBoH,IAAAA,YAAYx4D,KAAKoxD,YACjD;AAAA,MAAA,OAAQ;AACJqH,iBAASD;AAAAA,MACT;AAAA,IACD;AACD,WAAOC;AAAAA,EACP,GAEDxC,oBAAoB,SAAS/qB,MAAAA;AAC5B,QAAI6lB,cAAc/wD,KAAK+wD,YAAY9iD,MAAAA;AACnC,aAAS9J,IAAI,GAAGA,IAAI4sD,YAAY3sD,QAAQD,KAAK;AAC5C,UAAI0vD,QAAQ9C,YAAY5sD,CACxB;AAAA,UAAInE,KAAKuwD,WAAWiB,YAAYqC,OAAO7zD,KAAKoxD,YAAAA,GAAe;AAC1DlmB,aAAK90B,KAAKpW,MAAM6zD,KAAAA;AAAAA,MAChB;AAAA,IACD;AAAA,EACD,GAED6E,kBAAkB,SAASC,MAAAA;AAC1B,QAAIC,gBAAgB,CAAA;AACpB,QAAIj5D,aAAYK,KAAKuwD;AACrB,QAAI7pD,OAAO/G,WAAU6Z,MAAM9S,KAAKiyD;AAChC,aAASx0D,KAAKuC,MAAM;AACnB,UAAIvC,EAAE4N,QAAQ,GAAA,MAAS,GAAG;AACzB;AAAA,MACJ,WAAcrL,KAAKvC,IAAI;AACnB,YAAGuC,KAAKvC,CAAAA,EAAGonC,gBAAe;AACzBqtB,wBAAcz0D,KAAKxE,WAAU6xC,SAASG,WAAWjrC,KAAKvC,CAAAA,CAAAA;AAAAA,QACtD,WAAM,OAAUuC,KAAKvC,CAAM,KAAA,UAAU;AACrCy0D,wBAAcz0D,CAAAA,IAAKnE,KAAK04D,iBAAiBhyD,KAAKvC,CAC9C,CAAA;AAAA,QAAA,WAASuC,KAAKvC,CAAAA,MAAO,MAAM;AAC3By0D,wBAAcz0D,KAAK;AAAA,QACxB,OAAW;AACNy0D,wBAAcz0D,KAAKuC,KAAKvC,CAAAA;AAAAA,QACxB;AAAA,MACD;AAAA,IACD;AACDy0D,kBAAc54D,KAAKoxD,YAAAA,IAAgBzxD,WAAU6xD,YAAYmH,KAAK54D,IAAIC,KAAKoxD;AACvE,WAAOwH;AAAAA,EACP,GACDpE,aAAa,SAASz0D,KACrB;AAAA,QAAI84D,WAAW74D,KAAKuwD,WAAWzqD,SAAS/F,GACxC;AAAA,QAAA,CAAK84D,UAAU;AACdA,iBAAW,EAAE94D,IAAIA;IACjB;AACD,WAAOC,KAAK04D,iBAAiBG,QAAAA;AAAAA,EAC7B;AAIa,WAASh+C,OAAOlb,YAE/BA;AAAAA,IAAAA,WAAUm5D,sBAAsB,SAASp3D,QAAAA;AACxC,UAAI0xD;AACJ,UAAI2F;AACJ,UAAIr3D,kBAAkB0W,UAAU;AAC/Bg7C,iBAAS1xD;AAAAA,MACT,WAAUA,OAAOkN,eAAe,WAAW;AAC3CwkD,iBAAS1xD,OAAO0xD;AAAAA,MAChB,WAAS1xD,OAAOkN,eAAe,OAAS,GAAA;AACxCwkD,iBAAS1xD;AAAAA,MACT;AAED,UAAI0xD,QAAQ;AACX2F,gBAAQ;AAAA,MACV,OAAQ;AACNA,gBAAQr3D,OAAOjC,QAAQ;AAAA,MACvB;AAED,UAAI6wD,KAAK,IAAIwB,cAAcpwD,OAAOgmC,GAClC4oB;AAAAA,SAAGxvD,KAAKnB,UACR2wD;AAAAA,SAAGwC,mBAAmB,EACrBrzD,MAAMs5D,OACN3F,UACE1xD,OAAOkV,WAAAA;AACV,aAAO05C;AAAAA,IACR;AAEA3wD,IAAAA,WAAUmyD,gBAAgBA;AAAAA,EAE1B;ACr7Be,WAAQjrD,QAAClH,YAEvB;AAAA,QAAIq5D,eAAe;AAEnB,QAAIC,eAAe;AAEnB,aAAShyD,SAASvF,QAAQuX;AACzB,UAAIigD,WAAWx3D,OAAOuF;AACtBkyD,eAASttD,KAAKnK,OAAOygC;AAErB82B,qBAAev3D,OAAOygC,MAAM;AAC7B,UAAI+2B;AACFA,iBAASjgD,MAAAA;AAAAA,IACV;AAED,aAASmgD,UAAU53D,QAClB;AAAA,UAAIy3D,cAAc;AAEjB,YAAI/tB,OAAO1pC,OAAM63D,SAAS73D,OAAMi6C;AAChC,YAAIvzB,iBAAiB;AAErB,YAAIoxC,WAAWC,UAAU;AACxB,cAAIruB,QAAQ,MAAMA,QAAQ,IAAI;AAG7B,gBAAInlC,SAASvE,OAAMuE,UAAUvE,OAAMswB;AACnC,gBAAI0nC,YAAW72B,aAAa58B,QAAQgM,QAAQ,wBAAA,IAAA,MAAkChM,OAAOyX,OAAO;AAC3FzX,qBAAOyX,MAAAA;AAAAA,YACb,OAAY;AACNvW,uBAASgyD,cAAc,IAAA;AACvB/wC,+BAAiB;AAAA,YACjB;AAAA,UACD;AAED,cAAIgjB,QAAQ,IAAI;AACfjkC,qBAASgyD,cAAc,KAAA;AACvB/wC,6BAAiB;AAAA,UACjB;AAAA,QACD;AAED,YAAIA,gBAAgB;AACnB,cAAI1mB,OAAM0mB,gBAAe;AACxB1mB,YAAAA,OAAM0mB,eACN;AAAA,UAAA;AACD,mBAAS1mB,OAAMkoB,eAAe;AAAA,QAC9B;AACD;AAAA,MACA;AAAA,IACD;AAED/pB,IAAAA,WAAU6B,MAAM3B,UAAU,WAAWu5D,WAAW,IAAA;AAEhD,aAASK,SAASh6D;AACjB,UAAKg6D,CAAAA,SAASC,OAAO;AACpBD,iBAASC,QAAQ75D,SAASC,cAAc,KAExCH;AAAAA,QAAAA,WAAU6B,MAAMi4D,SAASC,OAAO,WAAWN,SAC3CK;AAAAA,iBAASC,MAAM7oD,YAAY;AAC3BhR,iBAASM,KAAKC,YAAYq5D,SAASC,KAAAA;AAAAA,MACnC;AAEDD,eAASC,MAAMp3D,MAAMod,UAAUjgB,OAAO,iBAAiB;AAAA,IACvD;AAED,aAAS0d,OAAOrW,MAAM6yD,YAAY1gD,QAAAA;AACjC,UAAI2gD,kBAAkBj6D,WAAUgoB,SAASuZ,wBAAwBp6B;AACjE,UAAIsT,QAAQu/C,cAAc,IAAIh3C,YAAAA,EAAcoH,QAAQ,MAAM,GAAA;AAC1D,UAAI8vC,YAAY,aAAaz/C,IAAsBA,kBAAAA,IAAAA;AACnD,aAAO,QAAQw/C,eAAAA,sDAAqEC,2BAA2B5gD,MAAmBA,aAAAA,MAAAA,WAAiBnS,IACnJ;AAAA,IAAA;AAED,aAASgzD,KAAKhzD,MAAAA;AACb,UAAKwyD,CAAAA,WAAWrpD,MAAM;AACrBqpD,mBAAWrpD,OAAOpQ,SAASC,cAAc,KACzCw5D;AAAAA,mBAAWrpD,KAAKY,YAAY;AAC5ByoD,mBAAWrpD,KAAK3N,MAAMg3D,WAAWrsD,QAAAA,IAAY;AAC7CpN,iBAASM,KAAKC,YAAYk5D,WAAWrpD,IAAAA;AAAAA,MACrC;AAEDqpD,iBAAWztD,KAAK/E,KAAK/G,EAAAA;AACrB,UAAI8G,WAAUhH,SAASC,cAAc,KACrC+G;AAAAA,MAAAA,SAAQ3G,YAAY,UAAU4G,KAAKA,OAAO;AAC1CD,MAAAA,SAAQgK,YAAY,0CAA0C/J,KAAKE,OAAO,aAAaF,KAAKE;AAC5FrH,MAAAA,WAAU6B,MAAMqF,UAAS,SAAQ,SAAUhB,GAAAA;AACjC,YAAGiB,KAAKG,UAAU;AACdH,eAAKG,SAASmP,KAAKpW,MAAM6F;QAC5B;AACVyzD,mBAAWztD,KAAK/E,KAAK/G,EAAAA;AACrB+G,eAAO;AAAA,MACV,CAAA;AAEEnH,MAAAA,WAAUgoB,SAASyZ,gBAAgBv6B,QAEnC;AAAA,UAAIyyD,WAAWrsD,YAAY,YAAYqsD,WAAWrpD,KAAK5P;AACtDi5D,mBAAWrpD,KAAKqW,aAAazf,UAASyyD,WAAWrpD,KAAK5P,UAEtDi5D;AAAAA;AAAAA,mBAAWrpD,KAAK7P,YAAYyG,QAAAA;AAE7B,UAAIC,KAAKC,SAAS;AACjBuyD,mBAAWS,OAAOjzD,KAAK/G,EAAAA,IAAMkB,OAAOoY,WAAW,WAAA;AAE9C,cAAIigD;AAAYA,uBAAWztD,KAAK/E,KAAK/G;QACzC,GAAM+G,KAAKC;AAETuyD,iBAAWU,KAAKlzD,KAAK/G,EAAAA,IAAM8G;AAC3BA,MAAAA,WAAU;AAEV,aAAOC,KAAK/G;AAAAA,IACZ;AAED,aAASk6D,kBAAAA;AACR,UAAIz8B,SAAS,GAAGvvB,MAAMG,MAAM6F,WAAW,CAAC,CAAA,CAAA;AAExC,eAAS9P,IAAI,GAAGA,IAAIq5B,OAAOp5B,QAAQD,KAAK;AACvC,YAAIq5B,OAAOr5B,IAAI;AACd,iBAAOq5B,OAAOr5B,CAAAA;AAAAA,QACd;AAAA,MACD;AAAA,IAED;AAED,aAAS+1D,cAAcx4D,QAAQspB,IAAIO,QAClC;AAAA,UAAI4W,MAAMtiC,SAASC,cAAc,KAEjC;AAAA,UAAIq6D,YAAY3gD,MAAM9K,IAAAA;AACtB/O,MAAAA,WAAUgoB,SAAS0Z,iBAAiBc,KAAKg4B,SAAAA;AAGzCh4B,UAAItxB,YAAY,qDAAqDnP,OAAOsF,OAAO,aAAatF,OAAOsF;AACvGm7B,UAAIrlB,aAAak8C,cAAc;AAE/B,UAAIoB,QAAQ;AAEZ,UAAI14D,OAAOqP;AACVoxB,YAAI7/B,MAAMyO,QAAQrP,OAAOqP;AAC1B,UAAIrP,OAAOoP;AACVqxB,YAAI7/B,MAAMwO,SAASpP,OAAOoP;AAC3B,UAAIpP,OAAOmpB;AACVuvC,iBAAS,2DAA2D14D,OAAOmpB,QAAQ;AACpFuvC,eAAS,6DAA6DD,YAAY,cAAcz4D,OAAOo2B,UAAU,KAAKp2B,OAAOoF,QAAQ;AACrI,UAAIkkB;AACHovC,iBAASj9C,OAAO88C,gBAAgBv4D,OAAOspB,IAAIrrB,WAAU8nB,OAAOC,OAAO2yC,YAAY,IAAA,GAAO,MAAM,IAC7F;AAAA,UAAI9uC;AACH6uC,iBAASj9C,OAAO88C,gBAAgBv4D,OAAO6pB,QAAQ5rB,WAAU8nB,OAAOC,OAAO4yC,gBAAgB,QAAA,GAAW,UAAU,KAAA;AAE7G,UAAI54D,OAAOooB,SAAS;AACnB,iBAAS3lB,IAAI,GAAGA,IAAIzC,OAAOooB,QAAQ1lB,QAAQD,KAAK;AAC/C,cAAIo2D,MAAM74D,OAAOooB,QAAQ3lB,CACzB;AAAA,cAAA,OAAWo2D,OAAO,UAAU;AAE3B,gBAAI/yC,QAAQ+yC,IAAI/yC;AAChB,gBAAIvkB,MAAMs3D,IAAIt3D,OAAQ,eAAes3D,IAAI/yC,MAAM7E,YAAgB,IAAA,oBAAoB43C,IAAI/yC,MAAM7E,YAAAA,IAAgB;AAC7G,gBAAItE,QAAQk8C,IAAIl8C,SAASla;AACzBi2D,qBAASj9C,OAAOqK,OAAOvkB,KAAKob,KAAAA;AAAAA,UACjC,OAAW;AACN+7C,qBAASj9C,OAAOo9C,KAAKA,KAAKp2D,CAC1B;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAEDi2D,eAAS;AACTj4B,UAAIjiC,YAAYk6D;AAEhB,UAAI14D,OAAOo2B,SAAS;AACnB,YAAIjR,OAAOnlB,OAAOo2B;AAClB,YAAWjR,OAAAA,QAAQ;AAClBA,iBAAOhnB,SAAS0kB,eAAesC,IAAAA;AAChC,YAAIA,KAAKvkB,MAAMod,WAAW;AACzBmH,eAAKvkB,MAAMod,UAAU;AACtByiB,YAAItwB,WAAWnQ,OAAOmpB,QAAQ,IAAI,GAAGzqB,YAAYymB,IAAAA;AAAAA,MACjD;AAEDlnB,MAAAA,WAAU6B,MAAM2gC,KAAK,SAAS,SAAU3gC,QAAAA;AACvC,YAAIkY,SAASlY,OAAMuE,UAAUvE,OAAMswB;AACnC,YAAKpY,CAAAA,OAAO7I;AAAW6I,mBAASA,OAAOjM;AACvC,YAAI+rD,YAAWxzD,QAAQ0T,QAAQ,4BAA4B;AAC1D,cAAIT,SAASS,OAAOjV,aAAa;AACjCwU,mBAAUA,UAAU,WAAYA,UAAU,UAAU,QAAQA;AAC5DhS,mBAASvF,QAAQuX,MAAAA;AAAAA,QACjB;AAAA,MACJ,CACEvX;AAAAA,aAAOygC,MAAMA;AACb,UAAInX,MAAMO;AACT0tC,uBAAev3D;AAEhB,aAAOygC;AAAAA,IACP;AAED,aAASq4B,WAAW94D,QAAQspB,IAAIO,QAC/B;AAAA,UAAI4W,MAAMzgC,OAAOqhC,UAAUrhC,SAASw4D,cAAcx4D,QAAQspB,IAAIO,MAAAA;AAE9D,WAAK7pB,OAAO+4D;AACXhB,iBAAS,IACV55D;AAAAA,eAASM,KAAKC,YAAY+hC,GAAAA;AAC1B,UAAIrb,IAAI3V,KAAKge,IAAIhe,KAAK8D,QAAQhU,OAAO8e,cAAclgB,SAASmgB,gBAAgBgB,eAAemhB,IAAInhB,eAAe;AAC9G,UAAI+F,IAAI5V,KAAKge,IAAIhe,KAAK8D,QAAQhU,OAAOkf,eAAetgB,SAASmgB,gBAAgBc,gBAAgBqhB,IAAIrhB,gBAAgB;AACjH,UAAIpf,OAAOuL,YAAY;AACtBk1B,YAAI7/B,MAAMC,MAAM;AAAA;AAEhB4/B,YAAI7/B,MAAMC,MAAMwkB,IAAI;AACrBob,UAAI7/B,MAAME,OAAOskB,IAAI;AAErBnnB,MAAAA,WAAU6B,MAAM2gC,KAAK,WAAWi3B,SAEhCD;AAAAA,eAAS9+B,MAAM8H,GAEf;AAAA,UAAIzgC,OAAO+4D;AACVtB,iBAASttD,KAAKs2B,GAAAA;AAEfxiC,MAAAA,WAAUiL,UAAU,kBAAkB,CAACu3B,GACvC,CAAA;AAAA,aAAOA;AAAAA,IACP;AAED,aAASu4B,WAAWh5D,QAAAA;AACnB,aAAO84D,WAAW94D,QAAQ,MAAM,KAChC;AAAA,IAAA;AAED,aAASi5D,aAAaj5D;AACrB,aAAO84D,WAAW94D,QAAQ,MAAM,IAAA;AAAA,IAChC;AAED,aAASk5D,SAASl5D,QACjB;AAAA,aAAO84D,WAAW94D,MAClB;AAAA,IAAA;AAED,aAASm5D,WAAW/zD,MAAME,MAAMC,WAC/B;AAAA,UAAA,OAAWH,QAAQ,UAAU;AAC5B,YAAWE,OAAAA,QAAQ,YAAY;AAC9BC,UAAAA,YAAWD;AACXA,iBAAO;AAAA,QACP;AACDF,eAAO,EAACA,MAAYE,MAAYC,UAAUA;MAC1C;AACD,aAAOH;AAAAA,IACP;AAED,aAASg0D,OAAOh0D,MAAME,MAAMD,QAAQhH,KAAIkH;AACvC,UAAWH,OAAAA,QAAQ;AAClBA,eAAO,EAACA,MAAYE,MAAYD,QAAgBhH,IAAIA,KAAIkH,UAAUA,UAAAA;AACnEH,WAAK/G,KAAK+G,KAAK/G,MAAMyZ,MAAM9K,IAAAA;AAC3B5H,WAAKC,SAASD,KAAKC,UAAUuyD,WAAWvyD;AACxC,aAAOD;AAAAA,IACP;AAED,QAAIi0D,WAAW;AACd,UAAIj0D,OAAO+zD,WAAWzsD,MAAMpO,MAAMiU,SAClCnN;AAAAA,WAAKE,OAAOF,KAAKE,QAAQ;AACzB,aAAO0zD,WAAW5zD,IACpB;AAAA,IAAA;AACC,QAAIk0D,aAAa,WAAA;AAChB,UAAIl0D,OAAO+zD,WAAWzsD,MAAMpO,MAAMiU,SAAAA;AAClCnN,WAAKE,OAAOF,KAAKE,QAAQ;AACzB,aAAO2zD,aAAa7zD,IAAAA;AAAAA,IACtB;AACC,QAAIqyD,WAAW,WACd;AAAA,UAAIryD,OAAO+zD,WAAWzsD,MAAMpO,MAAMiU,SAClCnN;AAAAA,WAAKE,OAAOF,KAAKE,QAAQ;AACzB,aAAO4zD,SAAS9zD,IAClB;AAAA,IAAA;AACCqyD,aAASttD,OAAO,SAAUgb;AACzB,aAAOA,QAAQA,KAAKpiB,gBAAAA,CAAiBoiB,KAAKpiB,aAAau0D,YAAAA;AACtDnyC,eAAOA,KAAKpZ;AACb,UAAIoZ,MAAM;AACTA,aAAKpZ,WAAWC,YAAYmZ,IAC5B4yC;AAAAA,iBAAS;AAET95D,QAAAA,WAAUiL,UAAU,uBAAuB,CAACic,IAAAA,CAAAA;AAAAA,MAC5C;AAAA,IACH;AAECsyC,aAAS9+B,QAAQ,SAAUxT;AAC1BxN,iBAAW,WAAA;AACV,YAAI4hD,YAAYzB,YAAWr1B,kBAAkBtd,IAAAA;AAC7C,YAAIo0C,UAAU72D,QAAQ;AACrB,cAAI62D,UAAU,GAAG5gC;AAAO4gC,sBAAU,CAAG5gC,EAAAA,MAAAA;AAAAA,QACrC;AAAA,MACD,GAAE,CAAA;AAAA,IACL;AAEC,QAAIi/B,aAAa,SAAUxyD,MAAME,MAAMD,QAAQhH,KAAAA;AAC9C+G,aAAOg0D,OAAO1sD,MAAMpO,MAAMiU,SAC1BnN;AAAAA,WAAKE,OAAOF,KAAKE,QAAQ;AAEzB,UAAIk0D,UAAUp0D,KAAKE,KAAK1B,MAAM,GAAK,EAAA,CAAA;AACnC,cAAQ41D,SACP;AAAA,QAAA,KAAK;AACJ,iBAAOR,WAAW5zD,IACnB;AAAA,QAAA,KAAK;AACJ,iBAAO6zD,aAAa7zD;QACrB,KAAK;AACJ,iBAAO8zD,SAAS9zD;QACjB;AACC,iBAAOgzD,KAAKhzD,IAEhB;AAAA,MAAA;AAAA,IAAA;AAECwyD,eAAW6B,QAAO,oBAAK32D,QAAQO,QAAAA;AAC/Bu0D,eAAW5qD,MAAM8K,MAAM9K;AACvB4qD,eAAWvyD,SAAS;AACpBuyD,eAAWC,WAAW;AACtBD,eAAWrsD,WAAW;AACtBqsD,eAAWU,OAAO;AAClBV,eAAWS,SAAS;AAEpBT,eAAW8B,UAAU,WACpB;AAAA,eAASlmD,OAAOokD,WAAWU;AAC1BV,mBAAWztD,KAAKqJ,GACnB;AAAA,IAAA;AACCokD,eAAWztD,OAAO,SAAU9L;AAC3B,UAAIH,MAAM05D,WAAWU,KAAKj6D,GAAAA;AAC1B,UAAIH,OAAOA,IAAI6N,YAAY;AAC1BxM,eAAOoY,WAAW,WAAA;AACjBzZ,cAAI6N,WAAWC,YAAY9N,GAC3BA;AAAAA,gBAAM;AAAA,QACN,GAAE,GAAA;AACHA,YAAIiR,aAAa;AAEjB,YAAIyoD,WAAWS,OAAOh6D,GACrBkB;AAAAA,iBAAOqY,aAAaggD,WAAWS,OAAOh6D;eAChCu5D,WAAWU,KAAKj6D;MACvB;AAAA,IACH;AAEC,QAAIs7D,SAAS;AACb17D,IAAAA,WAAUiG,YAAY,kBAAkB,SAASu8B,KAAAA;AAChDk5B,aAAOx3D,KAAKs+B,GAAAA;AAAAA,IACd,CACCxiC;AAAAA,IAAAA,WAAUiG,YAAY,uBAAuB,SAASu8B;AACrD,eAAQh+B,IAAI,GAAGA,IAAIk3D,OAAOj3D,QAAQD,KAAI;AACrC,YAAGk3D,OAAOl3D,CAAOg+B,MAAAA,KAAI;AACpBk5B,iBAAOjoD,OAAOjP,GAAG,CAAA;AACjBA;AAAAA,QACA;AAAA,MACD;AAAA,IACH;AAECxE,IAAAA,WAAUiG,YAAY,aAAa,WAClC;AAAA,UAAG6zD,SAASC,SAASD,SAASC,MAAMjsD,YAAW;AAC9CgsD,iBAASC,MAAMjsD,WAAWC,YAAY+rD,SAASC,KAC/C;AAAA,MAAA;AAED,eAAQv1D,IAAI,GAAGA,IAAIk3D,OAAOj3D,QAAQD,KAAI;AACrC,YAAGk3D,OAAOl3D,GAAGsJ,YAAW;AACvB4tD,iBAAOl3D,CAAGsJ,EAAAA,WAAWC,YAAY2tD,OAAOl3D,CAAAA,CAAAA;AAAAA,QACxC;AAAA,MACD;AACDk3D,eAAS;AAET,UAAG/B,WAAWrpD,QAAQqpD,WAAWrpD,KAAKxC,YAAW;AAChD6rD,mBAAWrpD,KAAKxC,WAAWC,YAAY4rD,WAAWrpD;MAClD;AACDqpD,mBAAa;AAAA,IACf,CAEC;AAAA,WAAO,EACN/8C,OAAOw+C,UACPtvC,SAASuvC,YACTn0D,SAASyyD,YACTgC,UAAUnC;EAEZ;AC5We,QAAAoC,KAAA,EACdp4D,MAAM,EACLyoC,YAAY,CAAC,gBAAgB,QAAQ,QAAQ,SAAS,QAAQ,UAAU,QAAQ,MAAM,SAAS,eAAe,gBAAgB,aAC9HD,GAAAA,aAAa,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,QACnHD,GAAAA,UAAU,CAAC,SAAS,WAAW,YAAY,YAAY,UAAU,UAAU,OAAA,GAC3EF,WAAW,CAAC,OAAO,SAAS,UAAU,UAAU,QAAQ,QAAQ,UAEjE9jB,QAAQ,EACP2C,sBAAsB,SACtBmxC,SAAS,OACTC,UAAU,SACVC,WAAW,OACX90D,WAAW,YACX+0D,WAAW,QACXC,aAAa,SACb/8B,cAAc,UACdhL,WAAW,SACX5I,aAAa,OACboD,iBAAiB,qCACjB1D,kBAAkB,2CAClBkxC,qBAAqB,SACrBC,cAAc,kBACdzW,UAAU,cAEV0W,mBAAmB,mDACnBC,mBAAmB,eACnBC,kBAAkB,SAClBC,uBAAuB,SACvBC,oBAAoB,eACpBC,wBAAwB,cAGxBC,UAAU,QAGVtQ,gBAAgB,kBAChBC,cAAc,gBAGdqO,YAAY,MACZC,gBAAgB,UAGhBz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAM,QACNC,QAAQ,UAGRq7B,kBAAkB,QAClBC,mBAAmB,UACnBC,oBAAoB,QACpBC,mBAAmB,QACnBC,uBAAuB,MACvBC,uBAAuB,OACvBC,wBAAwB,cACxBC,aAAa,aACbC,wBAAwB,4BACxBC,yBAAyB,SACzBC,0BAA0B,MAC1BC,uBAAuB,UACvBC,yBAAyB,OACzBC,iCAAiC,MACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,qBAClBC,8BAA8B,WAC9BC,mBAAmB,OACnBC,mBAAmB,YAEnBC,cAAc,SACdC,cAAc,UACdC,iBAAiB,cACjBC,eAAe,YACfC,gBAAgB,UAChBC,eAAe,UACfC,eAAe,SACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,cAChBC,aAAa,SAEbC,qBAAqB,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,SAAS,SAAS,SAAS,UAAU,UAAU,UAAU,QAC3HC,GAAAA,mBAAmB,CAAC,SAAS,WAAW,YAAY,YAAY,UAAU,UAAU,OAAA,EAAA,EAAA;ACxFvE,QAAAC,KAAA,EACdz7D,MAAM,EACLyoC,YAAY,CAAC,YAAY,QAAQ,WAAW,YAAY,OAAO,WAAW,UAAU,WAAW,YAAY,cAAc,YAAY,SAAA,GACrID,aAAa,CAAC,SAAS,OAAO,OAAO,QAAQ,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ,QAAQ,MAAA,GACjGD,UAAU,CAAE,WAAW,cAAc,WAAW,UAAU,UAAU,WAAW,WAC/EF,WAAW,CAAC,MAAM,MAAM,OAAO,MAAM,OAAO,MAAM,IAEnD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,SACtBmxC,SAAS,SACTC,UAAU,WACVC,WAAW,SACX90D,WAAW,gBACX+0D,WAAW,YACXC,aAAa,YACb/8B,cAAc,UACdhL,WAAW,WACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,iDAClBkxC,qBAAqB,YACrBC,cAAc,eACdzW,UAAU,eAEV0W,mBAAmB,oDACnBC,mBAAmB,cACnBC,kBAAkB,aAClBC,uBAAuB,YACvBC,oBAAoB,oBACpBC,wBAAwB,sBAGxByC,YAAY,QACZ17D,MAAM,QACN27D,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,QAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,SAClBC,mBAAmB,WACnBC,oBAAoB,SACpBC,mBAAmB,OACnBC,uBAAuB,SACvBC,uBAAuB,SACvBC,wBAAwB,wBACxBC,aAAa,oBACbC,wBAAwB,WACxBC,yBAAyB,aACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,UACzBC,iCAAiC,UACjCC,gCAAgC,SAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,uBAClBC,8BAA8B,YAC9BC,mBAAmB,IACnBC,mBAAmB,OAEnBC,cAAc,UACdC,cAAc,eACdC,iBAAiB,wBACjBC,eAAe,iBACfC,gBAAgB,eAChBC,eAAe,aACfC,eAAe,gBACfC,iBAAiB,SACjBC,kBAAkB,WAClBC,mBAAmB,SACnBC,kBAAkB,OAClBC,gBAAgB,WAChBC,aAAa,gBAEbC,qBAAqB,CAAC,YAAY,UAAU,YAAY,aAAa,OAAO,WAAW,UAAU,UAAU,WAAW,eAAe,aAAa,QAAA,GAClJC,mBAAmB,CAAC,WAAW,cAAc,WAAW,UAAU,UAAU,WAAW;ACtG1E,QAAAM,KAAA,EACd97D,MAAM,EACLyoC,YAAY,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,aACvHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa,UAAA,GAChFF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,OACtBmxC,SAAS,OACTC,UAAU,WACVC,WAAW,OACX90D,WAAW,oBACX+0D,WAAW,WACXC,aAAa,cACb/8B,cAAc,WACdhL,WAAW,UACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,0DAClBkxC,qBAAqB,cACrBC,cAAc,oBACdzW,UAAU,cAEV0W,mBAAmB,2DACnBC,mBAAmB,6BACnBC,kBAAkB,WAClBC,uBAAuB,UACvBC,oBAAoB,cACpBC,wBAAwB,mBAGxByC,YAAY,UACZ17D,MAAM,QACN27D,aAAa,cAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,SAGVtQ,gBAAgB,kBAChBC,cAAc,gBAGdqO,YAAY,MACZC,gBAAgB,UAGhBz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAM,QACNC,QAAQ,UAGRq7B,kBAAkB,SAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,sBACxBC,aAAa,iBACbC,wBAAwB,8BACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,8BAClBC,8BAA8B,eAC9BC,mBAAmB,WACnBC,mBAAmB,iBAEnBC,cAAc,OACdC,cAAc,YACdC,iBAAiB,sBACjBC,eAAe,gBACfC,gBAAgB,YAChBC,eAAe,YACfC,eAAe,iBACfC,iBAAiB,OACjBC,kBAAkB,WAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,cAChBC,aAAa,aAEbC,qBAAqB,CAAC,SAAS,UAAU,QAAQ,SAAS,QAAQ,QAAQ,UAAU,SAAS,YAAY,WAAW,YAAY,UAAA,GAChIC,mBAAmB,CAAC,YAAY,WAAW,WAAW,YAAY,UAAU,aAAa;AClG5E,QAAAO,KAAA,EACd/7D,MAAM,EACLyoC,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,KAAA,GAChFD,aAAa,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,QAClFD,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KACrDF,GAAAA,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAE3C9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,MACtBmxC,SAAS,KACTC,UAAU,KACVC,WAAW,KACX90D,WAAW,QACX+0D,WAAW,MACXC,aAAa,MACb/8B,cAAc,MACdhL,WAAW,MACX5I,aAAa,MACboD,iBAAiB,cACjB1D,kBAAkB,WAClBkxC,qBAAqB,MACrBC,cAAc,QACdzW,UAAU,MAEV0W,mBAAkB,mBAClBC,mBAAkB,QAClBC,kBAAiB,MACjBC,uBAAsB,MACtBC,oBAAoB,QACpBC,wBAAwB,QAGxByC,YAAW,MACX17D,MAAK,MACL27D,aAAY,MAGZC,UAAS,MAGTC,iBAAiB,MAGjB3C,UAAS,MAGTtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,MAClBC,mBAAmB,MACnBC,oBAAoB,MACpBC,mBAAmB,MACnBC,uBAAuB,KACvBC,uBAAuB,KACvBC,wBAAwB,SACxBC,aAAa,SACbC,wBAAwB,QACxBC,yBAAyB,MACzBC,0BAA0B,KAC1BC,uBAAuB,OACvBC,yBAAyB,KACzBC,iCAAiC,KACjCC,gCAAgC,KAChCC,mBAAmB,KACnBC,kBAAkB,KAClBC,sBAAsB,KACtBC,mBAAmB,KACnBC,kBAAkB,SAClBC,8BAA8B,OAC9BC,mBAAmB,MACnBC,mBAAmB,OAEnBC,cAAc,MACdC,cAAc,MACdC,iBAAiB,SACjBC,eAAe,MACfC,gBAAgB,MAChBC,eAAe,MACfC,eAAe,OACfC,iBAAiB,KACjBC,kBAAkB,KAClBC,mBAAmB,KACnBC,kBAAkB,KAClBC,gBAAgB,OAChBC,aAAa,MAEbC,qBAAqB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,KACzFC,GAAAA,mBAAmB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,EAAA;AC7GjD,QAAAziB,KAAA,EACd/4C,MAAM,EACLyoC,YAAY,CAAC,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,YAAY,SAAS,QAAQ,SAAS,YAAY,UAAA,GACvHD,aAAa,CAAC,OAAO,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,QAAQ,KAAA,GAC5FD,UAAU,CAAC,UAAU,WAAW,SAAS,UAAU,WAAW,SAAS,WACvEF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACX90D,WAAW,gBACX+0D,WAAW,UACXC,aAAa,QACb/8B,cAAc,UACdhL,WAAW,UACX5I,aAAa,UACboD,iBAAiB,IACjB1D,kBAAkB,yCAClBkxC,qBAAqB,YACrBC,cAAc,kBAGdC,mBAAmB,uDACnBC,mBAAmB,sBACnBC,kBAAkB,WAClBC,uBAAuB,WACvBC,oBAAoB,eACpBC,wBAAwB,oBAGxByC,YAAY,WACZ17D,MAAM,SACN27D,aAAa,YAGbC,UAAU,OACV1Z,UAAU,YAGV2Z,iBAAiB,WAGjB3C,UAAU,UAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,SAClBC,mBAAmB,SACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,gBACxBC,aAAa,mBACbC,wBAAwB,aACxBC,yBAAyB,aACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,SACzBC,iCAAiC,SACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,qBAClBC,8BAA8B,YAC9BC,mBAAmB,MACnBC,mBAAmB,SAEnBC,cAAc,SACdC,cAAc,aACdC,iBAAiB,sBACjBC,eAAe,eACfC,gBAAgB,eAChBC,eAAe,aACfC,eAAe,WACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,OAClBC,gBAAgB,YAChBC,aAAa,SAEbC,qBAAqB,CAAC,SAAS,QAAQ,UAAU,SAAS,UAAU,UAAU,YAAY,SAAS,QAAQ,SAAS,YAAY,aAChIC,mBAAmB,CAAC,WAAW,WAAW,SAAS,UAAU,WAAW,SAAS,QCvGpE,EAAA,EAAA;AAAA,QAAAQ,KAAA,EACdh8D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,aACzHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QACzEF,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACX90D,WAAW,iBACX+0D,WAAW,OACXC,aAAa,WACb/8B,cAAc,YACdhL,WAAW,UACX5I,aAAa,QACboD,iBAAiB,8CACjB1D,kBAAkB,2DAClBkxC,qBAAqB,eACrBC,cAAc,eAGdC,mBAAmB,yDACnBC,mBAAmB,qBACnBC,kBAAkB,aAClBC,uBAAuB,aACvBC,oBAAoB,kBACpBC,wBAAwB,mBAGxByC,YAAY,aACZ17D,MAAM,QACN27D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,aAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,WACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,sBACxBC,aAAa,sBACbC,wBAAwB,yBACxBC,yBAAyB,YACzBC,0BAA0B,OAC1BC,uBAAuB,WACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,OACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,kBAClBC,8BAA8B,cAC9BC,mBAAmB,SACnBC,mBAAmB,QAEnBC,cAAc,UACdC,cAAc,YACdC,iBAAiB,gBACjBC,eAAe,YACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,mBACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,aACjIC,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QCtGrE,EAAA,EAAA;AAAA,QAAAS,KAAA,EACdj8D,MAAM,EACLyoC,YAAY,CAAC,WAAW,YAAY,UAAU,UAAU,QAAQ,SAAS,SAAS,WAAW,eAAe,YAAY,cAAc,WACtID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAE,WAAW,UAAU,YAAY,aAAa,eAAe,WAAW,SAAA,GACpFF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD9jB,QAAQ,EACP2C,sBAAsB,SACtBmxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACX90D,WAAW,iBACX+0D,WAAW,aACXC,aAAa,aACb/8B,cAAc,WACdhL,WAAW,UACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,6BAClBkxC,qBAAqB,gBACrBC,cAAc,cACdzW,UAAU,cAEV0W,mBAAmB,0EACnBC,mBAAmB,gBACnBC,kBAAkB,OAClBC,uBAAuB,MACvBC,oBAAoB,4BACpBC,wBAAwB,6BAGxByC,YAAY,UACZ17D,MAAM,SACN27D,aAAa,gBAGbC,UAAU,SAGVC,iBAAiB,UAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,WAClBC,mBAAmB,eACnBC,oBAAoB,aACpBC,mBAAmB,YACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,uBACxBC,aAAa,yBACbC,wBAAwB,aACxBC,yBAAyB,YACzBC,0BAA0B,MAC1BC,uBAAuB,mBACvBC,yBAAyB,UACzBC,iCAAiC,SACjCC,gCAAgC,UAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,UACtBC,mBAAmB,IACnBC,kBAAkB,iBAClBC,8BAA8B,eAC9BE,mBAAmB,UACnBD,mBAAmB,QAEnBE,cAAc,OACdC,cAAc,aACdC,iBAAiB,iBACjBC,eAAe,cACfC,gBAAgB,eAChBC,eAAe,cACfC,eAAe,qBACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,YAChBC,aAAa,SAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACjIC,mBAAmB,CAAC,WAAW,UAAU,YAAY,YAAY,cAAc,WAAW;ACtG7E,QAAAn7C,KAAA,EACdrgB,MAAM,EACLyoC,YAAY,CAAC,cAAc,eAAe,WAAW,YAAY,SAAS,WAAW,WAAW,aAAa,eAAe,aAAa,aAAa,eACtJD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,QAC7FD,UAAU,CAAC,WAAW,WAAW,SAAS,WAAW,UAAU,aAAa,SAC5EF,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD9jB,QAAQ,EACP2C,sBAAsB,UACtBmxC,SAAS,SACTC,UAAU,YACVC,WAAW,SACX90D,WAAW,YACX+0D,WAAW,cACXC,aAAa,SACb/8B,cAAc,gBACdhL,WAAW,eACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,wDAClBkxC,qBAAqB,aACrBC,cAAc,oBACdzW,UAAU,gBAGV0W,mBAAmB,4EACnBC,mBAAmB,yBACnBC,kBAAkB,YAClBC,uBAAuB,UACvBC,oBAAoB,2BACpBC,wBAAwB,6BAGxByC,YAAY,oBACZ17D,MAAM,cACN27D,aAAa,aAGbC,UAAU,QAGVC,iBAAiB,oBAGjB3C,UAAU,UAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,aAClBC,mBAAmB,gBACnBC,oBAAoB,YACpBC,mBAAmB,WACnBC,uBAAuB,QACvBC,uBAAuB,SACvBC,wBAAwB,iBACxBC,aAAa,mBACbC,wBAAwB,iCACxBC,yBAAyB,aACzBC,0BAA0B,OAC1BC,uBAAuB,cACvBC,yBAAyB,QACzBC,iCAAiC,QACjCC,gCAAgC,QAChCC,mBAAmB,OACnBC,kBAAkB,OAClBC,sBAAsB,SACtBC,mBAAmB,QACnBC,kBAAkB,2BAClBC,8BAA8B,eAC9BE,mBAAmB,aACnBD,mBAAmB,YAEnBE,cAAc,QACdC,cAAc,aACdC,iBAAiB,sBACjBC,eAAe,iBACfC,gBAAgB,aAChBC,eAAe,cACfC,eAAe,iBACfC,iBAAiB,SACjBC,kBAAkB,YAClBC,mBAAmB,SACnBC,kBAAkB,UAClBC,gBAAgB,iBAChBC,aAAa,SAEbC,qBAAqB,CAAC,cAAc,eAAe,WAAW,YAAY,SAAS,WAAW,WAAW,aAAa,eAAe,aAAa,aAAa,YAC/JC,GAAAA,mBAAmB,CAAC,WAAW,WAAW,SAAS,WAAW,UAAU,aAAa,SAAA,EAAA,EAAA;ACvGxE,QAAAU,KAAA,EACdl8D,MAAK,EACJyoC,YAAW,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAC1HD,GAAAA,aAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC1FD,UAAS,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UAAA,GAC5EF,WAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEtD9jB,QAAO,EACN2C,sBAAqB,SACrBmxC,SAAQ,OACRC,UAAS,QACTC,WAAU,SACV90D,WAAU,aACV+0D,WAAU,QACVC,aAAY,UACZ/8B,cAAa,WACbhL,WAAU,QACV5I,aAAY,UACZoD,iBAAgB,IAChB1D,kBAAiB,oDACjBkxC,qBAAoB,eACpBC,cAAa,eACbzW,UAAS,YAGT0W,mBAAkB,yDAClBC,mBAAkB,gBAClBC,kBAAiB,YACjBC,uBAAsB,WACtBC,oBAAoB,eACpBC,wBAAwB,mBAGxByC,YAAW,UACX17D,MAAK,QACL27D,aAAY,eAGZC,UAAS,QAGTC,iBAAiB,UAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,SAClBC,mBAAmB,UACnBC,oBAAoB,WACpBC,mBAAmB,UACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,iBACxBC,aAAa,iBACbC,wBAAwB,mBACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,SACzBC,iCAAiC,SACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,eAClBC,8BAA8B,eAC9BC,mBAAmB,SACnBC,mBAAmB,UAEnBC,cAAc,SACdC,cAAc,aACdC,iBAAiB,iBACjBC,eAAe,cACfC,gBAAgB,eAChBC,eAAe,cACfC,eAAe,UACfC,iBAAiB,OACjBC,kBAAkB,QAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,WAChBC,aAAa,QAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,aACpIC,mBAAmB,CAAC,UAAU,UAAU,WAAW,aAAa,YAAY,UAAU,UCpGzE,EAAA,EAAA;AAAA,QAAAW,KAAA,EACdn8D,MAAM,EACLyoC,YAAY,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,cAAc,WAAW,aAAa,WAC7HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,WAAW,SAAS,UAAU,aAAa,UAAU,WAAW,QAAA,GAC3EF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEvD9jB,QAAQ,EACP2C,sBAAsB,OACtBmxC,SAAS,OACTC,UAAU,UACVC,WAAW,OACX90D,WAAW,gBACX+0D,WAAW,WACXC,aAAa,YACb/8B,cAAc,YACdhL,WAAW,UACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,qDAClBkxC,qBAAqB,eACrBC,cAAc,WACdzW,UAAU,eAEV0W,mBAAmB,sDACnBC,mBAAmB,oBACnBC,kBAAkB,YAClBC,uBAAuB,aACvBC,oBAAoB,mBACpBC,wBAAwB,sBAGxByC,YAAY,OACZ17D,MAAM,SACN27D,aAAa,eAGbC,UAAU,OAGVC,iBAAiB,OAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,eAClBC,mBAAmB,gBACnBC,oBAAoB,gBACpBC,mBAAmB,cACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,2BACxBC,aAAa,iBACbC,wBAAwB,WACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,6BAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,cAEnBE,cAAc,SACdC,cAAc,YACdC,iBAAiB,sBACjBC,eAAe,eACfC,gBAAgB,YAChBC,eAAe,YACfC,eAAe,iBACfC,iBAAiB,OACjBC,kBAAkB,UAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,eAChBC,aAAa,WAEbC,qBAAqB,CAAC,SAAS,WAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,aAAa,WAAW,aAAa,WAAA,GACrIC,mBAAmB,CAAC,WAAW,SAAS,UAAU,aAAa,UAAU,WAAW,QAAA,EAAA,EAAA;ACzGvE,QAAAY,KAAA,EACdp8D,MAAM,EACLyoC,YAAY,CAAC,YAAY,YAAY,aAAa,YAAY,YAAY,gBAAgB,iBAAiB,UAAU,WAAW,WAAW,aAAa,aACxJD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,aAAa,aAAa,WAAW,eAAe,WAAW,aAAa,UACvFF,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEjD9jB,QAAQ,EACP2C,sBAAsB,UACtBmxC,SAAS,SACTC,UAAU,UACVC,WAAW,YACX90D,WAAW,kBACX+0D,WAAW,YACXC,aAAa,QACb/8B,cAAc,UACdhL,WAAW,WACX5I,aAAa,UACboD,iBAAiB,IACjB1D,kBAAkB,yCAClBkxC,qBAAqB,UACrBC,cAAc,aACdzW,UAAU,cAEV0W,mBAAmB,mEACnBC,mBAAmB,oBACnBC,kBAAkB,8BAClBC,uBAAuB,2BACvBC,oBAAoB,iBACpBC,wBAAwB,iBAGxByC,YAAY,eACZ17D,MAAM,cACN27D,aAAa,UAGbC,UAAU,UAGVC,iBAAiB,eAGjB3C,UAAU,UAGVtQ,gBAAe,sBACfC,cAAa,oBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,wBAClBC,mBAAmB,eACnBC,oBAAoB,iBACpBC,mBAAmB,cACnBC,uBAAuB,QACvBC,uBAAuB,mBACvBC,wBAAwB,4BACxBC,aAAa,eACbC,wBAAwB,6CACxBC,yBAAyB,UACzBC,0BAA0B,IAC1BC,uBAAuB,+BACvBC,yBAAyB,YACzBC,iCAAiC,QACjCC,gCAAgC,YAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,mBACtBC,mBAAmB,YACnBC,kBAAkB,oBAClBC,8BAA8B,wBAC9BE,mBAAmB,UACnBD,mBAAmB,IAEnBE,cAAc,cACdC,cAAc,cACdC,iBAAiB,kBACjBC,eAAe,eACfC,gBAAgB,iBAChBC,eAAe,cACfC,eAAe,cACfC,iBAAiB,SACjBC,kBAAkB,UAClBC,mBAAmB,YACnBC,kBAAkB,SAClBC,gBAAgB,oBAChBC,aAAa,WAEbC,qBAAqB,CAAC,YAAY,YAAY,aAAa,YAAY,YAAY,gBAAgB,iBAAiB,UAAU,WAAW,WAAW,aAAa,UACjKC,GAAAA,mBAAmB,CAAC,aAAa,aAAa,WAAW,eAAe,WAAW,aAAa,UAAA,EAAA,EAAA;ACtGnF,QAAAa,KAAA,EACdr8D,MAAM,EACLyoC,YAAY,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UAAA,GAC1HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,OAAO,KAAA,GAC7FD,UAAU,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY,WAC1EF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,eACtBmxC,SAAS,QACTC,UAAU,WACVC,WAAW,QACX90D,WAAW,oBACX+0D,WAAW,eACXC,aAAa,WACb/8B,cAAc,WACdhL,WAAW,YACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,uDAClBkxC,qBAAqB,eACrBC,cAAc,WACdzW,UAAU,oBAEV0W,mBAAmB,4DACnBC,mBAAmB,eACnBC,kBAAkB,aAClBC,uBAAuB,UACvBC,oBAAoB,qBACpBC,wBAAwB,sBAGxByC,YAAY,QACZ17D,MAAM,QACN27D,aAAa,eAGbC,UAAU,SAGVC,iBAAiB,QAGjB3C,UAAU,UAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,eAClBC,mBAAmB,gBACnBC,oBAAoB,aACpBC,mBAAmB,YACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,6BACxBC,aAAa,uBACbC,wBAAwB,YACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,QACzBC,iCAAiC,UACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,QACtBC,mBAAmB,QACnBC,kBAAkB,iCAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,SAEnBE,cAAc,UACdC,cAAc,eACdC,iBAAiB,wBACjBC,eAAe,kBACfC,gBAAgB,eAChBC,eAAe,gBACfC,eAAe,gBACfC,iBAAiB,QACjBC,kBAAkB,WAClBC,mBAAmB,QACnBC,kBAAkB,SAClBC,gBAAgB,aAChBC,aAAa,cAEbC,qBAAqB,CAAC,WAAW,WAAW,QAAQ,SAAS,OAAO,QAAQ,WAAW,QAAQ,aAAa,WAAW,YAAY,UAAA,GACnIC,mBAAmB,CAAC,YAAY,SAAS,SAAS,YAAY,SAAS,YAAY;ACtGtE,QAAAc,KAAA,EACdt8D,MAAM,EACLyoC,YAAY,CAAC,SAAS,UAAU,OAAO,SAAS,OAAO,QAAQ,QAAQ,UAAU,UAAU,WAAW,UAAU,UAChHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,KAC9DF,GAAAA,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,EAAA,GAE3C9jB,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,QACVC,WAAW,QACX90D,WAAW,YACX+0D,WAAW,QACXC,aAAa,OACb/8B,cAAc,SACdhL,WAAW,QACX5I,aAAa,OACboD,iBAAiB,IACjB1D,kBAAkB,2BAClBkxC,qBAAqB,SACrBC,cAAc,SAEdC,mBAAmB,4CACnBC,mBAAmB,eACnBC,kBAAkB,WAClBC,uBAAuB,QACvB7W,UAAU,WACV8W,oBAAoB,iBACpBC,wBAAwB,cAGxByC,YAAY,WACZ17D,MAAM,SACN27D,aAAa,SAGbC,UAAU,QAGVC,iBAAiB,WAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,kBAGbqO,YAAW,MACXC,gBAAe,OAGfz7C,MAAM,OACN6U,MAAM,SACNvY,MAAM,OACN4lB,OAAO,QACPvhC,KAAK,OACLwhC,MAAK,OACLC,QAAQ,OAGRq7B,kBAAkB,QAClBC,mBAAmB,SACnBC,oBAAoB,SACpBC,mBAAmB,QACnBC,uBAAuB,WACvBC,uBAAuB,QACvBC,wBAAwB,qBACxBC,aAAa,YACbC,wBAAwB,kBACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,WACvBC,yBAAyB,UACzBC,iCAAiC,WACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,SAClBC,sBAAsB,QACtBC,mBAAmB,QACnBC,kBAAkB,mBAClBC,8BAA8B,WAC9BE,mBAAmB,YACnBD,mBAAmB,QAEnBE,cAAc,UACdC,cAAc,UACdC,iBAAiB,gBACjBC,eAAe,WACfC,gBAAgB,WAChBC,eAAe,UACfC,eAAe,eACfC,iBAAiB,OACjBC,kBAAkB,QAClBC,mBAAmB,QACnBC,kBAAkB,OAClBC,gBAAgB,UAChBC,aAAa,UAEbC,qBAAqB,CAAC,SAAS,UAAU,OAAO,SAAS,OAAO,QAAQ,QAAQ,UAAU,UAAU,WAAW,UAAU,OACzHC,GAAAA,mBAAmB,CAAC,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,KAAA,EAAA,EAAA;ACtG1D,QAAAe,KAAA,EACdv8D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,WAAW,WAAW,SAAS,UAAU,UAAU,aAAa,cAAc,WAAW,YAAY,UACvID,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,YAAY,SAAS,QAAQ,UAAU,aAAa,UAAU,SACzEF,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,OAAO,OAAO,MAAM,KAEnD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,MACtBmxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACX90D,WAAW,cACX+0D,WAAW,UACXC,aAAa,SACb/8B,cAAc,aACdhL,WAAW,eACX5I,aAAa,UACboD,iBAAiB,IACjB1D,kBAAkB,gDAClBkxC,qBAAqB,UACrBC,cAAc,WACdzW,UAAU,eAGV0W,mBAAmB,yEACnBC,mBAAmB,qBACnBC,kBAAkB,UAClBC,uBAAuB,gBACvBC,oBAAoB,eACpBC,wBAAwB,uBAGxByC,YAAY,YACZ17D,MAAM,SACN27D,aAAa,UAGbC,UAAU,MAGVhT,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,QAClBC,mBAAmB,QACnBC,oBAAoB,QACpBC,mBAAmB,QACnBC,uBAAuB,UACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,yBACbC,wBAAwB,8BACxBC,yBAAyB,YACzBC,0BAA0B,SAC1BC,uBAAuB,cACvBC,yBAAyB,YACzBC,iCAAiC,UACjCC,gCAAgC,YAChCC,mBAAmB,SACnBC,kBAAkB,WAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,0BAClBC,8BAA8B,WAC9BC,mBAAmB,QACnBC,mBAAmB,kBAEnBC,cAAc,QACdC,cAAc,cACdC,iBAAiB,mBACjBC,eAAe,gBACfC,gBAAgB,mBAChBC,eAAe,gBACfC,eAAe,UACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,iBAChBC,aAAa,eAEbC,qBAAqB,CAAC,UAAU,WAAW,WAAW,WAAW,SAAS,UAAU,UAAU,aAAa,cAAc,WAAW,YAAY,UAAA,GAChJC,mBAAmB,CAAC,YAAY,SAAS,QAAQ,UAAU,aAAa,UAAU;ACjGrE,QAAA5+D,KAAA,EACdoD,MAAM,EACLyoC,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAAA,GAC5HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,UAAU,SAAS,UAAU,QAAQ,SAAS,SAAS,OAClEF,GAAAA,WAAW,CAAC,QAAQ,OAAO,OAAO,OAAO,OAAO,OAAO,KAExD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,YACtBmxC,SAAS,QACTC,UAAU,UACVC,WAAW,SACX90D,WAAW,cACX+0D,WAAW,UACXC,aAAa,SACb/8B,cAAc,UACdhL,WAAW,QACX5I,aAAa,SACboD,iBAAiB,IACjB1D,kBAAkB,sBAClBkxC,qBAAqB,cACrBC,cAAc,WACdzW,UAAU,cAGV0W,mBAAmB,mCACnBC,mBAAmB,eACnBC,kBAAkB,qBAClBC,uBAAuB,eACvBC,oBAAoB,iBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ17D,MAAM,WACN27D,aAAa,cAGbC,UAAU,SAGVC,iBAAiB,UAGjB3C,UAAU,SAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,WACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,qBACxBC,aAAa,kBACbC,wBAAwB,6BACxBC,yBAAyB,UACzBC,0BAA0B,QAC1BC,uBAAuB,eACvBC,yBAAyB,SACzBC,iCAAiC,UACjCC,gCAAgC,SAChCC,mBAAmB,QACnBC,kBAAkB,QAClBC,sBAAsB,QACtBC,mBAAmB,SACnBC,kBAAkB,uBAClBC,8BAA8B,YAC9BC,mBAAmB,WACnBC,mBAAmB,iBAEnBC,cAAc,gBACdC,cAAc,eACdC,iBAAiB,qBACjBC,eAAe,iBACfC,gBAAgB,gBAChBC,eAAe,gBACfC,eAAe,UACfC,iBAAiB,QACjBC,kBAAkB,UAClBC,mBAAmB,SACnBC,kBAAkB,SAClBC,gBAAgB,gBAChBC,aAAa,YAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UACrIC,GAAAA,mBAAmB,CAAC,UAAU,SAAS,UAAU,QAAQ,SAAS,SAAS,OAAA,EAAA,EAAA;ACvG9D,QAAAgB,KAAA,EACdx8D,MAAM,EACLyoC,YAAY,CAAC,WAAW,YAAY,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,YAAY,UAAA,GACnID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,YAAY,UAAU,WAAW,aAAa,WAAW,WAAW,WAC/EF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,UACTC,UAAU,aACVC,WAAW,QACX90D,WAAW,gBACX+0D,WAAW,SACXC,aAAa,UACb/8B,cAAc,YACdhL,WAAW,YACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,0CAClBkxC,qBAAqB,eACrBC,cAAc,oBACdzW,UAAU,mBAEV0W,mBAAmB,6CACnBC,mBAAmB,qBACnBC,kBAAkB,eAClBC,uBAAuB,YACvBC,oBAAoB,uBACpBC,wBAAwB,wBAGxByC,YAAY,UACZ17D,MAAM,QACN27D,aAAa,eAGbC,UAAU,QAGVC,iBAAiB,UAGjB3C,UAAU,WAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,cAClBC,mBAAmB,eACnBC,oBAAoB,WACpBC,mBAAmB,WACnBC,uBAAuB,QACvBC,uBAAuB,UACvBC,wBAAwB,4BACxBC,aAAa,kBACbC,wBAAwB,cACxBC,yBAAyB,YACzBC,0BAA0B,MAC1BC,uBAAuB,eACvBC,yBAAyB,QACzBC,iCAAiC,QACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,UACtBC,mBAAmB,QACnBC,kBAAkB,qBAClBC,8BAA8B,aAC9BE,mBAAmB,QACnBD,mBAAmB,QAEnBE,cAAc,OACdC,cAAc,eACdC,iBAAiB,uBACjBC,eAAe,kBACfC,gBAAgB,aAChBC,eAAe,aACfC,eAAe,kBACfC,iBAAiB,UACjBC,kBAAkB,aAClBC,mBAAmB,QACnBC,kBAAkB,QAClBC,gBAAgB,aAChBC,aAAa,WAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,UAAU,UAAU,UAAU,UAAU,UAAU,aAAa,WAAW,YAAY,aAC5IC,mBAAmB,CAAC,YAAY,UAAU,WAAW,aAAa,UAAU,WAAW,QCnG1E,EAAA,EAAA;AAAA,QAAAiB,KAAA,EACdz8D,MAAM,EACLyoC,YAAY,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,QACjFD,aAAa,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KACnFD,GAAAA,UAAU,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KACrDF,GAAAA,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAA,EAAA,GAE3C9jB,QAAQ,EACP2C,sBAAsB,MACtBmxC,SAAS,KACTC,UAAU,KACVC,WAAW,KACX90D,WAAW,SACX+0D,WAAW,MACXC,aAAa,SACb/8B,cAAc,MACdhL,WAAW,MACX5I,aAAa,MACboD,iBAAiB,IACjB1D,kBAAkB,yBAClBkxC,qBAAqB,YACrBC,cAAc,MACdC,mBAAmB,0BACnBC,mBAAmB,aACnBC,kBAAkB,MAClBC,uBAAuB,MACvB7W,UAAU,MACV8W,oBAAoB,cACpBC,wBAAwB,UAGxByC,YAAY,OACZ17D,MAAM,MACN27D,aAAa,MAGbC,UAAU,MAGVC,iBAAiB,OAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,MAClBC,mBAAmB,MACnBC,oBAAoB,MACpBC,mBAAmB,MACnBC,uBAAuB,KACvBC,uBAAuB,KACvBC,wBAAwB,QACxBC,aAAa,UACbC,wBAAwB,UACxBC,yBAAyB,QACzBC,0BAA0B,MAC1BC,uBAAuB,MACvBC,yBAAyB,KACzBC,iCAAiC,KACjCC,gCAAgC,KAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,KACtBC,mBAAmB,KACnBC,kBAAkB,SAClBC,8BAA8B,MAC9BC,mBAAmB,KACnBC,mBAAmB,SAEnBC,cAAc,OACdC,cAAc,MACdC,iBAAiB,QACjBC,eAAe,MACfC,gBAAgB,MAChBC,eAAe,MACfC,eAAe,QACfC,iBAAiB,KACjBC,kBAAkB,KAClBC,mBAAmB,KACnBC,kBAAkB,KAClBC,gBAAgB,OAChBC,aAAa,MAEbC,qBAAqB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,KAAA,GAC1FC,mBAAmB,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO;ECxGjD,MAAMkB,cAAAA;AAAAA,IACpB,YAAYn+D,QAAAA;AACX1B,WAAK8/D,WAAW;AAChB,iBAAU37D,KAAKzC,QAAO;AACrB1B,aAAK8/D,SAAS37D,CAAKzC,IAAAA,OAAOyC;MAC1B;AAAA,IACD;AAAA,IAED,UAAUiW,MAAMqN;AACfznB,WAAK8/D,SAAS1lD,IAAQqN,IAAAA;AAAAA,IACtB;AAAA,IAED,UAAUrN;AACT,aAAOpa,KAAK8/D,SAAS1lD,IACrB;AAAA,IAAA;AAAA,EAAA;ACda,QAAA2lD,KAAA,EACd58D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACxHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,WACzEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,SACtBmxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACX90D,WAAW,eACX+0D,WAAW,SACXC,aAAa,UACb/8B,cAAc,YACdhL,WAAW,WACX5I,aAAa,SACboD,iBAAiB,IACjB1D,kBAAkB,sDAClBkxC,qBAAqB,eACrBC,cAAc,eAGdC,mBAAmB,+DACnBC,mBAAmB,qBACnBC,kBAAkB,MAClBC,uBAAuB,MACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ17D,MAAM,QACN27D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,UAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,kBACxBC,aAAa,iBACbC,wBAAwB,WACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,IACnBC,kBAAkB,mBAClBC,8BAA8B,aAC9BE,mBAAmB,YACnBD,mBAAmB,SAEnBE,cAAc,SACdC,cAAc,YACdC,iBAAiB,eACjBC,eAAe,YACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,aACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UACjIC,GAAAA,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,EAAA,EAAA;ACtGrE,QAAAqB,KAAA,EACd78D,MAAM,EACLyoC,YAAY,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,YAAY,aAAa,WAAW,YAAY,UAC7HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,WAAW,WAAW,YAAY,aAAa,WAAW,UAAA,GAC/EF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,SAEjD9jB,QAAQ,EACP2C,sBAAsB,WACtBmxC,SAAS,OACTC,UAAU,QACVC,WAAW,SACX90D,WAAW,cACX+0D,WAAW,WACXC,aAAa,aACb/8B,cAAc,WACdhL,WAAW,YACX5I,aAAa,eACboD,iBAAiB,IACjB1D,kBAAkB,mDAClBkxC,qBAAqB,gBACrBC,cAAc,gBACdzW,UAAU,YAEV0W,mBAAmB,6CACnBC,mBAAmB,iBACnBC,kBAAkB,OAClBC,uBAAuB,OACvBC,oBAAoB,mBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ17D,MAAM,SACN27D,aAAa,gBAGbC,UAAU,QAGVC,iBAAiB,UAGjB3C,UAAU,SAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,aAClBC,mBAAmB,aACnBC,oBAAoB,eACpBC,mBAAmB,aACnBC,uBAAuB,QACvBC,uBAAuB,WACvBC,wBAAwB,gBACxBC,aAAa,iBACbC,wBAAwB,8BACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,cACvBC,yBAAyB,WACzBC,iCAAiC,UACjCC,gCAAgC,WAChCC,mBAAmB,MACnBC,kBAAkB,OAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,SAC9BE,mBAAmB,eACnBD,mBAAmB,MAEnBE,cAAc,SACdC,cAAc,YACdC,iBAAiB,gBACjBC,eAAe,aACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,aACfC,iBAAiB,OACjBC,kBAAkB,QAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,YAChBC,aAAa,WAEbC,qBAAqB,CAAC,WAAW,YAAY,SAAS,SAAS,OAAO,QAAQ,QAAQ,YAAY,aAAa,WAAW,YAAY,UAAA,GACtIC,mBAAmB,CAAC,UAAU,WAAW,WAAW,YAAY,aAAa,WAAW;ACtG3E,QAAAsB,KAAA,EACd98D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,aACxHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QACzEF,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,EAAA,GAEvD9jB,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,OACVC,WAAW,SACX90D,WAAW,MACX+0D,WAAW,SACXC,aAAa,UACb/8B,cAAc,YACdhL,WAAW,SACX5I,aAAa,SACboD,iBAAiB,6CACjB1D,kBAAkB,8CAClBkxC,qBAAqB,eACrBC,cAAc,eACdzW,UAAU,YAGV0W,mBAAmB,yDACnBC,mBAAmB,yBACnBC,kBAAkB,cAClBC,uBAAuB,SACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxByC,YAAY,UACZ17D,MAAM,QACN27D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,UAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,YACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,gBACbC,wBAAwB,oBACxBC,yBAAyB,UACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,eAC9BC,mBAAmB,SACnBC,mBAAmB,eAEnBC,cAAc,SACdC,cAAc,YACdC,iBAAiB,eACjBC,eAAe,YACfC,gBAAgB,cAChBC,eAAe,YACfC,eAAe,aACfC,iBAAiB,OACjBC,kBAAkB,OAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,UAAU,WAAW,QAAQ,SAAS,OAAO,QAAQ,QAAQ,UAAU,aAAa,WAAW,YAAY,UAAA,GACjIC,mBAAmB,CAAC,UAAU,UAAU,WAAW,UAAU,WAAW,UAAU,QAAA,EAAA,EAAA;ACvGrE,QAAAuB,KAAA,EACd/8D,MAAM,EACLyoC,YAAY,CAAC,WAAW,QAAQ,UAAU,YAAY,OAAO,YAAY,UAAU,YAAY,YAAY,eAAe,YAAY,UAAA,GACtID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,aAAa,gBAAgB,UAAU,SAAS,YAAY,UAAU,WACjFF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,SACTC,UAAU,WACVC,WAAW,WACX90D,WAAW,kBACX+0D,WAAW,UACXC,aAAa,UACb/8B,cAAc,aACdhL,WAAW,UACX5I,aAAa,QACboD,iBAAiB,IACjB1D,kBAAkB,uDAClBkxC,qBAAqB,QACrBC,cAAc,eACdzW,UAAU,cAGV0W,mBAAmB,8DACnBC,mBAAmB,qBACnBC,kBAAkB,cAClBC,uBAAuB,WACvBC,oBAAoB,gBACpBC,wBAAwB,gBAGxByC,YAAY,UACZ17D,MAAM,QACN27D,aAAa,QAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,UAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,cAClBC,mBAAmB,aACnBC,oBAAoB,aACpBC,mBAAmB,UACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,yBACxBC,aAAa,qBACbC,wBAAwB,mBACxBC,yBAAyB,UACzBC,0BAA0B,KAC1BC,uBAAuB,eACvBC,yBAAyB,WACzBC,iCAAiC,UACjCC,gCAAgC,WAChCC,mBAAmB,KACnBC,kBAAkB,WAClBC,sBAAsB,gBACtBC,mBAAmB,IACnBC,kBAAkB,oBAClBC,8BAA8B,kBAC9BE,mBAAmB,YACnBD,mBAAmB,MAEnBE,cAAc,SACdC,cAAc,cACdC,iBAAiB,uBACjBC,eAAe,cACfC,gBAAgB,cAChBC,eAAe,UACfC,eAAe,kBACfC,iBAAiB,SACjBC,kBAAkB,WAClBC,mBAAmB,WACnBC,kBAAkB,OAClBC,gBAAgB,UAChBC,aAAa,cAEbC,qBAAqB,CAAC,YAAY,UAAU,SAAS,YAAY,QAAQ,WAAW,SAAS,YAAY,WAAW,cAAc,aAAa,SAC/IC,GAAAA,mBAAmB,CAAC,aAAa,eAAe,UAAU,QAAQ,YAAY,SAAS,QAAA,EAAA,EAAA;AC7F1E,QAAAwB,KAAA,EACdh9D,MAAM,EACLyoC,YAAY,CAAC,WAAW,aAAa,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,YAAY,WAAW,YAAY,UAAA,GAC9HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,WAAW,WAAW,SAAS,UAAU,UAAU,SAAS,WACvEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,UACVC,WAAW,OACX90D,WAAW,eACX+0D,WAAW,UACXC,aAAa,YACb/8B,cAAc,YACdhL,WAAW,UACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,mCAClBkxC,qBAAqB,aACrBC,cAAc,oBACdzW,UAAU,eAEV0W,mBAAmB,gDACnBC,mBAAmB,kBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,kBACpBC,wBAAwB,oBAGxByC,YAAY,OACZ17D,MAAM,QACN27D,aAAa,aAGbC,UAAU,OAGVC,iBAAiB,OAGjB3C,UAAU,SAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,WACnBC,oBAAoB,UACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,UACvBC,wBAAwB,wBACxBC,aAAa,gBACbC,wBAAwB,WACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,OACzBC,iCAAiC,QACjCC,gCAAgC,OAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,OACnBC,kBAAkB,kBAClBC,8BAA8B,eAC9BE,mBAAmB,OACnBD,mBAAmB,UAEnBE,cAAc,SACdC,cAAc,iBACdC,iBAAiB,uBACjBC,eAAe,eACfC,gBAAgB,YAChBC,eAAe,YACfC,eAAe,iBACfC,iBAAiB,OACjBC,kBAAkB,UAClBC,mBAAmB,OACnBC,kBAAkB,OAClBC,gBAAgB,WAChBC,aAAa,WAEbC,qBAAqB,CAAC,WAAW,aAAa,SAAS,SAAS,QAAQ,SAAS,SAAS,UAAU,YAAY,WAAW,YAAY,UAAA,GACvIC,mBAAmB,CAAC,WAAW,WAAW,SAAS,UAAU,UAAU,SAAS;AC5GnE,QAAAyB,KAAA,EACdj9D,MAAK,EACJyoC,YAAW,CAAC,YAAY,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS,UAAU,cAAc,aAAa,YAAY,aACpID,aAAY,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC1FD,UAAS,CAAC,YAAY,QAAQ,SAAS,YAAY,OAAO,UAAU,SACpEF,GAAAA,WAAU,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAAA,EAAA,GAEhD9jB,QAAO,EACN2C,sBAAqB,UACrBmxC,SAAQ,MACRC,UAAS,aACTC,WAAU,QACV90D,WAAU,iBACV+0D,WAAU,YACVC,aAAY,YACZ/8B,cAAa,WACbhL,WAAU,YACV5I,aAAY,UACZoD,iBAAgB,8CAChB1D,kBAAiB,kDACjBkxC,qBAAoB,aACpBC,cAAa,YACbzW,UAAS,cAGT0W,mBAAkB,uDAClBC,mBAAkB,YAClBC,kBAAiB,eACjBC,uBAAsB,YACtBC,oBAAoB,kBACpBC,wBAAwB,yBAGxByC,YAAW,UACX17D,MAAK,QACL27D,aAAY,aAGZC,UAAS,MAGTC,iBAAiB,UAGjB3C,UAAU,SAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,cACnBC,oBAAoB,SACpBC,mBAAmB,SACnBC,uBAAuB,cACvBC,uBAAuB,UACvBC,wBAAwB,yBACxBC,aAAa,sBACbC,wBAAwB,kCACxBC,yBAAyB,aACzBC,0BAA0B,QAC1BC,uBAAuB,iBACvBC,yBAAyB,QACzBC,iCAAiC,cACjCC,gCAAgC,QAChCC,mBAAmB,MACnBC,kBAAkB,WAClBC,sBAAsB,cACtBC,mBAAmB,IACnBC,kBAAkB,wBAClBC,8BAA8B,cAC9BE,mBAAmB,WACnBD,mBAAmB,QAEnBE,cAAc,aACdC,cAAc,iBACdC,iBAAiB,4BACjBC,eAAe,wBACfC,gBAAgB,mBAChBC,eAAe,iBACfC,eAAe,gBACfC,iBAAiB,MACjBC,kBAAkB,aAClBC,mBAAmB,QACnBC,kBAAkB,MAClBC,gBAAgB,WAChBC,aAAa,cAEbC,qBAAqB,CAAC,YAAY,aAAa,UAAU,WAAW,OAAO,SAAS,SAAS,UAAU,cAAc,aAAa,aAAa,WAAA,GAC/IC,mBAAmB,CAAC,YAAY,QAAQ,SAAS,YAAY,OAAO,UAAU;AC3GjE,QAAA0B,KAAA,EACdl9D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,QAAQ,UAAU,OAAO,QAAQ,QAAQ,UAAU,YAAY,WAAW,UAAU,SAAA,GACtHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAE,eAAe,eAAe,WAAW,SAAS,WAAW,WAAW,SACpFF,GAAAA,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,WACtBmxC,SAAS,QACTC,UAAU,UACVC,WAAW,SACX90D,WAAW,iBACX+0D,WAAW,aACXC,aAAa,YACb/8B,cAAc,UACdhL,WAAW,YACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,mDAClBkxC,qBAAqB,YACrBC,cAAc,kBACdzW,UAAU,aAEV0W,mBAAmB,uDACnBC,mBAAmB,cACnBC,kBAAkB,aAClBC,uBAAuB,YACvBC,oBAAoB,uBACpBC,wBAAwB,2BAGxByC,YAAY,UACZ17D,MAAM,QACN27D,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,WAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,QAClBC,mBAAmB,UACnBC,oBAAoB,SACpBC,mBAAmB,OACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,uBACxBC,aAAa,qBACbC,wBAAwB,eACxBC,yBAAyB,aACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,SACzBC,iCAAiC,WACjCC,gCAAgC,SAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,QACtBC,mBAAmB,IACnBC,kBAAkB,sBAClBC,8BAA8B,cAC9BE,mBAAmB,OACnBD,mBAAmB,IAEnBE,cAAc,WACdC,cAAc,eACdC,iBAAiB,sBACjBC,eAAe,iBACfC,gBAAgB,gBAChBC,eAAe,cACfC,eAAe,aACfC,iBAAiB,QACjBC,kBAAkB,UAClBC,mBAAmB,SACnBC,kBAAkB,OAClBC,gBAAgB,UAChBC,aAAa,iBAEbC,qBAAqB,CAAC,UAAU,WAAW,SAAS,UAAU,OAAO,QAAQ,QAAQ,WAAW,YAAY,WAAW,UAAU,YACjIC,mBAAmB,CAAC,eAAe,eAAe,WAAW,SAAS,WAAW,WAAW,SCtG/E,EAAA,EAAA;AAAA,QAAA2B,KAAA,EACdn9D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,SAAS,SAAS,UAAU,aAAa,WAAW,YAAY,UAC3HD,GAAAA,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,WAAW,cAAc,SAAS,SAAS,WAAW,SAAS,QAAA,GAC1EF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEvD9jB,QAAQ,EACP2C,sBAAsB,SACtBmxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACX90D,WAAW,eACX+0D,WAAW,UACXC,aAAa,YACb/8B,cAAc,eACdhL,WAAW,SACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,4CAClBkxC,qBAAqB,QACrBC,cAAc,iBACdzW,UAAU,WAGV0W,mBAAmB,sDACnBC,mBAAmB,kBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,eACpBC,wBAAwB,mBAGxByC,YAAY,UACZ17D,MAAM,SACN27D,aAAa,QAGbC,UAAU,QAGVC,iBAAiB,UAGjB3C,UAAU,QAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,QACvBC,uBAAuB,OACvBC,wBAAwB,oBACxBC,aAAa,mBACbC,wBAAwB,2BACxBC,yBAAyB,aACzBC,0BAA0B,MAC1BC,uBAAuB,YACvBC,yBAAyB,SACzBC,iCAAiC,QACjCC,gCAAgC,SAChCC,mBAAmB,MACnBC,kBAAkB,MAClBC,sBAAsB,OACtBC,mBAAmB,SACnBC,kBAAkB,wBAClBC,8BAA8B,aAC9BC,mBAAmB,MACnBC,mBAAmB,aAEnBC,cAAc,UACdC,cAAc,YACdC,iBAAiB,oBACjBC,eAAe,cACfC,gBAAgB,cAChBC,eAAe,cACfC,eAAe,WACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,QAClBC,gBAAgB,YAChBC,aAAa,YAEbC,qBAAqB,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,SAAS,SAAS,UAAU,aAAa,WAAW,YAAY,UAAA,GACpIC,mBAAmB,CAAC,WAAW,cAAc,SAAS,SAAS,WAAW,SAAS,QAAA,EAAA,EAAA;ACvGtE,QAAA4B,KAAA,EACdp9D,MAAM,EACLyoC,YAAY,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,OAAO,OAAO,UAAU,aAAa,WAAW,YAAY,UAAA,GACvHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAAQ,OAAO,OAAO,KAAA,GAC5FD,UAAU,CAAC,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU,WAC1EF,WAAW,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,IAEjD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,UACVC,WAAW,UACX90D,WAAW,gBACX+0D,WAAW,UACXC,aAAa,QACb/8B,cAAc,UACdhL,WAAW,UACX5I,aAAa,UACboD,iBAAiB,wCACjB1D,kBAAkB,6CAClBkxC,qBAAqB,YACrBC,cAAc,kBAGdC,mBAAmB,sDACnBC,mBAAmB,uBACnBC,kBAAkB,WAClBC,uBAAuB,WACvBC,oBAAoB,sBACpBC,wBAAwB,qBAGxByC,YAAY,WACZ17D,MAAM,SACN27D,aAAa,YAGbC,UAAU,OACV1Z,UAAU,YAGV2Z,iBAAiB,WAGjB3C,UAAU,WAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,SAClBC,mBAAmB,YACnBC,oBAAoB,WACpBC,mBAAmB,SACnBC,uBAAuB,SACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,iBACbC,wBAAwB,mBACxBC,yBAAyB,WACzBC,0BAA0B,MAC1BC,uBAAuB,aACvBC,yBAAyB,UACzBC,iCAAiC,SACjCC,gCAAgC,UAChCC,mBAAmB,MACnBC,kBAAkB,SAClBC,sBAAsB,OACtBC,mBAAmB,UACnBC,kBAAkB,wBAClBC,8BAA8B,eAC9BE,mBAAmB,UACnBD,mBAAmB,MAEnBE,cAAc,SACdC,cAAc,aACdC,iBAAiB,sBACjBC,eAAe,gBACfC,gBAAgB,gBAChBC,eAAe,aACfC,eAAe,WACfC,iBAAiB,OACjBC,kBAAkB,UAClBC,mBAAmB,UACnBC,kBAAkB,OAClBC,gBAAgB,YAChBC,aAAa,UAEbC,qBAAqB,CAAC,UAAU,WAAW,SAAS,SAAS,OAAO,OAAO,OAAO,UAAU,aAAa,WAAW,YAAY,UAChIC,GAAAA,mBAAmB,CAAC,UAAU,YAAY,UAAU,UAAU,WAAW,UAAU,QAAA,EAAA,EAAA;ACvGtE,QAAA6B,KAAA,EACdr9D,MAAM,EACLyoC,YAAY,CAAC,WAAW,YAAY,QAAQ,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAAA,GAC3HD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAAA,GAC3FD,UAAU,CAAC,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU,WACxEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,QACtBmxC,SAAS,OACTC,UAAU,SACVC,WAAW,SACX90D,WAAW,eACX+0D,WAAW,SACXC,aAAa,SACb/8B,cAAc,YACdhL,WAAW,SACX5I,aAAa,WACboD,iBAAiB,IACjB1D,kBAAkB,2DAClBkxC,qBAAqB,eACrBC,cAAc,OACdzW,UAAU,cAGV0W,mBAAmB,2DACnBC,mBAAmB,oBACnBC,kBAAkB,eAClBC,uBAAuB,aACvBC,oBAAoB,mBACpBC,wBAAwB,qBAGxByC,YAAY,cACZ17D,MAAM,SACN27D,aAAa,eAGbC,UAAU,MAGVC,iBAAiB,cAGjB3C,UAAU,UAGVtQ,gBAAe,wBACfC,cAAa,sBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,YAClBC,mBAAmB,YACnBC,oBAAoB,aACpBC,mBAAmB,WACnBC,uBAAuB,OACvBC,uBAAuB,OACvBC,wBAAwB,mBACxBC,aAAa,gBACbC,wBAAwB,sBACxBC,yBAAyB,WACzBC,0BAA0B,OAC1BC,uBAAuB,aACvBC,yBAAyB,SACzBC,iCAAiC,OACjCC,gCAAgC,SAChCC,mBAAmB,OACnBC,kBAAkB,KAClBC,sBAAsB,SACtBC,mBAAmB,SACnBC,kBAAkB,mBAClBC,8BAA8B,gBAC9BE,mBAAmB,eACnBD,mBAAmB,SAEnBE,cAAc,UACdC,cAAc,aACdC,iBAAiB,gBACjBC,eAAe,eACfC,gBAAgB,eAChBC,eAAe,YACfC,eAAe,YACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,SACnBC,kBAAkB,MAClBC,gBAAgB,YAChBC,aAAa,UAEbC,qBAAqB,CAAC,WAAW,YAAY,QAAQ,SAAS,OAAO,QAAQ,QAAQ,WAAW,aAAa,WAAW,YAAY,UAAA,GACpIC,mBAAmB,CAAC,UAAU,UAAU,UAAU,UAAU,WAAW,UAAU;ACvGpE,QAAA8B,KAAA,EACdt9D,MAAM,EACLyoC,YAAY,CAAC,QAAQ,SAAS,QAAQ,SAAS,SAAS,WAAW,UAAU,WAAW,SAAS,QAAQ,SAAS,WAClHD,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAC3FD,GAAAA,UAAU,CAAC,SAAS,aAAa,QAAQ,YAAY,YAAY,QAAQ,WAAA,GACzEF,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,UAEvD9jB,QAAQ,EACP2C,sBAAsB,SACtBmxC,SAAS,OACTC,UAAU,SACVC,WAAW,MACX90D,WAAW,SACX+0D,WAAW,UACXC,aAAa,SACb/8B,cAAc,YACdhL,WAAW,WACX5I,aAAa,OACboD,iBAAiB,IACjB1D,kBAAkB,8BAClBkxC,qBAAqB,YACrBC,cAAc,iBACdzW,UAAU,WAGV0W,mBAAmB,iDACnBC,mBAAmB,sBACnBC,kBAAkB,SAClBC,uBAAuB,SACvBC,oBAAoB,kBACpBC,wBAAwB,4BAGxByC,YAAY,UACZ17D,MAAM,SACN27D,aAAa,YAGbC,UAAU,OAGVC,iBAAiB,UAGjB3C,UAAU,UAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,UAClBC,mBAAmB,YACnBC,oBAAoB,SACpBC,mBAAmB,UACnBC,uBAAuB,OACvBC,uBAAuB,OACvBC,wBAAwB,eACxBC,aAAa,eACbC,wBAAwB,sBACxBC,yBAAyB,aACzBC,0BAA0B,aAC1BC,uBAAuB,WACvBC,yBAAyB,MACzBC,iCAAiC,OACjCC,gCAAgC,MAChCC,mBAAmB,aACnBC,kBAAkB,QAClBC,sBAAsB,QACtBC,mBAAmB,MACnBC,kBAAkB,oBAClBC,8BAA8B,QAC9BC,mBAAmB,SACnBC,mBAAmB,mBAEnBC,cAAc,QACdC,cAAc,WACdC,iBAAiB,eACjBC,eAAe,aACfC,gBAAgB,UAChBC,eAAe,WACfC,eAAe,QACfC,iBAAiB,OACjBC,kBAAkB,SAClBC,mBAAmB,MACnBC,kBAAkB,OAClBC,gBAAgB,aAChBC,aAAa,SAEbC,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,SAAS,SAAS,WAAW,UAAU,WAAW,SAAS,QAAQ,SAAS,QAAA,GAC3HC,mBAAmB,CAAC,SAAS,aAAa,QAAQ,YAAY,YAAY,QAAQ;ACvGrE,QAAA+B,KAAA,EACdv9D,MAAM,EACLyoC,YAAY,CAAC,UAAU,SAAS,YAAY,WAAW,WAAW,WAAW,UAAU,WAAW,YAAY,WAAW,YAAY,SAAA,GACrID,aAAa,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,QAC3FD,UAAU,CAAC,UAAU,aAAa,YAAY,UAAU,UAAU,YAAY,QAC9EF,GAAAA,WAAW,CAAC,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,KAEvD9jB,EAAAA,GAAAA,QAAQ,EACP2C,sBAAsB,YACtBmxC,SAAS,QACTC,UAAU,WACVC,WAAW,UACX90D,WAAW,cACX+0D,WAAW,YACXC,aAAa,WACb/8B,cAAc,UACdhL,WAAW,cACX5I,aAAa,YACboD,iBAAiB,IACjB1D,kBAAkB,2CAClBkxC,qBAAqB,QACrBC,cAAc,oBACdzW,UAAU,aAGV0W,mBAAmB,sDACnBC,mBAAmB,qBACnBC,kBAAkB,cAClBC,uBAAuB,YACvBC,oBAAoB,oBACpBC,wBAAwB,wBAGxByC,YAAY,WACZ17D,MAAM,QACN27D,aAAa,QAGbC,UAAU,OAGVC,iBAAiB,WAGjB3C,UAAU,WAGVtQ,gBAAe,kBACfC,cAAa,gBAGbqO,YAAW,MACXC,gBAAe,UAGfz7C,MAAM,QACN6U,MAAM,YACNvY,MAAM,QACN4lB,OAAO,SACPvhC,KAAK,OACLwhC,MAAK,QACLC,QAAQ,UAGRq7B,kBAAkB,QAClBC,mBAAmB,WACnBC,oBAAoB,UACpBC,mBAAmB,OACnBC,uBAAuB,UACvBC,uBAAuB,QACvBC,wBAAwB,uBACxBC,aAAa,sBACbC,wBAAwB,iBACxBC,yBAAyB,eACzBC,0BAA0B,IAC1BC,uBAAuB,kBACvBC,yBAAyB,UACzBC,iCAAiC,UACjCC,gCAAgC,UAChCC,mBAAmB,IACnBC,kBAAkB,IAClBC,sBAAsB,QACtBC,mBAAmB,IACnBC,kBAAkB,uBAClBC,8BAA8B,aAC9BE,mBAAmB,OACnBD,mBAAmB,IAEnBE,cAAc,UACdC,cAAc,SACdC,iBAAiB,sBACjBC,eAAe,WACfC,gBAAgB,YAChBC,eAAe,UACfC,eAAe,eACfC,iBAAiB,QACjBC,kBAAkB,WAClBC,mBAAmB,UACnBC,kBAAkB,OAClBC,gBAAgB,WAChBC,aAAa,gBAEbC,qBAAqB,CAAC,SAAS,UAAU,WAAW,UAAU,UAAU,UAAU,SAAS,UAAU,WAAW,UAAU,aAAa,QACvIC,GAAAA,mBAAmB,CAAC,WAAW,cAAc,aAAa,WAAW,aAAa,aAAa,SAAA,EAAA,EAAA;ACtElF,WAAAgC,cACd;AAAA,WAAO,IAAId,cAAc,EACxBR,IACA9D,IACAqD,IACAK,IACAC,IACAhjB,IACAijB,IACAC,IACA57C,IACA87C,IACAC,IACAC,IACAC,IACAC,IACA3/D,IACA4/D,IACAC,IACAG,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,GAEF,CAAA;AAAA,EAAA;AAAA,EC/DO,MAAME,WAAAA;AAAAA,IACZ,YAAYjhE,YAAW6L,WAAWswB,QAAQ,CAAA;AACzC97B,WAAK87B,QAAQ,EACZ34B,MAAM,oBAAIqB,QACVq8D,OAAO,CAAC,QAAQ,UAAU,UAC1BC,cAAc,CAAA,GACdC,YAAY,CAAA,GACZC,kBAAkB,GACfllC,GAAAA,MAAAA;AAEJ97B,WAAKwL,YAAY;AACjBxL,WAAK0F,UAAU;AACf1F,WAAKihE,wBAAwB;AAC7BjhE,WAAKL,YAAYA;AACjBK,WAAKkhE,aAAavhE,WAAUmoB,qBAC5B9nB;AAAAA,WAAK87B,QAAQ97B,KAAKiG;AAClB4sD,oBAAU7yD,IAAAA;AACV,UAAGwL,WAAU;AAEZxL,aAAKwL,YAAYA;AACjBxL,aAAKoH,OAAOpH,KAAKwL,SACjB;AAAA,MAAA;AAEDxL,WAAKmhE,cAAc,CAACC,UAAUC,aAC7BrhE;AAAAA,aAAK4K,UAAU,iBAAiB,CAACy2D,UAAUD,QAAAA,CAAAA;AAAAA,MAAU;IAEtD;AAAA,IAED;AACC,aAAO,EAAA,GACHphE,KAAK87B,OACRr8B,MAAMO,KAAK87B,MAAM+kC,MAAM7gE,KAAK87B,MAAMklC;IAEnC;AAAA,IAED,SAASK,UAAAA;AACR,YAAMD,WAAW,EAAA,GAAKphE,KAAK87B,MAC3B;AAAA,UAAGulC,SAAS5hE,MAAK;AAChB4hE,iBAASL,mBAAmBhhE,KAAK87B,MAAM+kC,MAAM9uD,QAAQsvD,SAAS5hE,IAAAA;AAAAA,MAC9D;AACDO,WAAK87B,QAAQ,EAAK97B,GAAAA,KAAK87B,UAAUulC,SAEjCrhE;AAAAA,WAAKshE,mBAAmBF,UAAUphE,KAAK87B;AAEvC,UAAI97B,KAAKwL,WAAW;AACnBxL,aAAKoH,OAAOpH,KAAKwL;MACjB;AAAA,IACD;AAAA,IAED,cAAcqS,SAAAA;AACb7d,WAAKihE,sBAAsBp9D,KAAKga,OAGhC;AAAA,aAAO;AACN,cAAMvO,QAAQtP,KAAKihE,sBAAsBlvD,QAAQ8L,OACjD;AAAA,YAAIvO,cAAc;AACjBtP,eAAKihE,sBAAsB7tD,OAAO9D,OAAO,CACzC;AAAA,QAAA;AAAA,MAAA;AAAA,IAEF;AAAA,IAED,mBAAmB8xD,UAAUC,UAAAA;AAC5BrhE,WAAKihE,sBAAsBt9D,QAAQka,aAAWA,QAAQujD,UAAUC,QAChE,CAAA;AAAA,IAAA;AAAA,IAED,YAAYj6C,WAAAA;AAEX,cAAM3nB,MAAK0D,KAAUnD,IAAAA,KAAKiG,SAC1B;AAAA,YAAMs7D,UAAU,IAAI/8D,KAAKrB;AACzB,UAAI1D,SAAS,QAAQ;AACpB8hE,gBAAQn0B,SAASjqC,KAAKyV,aAAawO,SACtC;AAAA,MAAA,WAAa3nB,SAAS,UAAU;AAC7B8hE,gBAAQC,YAAYr+D,KAAKwV,YAAAA,IAAgByO;MAC5C,OAAS;AACNm6C,gBAAQC,YAAYr+D,KAAKwV,gBAAgByO,YAAY,EAAA;AAAA,MACrD;AACDpnB,WAAKyhE,SAAS,EAAEt+D,MAAMo+D;IACtB;AAAA,IAED;AACC,YAAMG,YAAY1hE,KAAK87B,MAAMklC,mBAAmB,KAAKhhE,KAAK87B,MAAM+kC,MAAMz8D;AACtEpE,WAAKyhE,SAAS,EAAET,kBAAkBU,SAAAA,CAAAA;AAAAA,IAClC;AAAA,IAED,sBAAsBl2D;AACrB,YAAM/L,EAAAA,MAAK0D,KAAEA,IAAQnD,KAAKiG,SAAAA;AAE1B,YAAM4d,SAAShkB,SAASC,cAAc,KAAA;AACtC+jB,aAAOnH,UAAUtZ,IAAI,2BAErB;AAAA,YAAMu+D,gBAAgB9hE,SAASC,cAAc;AAE7C6hE,oBAAcjlD,UAAUtZ,IAAI,4BAA4B,kBAAkB,YAC1EygB;AAAAA,aAAOzjB,YAAYuhE,aAEnB;AAAA,YAAMC,aAAa/hE,SAASC,cAAc;AAC1C8hE,iBAAWllD,UAAUtZ,IAAI,0BAAA;AAEzB,UAAI3D,SAAS,QAAQ;AACpBmiE,mBAAWC,YAAY1+D,KAAK2+D,eAAe,WAAW,EAAE/gC,OAAO,YAAY,MAAM59B,KAAKwV;MACzF,WAAalZ,SAAS,UAAU;AAC7BmiE,mBAAWC,YAAY1+D,KAAKwV,YAC/B;AAAA,MAAA,OAAS;AACN,cAAMopD,YAAY5wD,KAAK8D,MAAM9R,KAAKwV,YAAgB,IAAA,EAAA,IAAM;AACxDipD,mBAAWC,YAAY,GAAGE,SAAeA,MAAAA,YAAY;MACrD;AAED/hE,WAAKkhE,WAAWj5C,OAAO25C,YAAY,SAAS5hE,KAAKgiE,YAAYn/C,KAAK7iB,IAAAA,CAAAA;AAClE6jB,aAAOzjB,YAAYwhE,UAAAA;AAEnB,YAAMK,eAAepiE,SAASC,cAAc,QAAA;AAE5CmiE,mBAAavlD,UAAUtZ,IAAI,4BAA4B,kBAAkB,aAAA;AACzEygB,aAAOzjB,YAAY6hE;AAEnBz2D,gBAAUpL,YAAYyjB;AAEtB7jB,WAAKkhE,WAAWj5C,OAAO05C,eAAe,SAAS3hE,KAAKkiE,YAAYr/C,KAAK7iB,MAAO,EAAA,CAAA;AAC5EA,WAAKkhE,WAAWj5C,OAAOg6C,cAAc,SAASjiE,KAAKkiE,YAAYr/C,KAAK7iB,MAAM,CAC1E,CAAA;AAAA,IAAA;AAAA,IAED,OAAOwL,WAAAA;AACNxL,WAAKkhE,WAAWn5C,UAAAA;AAChB/nB,WAAKwL,YAAYA,aAAaxL,KAAKwL;AACnCxL,WAAKwL,UAAUtL,YAAY;AAE3B,UAAIF,CAAAA,KAAK0F,SAAQ;AAChB1F,aAAK0F,UAAU7F,SAASC,cAAc,KACtCE;AAAAA,aAAK0F,QAAQgX,UAAUtZ,IAAI,oBAC3B;AAAA,MAAA;AACDpD,WAAK0F,QAAQxF,YAAY;AACzBF,WAAKwL,UAAUpL,YAAYJ,KAAK0F,OAAAA;AAEhC1F,WAAKmiE,sBAAsBniE,KAAK0F,OAChC;AAAA,YAAM08D,gBAAgBviE,SAASC,cAAc;AAC7CsiE,oBAAc1lD,UAAUtZ,IAAI,yBAAA;AAC5BpD,WAAK0F,QAAQtF,YAAYgiE;AAEzB,YAAM3iE,EAAAA,SAASO,KAAKiG,SAAAA;AACpB,UAAIxG,SAAS,QAAQ;AACpBO,aAAKqiE,eAAeD,aACvB;AAAA,MAAA,WAAa3iE,SAAS,UAAU;AAC7BO,aAAKsiE,iBAAiBF,aACzB;AAAA,MAAA,OAAS;AACNpiE,aAAKuiE,gBAAgBH;MACrB;AAAA,IACD;AAAA,IAED,qBAAqBI;AACpB,YAAMr/D,EAAAA,SAASnD,KAAKiG,SAAAA;AACpB,YAAMtG,aAAYK,KAAKL;AAEvB,UAAI8iE,cAAc9iE,WAAUwD,KAAK6B,WAAW,IAAIR,KAAKrB;AACrD,YAAM2tB,UAAUnxB,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK6B,WAAW,IAAIR,KAAKrB,QAAQ,GAAG,MAAA;AAEjFq/D,0BAAoB9lD,UAAUtZ,IAAI,yBAElC;AAAA,YAAMs/D,cAAc/iE,WAAUwD,KAAK0qC,YAAY,IAE/C;AAAA,aAAO40B,YAAY19D,QAAAA,IAAY+rB,QAAQ/rB,QAAW,GAAA;AACjD,cAAMyiB,QAAQk7C,YAAYD;AAE1B,cAAME,aAAa9iE,SAASC,cAAc;AAC1C6iE,mBAAW7lD,aAAa,YAAY2lD,YAAY15D,OAAAA,CAAAA;AAChD45D,mBAAWjmD,UAAUtZ,IAAI,4BACzBu/D;AAAAA,mBAAWd,YAAYr6C;AACvBg7C,4BAAoBpiE,YAAYuiE,UAEhCF;AAAAA,sBAAc9iE,WAAUwD,KAAKC,IAAIq/D,aAAa,GAAG;MACjD;AAAA,IAED;AAAA,IAED,cAAcn0D,KAAKC;AAClB,YAAM5O,aAAYK,KAAKL;AACvB,UAAI45C,QAAQ;AACZ,UAAIqpB,WAAW,IAAIp+D,KAAK8J,GACxB;AAAA,aAAMs0D,SAAS79D,QAAAA,IAAYwJ,IAAIxJ,QAAU,GAAA;AACxCw0C,iBAAS;AACTqpB,mBAAWjjE,WAAUwD,KAAK6B,WAAWrF,WAAUwD,KAAKC,IAAIw/D,UAAU,GAAG;MACrE;AACD,aAAOrpB;AAAAA,IACP;AAAA,IAED,eAAe/tC,WAAAA;AACd,cAAMrI,MAAK29D,cAAcC,YAAY8B,SAAEA,IAAY7iE,KAAKiG,SAAAA;AAExD,UAAI68D,mBAAmBhC,aAAa;AACpC,UAAIiC,mBAAmBjC,aAAa,CAEpC;AAAA,YAAMkC,iBAAiBjC,WAAWkC,OAAO,CAAC/zC,KAAK/rB,UAC9C;AAAA,cAAM+/D,WAAWljE,KAAKL,UAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKrB,KAAAA,CAAAA;AACxD+rB,YAAIg0C,SAASn+D,QAAAA,CAAAA,IAAa;AAC1B,eAAOmqB;AAAAA,MAAG,GACR,CAAE;AAIL,YAAMszC,sBAAsB3iE,SAASC,cAAc,KAAA;AACnDE,WAAKmjE,qBAAqBX,mBAAAA;AAC1Bh3D,gBAAUpL,YAAYoiE;AAEtB,YAAM7iE,aAAYK,KAAKL;AACvB,YAAMyjE,YAAYzjE,WAAUwD,KAAK6B,WAAWrF,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKrB,IAChF,CAAA,CAAA;AAAA,YAAMkgE,aAAa1jE,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKrB,IACvD,CAAA;AAAA,YAAMmgE,WAAW3jE,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKrB,IAAQ,CAAA,GAAA,GAAG;AACnF,UAAIogE,WAAW5jE,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKrB,QAAQ,GAAG,OAAA;AACjF,YAAMqgE,iBAAiB7jE,WAAUwD,KAAKyF,UAAUjJ,WAAUsM,aAC1D,CAAA;AAAA,UAAGs3D,SAASx6D,OAAa,MAAA,GAAE;AAC1Bw6D,mBAAW5jE,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAK6B,WAAWu+D,WAAW,GAAG,MAAA;AAAA,MACtE;AAED,UAAIhqB,QAAQv5C,KAAKyjE,cAAcL,WAAWG,QAC1C;AAAA,UAAGV,YAAYtpB,QAAQspB,UAAS;AAC/BU,mBAAW5jE,WAAUwD,KAAKC,IAAImgE,UAAWV,WAAWtpB,OAAQ;MAC5D;AAED,UAAIz0C,WAAWs+D;AAEf,YAAMM,mBAAmB7jE,SAASC,cAAc,KAChD4jE;AAAAA,uBAAiBhnD,UAAUtZ,IAAI,yBAAA;AAE/BpD,WAAKkhE,WAAWj5C,OAAOy7C,kBAAkB,SAAUliE,CAAAA;AAClD,cAAMmiE,WAAWniE,OAAMuE,OAAOC,QAAQ;AACtC,cAAM7C,QAAO,IAAIqB,KAAKm/D,SAASl/D,aAAa,gBAAA,CAAA;AAC5CzE,aAAK4K,UAAU,eAAe,CAACzH,OAAM3B,MAAAA,CAAAA;AAAAA,MAAO,CAG7C;AAAA,aAAMsD,SAASC,QAAYw+D,IAAAA,SAASx+D,WAAU;AAC7C,cAAM49D,aAAa9iE,SAASC,cAAc,KAC1C6iE;AAAAA,mBAAW7lD,aAAa,kBAAkBnd,WAAU0zB,UAAUgD,YAAYvxB,QAAAA,CAAAA;AAC1E69D,mBAAW7lD,aAAa,YAAYhY,SAASiE,OAAAA,CAAAA;AAC7C45D,mBAAWziE,YAAY4E,SAASsE;AAEhC,YAAGtE,SAASC,YAAYs+D,WAAWt+D,QAAAA,GAAU;AAC5C49D,qBAAWjmD,UAAUtZ,IAAI,YAAA;AAAA,QACzB,WAAQ0B,SAASC,aAAau+D,SAASv+D,QAAAA,GAAU;AACjD49D,qBAAWjmD,UAAUtZ,IAAI,WAAA;AAAA,QACzB;AAED,YAAG0B,SAASiE,aAAa,KAAKjE,SAASiE,OAAa,MAAA,GAAE;AACrD45D,qBAAWjmD,UAAUtZ,IAAI,4BACzB;AAAA,QAAA;AAED,YAAG0B,SAASC,QAAAA,KAAay+D,eAAez+D,QAAAA,GAAU;AACjD49D,qBAAWjmD,UAAUtZ,IAAI,SACzB;AAAA,QAAA;AAED,YAAG0/D,oBAAoBC,kBAAiB;AACvC,cAAGj+D,SAASC,QAAa+9D,KAAAA,iBAAiB/9D,aAAaD,SAASC,QAAAA,IAAYg+D,iBAAiBh+D,QAAU,GAAA;AACtG49D,uBAAWjmD,UAAUtZ,IAAI,4BACzB;AAAA,UAAA;AAAA,QACD;AAED,YAAG4/D,eAAel+D,SAASC,QAAW,CAAA,GAAA;AACrC49D,qBAAWjmD,UAAUtZ,IAAI,0BACzB;AAAA,QAAA;AAEDu/D,mBAAWjmD,UAAUtZ,IAAI;AAEzBsgE,yBAAiBtjE,YAAYuiE,UAC7B79D;AAAAA,mBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,KAAA;AAAA,MAC3C;AAED0G,gBAAUpL,YAAYsjE,gBAEtB;AAAA,IAAA;AAAA,IAED,iBAAiBl4D,WAAAA;AAChB,cAAMrI,KAACA,IAAQnD,KAAKiG,SAEpB;AAAA,YAAM29D,UAAU/jE,SAASC,cAAc,KACvC8jE;AAAAA,cAAQlnD,UAAUtZ,IAAI,2BAAA;AAEtB,YAAMygE,SAAS,CAAA;AACf,eAAQ1/D,IAAI,GAAGA,IAAI,IAAIA,KAAI;AAC1B0/D,eAAOhgE,KAAK,IAAIW,KAAKrB,KAAKwV,eAAexU,GAAG,CAAA,CAAA;AAAA,MAC5C;AAED,YAAM2/D,cAAc9jE,KAAKL,UAAUwD,KAAK0qC,YAAY,IAAA;AACpDg2B,aAAOlgE,QAAQo9B,WAAAA;AACd,cAAMgjC,eAAelkE,SAASC,cAAc,KAC5CikE;AAAAA,qBAAarnD,UAAUtZ,IAAI;AAC3B,YAAGD,KAAKyV,eAAemoB,MAAMnoB,SAAAA,GAAW;AACvCmrD,uBAAarnD,UAAUtZ,IAAI,4BAAA;AAAA,QAC3B;AACD2gE,qBAAajnD,aAAa,cAAcikB,MAAMnoB;AAC9CmrD,qBAAa7jE,YAAY4jE,YAAY/iC,KAAAA;AACrC/gC,aAAKkhE,WAAWj5C,OAAO87C,cAAc,SAAS,MAAA;AAC7C,gBAAMxC,UAAU,IAAI/8D,KAAKu8B,KAAAA;AACzB/gC,eAAKyhE,SAAS,EACbt+D,MAAMo+D,SACN9hE,MAAM;QACL,CAEHmkE;AAAAA,gBAAQxjE,YAAY2jE,YAAAA;AAAAA,MAAa;AAElCv4D,gBAAUpL,YAAYwjE;AAEtB,YAAMI,WAAWnkE,SAASC,cAAc,KAAA;AACxCkkE,eAAStnD,UAAUtZ,IAAI,yBACvB;AAAA,YAAM6gE,UAAUpkE,SAASC,cAAc;AACvCmkE,cAAQpC,YAAY;AACpBoC,cAAQvnD,UAAUtZ,IAAI,6BAAA;AACtBpD,WAAKkhE,WAAWj5C,OAAOg8C,SAAS,SAAS,MAAA;AACxCjkE,aAAKyhE,SAAS,EACbhiE,MAAM,OAAA,CAAA;AAAA,MACL;AAEHukE,eAAS5jE,YAAY6jE;AACrBz4D,gBAAUpL,YAAY4jE,QACtB;AAAA,IAAA;AAAA,IAED,gBAAgBx4D,WAAAA;AACf,cAAMrI,KAACA,IAAQnD,KAAKiG,SACpB;AAAA,YAAM87D,YAAY5wD,KAAK8D,MAAM9R,KAAKwV,YAAAA,IAAgB,MAAM;AAExD,YAAMirD,UAAU/jE,SAASC,cAAc,KACvC8jE;AAAAA,cAAQlnD,UAAUtZ,IAAI,0BAAA;AACtB,eAASe,IAAI49D,YAAY,GAAG59D,KAAK49D,YAAY,IAAI59D,KAAK;AACrD,cAAM+/D,cAAcrkE,SAASC,cAAc;AAC3CokE,oBAAYrC,YAAY19D;AACxB+/D,oBAAYxnD,UAAUtZ,IAAI,yBAAA;AAC1B8gE,oBAAYpnD,aAAa,aAAa3Y;AACtC,YAAGhB,KAAKwV,YAAkBxU,MAAAA,GAAE;AAC3B+/D,sBAAYxnD,UAAUtZ,IAAI,4BAC1B;AAAA,QAAA;AACDpD,aAAKkhE,WAAWj5C,OAAOi8C,aAAa,SAAS;AAC5ClkE,eAAKyhE,SAAS,EACbt+D,MAAM,IAAIqB,KAAKL,GAAGhB,KAAKyV,SAAY,GAAA,CAAA,GACnCnZ,MAAM,SACL,CAAA;AAAA,QAAA,CAAA;AAEHmkE,gBAAQxjE,YAAY8jE,WAAAA;AAAAA,MAEpB;AACD14D,gBAAUpL,YAAYwjE,OAEtB;AAAA,YAAMI,WAAWnkE,SAASC,cAAc;AACxCkkE,eAAStnD,UAAUtZ,IAAI,yBACvB;AAAA,YAAM6gE,UAAUpkE,SAASC,cAAc,QACvCmkE;AAAAA,cAAQpC,YAAY;AACpBoC,cAAQvnD,UAAUtZ,IAAI,6BAAA;AACtBpD,WAAKkhE,WAAWj5C,OAAOg8C,SAAS,SAAS;AACxCjkE,aAAKyhE,SAAS,EACbhiE,MAAM,SAAA,CAAA;AAAA,MACL,CAEHukE;AAAAA,eAAS5jE,YAAY6jE,OACrBz4D;AAAAA,gBAAUpL,YAAY4jE,QACtB;AAAA,IAAA;AAAA,IAED,aACChkE;AAAAA,WAAKihE,wBAAwB,CAAA;AAC7B,UAAGjhE,KAAK0F,SAAQ;AACf1F,aAAK0F,QAAQxF,YAAY;AACzBF,aAAK0F,QAAQ6uB,OAAAA;AAAAA,MACb;AAEDv0B,WAAKkhE,WAAWn5C;AAChB/nB,WAAK4K,UAAU,aAAa,CAC5B5K,CAAAA;AAAAA,WAAKqjB,gBAELrjB;AAAAA,WAAKL,YAAY;AAAA,IACjB;AAAA,EAAA;ACnUa,WAAQwkE,cAACC,kBAAAA;AAEvB,UAAMzkE,aAAY,EAAEy4D,SAAS,QAAA;AAE7Bz4D,IAAAA,WAAU8W,iBAAiB4tD,aAAAA;AAE3B1kE,IAAAA,WAAUsG,WAAWtG,WAAU8W,eAAexQ;AAC9Cq+D,aAAc3kE,UACd2U;AAAAA,aAAO3U;AACP4kE,aAAc5kE,UAAAA;AACd6kE,aAAS7kE,UAGTA;AAAAA,IAAAA,WAAU6Z,QAAQA;AAClB7Z,IAAAA,WAAU6tB,cAAc4X;AACxBzlC,IAAAA,WAAU6Z,MAAMirD,MAAMr/B;AACtBzlC,IAAAA,WAAU+O,MAAM8K,MAAM9K;AACtB/O,IAAAA,WAAU8Z,QAAQD,MAAMC;AACxB9Z,IAAAA,WAAUkZ,UAAUW,MAAMX;AAC1BlZ,IAAAA,WAAU8a,SAASA,OAAO9a,UAAAA;AAC1BA,IAAAA,WAAU+G,OAAO8S,MAAM9S;AAEvB/G,IAAAA,WAAU+kE,oBAAoB,SAASl5D,WAAW9J;AACjD,aAAO,IAAIk/D,WAAWjhE,YAAW6L,WAAW9J,MAC9C;AAAA,IAAA;AAMC/B,IAAAA,WAAUglE,qBAAqBv/B,YAAYjB;AAC3CxkC,IAAAA,WAAUmS,gBAAgBszB,YAAYzC;AACtChjC,IAAAA,WAAUilE,cAAcx/B,YAAYlC;AAEpC,UAAM2hC,aAAah+D,QAAQlH,UAC3BA;AAAAA,IAAAA,WAAU6Z,MAAMC,MAAM9Z,YAAWklE,UAEjCllE;AAAAA,IAAAA,WAAUinC,MAAMjnC,WAAUktB,OAAO+Z;AACjCjnC,IAAAA,WAAU6nC,UAAUvmC,OAAOumC;AAC3B3mC,aAAWlB,UACXmoC;AAAAA,aAAKnoC;AAEL+rB,aAAK/rB,UAAAA;AACL+B,aAAO/B,UACP6B;AAAAA,aAAM7B,UACNmlE;AAAAA,aAAgBnlE;AAChBmjD,aAAKnjD,UAAAA;AACL+5B,aAAS/5B,UACTgxC;AAAAA,aAAMhxC;AACNolE,aAAmBplE,UAAAA;AAEnBqlE,aAAMrlE,UAAAA;AACNslE;AACA5zB,aAAa1xC,UAAAA;AACbulE,WAAoBvlE,UAAAA;AAEpBwlE,aAAUxlE,UACV;AAAA,UAAMylE,OAAOzE,YAAAA;AACbhhE,IAAAA,WAAUylE,OAAO,EAChBC,WAAWD,KAAKC,WAChBC,WAAW,SAAS79C,QAAAA;AACnB,UAAUA,OAAAA,WAAW,UAAS;AAC7B,YAAI89C,eAAeH,KAAKI,UAAU/9C;AAClC,YAAI89C,CAAAA,cAAa;AAChBA,yBAAeH,KAAKI,UAAU,IAAA;AAAA,QAC9B;AAED7lE,QAAAA,WAAU8nB,SAAS89C;AAAAA,MACnB,WAAQ99C,QAAO;AACf,aAAI9nB,WAAU8nB,QAAO;AACpB9nB,UAAAA,WAAU8nB,SAASA;AAAAA,QACxB,OAAS;AACJ,mBAAQtjB,KAAKsjB,QAAO;AACnB,gBAAGA,OAAOtjB,CAAAA,KAAAA,OAAasjB,OAAOtjB,CAAO,MAAA,UAAS;AAC7C,kBAAA,CAAIxE,WAAU8nB,OAAOtjB,CAAAA,GAAG;AACvBxE,gBAAAA,WAAU8nB,OAAOtjB,KAAK;cACtB;AAEDxE,cAAAA,WAAU8Z,MAAM9Z,WAAU8nB,OAAOtjB,IAAIsjB,OAAOtjB,CAAAA,GAAI;YACvD,OAAW;AACJxE,cAAAA,WAAU8nB,OAAOtjB,KAAKsjB,OAAOtjB,CAAAA;AAAAA,YAC7B;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAED,UAAIujB,SAAS/nB,WAAU8nB,OAAOC;AAC9BA,aAAO+9C,eAAgB/9C,OAAOi0C;AAC9Bj0C,aAAOg+C,iBAAkBh+C,OAAOk0C;AAChCl0C,aAAOi+C,iBAAkBj+C,OAAOuD;AAEhC,UAAGtrB,WAAUqE,YAAW;AACvBrE,QAAAA,WAAUwS,aACV;AAAA,MAAA;AAAA,IAED,GACDqzD,WAAWJ,KAAKI,UAEjB7lE;AAAAA,IAAAA,WAAUylE,KAAKE,UAAU,IAAA;AACzBM,gBAAWjmE,UACXA;AAAAA,IAAAA,WAAUkmE,MAAM;AAEhB,UAAMC,gBAAgB,CAAA;AACtBnmE,IAAAA,WAAUomE,UAAU,SAASrkE,QAAAA;AAC5B,YAAMskE,gBAAgBC,iBAAiBvkE,QAAQ,EAC7CwkE,cAAc,CAAC,UAAA,GACfC,aAAa,CAAC,UAAA,GACdC,WAAW,CAAC,aACV,EACFC,QAAQ,GACRtuD,OAAO,GACPkD,UAAU,GACVkrD,aAAa,GACbD,cAAc,GACdE,WAAU,EAAA,CAAA;AAGZJ,oBAAcriE,QAAQ,SAASyW;AAC9B,YAAI0rD,CAAAA,cAAc1rD,IAAM,GAAA;AACvB,gBAAMksD,SAASlC,iBAAiBmC,aAAansD,IAC7C;AAAA,cAAGksD,QAAO;AACTA,mBAAO3mE,UACPmmE;AAAAA,0BAAc1rD,QAAQ;AAAA,UAC3B,OAAS;AACJ,kBAAM,IAAInI,MAAM,oBAAoBmI,IAAAA;AAAAA,UACpC;AAAA,QACD;AAAA,MACJ;IACA;AAEC,aAAS6rD,iBAAiBvkE,QAAQ8kE,cAAcC;AAC/C,YAAMxtD,SAAS,CAEf;AAAA,iBAAU9U,KAAKzC,QAAO;AACrB,YAAGA,OAAOyC,IAAG;AACZ,gBAAMuiE,YAAYviE,EAAEwe;AACpB,cAAG6jD,aAAaE,YAAW;AAC1BF,yBAAaE,WAAW/iE,QAAQ,SAASgjE,KACxC;AAAA,oBAAMC,iBAAiBD,IAAIhkD,YAAAA;AAC3B,mBAAIjhB,OAAOklE,cAAAA,GAAgB;AAC1B3tD,uBAAOpV,KAAK+iE,cACZ;AAAA,cAAA;AAAA,YACP;UACK;AACD3tD,iBAAOpV,KAAK6iE,SACZ;AAAA,QAAA;AAAA,MACD;AAEDztD,aAAOsrB,KAAK,SAASpoB,GAAGC;AACvB,cAAMyqD,SAASJ,WAAWtqD,CAAM,KAAA;AAChC,cAAM2qD,SAASL,WAAWrqD,CAAM,KAAA;AAChC,YAAGyqD,SAASC,QAAO;AAClB,iBAAO;AAAA,QACX,WAAYD,SAASC,QAAO;AACxB;QACJ,OAAQ;AACJ,iBAAO;AAAA,QACP;AAAA,MACJ,CAEE;AAAA,aAAO7tD;AAAAA,IACP;AAED,WAAOtZ;AAAAA,EAER;AAAA,EChNe,MAAMonE,kBACpB;AAAA,IAAA,YAAYrlE,QACX1B;AAAAA,WAAKgnE,cAAc;AACnB,iBAAU7iE,KAAKzC,QAAO;AACrB1B,aAAKgnE,YAAY7iE,CAAAA,IAAKzC,OAAOyC,CAAAA;AAAAA,MAC7B;AAAA,IACD;AAAA,IAED,aAAaiW,MAAMyrD,KAAAA;AAClB7lE,WAAKgnE,YAAY5sD,IAAAA,IAAQyrD;AAAAA,IACzB;AAAA,IAED,aAAazrD,MAAAA;AACZ,aAAOpa,KAAKgnE,YAAY5sD;IACxB;AAAA,ECVFhb;AAAAA,aAAAA;AAAAA,EAOA,MAAM6nE,iBAAAA;AAAAA,IAEL,YAAaC,YAAAA;AACZlnE,WAAKmnE,QAAQ;AACbnnE,WAAKonE,oBAAoB,CAAA;AACzBpnE,WAAKqnE,qBAAqBH;AAC1BlnE,WAAKsnE,qBAAqB,IAAIP,kBAAkBG,UAAAA;AAAAA,IAChD;AAAA,IAED,OAAOh8B,MACNlrC;AAAAA,WAAKonE,kBAAkBvjE,KAAKqnC,IAAAA;AAE5B,UAAGhqC,SAAOvB,WAAU;AACnBurC,aAAKhqC,SAAOvB,SACZ;AAAA,MAAA;AAAA,IACD;AAAA,IAED,qBAAqB4nE;AACpB,UAAI5nE,aAAYwkE,cAAcnkE,KAAKsnE,kBAAAA;AAEnC,eAASnjE,IAAI,GAAGA,IAAInE,KAAKonE,kBAAkBhjE,QAAQD,KAAK;AACvDnE,aAAKonE,kBAAkBjjE,CAAAA,EAAGxE;MAC1B;AACDA,MAAAA,WAAU6nE,eAAexnE,KAAKmnE;AAE9B,UAAInnE,KAAKynE,cAAa;AACrBznE,aAAKynE,aAAa9nE,UAClB;AAAA,MAAA;AAED,UAAG4nE,YAAW;AACbvnE,aAAK0nE,gBAAgB/nE,YAAW4nE,UAChC;AAAA,MAAA;AAED,aAAO5nE;AAAAA,IACP;AAAA,IAED,gBAAgBA,YAAW4nE;AAC1B,UAAGA,WAAWxB,SAAQ;AACrBpmE,QAAAA,WAAUomE,QAAQwB,WAAWxB;MAC7B;AAED,UAAGwB,WAAW7lE,QAAO;AACpB/B,QAAAA,WAAU8Z,MAAM9Z,WAAU+B,QAAQ6lE,WAAW7lE,QAAQ,IACrD;AAAA,MAAA;AAED,UAAG6lE,WAAWl0C,WAAU;AACvB1zB,QAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzCjG,UAAAA,WAAU8Z,MAAM9Z,WAAU0zB,WAAWk0C,WAAWl0C,WAAW,IAC/D;AAAA,QAAA,GAAM,EAACjR,MAAM,KAAA,CAAA;AAAA,MACV;AAED,UAAGmlD,WAAWznB,QAAO;AACpB,mBAAUt+C,UAAS+lE,WAAWznB,QAAO;AACpCngD,UAAAA,WAAUiG,YAAYpE,QAAO+lE,WAAWznB,OAAOt+C,MAAAA,CAAAA;AAAAA,QAC/C;AAAA,MACD;AAED,UAAG+lE,WAAW9/C,QAAO;AACpB9nB,QAAAA,WAAUylE,KAAKE,UAAUiC,WAAW9/C,MAAAA;AAAAA,MACpC;AAED,UAAG1Z,MAAMkK,QAAQsvD,WAAWI,YAAW;AACtCJ,mBAAWI,UAAUhkE,QAAQ,SAASma,UACrCne;AAAAA,UAAAA,WAAUioE,YAAY9pD,QAC1B;AAAA,QAAA,CAAA;AAAA,MACG;AAED,UAAGypD,WAAW/7D,WAAU;AACvB7L,QAAAA,WAAUmB,KAAKymE,WAAW/7D;MAC7B,OAAS;AACN7L,QAAAA,WAAUmB,KACV;AAAA,MAAA;AAED,UAAGymE,WAAW91D,MAAK;AAClB,YAAA,OAAU81D,WAAW91D,SAAS,UAAS;AACtC9R,UAAAA,WAAUmjD,KAAKykB,WAAW91D,IAC9B;AAAA,QAAA,OAAQ;AACJ9R,UAAAA,WAAUqoC,MAAMu/B,WAAW91D,IAAAA;AAAAA,QAC3B;AAAA,MACD;AAAA,IACD;AAAA,EAAA;AC3Fa,WAAQo2D,aAACloE,YAAAA;AAExBA,IAAAA,WAAU+B,OAAOomE,mBAAmB;AACpCnoE,IAAAA,WAAUooE,qBAAqB,SAASliE,GAAAA;AACvC,UAAI0J,QAAQ1J,EAAEE;AACd,UAAIivB,KAAKzlB,MAAM9K,aAAa;AAC5B,UAAIujE,MAAMroE,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOiuC,UAAU,OAAO,IAAA;AACvE,UAAI3a,IAAI;AACPr1B,QAAAA,WAAU8X,eAAeuwD,IAAIhzC,EAAKr1B,GAAAA,WAAU+B,OAAOomE,gBACnD;AAAA,YAAIjiE,KAAKA,EAAEqiB;AACVriB,YAAEqiB,eACH;AAAA,eAAO;AAAA,MACP;AAAA,IACF;AACAvoB,IAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,UAAIqiE,aAAa,SAAS/yD,MAAKgzD,UAC9BA;AAAAA,mBAAWA,YAAahzD,OAAI;AAE5B,aAAIvV,WAAU0zB,UAAU,uBAAsB60C,QAAU,GAAA;AACvDvoE,UAAAA,WAAU0zB,UAAU,uBAAsB60C,QAAYvoE,IAAAA,WAAU0zB,UAAU60C,QAC1E;AAAA,QAAA;AACD,YAAIC,SAASxoE,WAAU0zB,UAAU,uBAAsB60C;AACvD,YAAIE,MAAMzoE,WAAUwD,KAAK0qC,YAAYluC,WAAU+B,OAAOiuC,QAAAA;AACtDhwC,QAAAA,WAAU0zB,UAAU60C,YAAY,SAAS/kE,MAAAA;AACxC,iBAAO,wBAAwBilE,IAAIjlE,QAAQ,gBAAgBglE,OAAOhlE,IAAQ,IAAA;AAAA,QAC7E;AAAA,MACA;AAEC8kE,iBAAW;AACXA,iBAAW,IAAI;AACf,UAAIjoE,KAAKuL,QAAO;AACf,iBAAS2J,OAAOlV,KAAKuL;AACpB08D,qBAAW/yD;MACZ;AAEDlV,WAAKujB,gBAAgBvjB,KAAKskB,MAAM,SAAS3kB,WAAUooE;AACnDpoE,MAAAA,WAAU6B,MAAMxB,KAAKskB,MAAM,SAAS3kB,WAAUooE,kBAAAA;AAAAA,IAC/C;EAEA;ACvCe,WAAQM,cAAC1oE,YAExBA;AAAAA,IAAAA,WAAUwD,KAAKmlE,oBAAoB,SAASnlE,MAC3C;AAAA,aAAOxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,MAAA;AAAA,IACpC;AAEAxD,IAAAA,WAAU0zB,UAAUk1C,qBAAqB,SAASh5D,OAAMC,KAAIhJ,IAAAA;AAC3D,UAAIA,GAAG4D;AACN,eAAOpK,KAAKy9B,SAASj3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAI,MAAIxG,KAAKmyC,WAAW5iC,KAEzE;AAAA;AAAA,eAAO5P,WAAU0zB,UAAUoK,SAASluB,KAAO,IAAA,cAAY5P,WAAU0zB,UAAUoK,SAASjuB;IACtF;AACA7P,IAAAA,WAAU0zB,UAAUm1C,qBAAqB,SAASj5D,OAAMC,KAAIhO;AAC3D,aAAOA,OAAMsF;AAAAA,IACd;AACAnH,IAAAA,WAAU0zB,UAAUo1C,qBAAqB;AAAY,aAAO;AAAA,IAAG;AAE/D9oE,IAAAA,WAAUwD,KAAKulE,sBAAoB,WAAY;AAAA,aAAO/oE,WAAUwD,KAAKyF,UAAUjJ,WAAUsM,aAAAA,CAAAA;AAAAA,IAAgB;AAEzGtM,IAAAA,WAAUiG,YAAY,oBAAmB,WACxC;AAAA,UAAI+iE,4BAA4BhpE,WAAUipE;AAC1CjpE,MAAAA,WAAUipE,wBAAwB;AACjC,YAAI5oE,KAAK4M,SAAS,iBAAiB;AAClC,cAAK5M,CAAAA,KAAK0B,OAAOioB,YAAY3pB,KAAK0B,OAAO+T;AACxCzV,iBAAK0V;QACT,OAAS;AACN,cAAIizD;AACH,mBAAOA,0BAA0Bv6D,MAAMpO,MAAMiU,SAC9C;AAAA,QAAA;AAAA,MACH;AAGC,UAAI44B,MAAMltC,WAAU+X;AACpB/X,MAAAA,WAAU+X,cAAY,SAAS/N;AAC9B,YAAI3J,KAAK4M,SAAS;AACjBi8D,0BAAAA;AAAAA;AAEA,iBAAOh8B,IAAIz+B,MAAMpO,MAAKiU,SAAAA;AAAAA,MACzB;AAEC,UAAI60D,uBAAuBnpE,WAAUgY;AACrChY,MAAAA,WAAUgY,mBAAmB,WAAA;AAC5B,YAAG3X,KAAK4M,SAAS,iBAAiB;AACjCjN,UAAAA,WAAUopE,mBAAmBppE,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG8F,WAAW,CAAGwb,EAAAA;AAC7E1tB,UAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAG8F,WAAW,CAAA,EAAGwb,YAAY;AAAA,QAC5D;AACD,eAAOy7C,qBAAqB16D,MAAMpO,MAAKiU,SAAAA;AAAAA,MACzC;AAIC,eAAS+0D,cAAcvpE,MACtB;AAAA,YAAIA,MAAK;AACR,cAAIwpE,IAAItpE,WAAU8nB,OAAOC;AAEzB,cAAIwhD,UAAUvpE,WAAUgoB,SAAS2W;AACjC,cAAI6qC,aAAaxpE,WAAUgoB,SAAS4W,qBAAqB0qC,EAAE9lE,IAC3D;AAAA,cAAIimE,oBAAoBzpE,WAAUgoB,SAAS6W,4BAA4ByqC,EAAEnK;AAEzEn/D,UAAAA,WAAUoM,KAAK,kBAAkB,CAAG7L,EAAAA,YAAU,UAAQgpE,UAAQ,0DACrDC,aAAW,MAAIF,EAAE9lE,OAAK,wEACkCimE,oBAAkB,MAAIH,EAAEnK,cAAY;AAErGn/D,UAAAA,WAAUgN,cAAY;AACtBhN,UAAAA,WAAUqlB,UACV;AAAA,QAAA;AAAA,MACD;AAED,eAAS6jD;AAGR,YAAI/oB,SAASngD,WAAU60C,mBACvBsL;AAAAA,eAAOvb,KAAK,SAASpoB,GAAEC,GAAI;AAAA,iBAAOD,EAAEpZ,aAAWqZ,EAAErZ,aAAW,IAAG;AAAA,QAAE;AAEjE,YAAIsmE,YAAY1pE,WAAUgoB,SAAS8W;AACnC,YAAIC;AAEJ,YAAIx7B,OAAK,kCAAgCmmE,YAAU;AACnD,iBAASllE,IAAE,GAAGA,IAAE27C,OAAO17C,QAAQD,KAAI;AAClC,cAAIqC,KAAKs5C,OAAO37C,CAChB;AAAA,cAAIq5C,WAAYh3C,GAAG20C,QAAO,sCAAoC30C,GAAG20C,QAAM,MAAK;AAC5E,cAAIA,QAAS30C,GAAGs1C,YAAW,iCAA+Bt1C,GAAGs1C,YAAU,MAAK;AAC5E,cAAIwtB,WAAW3pE,WAAU0zB,UAAUif,YAAY9rC,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAE3Ek4B;AAAAA,kCAAwB/+B,WAAUgoB,SAAS+W,sBAAsBl4B,EACjE;AAAA,cAAI+iE,0BAA0B5pE,WAAUgoB,SAASiX;AAEjD17B,kBAAM,UAAQw7B,wBAAsB,6BAA2B4qC,WAAS,MAAIA,WAAS,MACnF,iBAAe9iE,GAAGzG,KAAG,OAAKJ,WAAU+B,OAAOwC,kBAAgB,OAAKsC,GAAGzG,KAAG,cAAYo7C,QAASqC,YAC1Fh3C,GAAGw0C,eAAa,MAAI,2CACpBr7C,WAAU+B,OAAOijB,MAAMhlB,WAAU0zB,UAAUm2C,YAAYhjE,GAAGxD,UAASwD,GAAGzD,YAAYyD,EAAAA,IAAI7G,WAAU0zB,UAAUm2C,YAAYhjE,GAAGzD,YAAYyD,GAAGxD,UAASwD,EAAAA,KAClJ;AACFtD,kBAAM,QAAQqmE,uBAGdrmE;AAAAA;AAAAA;AAAAA,kBAAM,WAASvD,WAAU0zB,UAAUo2C,YAAYjjE,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA,IAAI;AAAA,QAC/E;AACDtD,gBAAM;AAGNvD,QAAAA,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG7L,YAAYgD;AAC9CvD,QAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAG8F,WAAW,CAAA,EAAGwb,YAAY1tB,WAAUopE,oBAAkB;AAGxF,YAAIW,cAAc/pE,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG8F,WAAW,CAC/D;AAAA,YAAI83D,WAAWD,YAAY73D,WAAW63D,YAAY73D,WAAWzN,SAAO,CACpEulE;AAAAA,iBAASrnE,MAAMwO,SAAU44D,YAAY5oD,eAAenhB,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG+U,eAAgB,SAAU4oD,YAAY5oD,eAAa;AAEzI,YAAI3M,IAAExU,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG1L,WAAWwR;AAEnD,YAAI+3D,cAAcjqE,WAAUk3B,mBAAAA;AAC5B,YAAG+yC,aAAY;AACdA,sBAAY1pE,YAAUP,WAAU0zB,UAAUw2C,YAAYlqE,WAAUyM,WAAWzM,WAAUwM,WAAWxM,WAAUiN,KAAAA;AAAAA,QAC1G;AAEDjN,QAAAA,WAAU+zC,YAAU,CACpB;AAAA,iBAASvvC,IAAE,GAAGA,IAAIgQ,EAAE/P,SAAO,GAAGD;AAC7BxE,UAAAA,WAAU+zC,UAAUvvC,CAAAA,IAAGgQ,EAAEhQ,CAE1B;AAAA,MAAA;AAEDxE,MAAAA,WAAUmqE,qBAAmB,SAASrqE,MACrCE;AAAAA,QAAAA,WAAUyM,YAAYzM,WAAU+B,OAAOqoE,gBAAcpqE,WAAUwD,KAAKulE,oBAAoB/oE,WAAUkV,KAAAA;AAClGlV,QAAAA,WAAUwM,YAAYxM,WAAU+B,OAAOsoE,cAAYrqE,WAAUwD,KAAKmlE,kBAAkB3oE,WAAUyM,WAAW,CAAA;AAEzG48D,sBAAcvpE,IAAAA;AACd,YAAIA,MAAK;AACRE,UAAAA,WAAU+Q,QAAQ;AAClB/Q,UAAAA,WAAU4tB,SAAS;AACnB5tB,UAAAA,WAAUgN,cAAc;AAExBk8D,0BACH;AAAA,QAAA,OAAS;AACNlpE,UAAAA,WAAUgN,cAAc;AAAA,QAExB;AAAA,MACH;AAAA,IACA,CAGA;AAAA,EAAA;AC5Ie,WAAQs9D,YAACtqE,YAAAA;AAEvBA,IAAAA,WAAUwD,KAAK+mE,aAAa,SAAS/mE,MAAMmqC,KAAAA;AAC1C,aAAO3tC,WAAUwD,KAAKC,IAAID,MAAM,IAAEmqC,KAAK,OAAA;AAAA,IACzC;AAEC3tC,IAAAA,WAAU0zB,UAAUm2C,cAAc,SAASj6D,OAAMC,KAAIhJ,IAAAA;AACpD,UAAIA,GAAG4D,QAAO;AACb,eAAO,GAAGpK,KAAKmyC,WAAW5iC,YAAYvP,KAAKmyC,WAAW3iC;MACzD,OAAO;AACJ,eAAO7P,WAAU8nB,OAAOC,OAAO29B;AAAAA,MAC/B;AAAA,IACH;AACC1lD,IAAAA,WAAU0zB,UAAUo2C,cAAc,SAASl6D,OAAMC,KAAIhJ,IAAAA;AACpD,aAAOA,GAAGM;AAAAA,IACZ;AAEC,UAAMqjE,eAAexqE,WAAUwD,KAAK0qC,YAAY,OAChD;AAAA,UAAMu8B,cAAczqE,WAAUwD,KAAK0qC,YAAY,IAAA;AAE/CluC,IAAAA,WAAU0zB,UAAUg3C,aAAa,SAASlnE,MACzC;AAAA,aAAO,oCAAoCgnE,aAAahnE;oCACtBinE,YAAYjnE,IAAAA,CAAAA;AAAAA,IAChD;AACCxD,IAAAA,WAAU0zB,UAAUw2C,cAAc,SAASt6D,OAAOC,KACjD;AAAA,aAAO7P,WAAU0zB,UAAUic,WAAW3vC,WAAUsG,SAAW9C,EAAAA,IAAAA;AAAAA,IAC7D;AAECxD,IAAAA,WAAUwD,KAAK4mE,eAAa,SAAS5mE;AACpC,aAAOxD,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKrB,IAC7C,CAAA;AAAA,IAAA;AAEC,QAAIkqB,YAAY;AAEhB1tB,IAAAA,WAAUiG,YAAY,oBAAmB,WACxC;AAAA,UAAI+iE,4BAA4BhpE,WAAUipE;AAC1CjpE,MAAAA,WAAUipE,wBAAwB;AACjC,YAAI5oE,KAAK4M,SAAS,UAAU;AAC3B,eAAK5M,KAAK0B,OAAOioB,YAAY3pB,KAAK0B,OAAO+T;AACxCzV,iBAAK0V;QACV,OAAU;AACN,cAAIizD;AACH,mBAAOA,0BAA0Bv6D,MAAMpO,MAAMiU,SAC9C;AAAA,QAAA;AAAA,MACJ;AAGE,UAAI44B,MAAMltC,WAAU+X;AACpB/X,MAAAA,WAAU+X,cAAY,SAAS/N;AAC9B,YAAI3J,KAAK4M,SAAS;AACjBi8D,0BAAAA;AAAAA;AAEA,iBAAOh8B,IAAIz+B,MAAMpO,MAAKiU,SAAAA;AAAAA,MAC1B;AAEE,UAAI60D,uBAAuBnpE,WAAUgY;AACrChY,MAAAA,WAAUgY,mBAAmB,WAC5B;AAAA,YAAG3X,KAAK4M,SAAS,UAAU;AAC1BygB,sBAAY1tB,WAAUoM,KAAK,cAAA,EAAgB,GAAGshB;AAC9C1tB,UAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAGshB,YAAY;AAAA,QAC9C;AACD,eAAOy7C,qBAAqB16D,MAAMpO,MAAKiU,SAAAA;AAAAA,MAC1C;AAEE,eAAS40D;AACR,cAAM/oB,SAASngD,WAAU60C,mBACzBsL;AAAAA,eAAOvb,KAAK,SAASpoB,GAAEC,GAAI;AAAA,iBAAOD,EAAEpZ,aAAWqZ,EAAErZ,aAAW,IAAG;AAAA,QAAE;AAEjE,cAAMunE,eAAe,CAAA;AACrB,YAAIxlE,WAAWnF,WAAUsG,SAAWkK,EAAAA;AACpC,cAAM2gB,UAAUnxB,WAAUsG,SAAWmK,EAAAA;AACrC,eAAMtL,SAASC,QAAAA,IAAY+rB,QAAQ/rB,QAAU,GAAA;AAC5CulE,uBAAaxlE,SAASC,QAAAA,CAAAA,IAAa,CACnCD;AAAAA,qBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,KAAA;AAAA,QAC3C;AAED,YAAIylE,YAAY;AAEhBzqB,eAAOn8C,QAAS6C,QACf;AAAA,cAAIyC,aAAatJ,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKgC,GAAGzD,UAAAA,CAAAA;AACtD,iBAAOkG,WAAWlE,QAAAA,IAAYyB,GAAGxD,SAAS+B,QAAAA,GAAW;AACpD,gBAAIulE,aAAarhE,WAAWlE,QAAAA,CAAAA,GAAY;AACvCulE,2BAAarhE,WAAWlE,WAAWlB,KAAK2C,EAAAA;AACxC+jE,0BAAY;AAAA,YACZ;AACDthE,yBAAatJ,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAI6F,YAAY,GAAG,KACxE,CAAA;AAAA,UAAA;AAAA,QAAA,CAAA;AAGF,YAAIshE,CAAAA,WAAU;AACb5qE,UAAAA,WAAUoM,KAAK,gBAAgB,CAAG7L,EAAAA,YAAYsqE;QAClD,OAAQ;AACJ,cAAItnE,OAAO;AACX,mBAAQ1D,OAAO8qE,cAAa;AAC3BpnE,oBAAQunE,UAAU,IAAIjmE,KAAKhF,MAAI,IAAI8qE,aAAa9qE,GAAAA,CAAAA;AAAAA,UAChD;AAEDG,UAAAA,WAAUoM,KAAK,gBAAgB,CAAG7L,EAAAA,YAAYgD;AAAAA,QAC9C;AAEDvD,QAAAA,WAAUoM,KAAK,cAAA,EAAgB,GAAGshB,YAAYA;AAE9C,YAAIlZ,IAAIxU,WAAUoM,KAAK,cAAA,EAAgB,GAAG9H,iBAAiB,4BAAA;AAC3DtE,QAAAA,WAAU+zC,YAAY,CAAA;AACtB,iBAASvvC,IAAI,GAAGA,IAAIgQ,EAAE/P,SAAS,GAAGD,KAAK;AACtCxE,UAAAA,WAAU+zC,UAAUvvC,CAAKgQ,IAAAA,EAAEhQ,CAC3B;AAAA,QAAA;AAAA,MACD;AAID,eAASqmE,kBAAAA;AACR,eAAO,yCAAyC7qE,WAAU8nB,OAAOC,OAAOm3C,UAAAA;AAAAA,MACxE;AAED,eAAS4L,UAAUjrE,KAAKsgD,QAAAA;AACvB,aAAIA,OAAO17C,QAAO;AACjB,iBAAO;AAAA,QACP;AACD,YAAIlB,OAAO;AAAA;AAAA,0CAE4BvD,WAAU0zB,UAAUg3C,WAAW7qE,GAAAA,CAAAA;AAAAA;AAAAA;AAItEsgD,eAAOn8C,QAAS+mE,mBAAAA;AACfxnE,kBAAQynE,eAAenrE,KAAKkrE,aAAc;AAAA,QAAA,CAAA;AAG3CxnE,gBAAQ;AACR,eAAOA;AAAAA,MACP;AAED,eAASynE,eAAenrE,KAAKkrE;AAC5B,cAAM/lE,QAAQhF,WAAU0zB,UAAUm2C,YAAYkB,cAAc3nE,YAAY2nE,cAAc1nE,UAAU0nE,aAAAA;AAChG,cAAME,aAAajrE,WAAUsG,WAAWojB;AACxC,cAAM6M,MAAMv2B,WAAU0zB,UAAUif,YAAYo4B,cAAc3nE,YAAY2nE,cAAc1nE,UAAU0nE;AAC9F,cAAM5L,cAAcn/D,WAAU0zB,UAAUo2C,YAAYiB,cAAc3nE,YAAY2nE,cAAc1nE,UAAU0nE,aAAAA;AAEtG,YAAIpoE,QAAQ;AACZ,YAAGooE,cAAcvvB,SAASuvB,cAAc5uB,WAAU;AACjD,gBAAM+uB,KAAMH,cAAcvvB,QAAS,sCAAsCuvB,cAAcvvB,QAAQ,MAAO;AACtG,gBAAMA,QAASuvB,cAAc5uB,YAAa,iCAAiC4uB,cAAc5uB,YAAY,MAAO;AAC5Gx5C,kBAAQ,WAAWuoE,EAAAA,GAAK1vB;QACxB;AAED,eAAO,yCAAyCjlB,OAAK,EAAA,IAAMw0C,cAAc3qE,MAAM6qE,aAAa,uCAAuC,EAAA,KAAOtoE,SAAS3C,WAAU+B,OAAOwC,oBAAoBwmE,cAAc3qE,EAAAA;AAAAA;AAAAA,+CAE1J4E;+CACAm6D,WAE5C;AAAA;AAAA,MAAA;AAEDn/D,MAAAA,WAAUsqE,cAAY,SAASxqE,MAC9B;AAAA,YAAIA,MAAK;AACRE,UAAAA,WAAUyM,YAAYzM,WAAU+B,OAAOqoE,gBAAgBpqE,WAAUwD,KAAK4mE,aAAapqE,WAAUkV;AAC7FlV,UAAAA,WAAUwM,YAAYxM,WAAU+B,OAAOsoE,cAAcrqE,WAAUwD,KAAK+mE,WAAWvqE,WAAUyM,WAAW;AACpGzM,UAAAA,WAAU+Q,QAAQ;AAClB/Q,UAAAA,WAAU4tB,SAAS;AACnB5tB,UAAAA,WAAUgN,cAAc;AAExB,gBAAMw8D,aAAaxpE,WAAUk3B,mBAAAA;AAC7BsyC,qBAAWjpE,YAAYP,WAAU0zB,UAAUw2C,YAAYlqE,WAAUkV,KAEjEg0D;AAAAA,0BAAAA;AAAAA,QACJ,OAAU;AACNlpE,UAAAA,WAAUgN,cAAc;AAAA,QAExB;AAAA,MACJ;AAAA,IACA,CAAA;AAAA,EAeA;ACzLe,WAAQ0kB,UAAC1xB;AAEvBA,IAAAA,WAAU+B,OAAO2vB,YAAY;AAC7B1xB,IAAAA,WAAU+B,OAAOopE,kBAAkB;AAEnC,QAAIC,iBAAiB,SAAUvkE,IAC9B;AAAA,UAAA,GAAMA,GAAGxD,WAAWwD,GAAGzD,eAAa,MAAK,KAAG,OAAO,KAAI;AACtD,eAAO;AAAA,MACP;AAGD,UAAGpD,WAAU6K,cAAc,YAAY7K,WAAU4K,YAAY/D,GAAGzG,IAAG;AAClE,eAAO;AAAA,MACP;AACD,aAAQ;AAAA,IACV;AAICJ,IAAAA,WAAUqrE,aAAa,SAASxpE;AAC/B,UAAIypE,QAAQ,MACXvkE,OAAO/G,WAAUk5C,YAAYr3C,MAAAA;AAC9B,UAAGA,OAAM0pE,WAAU;AAClBD,gBAAQtrE,WAAUmG,SAAStE,OAAM0pE,SAAAA;AAAAA,MACjC;AAED,UAAID,SAASA,MAAME,cAAc3pE,SAAQ;AACjCkF,eAAAA,KAAK0kE;eACL1kE,KAAKwkE;AAAAA,eACLxkE,KAAKgrD;AAAAA,eACLhrD,KAAKkD;AAAAA,MACZ;AAED,aAAOlD;AAAAA,IACT;AAEC,QAAI2kE,4BAA4B1rE,WAAUi3C;AAC1C,QAAI00B,6BAA6B3rE,WAAUk3C;AAE3C,QAAI00B,mBAAmB,SAAU5hE,KAAKmrC,MACrC;AAAA,UAAA,CAAK90C,KAAK2M,aAAa;AACtB,eAAO0+D,0BAA0Bj1D,KAAKpW,MAAM2J,KAAKmrC;MACjD;AAED,aAAOw2B,2BAA2Bl1D,KAAKpW,MAAM2J,KAAKmrC,IAAAA;AAAAA,IACpD;AAECn1C,IAAAA,WAAUi3C,0BAA0Bj3C,WAAUk3C,2BAA2B,SAASltC,KAAKmrC,MAAAA;AACtF,WAAK90C,KAAK0B,OAAO2vB,aACfrxB,KAAK2M,eAAe3M,KAAK4M,SAAS,WAClC5M,KAAK4M,SAAS,YAAY5M,KAAK0B,OAAOopE;AACvC,eAAOS,iBAAiBn1D,KAAKpW,MAAM2J,KAAKmrC,IAEzC;AAAA,eAAS3wC,IAAE,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AAClC,YAAIqC,KAAGmD,IAAIxF;AAEX,YAAIqC,GAAG4D;AACN;AAED,YAAIpK,KAAK0B,OAAO2vB,aAAa,SAAS;AACrC,eAAK05C,eAAevkE,EAAAA,GAAK;AACxB,gBAAIxG,KAAK4M,SAAS,SAAS;AAC1BjD,kBAAIyJ,OAAOjP,KAAK,CAChB;AAAA,YAAA;AACD;AAAA,UACA;AAAA,QACD;AAED,YAAIqnE,KAAKxrE,KAAKgrE,WAAWxkE,EAAAA;AACzB,aAAIA,GAAGilE,UAAS;AACfD,aAAGxxB,eAAe;AAAA,QACtB,OAAQ;AACJwxB,aAAGxxB,eAAe;AAAA,QAClB;AACDwxB,WAAGhvB,eAAe;AAClBgvB,WAAGC,WAAW;AACdD,WAAGzoE,aAAa,IAAIyB,KAAKgnE,GAAGzoE,UAAAA;AAE5B,aAAK2oE,iBAAiBllE,EAAAA,GAAK;AAC1BglE,aAAGxoE,WAAW,IAAIwB,KAAKgC,GAAGxD,QAC1B;AAAA,QAAA,OACI;AACJwoE,aAAGxoE,WAAW2oE,WAAWH,GAAGzoE,UAAAA;AAC5B,cAAI/C,KAAK0B,OAAO6K,aAAa,IAAI;AAChCi/D,eAAGxoE,WAAW4oE,YAAYJ,GAAGzoE,YAAY/C,KAAK0B,OAAO6K;UACrD;AAAA,QACD;AAED,YAAIs/D,gBAAgB;AACpB,YAAIL,GAAGzoE,aAAa/C,KAAKmM,aAAaq/D,GAAGxoE,WAAWhD,KAAKoM,aAAao/D,GAAGzoE,aAAayoE,GAAGxoE,UAAU;AAClG2G,cAAIxF,CAAAA,IAAKqnE;AACTK,0BAAgB;AAAA,QAChB;AAKD,YAAIC,KAAK9rE,KAAKgrE,WAAWxkE,EAAAA;AACzBslE,WAAGL,WAAW;AACdK,WAAG9oE,WAAW,IAAIwB,KAAKsnE,GAAG9oE;AAC1B,YAAI8oE,GAAG/oE,aAAa/C,KAAKoM;AACxB0/D,aAAG/oE,aAAa6oE,YAAY5rE,KAAKoM,WAAWpM,KAAK0B,OAAO4K,UAAAA;AAAAA;AAExDw/D,aAAG/oE,aAAa6oE,YAAYD,WAAWnlE,GAAGzD,aAAa/C,KAAK0B,OAAO4K;AAEpE,YAAIw/D,GAAG/oE,aAAa/C,KAAKmM,aAAa2/D,GAAG/oE,aAAa+oE,GAAG9oE,UAAU;AAClE,cAAI6oE,eAAc;AACjBliE,gBAAIyJ,OAAOjP,IAAE,GAAE,GAAE2nE;UACtB,OAAU;AACLniE,gBAAIxF,GAAO2nE,IAAAA;AACX;AAAA,UACA;AACDA,aAAG7xB,cAAc;AAAA,QACrB,OAAQ;AACJuxB,aAAGvxB,cAAc;AACjBuxB,aAAGhvB,eAAe;AAAA,QAClB;AAAA,MAED;AAGD,UAAIuvB,SAAU/rE,KAAKwK,cAAc,SAAQ,QAAMsqC;AAC/C,aAAOy2B,iBAAiBn1D,KAAKpW,MAAM2J,KAAKoiE;AAGxC,eAASL,iBAAiBllE;AACzB,YAAIwlE,WAAWL,WAAWnlE,IAAGzD;AAC7B,eAASyD,CAAAA,IAAGxD,YAAYgpE;AAAAA,MACxB;AACD,eAASL,WAAWxoE,MAAAA;AACnB,YAAI6oE,WAAWrsE,WAAUwD,KAAKC,IAAID,MAAM,GAAG;AAC3C6oE,mBAAWrsE,WAAUwD,KAAKyF,UAAUojE;AACpC,eAAOA;AAAAA,MACP;AACD,eAASJ,YAAYzoE,MAAMuqC,OAC1B;AAAA,YAAIzmB,MAAMtnB,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKrB,IAC5C8jB,CAAAA;AAAAA,YAAIxc,SAASijC,KACb;AAAA,eAAOzmB;AAAAA,MACP;AAAA,IACH;AACC,QAAIglD,yBAAyBtsE,WAAU60C;AACvC70C,IAAAA,WAAU60C,qBAAqB,SAASC,YAAAA;AACvC,UAAMz0C,EAAAA,KAAK0B,OAAO2vB,aAAarxB,KAAK0B,OAAO41B;AAC1C,eAAO20C,uBAAuB71D,KAAKpW,MAAMy0C,UAC1C;AAAA,aAAOw3B,uBAAuB71D,KAAKpW,MAAM;IAC3C;AACCL,IAAAA,WAAUiG,YAAY,sBAAsB,SAAUsmE,UAAUC,UAAU1sE,MAAM0D,MAC/ExD;AAAAA,MAAAA,WAAU6xB,aAAc/xB,QAAQ,SAASA,QAAQ,UAAUE,WAAUqC,QAAQvC,IAAAA;AAC7E,aAAO;AAAA,IACT,CAAA;AAECE,IAAAA,WAAUk1C,sBAAsB,SAASruC;AACxC,aAAUA,CAAAA,EAAAA,GAAG4D,UAAUpK,KAAK0B,OAAO2vB,cAAc,QAASrxB,KAAK0B,OAAO2vB,aAAa,WAAW05C,eAAevkE,EAAAA;AAAAA,IAC/G;AAEC,QAAI4lE,YAAYzsE,WAAUiY;AAC1BjY,IAAAA,WAAUiY,cAAc,SAAS7X;AAIhC,UAAIyG,KAAK7G,WAAUmG,SAAS/F;AAC5B,UAAIssE;AACJ,UAAI/5C;AACJ,UAAG9rB,IAAI;AACN6lE,2BAAoB1sE,WAAU+B,OAAO2vB,eAAe1xB,WAAU0K,cAAc1K,WAAUuzC,QAAQnzC,GAAAA,CAAAA,KAAQJ,WAAUsG,SAAWsjB,EAAAA;AAC3H,YAAI8iD,kBAAkB;AACrB/5C,oBAAU3yB,WAAU+B,OAAO+vB;AAC3B9xB,UAAAA,WAAU+B,OAAO+vB,gBAAgB;AAAA,QACjC;AAAA,MACD;AACD26C,gBAAUh+D,MAAMzO,YAAWsU;AAE3B,UAAGzN,IAAI;AACN,YAAI6lE,kBAAkB;AACrB1sE,UAAAA,WAAU+B,OAAO+vB,gBAAgBa;AAAAA,QACjC;AAAA,MACD;AAAA,IACH;AAAA,EAEA;ACnLe,WAAQg6C,UAAC3sE,YAExB;AAAA,QAAI4sE;AACJ,QAAIC;AAEJ7sE,IAAAA,WAAU+B,OAAO+qE,kBAAkB;AAEnC,aAASC,gBAAgBC,UACxB;AAAA,UAAIC,eAAejtE,WAAU2xB,kBAAAA;AAC7B,UAAGs7C,gBAAgBD,UAAS;AAC3BJ,uBAAe5sE,WAAUmG,SAAS6mE,QAAAA,EAAUhtE,WAAUi8B,sBACtD,CAAA;AAAA,MAAA;AAAA,IACF;AAEAj8B,IAAAA,WAAUiG,YAAY,gBAAe,SAAS7F,KAAAA;AAC7C2sE,sBAAgB3sE,GAAAA;AAChB,aAAO;AAAA,IACR,CAAA;AACAJ,IAAAA,WAAUiG,YAAY,oBAAmB,SAAS7F,KACjD;AAAA,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAC5BysE;AAAAA,eAAS,CAAChmE,GAAGzD,YAAYyD,GAAGxD,QAC5B0pE;AAAAA,sBAAgB3sE,GAChB;AAAA,aAAO;AAAA,IACR,CACAJ;AAAAA,IAAAA,WAAUiG,YAAY,kBAAiB,SAAS7F;AAC/C,UAAKA,CAAAA,OAAAA,CAAOJ,WAAUmG,SAAS/F;AAAK,eAAO;AAC3C,UAAIyG,KAAK7G,WAAUmG,SAAS/F,GAC5B;AAAA,UAAA,CAAKJ,WAAUktE,eAAermE,KAAI;AACjC,YAAA,CAAKgmE;AAAQ,iBAAO;AACpBhmE,WAAGzD,aAAaypE,OAAO,CACvBhmE;AAAAA,WAAGxD,WAAWwpE,OAAO,CAAA;AACrBhmE,WAAG4D,SAAOpK,KAAKqK,cAAc7D,EAC7B;AAAA,MAAA;AACD,aAAO;AAAA,IACR;AACA7G,IAAAA,WAAUiG,YAAY,wBAAuB,SAASY,IAAGX,GAAE8sB,QAC1D;AAAA,aAAOhzB,WAAUktE,eAAermE;IACjC,CACA7G;AAAAA,IAAAA,WAAUiG,YAAY,gBAAe,SAAS7F,KAAGyG,IAChD;AAAA,UAAIyS,SAAStZ,WAAUktE,eAAermE,EACtC;AAAA,UAAA,CAAKyS;AACJtZ,QAAAA,WAAUorB,YAAYhrB;IACxB,CACAJ;AAAAA,IAAAA,WAAUiG,YAAY,eAAc,SAAS7F,KAAI+sE,WAAWn6C;AAC3Dm6C,kBAAYntE,WAAUwO,YAAY2+D,SAClCA;AAAAA,gBAAU/sE,KAAKA;AAGf,YAAK+sE,UAAU/pE,cAAc+pE,UAAU9pE,WAAU;AAChD,YAAIwD,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B+sE,kBAAU/pE,aAAa,IAAIyB,KAAKgC,GAAGzD,UAAAA;AACnC+pE,kBAAU9pE,WAAW,IAAIwB,KAAKgC,GAAGxD;MACjC;AAED,UAAG8pE,UAAUljE,UAAS;AACrBjK,QAAAA,WAAUotE,iBAAiBD,SAAAA;AAAAA,MAC3B;AACD,aAAOntE,WAAUktE,eAAeC,SAAAA;AAAAA,IACjC;AAEAntE,IAAAA,WAAUqtE,4BAA4B,SAASjkC,OAAOkkC,QAAAA;AACrD,UAAI7qE,SAASzC,WAAUi8B,sBACvB;AAAA,UAAImN,MAAM3mC,MAAAA,KAAW6qE,OAAO7qE,MAAW2mC,KAAAA,MAAMhpC,MAAMktE,OAAOltE;AACzD,eAAO;AACR,aAAO;AAAA,IACR;AAEAJ,IAAAA,WAAUktE,iBAAiB,SAASrmE,IACnC;AAAA,UAAImD,MAAM,CACV;AAAA,UAAI8iE,kBAAkB9sE,WAAU+B,OAAO+qE;AAEvC,UAAIjmE,GAAGoD,UAAU;AAChB,YAAIsjE,YAAYvtE,WAAUwtE,YAAY3mE,EACtC;AAAA,iBAAQwI,IAAE,GAAGA,IAAEk+D,UAAU9oE,QAAQ4K,KAAK;AACrC,cAAIo+D,OAAOztE,WAAUm2C,UAAUo3B,UAAUl+D,CAAAA,EAAGjM,YAAYmqE,UAAUl+D,GAAGhM,QACrE;AAAA,mBAAQywB,IAAE,GAAGA,IAAE25C,KAAKhpE,QAAQqvB,KAAK;AAChC,iBAAK25C,KAAK35C,CAAAA,EAAGy3C,aAAakC,KAAK35C,CAAAA,EAAG1zB,OAAOyG,GAAGzG;AAC3C4J,kBAAI9F,KAAKupE,KAAK35C,CACf,CAAA;AAAA,UAAA;AAAA,QACD;AAAA,MACH,OAAQ;AACN9pB,cAAMhK,WAAUm2C,UAAUtvC,GAAGzD,YAAYyD,GAAGxD,QAC5C;AAAA,iBAASmB,IAAE,GAAGA,IAAEwF,IAAIvF,QAAQD,KAAK;AAChC,cAAIkpE,aAAa1jE,IAAIxF;AAErB,cAAIkpE,WAAWttE,MAAMyG,GAAGzG,MAAOstE,WAAWjC,gBAAgB,CAACiC,WAAWnC,WAAWmC,WAAWjC,YAAct7D,EAAAA,KAAK,QAAQtJ,GAAGzG,IAAK;AAC9H4J,gBAAIyJ,OAAOjP,GAAE,CAAA;AACb;AAAA,UACA;AAAA,QACD;AAAA,MACD;AAED,UAAIyoE,eAAejtE,WAAU2xB,kBAAAA;AAC7B,UAAIlvB,SAASzC,WAAUi8B;AAEvB,UAAI0xC,SAAS;AACb,UAAIV,cAAc;AACjB,YAAI33C,QAAQ;AAEZ,iBAAS9wB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAI;AACnC,cAAIwF,IAAIxF,CAAAA,EAAGpE,MAAMyG,GAAGzG,MAAMC,KAAKgtE,0BAA0BrjE,IAAIxF,CAAIqC,GAAAA,EAAAA;AAChEyuB;AAAAA,QACD;AAED,YAAIA,SAASw3C,iBAAiB;AAE7Ba,mBAAS;AAAA,QACT;AAAA,MACD,OACI;AACJ,YAAK3jE,IAAIvF,UAAUqoE;AAClBa,mBAAS;AAAA,MACV;AACD,UAAKA,CAAAA,QAAQ;AACZ,YAAI/kE,OAAO5I,WAAUiL,UAAU,oBAAmB,CAACpE,IAAGmD;AACtD,YAAKpB,CAAAA,KAAK;AACT/B,aAAGpE,UAAUmqE,gBAAc/lE,GAAGpE;QAC9B;AACD,eAAOmG;AAAAA,MACP;AACD,aAAO+kE;AAAAA,IAER;AAAA,EAEA;AC5He,WAAQC,qBAAC5tE;AAEvBA,IAAAA,WAAU+B,OAAO6rE,uBAAuB;AACxC5tE,IAAAA,WAAU+B,OAAO8rE,uBAAuB;AACxC7tE,IAAAA,WAAU+B,OAAO+rE,gBAAgB;AACjC9tE,IAAAA,WAAU+B,OAAOgsE,eAAe;AAEhC,QAAIC,uBAAuBhuE,WAAUu2C;AAGrC,QAAI03B,SAAS;AACb,QAAIC,eAAe;AACnB,QAAIC,kBAAkB;AAEtBnuE,IAAAA,WAAUu2C,qBAAqB,SAASvsC,KAAKmrC,MAC5C;AAAA,UAAA,EAAMn1C,WAAU+B,OAAO6rE,wBAAwBK,SAAS;AACvD,eAAOD,qBAAqBv/D,MAAMpO,MAAMiU,SACxC;AAAA,MAAA;AAED,UAAIyiC,KAAK12C,KAAKsf,GAAG6F;AACjB,UAAIwxB,QAAQ32C,KAAKutB,OAAOK;AACxB,UAAI1N,IAAIlgB,KAAKutB,OAAOK,UAAU,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AACjD,UAAInc,OAAOzR,KAAK+L,KAAK,gBAAgB,CAErC;AAAA,UAAA,CAAK/L,KAAK2M;AACThD,cAAM3J,KAAK42C,wBAAwBjtC,KAAKmrC,IAExCnrC;AAAAA;AAAAA,cAAM3J,KAAK62C,yBAAyBltC,KAAKmrC;AAE1C,UAAI90C,KAAK2M,aAAa;AACrB,YAAImoC,MAAK;AACR90C,eAAKutB,OAAOK,UAAU+oB;AAAAA,QAC1B,OAAU;AACN,cAAIo3B,MAAMt8D,KAAKpR;AACf,gBAAM6d,OAAO6vD,IAAI9pE,iBAAiB;AAClC,cAAIia,MAAM;AACT,qBAAS/Z,IAAI,GAAGA,IAAI+Z,KAAK9Z,QAAQD,KAAK;AACrC+b,gBAAE/b;AAEF,kBAAK+b,EAAE/b,CAAMuyC,IAAAA,KAAK12C,KAAKutB,OAAOzc,SAAS9Q,KAAKsf,GAAGsG,mBAAmB;AAEjE,oBAAI3gB,QAAQiZ,KAAK/Z,CAAAA,EAAGF,iBAAiB,qBAErC;AAAA,oBAAI+yC,UAAUh3C,KAAKutB,OAAOzc,SAAS9Q,KAAKsf,GAAGsG;AAC3C,oBAAG5lB,KAAK0B,OAAO20C,mBAAiB,MAAMr2C,KAAK0B,OAAO20C,oBAAoBn2B,EAAE/b,CAAMnE,KAAAA,KAAK0B,OAAO20C,kBAAiB;AAC1GW,4BAAU92B,EAAE/b,CAAAA,IAAKuyC;AAAAA,gBACjB,YAAU12C,KAAK0B,OAAO20C,mBAAmB,KAAKK,KAAK12C,KAAKutB,OAAOzc,SAAS9Q,KAAKsf,GAAGsG,mBAAkB;AAClGoxB,6BAAWh3C,KAAK0B,OAAO20C,mBAAmB,KAAKK;AAAAA,gBAC/C;AAEDx4B,qBAAK/Z,CAAG7B,EAAAA,MAAMwO,SAAUkmC,UAAUh3C,KAAKsf,GAAGsG,oBAAqB;AAG/D,yBAAS6N,IAAI,GAAGA,IAAIxuB,MAAMb,QAAQqvB,KAAK;AACtCxuB,wBAAMwuB,GAAG5hB,WAAW,CAAA,EAAGvP,MAAMwO,SAASkmC,UAAU;AAAA,gBAChD;AACD92B,kBAAE/b,CAAM+b,KAAAA,EAAE/b,IAAI,CAAM,KAAA,KAAKc,MAAM,CAAG6b,EAAAA;AAAAA,cAClC;AAEDZ,gBAAE/b,MAAM+b,EAAE/b,IAAI,MAAM,KAAK+Z,KAAK/Z,GAAGF,iBAAiB,qBAAA,EAAuB,CAAG6c,EAAAA;AAAAA,YAC5E;AACDZ,cAAE+2B,QAAQ;AACV,gBAAI82B,IAAItgE,WAAWqT,eAAeitD,IAAItgE,WAAWypC,gBAAAA,CAAiB62B,IAAIC;AAK3E;AAAA,UAAA,OAAW;AACN,gBAAKrkE,CAAAA,IAAIvF,UAAUpE,KAAK+L,KAAK,eAAiB,EAAA,CAAA,EAAGzJ,MAAMk1B,cAAc;AACpEtX,gBAAE,CAAM,IAAA;AACT,gBAAIvW,IAAIvF,UAAU8b,EAAE,CAAA,KAAA,IAAU;AAG7B,kBAAI8gC,MAAO9gC,EAAE,CAAA,IAAK,KAAKw2B,KAAK;AAC5B,kBAAGo3B,mBAAmB9sB,KAAK,GAAG;AAC7BhhD,qBAAKskB,KAAKhiB,MAAMwO,SAAU+8D,eAAeC,kBAAkB9sB,KAAK,IAAK;AAAA,cACrE;AACDA,oBAAM;AACN,oBAAMitB,YAAYjuE,KAAK+L,KAAK,iBAAA,EAAmB,CAAG+U,EAAAA;AAClD,oBAAMotD,eAAgBluE,KAAK+L,KAAK,gBAAkB,EAAA,CAAA,EAAG+U;AACrDrP,mBAAKnP,MAAMwO,SAAU9Q,KAAKskB,KAAKxD,eAAemtD,YAAYC,gBAAgBluE,KAAKsf,GAAGmG,cAAc,KAAM;AACtG,kBAAIk/B,OAAO3kD,KAAK+L,KAAK,eAAA,EAAiB;AACtC44C,mBAAKriD,MAAMwO,SAASkwC;AACpB2D,mBAAKriD,MAAMk1B,aAActX,EAAE,CAAO,KAAA,KAAI,WAAW;AACjDykC,qBAAO3kD,KAAK+L,KAAK,eAAA,EAAiB,CAClC44C;AAAAA,mBAAKriD,MAAMwO,SAASkwC;AACpB2D,mBAAKriD,MAAMk1B,aAActX,EAAE,CAAO,KAAA,KAAI,WAAW;AACjD,kBAAGykC,KAAKriD,MAAMk1B,cAAc,UAAS;AACpCmtB,qBAAKriD,MAAMod,UAAU;AAAA,cAC5B,OAAW;AACJilC,qBAAKriD,MAAMod,UAAU;AAAA,cACrB;AACDilC,mBAAK9zC,YAAYqP,EAAE,CAAK,IAAA,uBAAuB;AAC/ClgB,mBAAKo0B,aAAalU,EAAE,CAAK,IAAA,KAAKw2B;AAC9Bx2B,gBAAE,CAAA,IAAK;AAAA,YACP;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAED,aAAOvW;AAAAA,IACT;AAEC,QAAIwkE,eAAe,CAAC,mBAAmB,kBAAkB,iBAAiB,cAC1E;AAAA,QAAIC,yBAAyB,SAASC,YAAAA;AACrCR,qBAAe;AACf,eAAS1pE,IAAI,GAAGA,IAAIgqE,aAAa/pE,QAAQD,KAAK;AAE7C,YAAI0M,YAAYs9D,aAAahqE,CAC7B;AAAA,YAAImqE,cAAe3uE,WAAUoM,KAAK8E,aAAclR,WAAUoM,KAAK8E,WAAW,CAAK,IAAA;AAC/E,YAAIC,SAAS;AACb,gBAAQD,WAAAA;AAAAA,UACP,KAAK;AAAA,UACL,KAAK;AACJC,qBAASw9D,YAAYxtD;AACrB;AAAA,UACD,KAAK;AACJhQ,qBAAS,cAAgBw9D,YAAYxtD,eAAe,IAAI;AACxDgtD,8BAAkBh9D;AAClB;AAAA,UACD,KAAK;AACJ,gBAAIrR,OAAOE,WAAUsG,SAAAA,EAAWxG;AAEhC,gBAAG6uE,YAAYz8D,WAAW,CAAA,KAAMpS,QAAQ,SAAS;AAChD,kBAAI8uE,YAAY;AAChB,uBAAQpqE,KAAI,GAAGA,KAAImqE,YAAYz8D,WAAWzN,QAAQD,MAAI;AACrD,oBAAGmqE,YAAYz8D,WAAW1N,EAAAA,EAAG2c,eAAeytD,WAAU;AACrDA,8BAAYD,YAAYz8D,WAAW1N,EAAG2c,EAAAA;AAAAA,gBACtC;AAAA,cACD;AACDhQ,uBAASy9D;AAAAA,YACT,OACI;AACJz9D,uBAASK,KAAK5C,IAAI+/D,YAAYxtD,eAAe,GAAGwtD,YAAYp3B,YAAAA;AAAAA,YAC5D;AACD,gBAAIz3C,QAAQ,SAAS;AACpB,kBAAIE,WAAU+B,OAAO8rE,yBAAyBa,YAAY;AACzD,oBAAIG,cAAcF,YAAYrqE,iBAAiB,oBAAA,EAAsBG;AACrE0M,yBAAS09D,cAAc7uE,WAAU+B,OAAO8rE;AAAAA,cACxC;AACD,kBAAIa,YAAY;AACfC,4BAAYhsE,MAAMwO,SAASA,SAAS;AAAA,cACpC;AAAA,YACD,WACQrR,QAAQ,QAAO;AACvBqR,uBAAS,MAAMnR,WAAU+B,OAAO+sE;AAAAA,YAChC,WACOhvE,QAAQ,UAAS;AACxBqR,uBAAS;AACT,kBAAGw9D,YAAYz8D,cAAcy8D,YAAYz8D,WAAWzN,QAAO;AAC1D,yBAAQqvB,IAAI,GAAGA,IAAI66C,YAAYz8D,WAAWzN,QAAQqvB,KAAI;AACrD3iB,4BAAUw9D,YAAYz8D,WAAW4hB,CAAG3S,EAAAA;AAAAA,gBACpC;AAAA,cACD;AAED,kBAAGhQ,SAAS,IAAInR,WAAU+B,OAAO+rE,eAAc;AAC9C38D,yBAASnR,WAAU+B,OAAO+rE;AAAAA,cAC1B,OACG;AACH38D,0BAAU;AAAA,cACV;AAAA,YACD,WACQrR,QAAQ,eAAc;AAC9B,kBAAI66C,aAAa36C,WAAU2f,GAAGovD,2BAA2B/uE,WAAU+B,OAAO+rE,eACzEkB;AAED,kBAAIniD;AACJ,uBAAQxd,IAAI,GAAGA,IAAIs/D,YAAYz8D,WAAWzN,QAAQ4K,KAAI;AACrDwd,yBAAS8hD,YAAYz8D,WAAW7C;AAChC,yBAAQykB,IAAI,GAAGA,IAAIjH,OAAO3a,WAAWzN,QAAQqvB,KAAK;AACjD,sBAAItT,cAAc,GACjByuD,kBAAkBpiD,OAAO3a,WAAW4hB,CAAG5hB,EAAAA,WAAW;AAEnD,2BAAQg9D,IAAG,GAAGA,IAAID,gBAAgB/8D,WAAWzN,QAAQyqE,KAAI;AACxD1uD,mCAAeyuD,gBAAgB/8D,WAAWg9D,GAAG/tD;AAAAA,kBAC7C;AAED6tD,+BAAaxuD,cAAcxgB,WAAU2f,GAAGovD;AACxCC,+BAAc3/D,KAAK,MAAMykB,KAAK,KAAKA,KAAK,KAAMk7C,aAAa,IAAIA;AAE/D,sBAAIA,aAAar0B,YAAY;AAC5BA,iCAAaq0B;AAAAA,kBACb;AAAA,gBACD;AAAA,cACD;AAED79D,uBAASwpC,aAAa;AAAA,YACtB,WACO76C,QAAQ,OAAO;AACtBqR,uBAAS;AACT,kBAAInH,MAAM2kE,YAAYrqE,iBAAiB;AAEvC,uBAASwvB,IAAI,GAAGA,IAAI9pB,IAAIvF,QAAQqvB,KAAK;AACpC3iB,0BAAUnH,IAAI8pB,CAAG3S,EAAAA;AAAAA,cACjB;AAED,kBAAIhQ,SAAS,IAAInR,WAAU+B,OAAOgsE,cAAc;AAC/C58D,yBAASnR,WAAU+B,OAAOgsE;AAAAA,cAC1B,OACI;AACJ58D,0BAAU;AAAA,cACV;AAAA,YACD,WACOnR,WAAUmvE,WAAW;AAC5Bh+D,uBAAS;AAET,kBAAIw9D,YAAYz8D,WAAW,GAAGA,WAAW,CAAA,EAAGA,cAAcy8D,YAAYz8D,WAAW,GAAGA,WAAW,CAAA,EAAGA,WAAWzN,QAAQ;AACpH,oBAAIuF,MAAM2kE,YAAYz8D,WAAW,CAAA,EAAGA,WAAW,CAAGA,EAAAA,WAAW,CAAGA,EAAAA;AAEhE,yBAAS4hB,IAAI,GAAGA,IAAI9pB,IAAIvF,QAAQqvB,KAAK;AACpC3iB,4BAAUnH,IAAI8pB,GAAG3S;AAAAA,gBACjB;AAEDhQ,0BAAU;AAEV,oBAAGA,SAASnR,WAAU+B,OAAO+rE,eAAc;AAC1C38D,2BAASnR,WAAU+B,OAAO+rE;AAAAA,gBAC1B;AAAA,cACD,OACG;AACH38D,yBAASnR,WAAU+B,OAAO+rE;AAAAA,cAC1B;AAAA,YACD;AAED,gBAAI9tE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAO,GAAA;AAC/C,kBAAI4uE,YAAY;AACfv9D,0BAAU;AACVw9D,4BAAYhsE,MAAMwO,SAASA,SAAS;AAAA,cAC3C,OAAa;AACNA,yBAAS;AACT,oBAAIlN,MAAMjE,WAAU4L,OAAO9L,IAAAA;AAC3B,oBAAIye,OAAOta,IAAImrE;AACf,yBAAQl9C,IAAE,GAAGA,IAAI3T,KAAK9Z,QAAQytB,KAAI;AACjC/gB,4BAAUlN,IAAIorE,iBAAiB9wD,KAAK2T,CAAG3c,EAAAA,GAAAA;AAAAA,gBACvC;AAED,oBAAGvV,WAAUqE,WAAWic,eAAetgB,WAAUqE,WAAWirE,aAAY;AACvEn+D,4BAAUo+D;gBACV;AAAA,cACD;AACDp+D,wBAAU;AAAA,YACV;AACD,gBAAIrR,QAAQ,SAASA,QAAQ,UAAWE,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAQ,GAAA;AACpFqR,wBAAU;AAAA,YACV;AACD;AAAA,QAEFA;AAAAA,kBAAU;AACV+8D,wBAAgB/8D;AAAAA,MAChB;AACDnR,MAAAA,WAAU2kB,KAAKhiB,MAAMwO,SAAS,eAAiB;AAE/C,UAAA,CAAKu9D;AACJ1uE,QAAAA,WAAUiB,WAAAA;AAAAA,IACb;AAEC,aAASuuE,aAAAA;AACRvB,eAAS;AACTjuE,MAAAA,WAAUiL,UAAU,0BAA0B;AAC9CgjE,eAAS;AAAA,IACT;AAED,QAAIwB,mCAAmC,WACtC;AAAA,UAAA,EAAKzvE,WAAU+B,OAAO6rE,wBAAwBK;AAC7C,eAAO;AAER,UAAInuE,OAAOE,WAAUsG,SAAWxG,EAAAA;AAEhC,WAAIA,MAAM;AACT,eAAO;AAAA,MACP;AAED,UAAI4vE,eAAepuE,OAAOquE,yBAAyBruE,OAAOoY;AAC1D,UAAIgU,YAAYxtB,SAASmgB,gBAAgBqN;AAEzCgiD,mBAAa,WACZ;AAAA,YAAG1vE,WAAU8gB,cAAAA,CAAe9gB,WAAUslB,cAAa;AAClD;AAAA,QACA;AACDmpD,+BAAAA;AAAAA,MACH;AAEE,UAAMzuE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAUA,KAAAA,QAAQ,SAAS;AACrE4vE,qBAAa;AACZ,cAAG1vE,WAAU8gB,cAAe9gB,CAAAA,WAAUslB,cAAa;AAClD;AAAA,UACA;AACDmpD,iCAAuB,IAAA;AACvBvuE,mBAASmgB,gBAAgBqN,YAAYA;AACrC8hD,qBAAAA;AAAAA,QACA,GAAE,CACN;AAAA,MAAA,OAAO;AACJA,mBACA;AAAA,MAAA;AAAA,IACH;AAECxvE,IAAAA,WAAUiG,YAAY,sBAAsB,WAAA;AAC3C,UAAI2pE,kBAAkB5vE,WAAU+B,OAAO6rE;AACvC,UAAA,CAAI5tE,WAAU2f,GAAGkwD,wBAAuB;AACvC7vE,QAAAA,WAAU2f,GAAGkwD,yBAAyB7vE,WAAU2f,GAAG+F;AAAAA,MACnD;AAED1lB,MAAAA,WAAU2f,GAAG+F,eAAekqD,kBAAkB,IAAI5vE,WAAU2f,GAAGkwD;AAE/D,UAAG7vE,WAAU4L,QAAO;AACnB,iBAAQpH,KAAKxE,WAAU4L,QAAO;AAC7B,cAAI0P,WAAWtb,WAAU4L,OAAOpH;AAChC,cAAI8W,CAAAA,SAASw0D,8BAA6B;AACzCx0D,qBAASw0D,+BAA+Bx0D,SAASy0D;AAAAA,UACjD;AACD,cAAGH,iBAAgB;AAClBt0D,qBAASy0D,qBAAqB;AAAA,UACnC,OAAS;AACJz0D,qBAASy0D,qBAAqBz0D,SAASw0D;AAAAA,UACvC;AAAA,QACD;AAAA,MACD;AACD,aAAO;AAAA,IACT;AAEC9vE,IAAAA,WAAUiG,YAAY,gBAAgBwpE,gCACtCzvE;AAAAA,IAAAA,WAAUiG,YAAY,SAASwpE,gCAAAA;AAC/BzvE,IAAAA,WAAUiG,YAAY,kBAAkBwpE,gCACxCzvE;AAAAA,IAAAA,WAAUiG,YAAY,kBAAkBwpE,gCAAAA;AACxCzvE,IAAAA,WAAUiG,YAAY,gBAAgBwpE,gCACtCzvE;AAAAA,IAAAA,WAAUiG,YAAY,kBAAkBwpE,gCAAAA;AACxCzvE,IAAAA,WAAUiG,YAAY,0BAA0BwpE;AAChDzvE,IAAAA,WAAUiG,YAAY,cAAcwpE,gCAAAA;AAGpCzvE,IAAAA,WAAUiG,YAAY,kBAAkB;AACvCgoE,eAAS;AACT,aAAO;AAAA,IACT,CAAA;AAECjuE,IAAAA,WAAUiG,YAAY,oBAAoB,WACzCgoE;AAAAA,eAAS;AACT,aAAO;AAAA,IACT;AAEC,aAASsB,gBAAAA;AACR,UAAI3hE,MAAM1N,SAASC,cAAc,KAAA;AACjCyN,UAAIjL,MAAMg5C,UAAU;AAEpBz7C,eAASM,KAAKC,YAAYmN,GAAAA;AAC1B,UAAIP,OAAOO,IAAIyT,cAAczT,IAAI0S;AACjCpgB,eAASM,KAAKuN,YAAYH,GAC1B;AAAA,aAAOP;AAAAA,IACP;AAAA,EAGF;AC/Ve,WAAQ2iE,OAAChwE,YAAAA;AACvB,aAASiwE,UAAUx1D,MAAKy1D,cAAaxxD,OAAAA;AACpC,UAAIyY,MAAM1c,OAAO,MAAMiE,SAAUwxD,eAAc,OAAKA,eAAc;AAClEhwE,eAAS8vE,SAAS74C;AAAAA,IAClB;AACD,aAASg5C,UAAU11D,MAClB;AAAA,UAAIqQ,SAASrQ,OAAO;AACpB,UAAIva,SAAS8vE,OAAOvrE,SAAS,GAAG;AAC/B,YAAI+O,SAAStT,SAAS8vE,OAAO59D,QAAQ0Y,MACrC;AAAA,YAAItX,cAAc;AACjBA,oBAAUsX,OAAOrmB;AACjB,cAAIoL,MAAM3P,SAAS8vE,OAAO59D,QAAQ,KAAKoB,MACvC;AAAA,cAAI3D;AACHA,kBAAM3P,SAAS8vE,OAAOvrE;AACvB,iBAAOvE,SAAS8vE,OAAOnlD,UAAUrX,QAAQ3D,GACzC;AAAA,QAAA;AAAA,MACD;AACD,aAAO;AAAA,IACP;AAED,aAASugE,cAAcpwE,YACtB;AAAA,cAAQA,WAAU2kB,KAAKvkB,MAAM,eAAe;AAAA,IAC5C;AAED,QAAIgpC,QAAQ;AACZppC,IAAAA,WAAUiG,YAAY,sBAAqB,SAASqqD,SAAQD,SAAQvwD,MAAK0D,MAAAA;AAExE,UAAI4lC,SAASppC,WAAUqwE,cAAa;AACnC,YAAIC,sBAAsBtwE,WAAUqwE;AACpC,YAAGC,oBAAoB9sE,QAAQ8sE,oBAAoBxwE,QAAQwwE,oBAAoBzuE,OAAM;AACpFunC,kBAAQ;AAAA,QACR;AAAA,MACD;AAED,UAAI4mC,UAASI,cAAcpwE;AAE3B,UAAIopC,OAAM;AACTA,gBAAQ;AACR,YAAImnC,kBAAkBJ,UAAUH,OAChC;AAAA,YAAIO,iBAAgB;AAEnB,cAAA,CAAIvwE,WAAUyM,WAAU;AAGvBzM,YAAAA,WAAUyM,YAAYjJ;AAAAA,UACtB;AAED+sE,4BAAkBC,SAASD,eAAiB5qE,EAAAA,MAAM;AAClD4qE,0BAAgB,CAAA,IAAKlwE,KAAKwxC,SAASC,UAAUy+B,gBAAgB,CAAA,CAAA;AAC7D,cAAIzkE,OAAOzL,KAAKozB,aAAa88C,gBAAgB,CAAA,CAAA,IAAMA,gBAAgB,CAAKzwE,IAAAA,MACvE0D,OAAQgkB,CAAAA,MAAAA,CAAO+oD,gBAAgB,CAAMA,CAAAA,IAAAA,gBAAgB,KAAK/sE;AAE3DlC,iBAAOoY,WAAW,WACjB;AAAA,gBAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,YACA;AACD9gB,YAAAA,WAAU8X,eAAetU,MAAKsI;UAC9B,GAAC,CAAA;AACF,iBAAO;AAAA,QACP;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAEC9L;AAAAA,IAAAA,WAAUiG,YAAY,gBAAgB,SAAUwqE,SAAU7O,SAAAA;AACzD,UAAIoO,UAASI,cAAcpwE;AAC3B,UAAImH,OAAOusD,OAAOrzD,KAAKwxC,SAASG,WAAW4vB,OAAAA,IAAS,aACpDqO;AAAAA,gBAAUD,SAAO,yCAAwC7oE,IAAAA;AAAAA,IAC3D;AAGC,QAAIupE,WAAW1wE,WAAUqzB;AACzBrzB,IAAAA,WAAUqzB,QAAQ,WAAA;AACjB,UAAI5Z,OAAOnF;AAEX,WAAKtU,WAAUkV,OAAO;AACrB,YAAIkiD,OAAO/2D;AACXiB,eAAOoY,WAAW,WACjBg3D;AAAAA,mBAASjiE,MAAM2oD,MAAM39C,IAAAA;AAAAA,QACrB,GAAC,CAAA;AAAA,MACL,OAAS;AACNi3D,iBAASjiE,MAAMpO,MAAMoZ,IAAAA;AAAAA,MACrB;AAAA,IACH;AAAA,EACA;ACpFe,QAAAk3D,iBAAA,EACd/zD,OAAO,CAACmqD,WAAWjsD,YAClBA;AAAAA,IAAAA,QAAO,OAAO,OAAOisD,SAAAA;AAAAA;AAAAA,qJAAAA;AAAAA,EAE+H,ECFvI;AAAA,WAAQ6J,uBAAC5wE,YACvB2wE;AAAAA,mBAAe/zD,MAAM,gBAAgB5c,WAAU8a;EAChD;ACFe,WAAQ+1D,wBAAC7wE,YAAAA;AACvB2wE,mBAAe/zD,MAAM,gBAAgB5c,WAAU8a,MAChD;AAAA,EAAA;ACJe,WAAQg2D,QAAC9wE,YAAAA;AAExBA,IAAAA,WAAU4jD,YAAY,WAAS,EAC9Bn8C,QAAO,SAAS+8C,KACf;AAAA,UAAA,CAAKA,IAAIusB;AACRvsB,YAAIusB,iBAAiB;AACtB,UAAInoE,MAAM;AACVA,aAAO,iBAAe47C,IAAIn9C,OAAK;AAC/B,aAAOuB;AAAAA,IACP,GACDm7C,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG9E;OAChC,WACCivE;AAAAA,mBAAAA;AACA,YAAI5wE,MAAKJ,WAAUiG,YAAY,mBAAkB;AAEhD+qE,qBACAhxE;AAAAA,UAAAA,WAAUujB,YAAYnjB,GAC1B;AAAA,QAAA,CAAA;AACG,iBAAS4wE,aAAAA;AACR,cAAG9pD,KAAK+pD,UAAU/pD,KAAK+pD,OAAOC,WAAW;AACxC,gBAAIC,SAAQjqD,KAAK+pD;AACjB,gBAAGE,OAAMC,QAAO;AACfD,cAAAA,OAAMC,OAAAA;AAAAA,YACZ,WAAcD,OAAMjwE,YAAW;AACzBiwE,cAAAA,OAAMjwE,WACN;AAAA,YAAA;AAEDiwE,YAAAA,OAAMD,YAAYC,OAAME,UAAU;AAAA,UAClC;AAAA,QACD;AAAA,MACD;AACD/vE,aAAOgwE,oBAAoBvvE,OAAOwvE,cAAY;AAC9CrqD,WAAK+pD,SAAS,IAAIO,YAAYtqD,MAAMnlB,OAAO0Y,MAAMyM,KAAK7F,cAAY,CAClE;AAAA,UAAItf,OAAO6iD;AACV19B,aAAK+pD,OAAOhrE,YAAY,YAAYlE,OAAO6iD,QAAAA;AAE5C,UAAI7iD,OAAO0vE;AACVvqD,aAAK+pD,OAAOS,gBAAgB3vE,OAAO0vE,cAAAA;AACpC,UAAIN,QAAQjqD,KAAK+pD;AACjBE,YAAMQ,oBAAoB5vE,OAAO6vE,WAAW7vE,OAAO8vE,eAAa,MAAA,CAAA,CAAQ9vE,OAAOu4B,KAE/E;AAAA,UAAA,CAAKv4B,OAAO8vE,aAAa;AACxB,YAAIC,cAAc,CAAA;AAClB,iBAASttE,IAAI,GAAGA,IAAIzC,OAAOkG,QAAQxD,QAAQD,KAAK;AAC/C,cAAI+7C,SAASx+C,OAAOkG,QAAQzD,CAAAA;AAC5B,cAAIutE,gBAAgB,CACnBxxB,OAAOhrC,KACPgrC,OAAO14B,OACP04B,OAAOj9C;AAERwuE,sBAAY5tE,KAAK6tE;QACjB;AACDZ,cAAMa,UAAUF,WAChB;AAAA,YAAIjrE,GAAG9E,OAAOU,SAAS;AACtB,cAAIkN,QAAQwhE,MAAMc,gBAAgBprE,GAAG9E,OAAOU,MAAAA,CAAAA;AAC5C0uE,gBAAMe,aAAaviE;QACnB;AAAA,MACJ,OAAS;AACN,YAAIwiE,cAActrE,GAAG9E,OAAOU,MAAAA;AAC5B,YAAI0vE,aAAa;AAChB,cAAIpwE,OAAOgvE,eAAeoB,WAAc,GAAA;AACvChB,kBAAMa,UAAUG,aAAapwE,OAAOgvE,eAAeoB;AACnDhB,kBAAMiB,QAAQ;AACdjB,kBAAMe,aAAa;AACnBf,kBAAMiB,QAAQ,CACnB;AAAA,UAAA,OAAW;AACNpyE,YAAAA,WAAUmoC,KAAK0B,IAAI9nC,OAAO8vE,cAAY,SAAOM,cAAY,UAAQnyE,WAAU+O,IAAAA,GAAO,SAASuK,QAC1F;AAAA,kBAAIoD,eAAepD,OAAOqxB,OAAOjuB;AACjC,kBAAImL;AACJ,kBACC;AAAA,oBAAIjf,MAAMkc,KAAKujB,MAAM3rB;AACrBmL,wBAAQjf,IAAIX,QAAQ,CAAGd,EAAAA;AAAAA,cACvB,SAAMjB;AACN,oBAAIq6C,UAASvgD,WAAUmoC,KAAKa,MAAM,YAAY1vB,OAAOqxB,MAAAA,EAAQ,CAC7D9iB;AAAAA,wBAAQ04B,QAAOruC,WAAW,CAAA,EAAGytC;AAAAA,cAC7B;AACD59C,qBAAOgvE,eAAeoB,WAAetqD,IAAAA;AACrCspD,oBAAMa,UAAUG,aAAatqD,KAC7BspD;AAAAA,oBAAMiB,QAAQ,CACdjB;AAAAA,oBAAMe,aAAa,CACnBf;AAAAA,oBAAMiB,QAAQ,CAAA;AAAA,YACpB;UACK;AAAA,QACL,OAAU;AACNjB,gBAAMkB,cAAc;QACpB;AAAA,MACD;AAAA,IACD,GACDxuB,WAAU,SAAS38B,MAAKrgB,IAAG9E;AAC1B,UAAIowE,cAAcjrD,KAAK+pD,OAAOqB,iBAAAA;AAC9B,UAAIvwE,OAAO8vE,aAAa;AACvB9vE,eAAOgvE,eAAeoB,WAAejrD,IAAAA,KAAK+pD,OAAOsB,gBACjD;AAAA,MAAA;AACD,aAAOJ;AAAAA,IACP,GACDz3C,OAAM,SAASxT;IACd,EAGFlnB;AAAAA,IAAAA,WAAU4jD,YAAY,OAAS,IAAA,EAC9Bn8C,QAAO,SAAS+8C;AACf,UAAI57C,MAAM;AACVA,aAAO,2CAA2C47C,IAAIguB,WAAW,2BAA0B,EAAyBhuB,uBAAAA,IAAIrzC;AACxH,eAAS3M,IAAE,GAAGA,IAAEggD,IAAIv8C,QAAQxD,QAAQD,KAAK;AACxC,YAAIpE,MAAKJ,WAAU+O;AACnBnG,eAAO,4CAA0CxI,MAAG,kBAAgBA,MAAG,0BAAwBokD,IAAI/pC,OAAK,cAAY+pC,IAAIv8C,QAAQzD,CAAG+Q,EAAAA,MAAI,cAAeivC,IAAIv8C,QAAQzD,CAAAA,EAAGqjB,QAAM;AAAA,MAC3K;AACDjf,aAAO;AAEP,aAAOA;AAAAA,IACP,GACDm7C,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG9E,QAAAA;AAChC,UAAI0wE,eAAevrD,KAAKQ,qBAAqB,OAC7C;AAAA,eAASljB,IAAI,GAAGA,IAAIiuE,aAAahuE,QAAQD,KAAK;AAC7CiuE,qBAAajuE,CAAGohD,EAAAA,UAAU;AAC1B,YAAI8sB,gBAAgB7rE,GAAG9E,OAAOU,WAASic;AACvC,YAAI+zD,aAAajuE,CAAGka,EAAAA,SAASg0D,eAAe;AAC3CD,uBAAajuE,CAAGohD,EAAAA,UAAU;AAAA,QAC1B;AAAA,MACD;AAAA,IACD,GACD/B,WAAU,SAAS38B,MAAKrgB,IAAG9E;AAC1B,UAAI0wE,eAAevrD,KAAKQ,qBAAqB,OAAA;AAC7C,eAAQljB,IAAE,GAAGA,IAAEiuE,aAAahuE,QAAQD,KAAK;AACxC,YAAGiuE,aAAajuE,GAAGohD,SAAS;AAC3B,iBAAO6sB,aAAajuE,GAAGka;AAAAA,QACvB;AAAA,MACD;AAAA,IACD,GACDgc,OAAM,SAASxT,MACd;AAAA,IAAA,EAAA;AAGFlnB,IAAAA,WAAU4jD,YAAY,cAAY,EACjCn8C,QAAO,SAAS+8C,KACf;AAAA,UAAIxkD,WAAU+B,OAAOouC;AACpB,eAAO;AAAA;AAEP,eAAO;AAAA,IACR,GACD4T,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG9E,QAAAA;AAChCmlB,aAAKlnB,WAAU8mB,UAAUzH,cAAc,IAAItd,OAAO3B,EAClD,EAAA;AAAA,UAAIA,MAAKJ,WAAU+O,IAAAA;AACnB,UAAI4jE,YAAAA,OAAoB5wE,OAAO2wE,iBAAiB,cAAeh0D,SAAS3c,OAAO2wE,kBAAkBh0D;AACjGwI,WAAKhW,aAAa;AAClB,UAAI0hE,aAAa,gBAAcxyE,MAAG,0CAAwC2B,OAAO0Y,OAAK,OAAK,YAAY,mBAAiB,MAAI;AAC5H,UAAIo4D,aAAa,iBAAezyE,MAAG,QAAMJ,WAAU8nB,OAAOC,OAAO,aAAWhmB,OAAO0Y,SAAO1Y,OAAO0Y,QAAM;AACvG,UAAIza,WAAU+B,OAAOouC,WAAU;AAC9BjpB,aAAK3mB,YAAYsyE;AACjB3rD,aAAKof,YAAY/lC,YAAUqyE;AAAAA,MAC3B;AACA1rD,aAAK3mB,YAAUqyE,aAAWC;AAE3B,UAAI9wE,OAAOmc,SAAS;AACnB,YAAI40D,WAAW5rD,KAAKQ,qBAAqB,OAAS,EAAA,CAAA;AAClD,YAAGorD,SAASh1D,iBAAgB;AAC3B;AAAA,QACA;AACDg1D,iBAASh1D,kBAAkB;AAC3B9d,QAAAA,WAAU6B,MAAMixE,UAAU,SAAS/wE,OAAOmc,OAE1C;AAAA,MAAA;AAAA,IACD,GACD2lC,WAAU,SAAS38B,MAAKrgB,IAAG9E,QAAAA;AAC1BmlB,aAAKlnB,WAAU8mB,UAAUzH,cAAc,IAAItd,OAAO3B,EAClD,EAAA;AAAA,UAAI0yE,WAAW5rD,KAAKQ,qBAAqB,OAAS,EAAA,CAAA;AAClD,WAAKorD;AACJA,mBAAW5rD,KAAKof,YAAY5e,qBAAqB,SAAS,CAC3D;AAAA,aAAQorD,SAAgB,UAAG/wE,OAAO2wE,iBAAe,OAAO3wE,OAAOgxE,mBAAiB;AAAA,IAChF,GACDr4C,OAAM,SAASxT,MACd;AAAA,IAAA,EAAA;AAAA,EAIF;AC/Ke,WAAQ8rD,OAAChzE;AAExBA,IAAAA,WAAUkmE,IAAI+M,aAAa,EAC1BC,YAAY,KAGblzE;AAAAA,IAAAA,WAAUgzE,SAAS,WAClB;AAAA,UAAA,CAAIhzE,WAAUiL,UAAU,kBAAkB;AACzC;AACD,UAAIuJ,IAAIxU,WAAU2kB;AAClB,SAAG;AACFnQ,UAAE2+D,YAAY3+D,EAAE7R,MAAM2K,YAAY;AAClCkH,UAAE7R,MAAM2K,WAAW;AAAA,MACnB,UAASkH,IAAIA,EAAE1G,eAAe0G,EAAE7R;AACjC6R,UAAIxU,WAAU2kB;AACdnQ,QAAE7R,MAAM2K,WAAW;AACnBkH,QAAE4+D,SAAS5+D,EAAE7R,MAAMyO;AACnBoD,QAAE6+D,UAAU7+D,EAAE7R,MAAMwO;AACpBqD,QAAE7R,MAAMyO,QAAQoD,EAAE7R,MAAMwO,SAAS;AACjCqD,QAAE7R,MAAMC,MAAM4R,EAAE7R,MAAME,OAAO;AAE7B,UAAID,MAAM1C,SAASM;AACnBoC,UAAI8qB,YAAY;AAEhB9qB,YAAMA,IAAIkL;AACV,UAAIlL;AACHA,YAAI8qB,YAAY;AACjBxtB,eAASM,KAAK8yE,YAAYpzE,SAASM,KAAKmC,MAAM4wE,YAAY;AAC1DrzE,eAASM,KAAKmC,MAAM4wE,WAAW;AAC/BvzE,MAAAA,WAAUwzE,UAAAA;AACVxzE,MAAAA,WAAUiL,UAAU,YAAY;IACjC;AACAjL,IAAAA,WAAUyzE,WAAW,WAAA;AACpB,WAAIzzE,WAAUiL,UAAU,oBAAoB,CAC3C,CAAA;AAAA;AACD,UAAIuJ,IAAIxU,WAAU2kB;AAClB,SAAG;AACFnQ,UAAE7R,MAAM2K,WAAWkH,EAAE2+D;AAAAA,MACrB,UAAS3+D,IAAIA,EAAE1G,eAAe0G,EAAE7R;AACjC6R,UAAIxU,WAAU2kB;AACdnQ,QAAE7R,MAAMyO,QAAQoD,EAAE4+D;AAClB5+D,QAAE7R,MAAMwO,SAASqD,EAAE6+D;AACnBnzE,eAASM,KAAKmC,MAAM4wE,WAAWrzE,SAASM,KAAK8yE;AAC7CtzE,MAAAA,WAAUwzE;AACVxzE,MAAAA,WAAUiL,UAAU,cAAc,CACnC,CAAA;AAAA,IAAA;AACAjL,IAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,UAAIuO,IAAItU,SAASC,cAAc;AAC/BqU,QAAEtD,YAAY;AACdlR,MAAAA,WAAUkmE,IAAI+M,WAAWC,aAAa1+D;AACtCA,QAAEjU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAadP,MAAAA,WAAU2kB,KAAKlkB,YAAY+T,CAC3BxU;AAAAA,MAAAA,WAAU6B,MAAM2S,GAAG,SAAU,WAC5B;AAAA,YAAA,CAAKxU,WAAU2pB;AACd3pB,UAAAA,WAAUgzE;;AACVhzE,UAAAA,WAAUyzE,SAAAA;AAAAA,MACb,CACA;AAAA,IAAA,CAAA;AACAzzE,IAAAA,WAAUwzE,YAAY,WAAA;AACrBnzE,WAAKspB,WAAYtpB,CAAAA,KAAKspB;AACtB,UAAGtpB,KAAKspB,UAAS;AAChBtpB,aAAK6lE,IAAI+M,WAAWC,WAAWn2D,UAAUtZ,IAAI;MAE/C,OAAM;AACJpD,aAAK6lE,IAAI+M,WAAWC,WAAWn2D,UAAU6X,OAAO,2BAChD;AAAA,MAAA;AAID,UAAI8+C,aAAa,CAAC,QAAQ,KAAA;AAC1B,eAASlvE,IAAI,GAAGA,IAAIkvE,WAAWjvE,QAAQD,KAAK;AAE3C,YAAImvE,cAAc3zE,WAAU,kBAAkB0zE,WAAWlvE,CACzD,CAAA;AAAA,YAAIxE,WAAU2f,GAAG,YAAY+zD,WAAWlvE,CAAAA,CAAAA,GAAK;AAC5CxE,UAAAA,WAAU,kBAAkB0zE,WAAWlvE,CAAMxE,CAAAA,IAAAA,WAAU2f,GAAG,YAAY+zD,WAAWlvE,CACjFxE,CAAAA;AAAAA,UAAAA,WAAU2f,GAAG,YAAY+zD,WAAWlvE,MAAM;AAAA,QAC7C,OAAS;AACN,cAAImvE,aAAa;AAChB3zE,YAAAA,WAAU2f,GAAG,YAAY+zD,WAAWlvE,MAAMxE,WAAU,kBAAkB0zE,WAAWlvE,CAC1ExE,CAAAA;AAAAA,mBAAAA,WAAU,kBAAkB0zE,WAAWlvE;UAC9C;AAAA,QACD;AAAA,MACD;AAEDxE,MAAAA,WAAU8X,eAAAA;AAAAA,IACX;AAAA,EAGA;AClGe,WAAQ87D,UAAC5zE,YAAAA;AACvB2wE,mBAAe/zD,MAAM,QAAQ5c,WAAU8a,MACxC;AAAA,EAAA;ACJe,WAAQ+4D,eAAC7zE,YAAAA;AAExBA,IAAAA,WAAUiG,YAAY,oBAAmB,WACxC;AAAA,UAAI0H,MAAMzN,SAASM,KAAKknB,qBAAqB,KAC7C;AAAA,eAASljB,IAAE,GAAGA,IAAImJ,IAAIlJ,QAAQD,KAAK;AAClC,YAAI+3C,MAAK5uC,IAAInJ,CAAG0M,EAAAA,aAAW;AAC3BqrC,QAAAA,MAAKA,IAAG52C,MAAM,GACd;AAAA,YAAI42C,IAAG93C,UAAU,KAAK83C,IAAG,CAAA,KAAM,YAAW;AACzC,cAAIhR,OAAO,cAAa59B,IAAInJ,GAAGjE,aAAW,IAAI6pB,QAAQ,OAAO,QAAQA,QAAQ,MAAK,OAAQA,QAAQ,YAAW,MAAI;AACjHmhB,iBAAOilC,SAASjlC,IAAAA,EAAMnhB,QAAQ,wBAAuB,SAAS0pD,KAAI5pD,MACjE;AAAA,mBAAO,UAAQA,OAAK;AAAA,UACxB,CACGlqB;AAAAA,UAAAA,WAAU0zB,UAAU6oB,IAAG,CAAA,CAAA,IAAI9jC,SAAS,SAAQ,OAAM,MAAK8yB,IACvD59B;AAAAA,cAAInJ,CAAG7B,EAAAA,MAAMod,UAAQ;AAAA,QACrB;AAAA,MACD;AAAA,IACF,CAEA;AAAA,EAAA;AClBe,WAAQg0D,mBAAC/zE,YAAAA;AAExBA,IAAAA,WAAUg0E,oBAAoBC,YAAY,EACzCC,eAAe;AACd,aAAO,EACNC,WAAU,EACT7iD,OAAS,OACT8iD,KAAO,OACPC,MAAQ,OACRC,MAAQ,MAETx4B,GAAAA,SAAS;IAEV,GACDzT,OAAO,SAASksC,UAAAA;AACf,UAAIC,WAAW,CAAA;AAEf,UAAIC,OAAOp0E,KAAKq0E,eAAer0E,KAAK48B,KAAKs3C,QACzC,CAAA;AAAA,eAAQ/vE,IAAI,GAAGA,IAAIiwE,KAAKhwE,QAAQD,KAAI;AACnC,YAAImwE,QAAQt0E,KAAKu0E,SAASH,KAAKjwE,CAAAA,CAAAA;AAE/B,YAAIqwE,UAAUx0E,KAAK6zE;AAEnB,iBAAQpgD,IAAI,GAAGA,IAAI6gD,MAAMlwE,QAAQqvB,KAAI;AACpC,cAAGzzB,KAAKy0E,YAAYH,MAAM7gD,CAAI,CAAA,GAAA;AAC7B+gD,oBAAQV,UAAUQ,MAAM7gD,MAAM;AAAA,UAC9B,WAAQzzB,KAAK00E,YAAYJ,MAAM7gD,CAAAA,CAAAA,GAAI;AACnC+gD,oBAAQ/4B,UAAUz7C,KAAK00E,YAAYJ,MAAM7gD;UAC9C,OAAS;AACJ+gD,oBAAQ/4B,UAAU64B,MAAM7gD,CAAGkhD,EAAAA,WAAW;UACtC;AAAA,QACD;AAEDR,iBAAStwE,KAAK2wE,OAAAA;AAAAA,MACd;AACD,aAAOL;AAAAA,IACP,GAEDS,qBAAqB,SAASC,UAC7B;AAAA,UAAIL,UAAUx0E,KAAK6zE,cAAAA;AACnBW,cAAQV,UAAU7iD,UAAU4jD,SAASr5B;AACrCg5B,cAAQV,UAAUC,MAAAA,CAAAA,CAAQc,SAASC;AACnCN,cAAQV,UAAUE,OAAAA,CAAAA,CAASa,SAASE;AACpCP,cAAQV,UAAUG,OAASY,CAAAA,CAAAA,SAASG;AACpCR,cAAQ/4B,UAAUo5B,SAASxb,SAASwb,SAASp5B;AAE7C,UAAG+4B,QAAQ/4B,WAAW,MAAM+4B,QAAQ/4B,WAAW,KAAI;AAElD+4B,gBAAQ/4B,WAAW;AAAA,MACnB;AAED,UAAIw5B,eAAe5vE,OAAO6vE,aAAaV,QAAQ/4B,OAAAA;AAC/C,UAAGw5B,cAAa;AACfT,gBAAQ/4B,UAAUw5B,aAAatyD,YAAcgyD,EAAAA,WAAW;MACxD;AACD,aAAOH;AAAAA,IACP,GAEDW,kBAAkB,SAASN,UAAAA;AAC1B,aAAO70E,KAAKo1E,QAAQp1E,KAAK40E,oBAAoBC,QAAAA,CAAAA;AAAAA,IAC7C,GAEDO,SAAS,SAASZ,SACjB;AAAA,UAAIa,QAAQ,CACZ;AAAA,eAAQlxE,KAAKqwE,QAAQV,WAAU;AAC9B,YAAGU,QAAQV,UAAU3vE,CAAG,GAAA;AACvBkxE,gBAAMxxE,KAAKM,CAAAA;AAAAA,QACX;AAAA,MACD;AACDkxE,YAAMxxE,KAAK2wE,QAAQ/4B;AAEnB,aAAO45B,MAAMvlE,KAAK9P,KAAKs1E,YAAAA;AAAAA,IACvB,GAEDjB,gBAAgB,SAASH,UACxB;AAAA,aAAOA,SAAS5uE,MAAMtF,KAAKs1E;IAC3B,GACDf,UAAU,SAASgB,MAAAA;AAClB,aAAOA,KAAKjwE,MAAMtF,KAAKw1E,eACvB;AAAA,IAAA,GACD54C,MAAM,SAASs3C,UAAAA;AACd,aAAOA,SAASnqD,QAAQ,OAAO,EAAA;AAAA,IAC/B,GACDurD,cAAa,KACbE,iBAAgB,KAChBf,aAAY,EACXxjD,OAAS,IACT8iD,KAAO,IACPC,MAAQ,IACRC,MAAQ,QAETS,aAAY,EACXe,WAAa,GACbphD,KAAO,GACPqhD,OAAS,IACTC,KAAO,IACPC,OAAS,IACTC,IAAM,IACNC,MAAQ,IACRtzE,MAAQ,IACRokB,OAAS,IACTmvD,MAAQ,IACRvmE,KAAO,IACPwmE,QAAU,IACVC,UAAY,IACZvrD,QAAU,IACVwrD,QAAU,IACVC,MAAO,KACPC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,IAAM,KACNC,KAAO,KACPC,KAAO,KACPC,KAAO,IAIT,EAAA;AAAA,EAAA;AC3He,WAAQC,aAACr3E,YAAAA;AAExBA,IAAAA,WAAUg0E,oBAAoBsD,eAAe,EAC5CC,WAAW,MACXC,aAAa,SAAS3C;AACrB,UAAIx0E,CAAAA,KAAKk3E;AAAWl3E,aAAKk3E,YAAY,CAAA;AACrC,UAAItD,YAAYj0E,WAAUg0E,oBAAoBC;AAC9C,UAAIngC,OAAOmgC,UAAUwB,QAAQZ;AAE7B,aAAOx0E,KAAKk3E,UAAUzjC,IAAAA;AAAAA,IACtB,GAED2jC,UAAU,SAAS5C,SAAS3uE,GAC3B;AAAA,UAAIgY,UAAU7d,KAAKm3E,YAAY3C,OAC/B;AAAA,UAAG32D,SAAQ;AACVA,gBAAQzH,KAAKpW,MAAM6F,CAAAA;AAEnB,YAAIA,EAAEqiB;AAAgBriB,YAAEqiB,eAAAA;AAAAA;AACnBriB,YAAE4iB,cAAc;AAAA,MAErB;AAAA,IACD,GACD5F,MAAM,SAASqxD,UAAUr2D,SAAAA;AACxB,UAAI7d,CAAAA,KAAKk3E;AAAWl3E,aAAKk3E,YAAY,CAAA;AAErC,UAAItD,YAAYj0E,WAAUg0E,oBAAoBC;AAE9C,UAAIO,WAAWP,UAAU5rC,MAAMksC;AAC/B,eAAQ/vE,IAAI,GAAGA,IAAIgwE,SAAS/vE,QAAQD,KAAI;AACvCnE,aAAKk3E,UAAUtD,UAAUwB,QAAQjB,SAAShwE,CAAO0Z,CAAAA,CAAAA,IAAAA;AAAAA,MACjD;AAAA,IACD,GACDw5D,QAAQ,SAASnD,UAAAA;AAChB,UAAIN,YAAYj0E,WAAUg0E,oBAAoBC;AAE9C,UAAIO,WAAWP,UAAU5rC,MAAMksC,QAC/B;AAAA,eAAQ/vE,IAAI,GAAGA,IAAIgwE,SAAS/vE,QAAQD,KAAI;AACvC,YAAGnE,KAAKk3E,UAAUtD,UAAUwB,QAAQjB,SAAShwE,MAAK;AAC1CnE,iBAAAA,KAAKk3E,UAAUtD,UAAUwB,QAAQjB,SAAShwE,CAAAA,CAAAA,CAAAA;AAAAA,QACjD;AAAA,MACD;AAAA,IACD,GAEDmzE,SAAS,SAAS7xE,KAAAA;AACjB,eAAQtB,KAAKsB,KAAI;AAChBzF,aAAK6iB,KAAK1e,GAAGsB,IAAItB,CACjB,CAAA;AAAA,MAAA;AAAA,IACD,GACDozE,UAAU;AACT,UAAIv3E,CAAAA,KAAKk3E;AACRl3E,aAAKk3E,YAAY;AAClB,UAAGl3E,KAAK8lB,MAAK;AACZ9lB,aAAKs3E,QAAQt3E,KAAK8lB,IAClB;AAAA,MAAA;AAAA,IACD;EAGF;ACzDe,WAAQ0xD,iBAAC73E,YAAAA;AAAAA,KAExB;AACCA,MAAAA,WAAUg0E,oBAAoBxvC,oBAAoBxkC,WAAUglE;AAE5DhlE,MAAAA,WAAUg0E,oBAAoB8D,YAAY,SAASA,UAAU73D,MAAM/Z,GAClE;AAAA,YAAGA,EAAE41C,WAAW;AAAG,iBAAO;AAE1B,YAAIwf,YAAYt7D,WAAUg0E,oBAAoBxvC,kBAAkBvkB,IAAAA;AAChE,YAAI83D,eAAe73E,SAASglC;AAC5B,YAAI8yC,eAAAA;AACJ,iBAAQxzE,IAAI,GAAGA,IAAI82D,UAAU72D,QAAQD,KAAI;AACxC,cAAG82D,UAAU92D,CAAAA,KAAMuzE,cAAa;AAC/BC,2BAAexzE;AACf;AAAA,UACA;AAAA,QACD;AAED,YAAIyzE,WAAWC;AACf,YAAGhyE,EAAE21C,UAAS;AAIbo8B,sBAAaD,gBAAgB,IAAM1c,UAAU72D,SAAS,IAAMuzE,eAAe;AAE3EE,qBAAW5c,UAAU2c;AACrB,cAAGC,UAAS;AACXA,qBAASx9C,MAAAA;AACTx0B,cAAEqiB,eAAAA;AACF,mBAAO;AAAA,UACP;AAAA,QAEJ,OAAO;AAGJ0vD,sBAAaD,gBAAgB1c,UAAU72D,SAAS,IAAK,IAAKuzE,eAAe;AACzEE,qBAAW5c,UAAU2c,SACrB;AAAA,cAAGC,UAAS;AACXA,qBAASx9C,MACTx0B;AAAAA,cAAEqiB;AACF,mBAAO;AAAA,UACP;AAAA,QAED;AAED,eAAO;AAAA,MACT;AAAA,IACC,GAED;AAAA,EAAA;ACjDe,WAAQsuC,OAAC72D,YAAAA;AAExBA,IAAAA,WAAUg0E,oBAAoBnd,SAAS,EACtCj0C,OAAO,WAAA;AACN,UAAI7Q,OAAO/R,WAAUqE,WAAWC,iBAAiB;AACjD,eAAQE,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCuN,aAAKvN,GAAGsJ,WAAWC,YAAYgE,KAAKvN,CACpC,CAAA;AAAA,MAAA;AAAA,IACD,GACDrE,eAAe;AACd,UAAI4F,UAAU7F,SAASC,cAAc,KAAA;AACrC4F,cAAQoX,aAAa,YAAA,EACrBpX;AAAAA,cAAQmL,YAAY;AACpB,aAAOnL;AAAAA,IACP,GAEDoyE,gBAAgB,SAASvoE,OAAOC,KAAK8K,QACpC;AAAA,UAAI5I,OAAO,CACX;AAAA,UAAIqmE,eAAe,IAAIvzE,KAAK+K;AAC5B,UAAIyoE,aAAa,IAAIxzE,KAAK2M,KAAK7C,IAAIkB,IAAIzK,WAAWpF,WAAUwD,KAAKC,IAAIzD,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAK+K,KAAS,CAAA,GAAA,GAAG,OAAOxK,QAC1H,CAAA,CAAA;AAAA,aAAMgzE,aAAahzE,QAAYyK,IAAAA,IAAIzK,QAAU,GAAA;AAE5C2M,eAAOA,KAAKtG,OAAOkP,OAAOlE,KAAKpW,MAAM+3E,cAAc,IAAIvzE,KAAK2M,KAAK7C,IAAI0pE,WAAWjzE,QAAWyK,GAAAA,IAAIzK;AAC/FgzE,uBAAep4E,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAI20E,cAAc,GAAG,KAAA,CAAA;AAE5EC,qBAAar4E,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAI20E,cAAc,GAAG,KAC1EC,CAAAA;AAAAA,qBAAa,IAAIxzE,KAAK2M,KAAK7C,IAAI0pE,WAAWjzE,QAAAA,GAAWyK,IAAIzK,QAAAA,CAAAA,CAAAA;AAAAA,MACzD;AAED,aAAO2M;AAAAA,IACP,GAGDtK,QAAQ,SAASmI,OAAOC,KAAKnJ,SAAAA;AAC5BrG,WAAKuiB,MAAAA;AACL,UAAI7Q,OAAO,CAAA;AAEX,UAAImvD,QAAQlhE,WAAUg0E,oBAAoBsE,SAAS5/D,UAAU6/D;AAC7D,UAAIzsE,OAAO9L,WAAUg0E,oBAAoBsE,SAAS5/D,UAAU8/D,SAAAA;AAC5D,cAAQ1sE,MACP;AAAA,QAAA,KAAKo1D,MAAMnsD;AACVhD,iBAAO1R,KAAKo4E,qBAAqB7oE,OAAOC,KAAKnJ,OAAAA;AAC7C;AAAA,QACD,KAAKw6D,MAAM5lD;AACVvJ,iBAAO1R,KAAKq4E,qBAAqB9oE,OAAOC,KAAKnJ,OAC7C;AAAA;AAAA,QACD,KAAKw6D,MAAM1lD;AACVzJ,iBAAOA,KAAKtG,OAAOpL,KAAK83E,eAAevoE,OAAOC,KAAKxP,KAAKs4E;AACxD;AAAA,QACD,KAAKzX,MAAM9/B;AACVrvB,iBAAO1R,KAAKu4E,kBAAkBhpE,OAAOC,GACrC;AAAA;AAAA,QACD,KAAKqxD,MAAM2X;AACV9mE,iBAAOA,KAAKtG,OAAOpL,KAAK83E,eAAevoE,OAAOC,KAAKxP,KAAKy4E;AACxD;AAAA,QACD,KAAK5X,MAAM19C;AACVzR,iBAAO1R,KAAK04E,mBAAmBnpE,OAAOC,GACtC;AAAA;AAAA,QACD,KAAKqxD,MAAM8X;AACVjnE,iBAAOA,KAAKtG,OAAOpL,KAAK83E,eAAevoE,OAAOC,KAAKxP,KAAKo4E;AACxD;AAAA,MAGFp4E;AAAAA,WAAK44E,gBAAgBlnE,MAAMnC,OAAOC,KAAKnJ,OAAAA;AACvCrG,WAAK64E,kBAAkBnnE,MAAMnC,OAAOC,KAAKnJ,OAAAA;AAEzC,eAAQlC,IAAIuN,KAAKtN,SAAS,GAAGD,KAAK,GAAGA,KAAI;AACxC,YAAGuN,KAAKvN,CAAAA,EAAG6c,aAAY;AACtB,iBAAOtP,KAAKvN,CACZ;AAAA,QAAA;AAAA,MACD;AAED,aAAO;AAAA,IACP,GAED00E,mBAAmB,SAASnnE,MAAMnC,OAAOC,KAAKnJ,SAC7C;AAAA,UAAIyyE,YAAYn5E,WAAUwD,KAAK0qC,YAAYluC,WAAU+B,OAAOiuC,QAE5D;AAAA,UAAI5a,OAAO+jD,UAAUvpE,KAAAA,GACpBylB,KAAK8jD,UAAUtpE,GAAAA;AAEhB,eAAQrL,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCuN,aAAKvN,CAAAA,EAAG2Y,aAAa,mBAAmBiY;AACxCrjB,aAAKvN,CAAAA,EAAG2Y,aAAa,iBAAiBkY,EAAAA;AACtC,YAAG3uB,SAAQ;AACVqL,eAAKvN,CAAAA,EAAG2Y,aAAa,gBAAgBzW,OAAAA;AAAAA,QACrC;AAAA,MACD;AAAA,IACD,GAEDuyE,iBAAiB,SAASlnE,MAAMnC,OAAOC,KAAKnJ;AAC3C,UAAImhB,QAAQ;AACZ,UAAIsU,QAAQn8B,WAAUsG,SACtB;AAAA,UAAIxG,OAAOq8B,MAAMr8B;AAEjB,UAAIs5E,gBAAgB;AAEpBvxD,eAAS7nB,WAAU0zB,UAAUoK,SAASluB,KAAAA;AAEtC,UAAI5P,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAK+K,KAAQxK,CAAAA,EAAAA,QAAAA,KAAawK,MAAMxK,QAAW,GAAA;AAC3EyiB,iBAAS,MAAM7nB,WAAU0zB,UAAU0E,WAAWxoB;AAC9CwpE,wBAAgB;AAAA,MAChB;AAED,UAAIp5E,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAK+K,KAAAA,CAAAA,EAAQxK,aAAapF,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKgL,GAAMzK,CAAAA,EAAAA,QAAAA,GAAW;AAE7GyiB,iBAAS,QAAQ7nB,WAAU0zB,UAAUoK,SAASjuB;AAC9C,YAAGupE,iBAAkBp5E,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKgL,MAAMzK,QAAayK,KAAAA,IAAIzK,WAAW;AACxFyiB,mBAAS,MAAM7nB,WAAU0zB,UAAU0E,WAAWvoB,GAAAA;AAAAA,QAC9C;AAAA,MACD;AAED,UAAGnJ,SAAQ;AACV,YAAG1G,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAAA,GAAM;AAC7C,gBAAMwb,WAAWtb,WAAU4L,OAAO9L,IAAAA;AAClC,gBAAMu5E,gBAAgB/9D,SAAS8zD,OAAO9zD,SAASjK,MAAM3K,OACrDmhB,CAAAA;AAAAA,mBAAS,OAAO7nB,WAAU0zB,UAAU5zB,OAAO,cAAA,EAAgBu5E,cAAc9jE,KAAK8jE,cAAcxxD,OAAOwxD,aACvG;AAAA,QAAA,WAAYr5E,WAAU2L,UAAU3L,WAAU2L,OAAO7L,OAAM;AACnD,gBAAMiV,QAAQ/U,WAAU2L,OAAO7L;AAC/B,gBAAMu5E,gBAAgBtkE,MAAM9M,QAAQ8M,MAAM1D,MAAM3K,OAAAA,CAAAA;AAEhDmhB,mBAAS,OAAO7nB,WAAU0zB,UAAU5zB,OAAO,aAAA,EAAeu5E,cAAc9jE,KAAK8jE,cAAcxxD,OAAOwxD,aAAAA;AAAAA,QAClG;AAAA,MACD;AAGD,eAAQ70E,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCxE,QAAAA,WAAUgoB,SAAS4V,cAAc7rB,KAAKvN,CAAI,GAAA,EACzC,cAAcqjB,OACd,aAAa,SAEd,CAAA;AAAA,MAAA;AAAA,IACD,GAEDixD,wBAAwB,SAAS11E,YAAYC,UAC5C;AAAA,UAAI0O,OAAO/R,WAAUqE,WAAWC,iBAAiB,oCAAA;AAEjD,UAAIa,WAAWnF,WAAUwD,KAAK6B,WAAW,IAAIR,KAAK7E,WAAUsG,WAAWkK,QAEvE,CAAA;AAAA,UAAIb;AACJ,UAAI2pE,aAAat5E,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKzB,UACnD,CAAA;AAAA,eAAQoB,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCmL;AACA,YAAG3P,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKM,QAAWC,CAAAA,EAAAA,QAAAA,KAAak0E,WAAWl0E,QAAAA,GAAU;AACjF;AAAA,QACJ,OAAQ;AACJD,qBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,KAAA;AAAA,QAC3C;AAAA,MACD;AACD,UAAGwK;AAAa,eAAOtP,KAAKk5E,SAASxnE,KAAKpC,KAC1C,CAAA;AAAA,aAAO;IACP,GAED4pE,UAAU,SAASngD,MAClB;AAAA,UAAIy9B,UAASx2D,KAAKF,cAAAA;AAClB02D,MAAAA,QAAOl0D,MAAMC,MAAMw2B,KAAKvS,YAAY;AACpCgwC,MAAAA,QAAOl0D,MAAME,OAAOu2B,KAAKwJ,aAAa;AACtCi0B,MAAAA,QAAOl0D,MAAMyO,QAAQgoB,KAAK/X,cAAc;AACxCw1C,MAAAA,QAAOl0D,MAAMwO,SAASioB,KAAKjY,eAAe;AAC1CiY,WAAK34B,YAAYo2D,OAAAA;AACjB,aAAO,CAACA,OAAAA;AAAAA,IACR,GACD8hB,kBAAkB,SAASv1E,YAAYC,UAAAA;AACtC,UAAI+1B,OAAOp5B,WAAUw5E,eAAep2E,UACpCg2B;AAAAA,WAAKz2B,MAAM2K,WAAW;AACtB,UAAIupD,UAASx2D,KAAKF,cAClB02D;AAAAA,MAAAA,QAAOl0D,MAAMC,MAAM;AACnBi0D,MAAAA,QAAOl0D,MAAME,OAAO;AACpBg0D,MAAAA,QAAOl0D,MAAMyO,QAAQ;AACrBylD,MAAAA,QAAOl0D,MAAMwO,SAAS;AACtBioB,WAAK34B,YAAYo2D,OACjB;AAAA,aAAO,CAACA,OACR;AAAA,IAAA,GAEDkiB,oBAAoB,SAAS31E,YAAYC,UACxC;AAAA,UAAIgN,QAAQhQ,KAAKF;AACjBkQ,YAAM1N,MAAMwO,SAAS;AACrBd,YAAM1N,MAAMyO,QAAQ;AACpBf,YAAM1N,MAAM82E,UAAU;AACtBppE,YAAM1N,MAAMC,MAAM;AAClByN,YAAM1N,MAAME,OAAO;AACnB7C,MAAAA,WAAUqE,WAAWgb,cAAc,eAAA,EAAiB5e,YAAY4P,KAChE;AAAA,aAAO,CAACA,KACR;AAAA,IAAA,GAEDqoE,sBAAsB,SAASt1E,YAAYC,UAAUqD,SAAAA;AACpD,UAAIgzE,YAAY15E,WAAUoP,WAAW,CAAE,GAAEpP,WAAU4L,OAAO5L,WAAUiN,KACpE,CAAA;AAAA,UAAI2D,QAAQ8oE,UAAU7oE;AAEtB6oE,gBAAUC,iBAAiB;AAC3B,UAAIppE,SAAS;AAEb,UAAIC,WAAWpN,aAAa,IAAIyB,KAAKzB,cAAcpD,WAAUyM;AAC7D,UAAIgE,WAAWpN,WAAW,IAAIwB,KAAKxB,YAAYrD,WAAUwM;AAEzD,UAAGgE,SAASpL,QAAAA,IAAYpF,WAAUyM,UAAUrH;AAC3CoL,mBAAW,IAAI3L,KAAK7E,WAAUyM,SAAAA;AAC/B,UAAGgE,SAASrL,QAAAA,IAAYpF,WAAUwM,UAAUpH;AAC3CqL,mBAAW,IAAI5L,KAAK7E,WAAUwM,SAAAA;AAE/B,WAAIktE,UAAUE;AAAU,eAAOrpE;AAE/B,eAAQ/L,IAAI,GAAGA,IAAIk1E,UAAUE,SAASn1E,QAAQD,KAAI;AACjD,YAAGxE,WAAU65E,mBAAmBH,UAAUE,SAASp1E,CAClD,CAAA;AAAA;AAAA,MACD;AACD,UAAGA,KAAKk1E,UAAUE,SAASn1E;AAC1B,eAAO8L;AAER,UAAID,OAAOM,MAAMlK;AAEjB,UAAM8J,EAAAA,WAAWnN,YAAYoN,WAAWrN;AACvC,eAAOmN;AAER,UAAIF,QAAQhQ,KAAKF;AAEjB,UAAI25E;AACJ,UAAIC;AAEJ,eAASC,cAAcjgE,QAAQ3T;AAE9BA,eAAOmnC,QAAQ;AAEfnnC,eAAOy7D,YAAY9nD,OAAOf,YAAAA,CAAAA;AAC1B5S,eAAOqnC,SAAS1zB,OAAOd;AACvB7S,eAAOmnC,QAAQxzB,OAAOtQ,QACtB,CAAA;AAAA,MAAA;AAED,UAAIzJ,CAAAA,WAAUqC,UAAU6F,MAAK;AAC5B4xE,oBAAY95E,WAAUi6E,eAAe,EAAC72E,WAAYA,GAAa,OAAOs2E,SAAAA;AACtEK,kBAAU/5E,WAAUi6E,eAAe,EAAC72E,YAAYC,SAAAA,GAAW,OAAOq2E,SACrE;AAAA,MAAA,OAAO;AAEJ,cAAMQ,YAAY,IAAIr1E,KAAKzB;AAC3B42E,sBAAch6E,WAAUyM,WAAWytE,SACnC;AAAA,cAAMC,UAAU,IAAIt1E,KAAKxB,QACzB22E;AAAAA,sBAAch6E,WAAUyM,WAAW0tE,OAAAA;AACnCL,oBAAY95E,WAAUi6E,eAAe,EAAC72E,YAAY82E,aAAY,OAAOR,SAAAA;AACrEK,kBAAU/5E,WAAUi6E,eAAe,EAAC72E,YAAY+2E,QAAAA,GAAU,OAAOT,SAAAA;AAAAA,MACjE;AAED,UAAIvoE,SAAWuoE,UAAUU,gBAAgB1zE,OAAAA,IAAS,KAAOgzE,UAAU1rD,KAAK;AAExE,UAAIprB,MAAM;AACV,UAAI5C,WAAUq6E,UAAU,MAAA,GAAQ;AAC/Bz3E,cAAM0N,KAAKuW;AACXizD,qBAAaJ,UAAUvkE;AACvB4kE,mBAAWL,UAAUvkE;AACrB7E,eAAOtQ,WAAUqE,WAAWgb,cAAc,eAG1C;AAAA,MAAA;AACD,UAAIjO,QAAQI,KAAK5C,IAAI,GAAGmrE,UAAUD,YAAY,CAC9C;AAAA,UAAIryD,YAAY;AAChB,UAAGznB,WAAU+B,OAAOijB,KAAI;AACvByC,oBAAY;AAAA,MACZ;AACDpX,YAAM1N,MAAMg5C,UAAU,UAAUxqC,MAAasW,OAAAA,SAAAA,IAAaqyD,sBAAsB1oE,KAAgBxO,WAAAA,GAAAA;AAEhG,UAAG0N,MAAK;AACPA,aAAK7P,YAAY4P;AACjBE,eAAOrM,KAAKmM;MACZ;AAED,aAAOE;AAAAA,IACP,GAED+pE,iBAAiB,SAAS92E,MAAAA;AACzB,UAAI8B,QAAQtF,WAAUqE,WAAWC,iBAAiB,iBAAA;AAElD,UAAIyN,OAAO,CAAA;AACX,eAAQvN,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAI;AACpCuN,aAAK7N,KAAKoB,MAAMd,CAAAA,EAAGsJ;MACnB;AAED,UAAI21D,YAAYzjE,WAAUwD,KAAK6B,WAAW,IAAIR,KAAK7E,WAAUsG,SAAAA,EAAWkK;AAExE,UAAIb,QAAAA;AACJ,UAAI4qE,aAAa;AACjB,UAAIC,WAAAA;AACJ,UAAIr1E,WAAWs+D;AACf,UAAI6V,aAAat5E,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKrB,IAAAA,CAAAA;AACnD,eAAQgB,IAAI,GAAGA,IAAIuN,KAAKtN,QAAQD,KAAI;AACnCmL;AAEA,YAAG6qE,YAAY,GAAE;AAChBD;AACAC,qBAAW;AAAA,QACf,OAAQ;AACJA;AAAAA,QACA;AAED,YAAGx6E,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKM,QAAAA,CAAAA,EAAWC,aAAak0E,WAAWl0E,QAAAA,GAAU;AACjF;AAAA,QACJ,OAAQ;AACJD,qBAAWnF,WAAUwD,KAAKC,IAAI0B,UAAU,GAAG,KAAA;AAAA,QAC3C;AAAA,MACD;AAED,UAAGwK,SAAU,IAAE;AACd,eAAO,CAAA;AAAA,MACP;AAED,UAAI9M,OAAO7C,WAAU4tB,OAAO4sD;AAC5B,UAAI53E,MAAM5C,WAAU4tB,OAAOK,QAAQssD;AAEnC,UAAI3sE,MAAMvN,KAAKF,cAAAA;AACfyN,UAAIjL,MAAMC,MAAMA,MAAM;AACtBgL,UAAIjL,MAAME,OAAOA,OAAO;AACxB+K,UAAIjL,MAAMyO,QAAQpR,WAAU+Q,MAAMypE,QAAY,IAAA;AAC9C5sE,UAAIjL,MAAMwO,UAAWnR,WAAU4tB,OAAOK,QAAQssD,aAAa,CAAA,IAAK33E,OAAQ5C,WAAU4tB,OAAOzc,UAAU;AAGnG,UAAItF,YAAY7L,WAAUqE,WAAWgb,cAAc,eAAA;AAEnD,UAAIo7D,YAAY5uE,UAAUwT,cAAc,sBACxC;AAAA,UAAGo7D,UAAUn0C,aAAY;AACxBz6B,kBAAU8a,aAAa/Y,KAAK6sE,UAAUn0C,WAAAA;AAAAA,MACzC,OAAO;AACJz6B,kBAAUpL,YAAYmN,GAAAA;AAAAA,MACtB;AACD,aAAOA;AAAAA,IACP,GACDgrE,mBAAmB,SAASx1E,YAAYC,UACvC;AAAA,UAAIuF,MAAM,CAAA;AACV,UAAIk6D,cAAc1/D;AAClB,aAAM0/D,YAAY19D,QAAAA,IAAY/B,SAAS+B,QAAU,GAAA;AAChDwD,YAAI1E,KAAK7D,KAAKi6E,gBAAgBxX,WAAAA,CAAAA;AAC9BA,sBAAc9iE,WAAUwD,KAAKC,IAAIq/D,aAAa,GAAG,KACjD;AAAA,MAAA;AACD,aAAOl6D;AAAAA,IACP,GAED6vE,sBAAsB,SAASr1E,YAAYC,UAAUqD,SACpD;AAAA,UAAIiJ,QAAQ3P,WAAU6M,kBAAkBzJ,UAExC;AAAA,UAAI2O,OAAO,CACX;AAAA,UAAIzB,OAAO;AAEX,UAAIvG,IAAI/J,WAAU+B;AAClB,UAAG/B,WAAUgR,SAASrB,KAAQ;AAAA,eAAOoC;AAErC,UAAI/R,WAAU2L,UAAU3L,WAAU2L,OAAO3L,WAAUiN,KAAAA,KAAUvG,SAAS;AACrE,YAAIoF,OAAO9L,WAAU2L,OAAO3L,WAAUiN,KAAAA;AACtC0C,gBAAQ7D,KAAKuF,MAAM3K;AAEnB,YAAI4K,cAAcxF,KAAKuF,MAAM3K,OAAAA;AAC7B,YAAKoF,EAAAA,KAAK5D,OAAO,IAAG;AACnByH,kBAAQ2B;AACR,cAAIxF,KAAKuB,QAASsC,QAAQ7D,KAAKwB,WAASxB,KAAKuB,MAAO;AACnDsC,oBAAQ;AAAA,UACR;AAAA,QACL,OAAQ;AAGJA,kBAAQ3P,WAAU6M,kBAAkBzJ,cAAckO;AAAAA,QAElD;AAAA,MACD;AACDhB,aAAOtQ,WAAUuR,cAAc5B,KAC/B;AAAA,UAAA,CAAIW,QAAQA,KAAK+O,cAAc,iBAAmB,GAAA;AAEjD,eAAOnf,SAASC,cAAc;MAC9B;AAED,UAAIyP,QAAQ4B,KAAK5C,IAAKxL,WAAWsJ,SAAAA,IAAW,KAAKtJ,WAAW4K,WAAAA,GAAejE,EAAE4C,aAAW,EAAA;AAGxF,UAAIkD,MAAM2B,KAAK7C,IAAKtL,SAASqJ,aAAW,KAAKrJ,SAAS2K,cAAejE,EAAE6C,YAAU,EACjF;AAAA,UAAA,CAAIiD,OAAQ7P,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKxB,WAAW+B,QAAYpF,IAAAA,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKzB,UAAAA,CAAAA,EAAagC,WAAW;AAC9HyK,cAAM9F,EAAE6C,YAAU;AAAA,MAClB;AAED,UAAIiD,OAAOD,OAAO;AACjB,eAAO,CACP;AAAA,MAAA;AAED,UAAIS,QAAQhQ,KAAKF,cAGjB;AAAA,UAAIsR,mBAAmBzR,WAAU+B,OAAO2P,eAAa3H,EAAE6C,YAAY;AACnE,UAAI+E,UAAU,KAAG,KAAG;AACpBtB,YAAM1N,MAAMC,MAAO4O,KAAKI,OAAOhC,QAAM,KAAG,MAAK5P,WAAU+B,OAAO4K,aAAWgF,WAAS3R,WAAU+B,OAAO2P,eAAaC,OAAAA,IAAWF,mBAAoB;AAC/IpB,YAAM1N,MAAM+3E,aAAarqE,MAAM1N,MAAMwO,SAASK,KAAK5C,IAAK4C,KAAKI,OAAQ/B,MAAID,SAAO,KAAG,MAAM5P,WAAU+B,OAAO2P,eAAaC,OAAYF,IAAAA,kBAAkB,KAAG;AACxJpB,YAAM1N,MAAMyO,QAAQ;AACpBd,WAAK7P,YAAY4P;AACjB0B,WAAK7N,KAAKmM;AACV,aAAO0B,KAAK,CAEZ;AAAA,IAAA,EAAA;AAAA,EAGF;ACxYe,WAAQ4oE,eAAC36E;AAExBA,IAAAA,WAAUg0E,oBAAoB4G,gBAAgB;;AAE9C56E,IAAAA,WAAUg0E,oBAAoB4G,cAAcliE,YAAY1Y,WAAU66E,SACjE76E,WAAUg0E,oBAAoBsD,cAC9B,EACCwD,gBAAgB,WACf;AAAA,UAAI5zD,OAAO,IAAIlnB,WAAUg0E,oBAAoBsE;AAE7C,UAAA,CAAIpxD,KAAK2d,QAAU,GAAA;AAClB3d,eAAOA,KAAKsiC;MACZ;AACD,aAAOtiC;AAAAA,IACP,GAEDqxD,QAAO,EACNn3C,OAAO,SACP5lB,MAAM,QACNw9D,YAAY,cACZ19D,UAAS,YACTvG,OAAM,SACN8jE,YAAY,cACZr1D,MAAM,OAEPu3D,GAAAA,SAAS;AACR,UAAI5+C,QAAQn8B,WAAUsG,SAEtB;AAAA,UAAIxG,OAAOq8B,MAAMr8B;AACjB,UAAIE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,OAAO;AAC/C,eAAOO,KAAKk4E,OAAOj9D;AAAAA,MACvB,WAActb,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAO,GAAA;AACtD,eAAOO,KAAKk4E,OAAOxjE;AAAAA,MACvB,WAAYjV,QAAQ,SAAQ;AACxB,eAAOO,KAAKk4E,OAAOn3C;AAAAA,MACvB,WAAYthC,QAAQ,QAAO;AACvB,eAAOO,KAAKk4E,OAAO/8D;AAAAA,MACvB,WAAY1b,QAAQ,eAAc;AAC9B,eAAOO,KAAKk4E,OAAOM;AAAAA,MACnB,WAAQ/4E,QAAQ,SAASA,QAAQ,YAAaE,WAAUwkB,SAASxkB,WAAU,UAAUF,OAAO;AAC5F,eAAOO,KAAKk4E,OAAO/0D;AAAAA,MACvB,OAAQ;AACJ,eAAOnjB,KAAKk4E,OAAOS;AAAAA,MACnB;AAAA,IACD,GAEDt+C,OAAO,WACN16B;AAAAA,MAAAA,WAAU06B,MACV;AAAA,IAAA,GAEDsgD,MAAM,WAEL;AAAA,IAAA,GAED5I,SAAS,WACRpyE;AAAAA,MAAAA,WAAUqE,WAAW8Y,aAAa,YAAY,GAC9C;AAAA,IAAA,GACD89D,QAAQ,WACP;AAAA,UAAGj7E,WAAUqE;AACZrE,QAAAA,WAAUqE,WAAW62E,gBAAgB,UAAA;AAAA,IACtC,GACDp5E,WAAW;AACV,aAAO9B,WAAUqE,WAAWkgC,aAAa,UAAA;AAAA,IACzC,GAGD42C,gBAAgB,SAAS3+D,GAAGC,GAAAA;AAC3B,UAAID,EAAEpZ,WAAWgC,aAAaqX,EAAErZ,WAAWgC;AAC1C,eAAOoX,EAAEpc,KAAKqc,EAAErc,KAAK,IAAK;AAC3B,aAAOoc,EAAEpZ,WAAWgC,YAAYqX,EAAErZ,WAAWgC,QAAY,IAAA,IAAA;AAAA,IACzD,GAEDg2E,YAAY,SAAShmD,MAAMC,IAAIgmD,SAAS9rB,SACvC;AAAA,UAAIpK,SAAQnlD,WAAUsG;AACtB8uB,aAAO,IAAIvwB,KAAK2M,KAAK5C,IAAIu2C,OAAM30C,SAASpL,QAAAA,GAAWgwB,KAAKhwB,QAAAA,CAAAA,CAAAA;AACxDiwB,WAAK,IAAIxwB,KAAK2M,KAAK7C,IAAIw2C,OAAM10C,SAASrL,QAAWiwB,GAAAA,GAAGjwB,QAEpD,CAAA,CAAA;AAAA,UAAI4E,MAAMhK,WAAUm2C,UAAU/gB,MAAMC,EACpCrrB;AAAAA,UAAI46B,KAAKvkC,KAAK86E,cAAAA;AACd,UAAG5rB,SAAQ;AACVvlD,cAAMA,IAAIulD;MACV;AAED,UAAItyB,SAASo+C;AACb,eAAQ72E,IAAG,GAAGA,IAAIwF,IAAIvF,UAAUw4B,MAAMz4B,KAAI;AACzC,YAAGwF,IAAIxF,CAAGpE,EAAAA,MAAMi7E,SAAQ;AACvBp+C,iBAAO;AAAA,QACP;AACDjzB,YAAIyJ,OAAOjP,GAAG,CAAA;AACdA;AAAAA,MACA;AAED,eAAQA,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAI;AAClC,YAAI82E,eAAe,IAAIt7E,WAAUg0E,oBAAoBuH,MAAMvxE,IAAIxF,CAAAA,EAAGpE;AAClE,YAAGk7E,aAAaE,QACf;AAAA,iBAAOxxE,IAAIxF,CACZ;AAAA,MAAA;AAED,aAAO;AAAA,IACP,GAEDi3E,kBAAkB,SAASr7E,KAAAA;AAC1B,UAAIs7E,aAAa17E,WAAUg0E,oBAAoB2H,WAAWD;AAE1D,UAAIL,UAAUj7E,OAAOs7E,cAAcA,WAAWj4D;AAE9C,UAAIm4D,YAAY;AAChB,UAAGP,WAAWr7E,WAAUmG,SAASk1E,OAAS,GAAA;AACzC,YAAIQ,YAAY77E,WAAUmG,SAASk1E,OAAAA;AAEnCO,oBAAY57E,WAAUg0E,oBAAoB4G,cAAcliE,UAAU0iE,WACjES,UAAUz4E,YACVpD,WAAUwD,KAAKC,IAAIo4E,UAAUz4E,YAAY,GAAG,SAC5Cy4E,UAAUz7E,IACV,KAGD;AAAA,MAAA;AACD,WAAIw7E,aAAcx7E,CAAAA,KAAG;AACpB,YAAI07E,eAAe97E,WAAUsG,SAE7Bs1E;AAAAA,oBAAY57E,WAAUg0E,oBAAoB4G,cAAcliE,UAAU0iE,WACjEU,aAAatrE,UACbxQ,WAAUwD,KAAKC,IAAIq4E,aAAatrE,UAAU,GAAG,SAC7C,MACA,KAAA;AAAA,MAED;AAED,UAAGorE,WAAU;AAEZ,YAAIG,SAAS,IAAI/7E,WAAUg0E,oBAAoBuH,MAAMK,UAAUx7E;AAC/D,YAAI27E,CAAAA,OAAOl3C,WAAU;AACpBxkC,eAAKo7E,iBAAiBG,UAAUx7E;QACrC,OAAS;AACJ,cAAGs7E,YAAW;AAACA,uBAAWV,KAAO;AAAA,UAAA;AACjCh7E,UAAAA,WAAUg0E,oBAAoB2H,WAAWK,cAAcD,MAAAA;AAAAA,QACvD;AAAA,MACD;AAAA,IACD,GAEDE,kBAAkB,SAAS77E,KAAAA;AAC1B,UAAIs7E,aAAa17E,WAAUg0E,oBAAoB2H,WAAWD;AAE1D,UAAIL,UAAUj7E,OAAOs7E,cAAcA,WAAWj4D;AAE9C,UAAIm4D,YAAY;AAChB,UAAGP,WAAWr7E,WAAUmG,SAASk1E,UAAS;AACzC,YAAIQ,YAAY77E,WAAUmG,SAASk1E,OAEnCO;AAAAA,oBAAY57E,WAAUg0E,oBAAoB4G,cAAcliE,UAAU0iE,WACjEp7E,WAAUwD,KAAKC,IAAIo4E,UAAUx4E,UAAW,IAAG,SAC3Cw4E,UAAUx4E,UACVw4E,UAAUz7E,IACV,IAAA;AAAA,MAED;AACD,UAAA,CAAIw7E,cAAcx7E,KAAG;AACpB,YAAI07E,eAAe97E,WAAUsG;AAE7Bs1E,oBAAY57E,WAAUg0E,oBAAoB4G,cAAcliE,UAAU0iE,WACjEp7E,WAAUwD,KAAKC,IAAIq4E,aAAarrE,cAAc,MAAA,GAC9CqrE,aAAarrE,UACb,MACA,IAED;AAAA,MAAA;AAED,UAAGmrE,WAAU;AACZ,YAAIG,SAAS,IAAI/7E,WAAUg0E,oBAAoBuH,MAAMK,UAAUx7E,EAAAA;AAC/D,aAAI27E,OAAOl3C,QAAAA,GAAU;AACpBxkC,eAAK47E,iBAAiBL,UAAUx7E,EAAAA;AAAAA,QACrC,OAAS;AACJ,cAAGs7E,YAAW;AAACA,uBAAWV;UAAO;AACjCh7E,UAAAA,WAAUg0E,oBAAoB2H,WAAWK,cAAcD,MACvD;AAAA,QAAA;AAAA,MACD;AAAA,IACD,GAED51D,MAAM,EAEL,iEAAiE,SAASjgB,GACzE;AAAA,UAAInG,OAAOC,WAAUg0E,oBAAoBkI,WAAWxjE,UAAUyjE,SAAS;AACvE,UAAI5mE,MAAMrP,EAAEqP;AACZ,UAAGA,QAAQ7G,QAAU;AACpB6G,cAAMrP,EAAE41C,UAAU;AAAA,MAClB;AACD,UAAG/7C,KAAKwV,MAAI,IAAI,CAAA,GAAG;AAClBxV,aAAKwV,MAAI,IAAI,CAAGsI,EAAAA,MAAAA;AAAAA,MAChB;AAAA,IACD,GAED,uBAAuB,SAAS3X,GAAAA;AAC/BlG,MAAAA,WAAUqoB,OAAOgC,oBAAAA;AAAAA,IACjB,GACD,yBAAyB,SAASnkB,GACjClG;AAAAA,MAAAA,WAAUqoB,OAAOiC,oBACjB;AAAA,IAAA,GACD,mBAAkB,SAASpkB,GAAAA;AAC1B,UAAIie,WAAWnkB,WAAUqE,WAAWgb,cAAc;AAClD8E,eAASuJ,aAAa;AAAA,IACtB,GACD,uBAAuB,SAASxnB,GAC/B;AAAA,UAAIie,WAAWnkB,WAAUqE,WAAWgb,cAAc,eAAA;AAClD8E,eAASuJ,aAAa;AAAA,IACtB,GAGDxnB,GAAK,WAAA;AACJ7F,WAAKo7E,iBAAAA;AAAAA,IACL,GAEDrF,MAAQ,WAAA;AACPp2E,MAAAA,WAAU8X,eAAe,oBAAIjT;IAC7B,GAED,WAAW,WACVxE;AAAAA,WAAK47E;IACL,GAED,yBAAyB;AACxBj8E,MAAAA,WAAU+V,YAAY,EAAC3S,YAAY,IAAIyB,KAAK7E,WAAUsG,WAAW9C,IACjE,EAAA,CAAA;AAAA,IAAA,GAED,iBAAiB,SAAS0C,GAAAA;AACzBlG,MAAAA,WAAUo8E,oBAAoBl2E,CAAAA;AAAAA,IAC9B,GACD,iBAAiB,SAASA,GACzBlG;AAAAA,MAAAA,WAAUo8E,oBAAoBl2E,CAC9B;AAAA,IAAA,GACD,iBAAiB,SAASA,GAAAA;AACzBlG,MAAAA,WAAUo8E,oBAAoBl2E;IAC9B,EAMJlG,EAAAA,CAAAA;AAAAA,IAAAA,WAAUg0E,oBAAoB4G,cAAcliE,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoB4G,cAAcliE,UAAUyN;EAEpH;AChPe,WAAQk2D,SAACr8E,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoBsI,aAAa,WAAA;AAAA;AAE3Ct8E,IAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,YAAY1Y,WAAU66E,SAC9D76E,WAAUg0E,oBAAoBsD,cAC9B,EACCzyC,SAAS;AACR,aAAO;AAAA,IACP,GACD2kB,UAAU,WAAA;AACT,aAAO;AAAA,IACP,GAED+yB,QAAQ,SAAUx2E;AACjB/F,MAAAA,WAAUg0E,oBAAoB2H,WAAWK,cAAcj2E,OAAAA;AAAAA,IACvD,GAEDy2E,WAAW,SAAS//D,GAEnB;AAAA,UAAA,CAAIA;AAAG,eAAO;AACd,eAAQjY,KAAKnE,MAAK;AACjB,YAAA,CAAA,CAAKA,KAAKmE,CAAAA,KAAAA,CAAAA,CAAQiY,EAAEjY,CAAI;AAAA,iBAAO;AAE/B,YAAIi4E,mBAAAA,CAAAA,EAAsBp8E,KAAKmE,CAAMnE,KAAAA,KAAKmE,CAAGmU,EAAAA;AAC7C,YAAI+jE,mBAAsBjgE,CAAAA,EAAAA,EAAEjY,MAAMiY,EAAEjY,CAAAA,EAAGmU;AACvC,YAAG+jE,oBAAoBD;AAAkB,iBAAO;AAChD,YAAKC,EAAAA,oBAAoBD,mBAAmB;AAC3C,cAAGhgE,EAAEjY,CAAMnE,KAAAA,KAAKmE,CAAI;AAAA,mBAAO;AAAA,QAChC,OAAS;AACJ,cAAGiY,EAAEjY,CAAAA,EAAGmU,cAActY,KAAKmE,CAAAA,EAAGmU,SAC7B;AAAA,mBAAO;AAAA,QACR;AAAA,MACD;AACD,aAAO;AAAA,IACP,GAED6iE,SAAS,WAAY;AAAA,IAAA,GACrB9gD,OAAO,WAAA;AACN,UAAIxT,OAAO7mB,KAAKm7E;AAChB,UAAGt0D,MAAK;AACPA,aAAK/J,aAAa,YAAY,IAAA;AAE9B,YAAG+J,KAAKwT;AAAOxT,eAAKwT,MACpB;AAAA,MAAA;AAAA,IAED,GACDsgD,MAAM,WAAA;AACL,UAAI9zD,OAAO7mB,KAAKm7E,QAChB;AAAA,UAAGt0D,MAAK;AACPA,aAAK/J,aAAa,YAAY,IAAA;AAAA,MAE9B;AAAA,IACD,EAAA,CAAA;AAAA,EAKH;AC1De,WAAQw/D,YAAC38E;AAExBA,IAAAA,WAAUg0E,oBAAoBkI,aAAa,SAASvsE,OAAAA;AACnDtP,WAAKsP,QAAQA,SAAS;AAAA,IACvB;AAEA3P,IAAAA,WAAUg0E,oBAAoBkI,WAAWxjE,YAAY1Y,WAAU66E,SAC9D76E,WAAUg0E,oBAAoBsI,YAC9B,EACCd,SAAS,SAAS7rE,OACjBA;AAAAA,cAAQA,SAAStP,KAAKsP,SAAS;AAC/B,UAAI80B,QAAQpkC,KAAK87E,SAAAA;AACjB,UAAG13C,MAAM90B,KAAAA;AAAQ,eAAO80B,MAAM90B,KAAAA;AAAAA,IAC9B,GAEDwsE,UAAU,SAASj2C,UAClBA;AAAAA,iBAAWA,YAAY,CACrB,yCACA,yCACA,0CACA,+BAAA,EACC/1B,KAAK,IAAA;AAER,UAAIs0B,QAAQr2B,MAAMsK,UAAUpK,MAAMmI,KAAKzW,WAAUqE,WAAWC,iBAAiB4hC,QAC7EzB,CAAAA;AAAAA,YAAMG,KAAK,SAASpoB,GAAGC;AACtB,eAAOD,EAAEomB,aAAanmB,EAAEmmB;AAAAA,MAC5B,CACG;AAAA,aAAO6B;AAAAA,IACP,GAED8yC,WAAU,MAEV1yC,SAAS,WAAA;AACR,eAASxkC,KAAKm7E,QAAQn7E,KAAKsP,KAAAA;AAAAA,IAC3B,GACD65C,UAAS,WAAA;AACR,UAAIozB,cAAcv8E,KAAKm7E,QAAQ,CAC/B;AAAA,UAAA,CAAIoB,aAAY;AACfA,sBAAc,IAAI58E,WAAUg0E,oBAAoBsE;AAAAA,MAChD;AACD,aAAOsE;AAAAA,IACP,GAEDz2D,MAAM,EACLtjB,MAAQ,WACP;AAAA,UAAIk/D,WAAW1hE,KAAKsP,QAAQ;AAC5B,UAAGoyD,WAAW,GAAE;AACfA,mBAAW1hE,KAAK87E,SAAAA,EAAW13E,SAAS;AAAA,MACpC;AAEDpE,WAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBkI,WAAWna,QAEzD,CAAA;AAAA,IAAA,GACD96C,OAAS,WACR;AAAA,UAAI86C,WAAW1hE,KAAKsP,QAAQ;AAC5B,UAAGoyD,YAAY1hE,KAAK87E,SAAAA,EAAW13E,QAAO;AACrCs9D,mBAAW;AAAA,MACX;AAED1hE,WAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBkI,WAAWna;IACzD,GACDoU,MAAQ;AACP91E,WAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBsE,UAC9C;AAAA,IAAA,GAEDvC,OAAS,WACR;AAAA,UAAI7uD,OAAO7mB,KAAKm7E,QAAAA;AAChB,UAAGt0D,MAAK;AACPA,aAAKrJ,MAAAA;AAAAA,MACL;AAAA,IACD,EAKJ7d,EAAAA,CAAAA;AAAAA,IAAAA,WAAUg0E,oBAAoBkI,WAAWxjE,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoBkI,WAAWxjE,UAAUyN;EAE9G;AC7Ee,WAAQtkB,MAAC7B,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoBuH,QAAQ,SAASn7E,KAC9CC;AAAAA,WAAKojB,UAAU;AACf,UAAGzjB,WAAUmG,SAAS/F,GAAAA,GAAI;AACzB,YAAIyG,KAAK7G,WAAUmG,SAAS/F;AAC5BC,aAAKuP,QAAQ,IAAI/K,KAAKgC,GAAGzD,UACzB/C;AAAAA,aAAKwP,MAAM,IAAIhL,KAAKgC,GAAGxD,QAAAA;AAEvBhD,aAAKqG,UAAUrG,KAAKw8E,YAAYh2E,EAAAA;AAChCxG,aAAKojB,UAAUrjB;AAAAA,MACf;AAAA,IACF;AAEAJ,IAAAA,WAAUg0E,oBAAoBuH,MAAM7iE,YAAY1Y,WAAU66E,SACzD76E,WAAUg0E,oBAAoBsI,YAC9B,EACCQ,WAAW,WAAA;AACV,aAAO1uE,MAAMsK,UAAUpK,MAAMmI,KAAKzW,WAAUqE,WAAWC,iBAAiB,MAAItE,WAAU+B,OAAOwC,kBAAgB,GAC7G,CAAA;AAAA,IAAA,GAEDg0E,QAAQv4E,WAAUg0E,oBAAoB4G,cAAcliE,UAAU6/D,QAE9DwC,SAAS/6E,WAAUg0E,oBAAoB4G,cAAcliE,UAAUqiE,SAE/DxD,WAAW,MACX1yC,SAAS,WAAA;AACR,gBAAU7kC,WAAUmG,SAAS9F,KAAKojB,OAAYpjB,KAAAA,KAAKm7E,QACnD;AAAA,IAAA,GACDhyB,UAAU,WACT;AAAA,UAAI5nD,YAAYvB,KAAKy8E,UAAAA,EAAY;AACjC,UAAIC,iBAAiB;AACrB,UAAA,CAAIn7E,cAAe5B,WAAU+oB,cAAcnnB,YAAY;AACtDm7E,yBAAiB,IAAI/8E,WAAUg0E,oBAAoBsE;AAAAA,MACvD,OAAQ;AACJ,YAAIl4E,MAAKJ,WAAU+oB,cAAcnnB,SAAAA;AACjCm7E,yBAAiB,IAAI/8E,WAAUg0E,oBAAoBuH,MAAMn7E;MACzD;AAED,aAAO28E;AAAAA,IACP,GAEDC,oBAAoB,SAAUn5D,KAC7B;AAAA,UAAIo5D,WAAWp5D,IAAG0e;AAClB,UAAI26C,WAAWl9E,WAAUqE,WAAWgb,cAAc,iBAAiBkjB,sBAEnE;AAAA,UAAG06C,SAAS36C,SAAS46C,SAASt6E,OAAOq6E,SAASr6E,MAAMs6E,SAAS56C,QAAO;AACnE,eAAO;AAAA,MACP;AACD,aAAO;AAAA,IACP,GAEDk5C,SAAS;AAER,UAAI2B,aAAa,MAAIn9E,WAAU+B,OAAOwC,kBAAgB,OAAKlE,KAAKojB,UAAQ;AAExE,UAAI25D,eAAep9E,WAAUg0E,oBAAoB2H,WAAW0B,gBAAgBh9E,KAAKojB,OAAAA;AACjF,UAAG25D,cAAa;AACf,eAAOA;AAAAA,MACX,OAAQ;AACJ,YAAGp9E,WAAUs9E,uBAAuBt9E,WAAUs9E,oBAAoBt9E,WAAUmG,SAAS9F,KAAKojB,OAAU,CAAA,GAAA;AACnG,cAAIghB,QAAQzkC,WAAUqE,WAAWC,iBAAiB64E;AAClD,mBAAQ34E,IAAI,GAAGA,IAAIigC,MAAMhgC,QAAQD,KAAI;AACpC,gBAAGnE,KAAK28E,mBAAmBv4C,MAAMjgC,KAAI;AACpC,qBAAOigC,MAAMjgC,CACb;AAAA,YAAA;AAAA,UACD;AACD,iBAAOigC,MAAM,CAClB;AAAA,QAAA,OAAS;AACJ,iBAAOzkC,WAAUqE,WAAWgb,cAAc89D,UAAAA;AAAAA,QAC1C;AAAA,MAGD;AAAA,IAED,GAEDziD,OAAO,WAAA;AACN,UAAI74B,SAAQ7B,WAAUmG,SAAS9F,KAAKojB,OAAAA;AAEpC,UAAItF,WAAWne,WAAUsG,SACzB;AAAA,UAAGzE,OAAMuB,WAAWgC,QAAAA,IAAY+Y,SAAS1N,SAASrL,QAAAA,KAAavD,OAAMwB,SAAS+B,aAAa+Y,SAAS3N,SAASpL,WAAU;AACtHpF,QAAAA,WAAU8X,eAAejW,OAAMuB,UAAAA;AAAAA,MAC/B;AAED,UAAI8jB,OAAO7mB,KAAKm7E,QAAAA;AAChB,UAAIn7E,KAAK28E,mBAAmB91D,OAAO;AAClClnB,QAAAA,WAAUg0E,oBAAoB2H,WAAW4B,oBAAmB,WAC3Dv9E;AAAAA,UAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUgiB,MAAMjsB,MAAMpO,IAAAA;AAAAA,QAC/D,GAAE6iB,KAAK7iB;MACZ,OAAU;AACNL,QAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUgiB,MAAMjsB,MAAMpO,IAC/D;AAAA,MAAA;AAAA,IAED,GACD26E,MAAM,WAAA;AACLh7E,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUsiE,KAAKvsE,MAAMpO,IAC9D;AAAA,IAAA,GAGDw8E,aAAa,SAASh2E,IAAAA;AACrB,UAAIH,UAAU;AACd,UAAI5G,OAAOE,WAAUsG,SAAWxG,EAAAA;AAChC,UAAGE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAAA,GAAM;AAC7C,YAAIwb,WAAWtb,WAAU4L,OAAO5L,WAAUsG,SAAWxG,EAAAA,IAAAA;AACrD4G,kBAAUG,GAAGyU,SAAS9Y;MAC1B,WAAYxC,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAAA,GAAM;AACnD,YAAImV,OAAOjV,WAAU2L,OAAO7L,IAAAA;AAC5B4G,kBAAUG,GAAGoO,KAAKxS,MAClB;AAAA,MAAA;AACD,aAAOiE;AAAAA,IACP,GACD82E,aAAa,SAAS5hD,KAAAA;AACrB,UAAI/0B,KAAK7G,WAAUmG,SAAS9F,KAAKojB;AACjC,UAAG5c,IAAG;AACL,YAAIH,UAASrG,KAAKw8E,YAAYh2E;AAC9B,YAAI42E,OAAO,IAAIz9E,WAAUg0E,oBAAoBsE,SAASzxE,GAAGzD,YAAY,MAAMsD;AAC3ErG,aAAKk8E,OAAOkB,KAAKC,SAASD,MAAM7hD;MACpC,OAAQ;AACJv7B,aAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBsE;MAC9C;AAAA,IACD,GAEDnyD,MAAM,EACLtjB,MAAQ,WACPxC;AAAAA,WAAKm9E,YAAY,MACjB;AAAA,IAAA,GAEDv2D,OAAS,WACR5mB;AAAAA,WAAKm9E,YAAY,OACjB;AAAA,IAAA,GACDrH,MAAQ,WAAA;AACP,UAAG91E,KAAK06E,QAAAA,KAAa16E,KAAKk4E,OAAO/0D,MAAK;AACrCxjB,QAAAA,WAAUg0E,oBAAoB4G,cAAcliE,UAAU+iE;MAC3D,OAAU;AACLp7E,aAAKm9E,YAAY,MAAA;AAAA,MACjB;AAAA,IACD,GAEDvH,OAAS,WACR;AAAA,UAAI/uD,OAAO7mB,KAAKm7E,QAAAA;AAChB,UAAGt0D,QAAQA,KAAKrJ,OAAM;AACrBqJ,aAAKrJ,MACV;AAAA,MAAA,OAAS;AACJxd,aAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBsE;MAC9C;AAAA,IAED,GAEDpC,IAAM,WAAA;AACL,UAAG71E,KAAK06E,QAAAA,KAAa16E,KAAKk4E,OAAO/0D,MAAK;AACrCxjB,QAAAA,WAAUg0E,oBAAoB4G,cAAcliE,UAAUujE;MAC3D,OAAU;AACL57E,aAAKm9E,YAAY,IAAA;AAAA,MACjB;AAAA,IACD,GAEDzyD,QAAU,WACT;AAAA,UAAG/qB,WAAUmG,SAAS9F,KAAKojB,UAAU;AACpCzjB,QAAAA,WAAUqoB,OAAO8B,QAAQ,QAAA,EAAU9pB,KAAKojB,OAAAA;AAAAA,MAC7C,OAAS;AACJpjB,aAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBsE,UAC9C;AAAA,MAAA;AAAA,IACD,GAGDvC,OAAS;AACR,UAAG/1E,WAAUmG,SAAS9F,KAAKojB,OAAAA,GAAU;AACpCzjB,QAAAA,WAAU0rB,aAAarrB,KAAKojB,OAAAA;AAAAA,MACjC,OAAS;AACJpjB,aAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBsE,UAC9C;AAAA,MAAA;AAAA,IACD,EAIJt4E,EAAAA,CAAAA;AAAAA,IAAAA,WAAUg0E,oBAAoBuH,MAAM7iE,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoBuH,MAAM7iE,UAAUyN,IAAAA;AAAAA,EAEpG;AClLe,WAAQw3D,UAAC39E,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoBsE,WAAW,SAASljD,MAAMC,IAAI3uB,SAASk3E,YACpE;AAAA,UAAIzhD,QAAQn8B,WAAUsG,SAAAA;AACtB,UAAIgV,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAOuwB,MAAMr8B,IAAAA;AAE1D,WAAIs1B,MAAK;AACRA,eAAO/0B,KAAKw9E,eAAAA;AAAAA,MACZ;AAED,UAAIxoD,CAAAA,IAAG;AAEN,YAAG/Z,UAAS;AACX+Z,eAAKr1B,WAAUwD,KAAKC,IAAI2xB,MAAM9Z,SAASgT,QAAQhT,SAASiT,MAAAA;AAAAA,QAC3D,OAAO;AACJ8G,eAAKr1B,WAAUwD,KAAKC,IAAI2xB,MAAMp1B,WAAU+B,OAAO+7E,cAAc,QAAA;AAAA,QAC7D;AAAA,MAED;AAEDz9E,WAAKqG,UAAUA,WAAWrG,KAAK09E;AAC/B19E,WAAK+C,aAAa,IAAIyB,KAAKuwB;AAC3B/0B,WAAKgD,WAAW,IAAIwB,KAAKwwB,EAAAA;AACzBh1B,WAAKu9E,aAAaA,cAAc;AAAA,IACjC;AAEA59E,IAAAA,WAAUg0E,oBAAoBsE,SAAS5/D,YAAY1Y,WAAU66E,SAC5D76E,WAAUg0E,oBAAoBsI,YAC9B,EACC/E,WAAU,MAEVsG,gBAAgB,WAAA;AACf,UAAIzoD;AACJ,UAAI+G,QAAQn8B,WAAUsG,SAAAA;AACtB,UAAI03E,cAAc,IAAIn5E,KAAKs3B,MAAM34B;AACjCw6E,kBAAY7wC,WAAW;AACvB6wC,kBAAY5wC,gBAAgB,CAE5B;AAAA,UAAI6wC,UAAU,oBAAIp5E;AAClBo5E,cAAQ9wC,WAAW,CAAA;AACnB8wC,cAAQ7wC,gBAAgB,CAAA;AAExB,UAAI9xB,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAOuwB,MAAMr8B,IAAAA;AAC1D,UAAIo+E,cAAc;AAClB,UAAGF,YAAY54E,cAAc64E,QAAQ74E,QAAAA,GAAU;AAC9C84E,sBAAc;AAAA,MACd;AAED,UAAG5iE,UAAS;AACX,YAAG4iE,aAAY;AACd,cAAG5iE,SAASiT,WAAW,OAAM;AAC5B0vD,oBAAQnzE,SAAS,CACjBmzE;AAAAA,oBAAQlzE,WAAW,CACzB;AAAA,UAAA,WAAcuQ,SAASiT,WAAW,QAAO;AACnC0vD,oBAAQlzE,WAAW,CAAA;AAAA,UACnB;AACDqqB,iBAAO6oD;AAAAA,QACZ,OAAS;AACJ7oD,iBAAOp1B,WAAUwD,KAAK8X,SAASb,OAAO,QAAA,EAAU,IAAI5V,KAAKs3B,MAAM34B;QAC/D;AAED4xB,eAAO/0B,KAAK89E,kBAAkB/oD,IAAAA;AAAAA,MAClC,OAAQ;AACJA,eAAO,IAAIvwB,KAAK7E,WAAUsG,SAAWkK,EAAAA,QAAAA;AACrC,YAAG0tE,aAAY;AACd9oD,iBAAO6oD;AAAAA,QACP;AACD7oD,eAAO/0B,KAAK89E,kBAAkB/oD,IAC9B;AAAA,YAAA,CAAI8oD,aAAY;AACf9oD,eAAKtqB,SAAS9K,WAAU+B,OAAO4K,UAC/B;AAAA,QAAA;AAED,aAAI3M,WAAUgN,aAAY;AACzB,cAAIy1D,gBAAgBziE,WAAUqE,WAAWgb,cAAc,eACvD;AAAA,cAAGojD,cAAc/0C,WAAU;AAC1B0H,iBAAKtqB,SAAS9K,WAAU+B,OAAO4K,aAAa6E,KAAKwb,KAAKy1C,cAAc/0C,YAAY1tB,WAAU+B,OAAO2P;UACjG;AAAA,QACD;AAAA,MACD;AAED,aAAO0jB;AAAAA,IACP,GAEDgpD,OAAO,SAASC,UACf;AAAA,aAAO,IAAIr+E,WAAUg0E,oBAAoBsE,SAAS+F,SAASj7E,YAAYi7E,SAASh7E,UAAUg7E,SAAS33E,SAAS23E,SAAST;IACrH,GACDU,sBAAsB,WACrB;AAAA,UAAIniD,QAAQn8B,WAAUsG,SAAAA;AACtB,UAAIwF;AACJ,UAAG9L,WAAU2L,UAAU3L,WAAU2L,OAAOwwB,MAAMr8B,OAAO;AACpDgM,eAAO9L,WAAU2L,OAAOwwB,MAAMr8B;MAClC,WAAYE,WAAU4L,UAAU5L,WAAU4L,OAAOuwB,MAAMr8B,OAAM;AACzDgM,eAAO9L,WAAU4L,OAAOuwB,MAAMr8B,IAC9B;AAAA,MAAA;AACD,aAAOgM;AAAAA,IACP,GAEDiyE,oBAAoB,WACnB;AAAA,UAAIr3E,UAAU;AACd,UAAIoF,OAAOzL,KAAKi+E;AAChB,UAAGxyE,QAAAA,CAASpF,SAAQ;AACnBA,kBAAUrG,KAAKk+E,gBACf;AAAA,MAAA;AACD,aAAO73E;AAAAA,IACP,GAED63E,iBAAiB,SAASt7E,WAAW24B,KACpC;AAAA,UAAI9vB,OAAOzL,KAAKi+E,qBAAAA;AAChB,UAAItG,eAAelsE,KAAKuF,MAAMpO,SAAAA;AAC9B,UAAIg1E,YAAYD;AAChB,UAAGA,iBAAiBtpE,QAAU;AAC7BupE,oBAAaD,eAAep8C;AAAAA,MAChC,OAAQ;AACJq8C,oBAAansE,KAAKuB,QAAQvB,KAAKwB,WAAYxB,KAAKwB,WAAW;AAAA,MAC3D;AAED,UAAG2qE,YAAY,GAAE;AAChBA,oBAAY;AAAA,MACZ;AACD,UAAIhwE,UAAU6D,KAAK7D,WAAW6D,KAAKsjE;AAEnC,UAAG6I,aAAahwE,QAAQxD,QAAO;AAC9BwzE,oBAAYhwE,QAAQxD,SAAS;AAAA,MAC7B;AAGD,UAAGwD,QAAQgwE,SAAAA,GAAW;AACrB,eAAOhwE,QAAQgwE,SAAW1iE,EAAAA;AAAAA,MAC9B,OAAQ;AACJ,eAAO;AAAA,MACP;AAAA,IACD,GAGDsvB,SAAS,WACR;AAAA,UAAI1I,QAAQn8B,WAAUsG;AACtB,UAAIk4E,YAAAA,EAAcn+E,KAAK+C,WAAWgC,QAAAA,IAAY+2B,MAAM3rB,SAASpL,QAAAA,KAAa/E,KAAK+C,WAAWgC,aAAa+2B,MAAM1rB,SAASrL;AAEtH,UAAIo5E,CAAAA;AAAW,eAAO;AAGtB,UAAA,CAAIn+E,KAAKsjC,UAAUtjC,KAAK+C,YAAY/C,KAAKgD;AAAW,eAAO;AAE3D,UAAIyI,OAAOzL,KAAKi+E,qBAEhB;AAAA,UAAGxyE,MAAK;AACP,eAAQA,KAAKuF,MAAMhR,KAAKqG,aAAagI;AAAAA,MACzC,OAAQ;AACJ,eAAO;AAAA,MACP;AAAA,IAED,GAED86C,UAAS,WAER;AAAA,UAAIi1B,cAAc,IAAIz+E,WAAUg0E,oBAAoBsE;AACpD,WAAImG,YAAY55C,QAAAA,GAAU;AACzB,eAAO,IAAI7kC,WAAUg0E,oBAAoB0K;AAAAA,MAC7C,OAAQ;AACJ,eAAOD;AAAAA,MACP;AAAA,IACD,GAEDtC,UAAU,WAAA;AACT,aAAO/tE,MAAMsK,UAAUpK,MAAMmI,KAAKzW,WAAUqE,WAAWC,iBAAiB;IACxE,GACDk3E,SAAS;AACR,aAAOn7E,KAAK87E,SAAW,EAAA,CAAA;AAAA,IACvB,GAEDzhD,OAAO,WAAA;AACN,UAAGr6B,KAAKqG,WAAW1G,WAAUqC,QAAarC,KAAAA,WAAUqC,QAAUs8E,EAAAA,mBAAmB3+E,WAAUqC,QAAUq8C,EAAAA,YAAAA,CAAa1+C,WAAUqE,WAAWgb,cAAc,qBAAqBhf,KAAKqG,OAAAA,IAAAA,GAAa;AAC3L1G,QAAAA,WAAUqC,UAAUq8C,SAAS,EAACh4C,SAASrG,KAAKqG,QAAAA,CAAAA;AAAAA,MAC5C;AACD1G,MAAAA,WAAUg0E,oBAAoBnd,OAAOpvD,OAAOpH,KAAK+C,YAAY/C,KAAKgD,UAAUhD,KAAKqG,OAAAA;AACjF1G,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUgiB,MAAMjsB,MAAMpO,IAC/DL;AAAAA,MAAAA,WAAUg0E,oBAAoB4K,aAAav+E,KAAK+C;AAChDpD,MAAAA,WAAUg0E,oBAAoB6K,gBAAgBx+E,KAAKqG;AAAAA,IAEnD,GACDs0E,MAAM,WACLh7E;AAAAA,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUsiE,KAAKvsE,MAAMpO;AAC9DL,MAAAA,WAAUg0E,oBAAoBnd,OAAOj0C,MACrC;AAAA,IAAA,GAED21D,QAAQv4E,WAAUg0E,oBAAoB4G,cAAcliE,UAAU6/D,QAE9DC,UAAUx4E,WAAUg0E,oBAAoB4G,cAAcliE,UAAUqiE,SAEhE+D,cAAc,SAASt7E,MAAMo4B,KAAK1gB;AACjC,UAAItS;AACJ,cAAQgzB,KACP;AAAA,QAAA,KAAK;AACJhzB,gBAAM5I,WAAUwD,KAAKC,IAAID,UAAU,MAAA;AACnC;AAAA,QACD,KAAK;AACJoF,gBAAM5I,WAAUwD,KAAKC,IAAID,MAAM,GAAG,MAClC;AAAA;AAAA,QACD,KAAK;AACJoF,gBAAM5I,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAID,MAAO,IAAG;AAC5DoF,gBAAMvI,KAAK89E,kBAAkBv1E,KAAM,EAAA;AACnC;AAAA,QACD,KAAK;AACJA,gBAAM5I,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KAAA,CAAA;AAC3DoF,gBAAMvI,KAAK89E,kBAAkBv1E,KAAK,CAClC;AAAA;AAAA,QACD;AACCA,gBAAM5I,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAKrB,IAAAA,CAAAA;AACxC;AAAA;AAGF,UAAI24B,QAAQn8B,WAAUsG,SACtB;AAAA,UAAG9C,KAAK4B,QAAAA,IAAY+2B,MAAM3rB,SAASpL,QAAAA,KAAAA,CAAe8V,WAAU1X,KAAK4B,QAAAA,KAAa+2B,MAAM1rB,SAASrL,QAAAA,GAAW;AACvGwD,cAAM,IAAI/D,KAAKs3B,MAAM3rB;MACrB;AAED,aAAO5H;AAAAA,IACP,GAEDm2E,eAAe,SAAStB,MAAM7hD,KAAK1gB,SAElC;AAAA,UAAItL,OAAOC;AACXD,cAAQvP,KAAKy+E,aAAarB,KAAKr6E,YAAYw4B,KAAK1gB;AAEhDtL,YAAM9E,SAAS9K,WAAU+B,OAAO4K,UAAAA;AAChCkD,YAAM,IAAIhL,KAAK+K,KACfC;AAAAA,UAAI/E,SAAS9K,WAAU+B,OAAO6K;AAC9B,aAAO,EAACxJ,YAAYwM,OAAOvM,UAAUwM,IACrC;AAAA,IAAA,GAEDmvE,gBAAgB,SAASx7E,MAAM0tB,SAASjc,MAAMuV,MAAAA;AAC7C,UAAIs4C,cAAc,IAAIj+D,KAAKqsB,OAAAA;AAC3B,aAAM4xC,YAAY19D,QAAAA,IAAY5B,KAAK4B,QAAU,GAAA;AAC5C09D,sBAAc9iE,WAAUwD,KAAKC,IAAIq/D,aAAat4C,MAAMvV,IACpD;AAAA,MAAA;AAED,UAAG6tD,YAAY19D,QAAAA,IAAY5B,KAAK4B,QAAU,GAAA;AACzC09D,sBAAc9iE,WAAUwD,KAAKC,IAAIq/D,aAAAA,CAAct4C,MAAMvV,IACrD;AAAA,MAAA;AAED,aAAO6tD;AAAAA,IACP,GAEDmc,kBAAkB,SAASxB,MAAM7hD,KAAK1gB,SAAAA;AACrC,UAAIihB,QAAQn8B,WAAUsG;AACtB,UAAIwF,OAAO9L,WAAU4L,OAAOuwB,MAAMr8B,IAElC;AAAA,UAAI8E,YAAavE,KAAK2+E,eAAevB,KAAKr6E,YAAYpD,WAAUwD,KAAKsI,KAAK2O,OAAO,QAAU,EAAA,IAAI5V,KAAK44E,KAAKr6E,UAAAA,CAAAA,GAAc0I,KAAKyiB,QAAQziB,KAAKwiB,MACzI;AAAA,UAAIvpB,UAAU1E,KAAK2+E,eAAevB,KAAKp6E,UAAUrD,WAAUwD,KAAKsI,KAAK2O,OAAO,QAAU,EAAA,IAAI5V,KAAK44E,KAAKp6E,QAAAA,CAAAA,GAAYyI,KAAKyiB,QAAQziB,KAAKwiB;AAElI,UAAGvpB,QAAQK,QAAaR,KAAAA,UAAUQ,WAAU;AAC3CL,kBAAU/E,WAAUwD,KAAKC,IAAImB,WAAWkH,KAAKwiB,QAAQxiB,KAAKyiB,MAAAA;AAAAA,MAC1D;AACD,UAAI2wD,SAAS7+E,KAAK+9E,MAAMX,IAAAA;AACxByB,aAAO97E,aAAawB;AACpBs6E,aAAO77E,WAAW0B;AAClBm6E,aAAOx4E,UAAU+2E,KAAK/2E,WAAWrG,KAAKk+E;AAGtC,cAAQ3iD,KAAAA;AAAAA,QACP,KAAK;AACJsjD,iBAAOx4E,UAAUrG,KAAKk+E,gBAAgBd,KAAK/2E,SAAAA;AAC3C;AAAA,QACD,KAAK;AACJw4E,iBAAOx4E,UAAUrG,KAAKk+E,gBAAgBd,KAAK/2E,SAAU,CAAA;AACrD;AAAA,QACD,KAAK;AACJw4E,iBAAO97E,aAAa/C,KAAK89E,kBAAkBn+E,WAAUwD,KAAKC,IAAIy7E,OAAO97E,aAAa0I,KAAKwiB,QAAQxiB,KAAKyiB,MAAAA,GAAAA;AACpG2wD,iBAAO77E,WAAWrD,WAAUwD,KAAKC,IAAIy7E,OAAO97E,YAAY0I,KAAKwiB,QAAQxiB,KAAKyiB;AAC1E;AAAA,QACD,KAAK;AACJ2wD,iBAAO97E,aAAa/C,KAAK89E,kBAAkBn+E,WAAUwD,KAAKC,IAAIy7E,OAAO97E,YAAY0I,KAAKwiB,QAAQxiB,KAAKyiB,SAAS,CAC5G2wD;AAAAA,iBAAO77E,WAAWrD,WAAUwD,KAAKC,IAAIy7E,OAAO97E,YAAY0I,KAAKwiB,QAAQxiB,KAAKyiB,MAE1E;AAAA;AAAA,MAAA;AAMF,UAAG2wD,OAAO97E,WAAWgC,QAAY+2B,IAAAA,MAAM3rB,SAASpL,QAAa85E,KAAAA,OAAO97E,WAAWgC,QAAa+2B,KAAAA,MAAM1rB,SAASrL,QAAAA,GAAU;AACpH,YAAG8V,WAAUgkE,OAAO97E,WAAWgC,QAAAA,KAAa+2B,MAAM1rB,SAASrL,QAAAA,GAAU;AACpE85E,iBAAO97E,aAAa,IAAIyB,KAAKs3B,MAAM1rB,QACxC;AAAA,QAAA,OAAS;AACJyuE,iBAAO97E,aAAapD,WAAUwD,KAAK24B,MAAMr8B,OAAO,QAAA,EAAUE,WAAUwD,KAAKC,IAAI04B,MAAM34B,MAAMo4B,OAAO,SAAU,KAAI,GAAGO,MAAMr8B,IAAAA,CAAAA;AACvHo/E,iBAAO77E,WAAWrD,WAAUwD,KAAKC,IAAIy7E,OAAO97E,YAAY0I,KAAKwiB,QAAQxiB,KAAKyiB,MAAAA;AAAAA,QAC1E;AAAA,MACD;AAED,aAAO2wD;AAAAA,IACP,GAEDC,eAAe,SAAS1B,MAAM7hD,KAAK1gB,SAClC;AAAA,UAAIgkE,SAAS7+E,KAAK+9E,MAAMX;AACxByB,aAAOx4E,UAAU+2E,KAAK/2E,WAAWrG,KAAKk+E,gBAEtC;AAAA,UAAI73E,UAAU+2E,KAAK/2E,WAAWrG,KAAKk+E,gBACnC;AAAA,UAAIpiD,QAAQn8B,WAAUsG;AACtB,UAAIwF,OAAO9L,WAAU2L,OAAOwwB,MAAMr8B;AAClC,cAAQ87B,KAAAA;AAAAA,QACP,KAAK;AACJl1B,oBAAUrG,KAAKk+E,gBAAgBd,KAAK/2E,SAAU,EAAA;AAC9C,cAAI04E,eAAetzE,KAAKuB,OAAQvB,KAAKuB,OAAO,IAAKvB,KAAK7D,QAAQxD;AAE9D,cAAGqH,KAAK5D,OAAO,KAAM4D,KAAKuF,MAAM3K,YAAY04E,eAAe,GAAG;AAC7D,gBAAGp/E,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,YAAa,IAAG,OAAOgC,QAAa+2B,KAAAA,MAAM3rB,SAASpL,QAAU,GAAA;AACvF85E,uBAAS7+E,KAAKg/E,YAAY5B,MAAM7hD,KAAK1gB;YACrC;AAAA,UACD;AACD;AAAA,QACD,KAAK;AACJxU,oBAAUrG,KAAKk+E,gBAAgBd,KAAK/2E,SAAS;AAC7C,cAAGoF,KAAK5D,OAAO,KAAM4D,CAAAA,KAAKuF,MAAM3K,OAAS,GAAA;AACxC,gBAAG1G,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,YAAY,GAAG,KAAA,EAAOgC,YAAY+2B,MAAM1rB,SAASrL,QAAU,GAAA;AACrF85E,uBAAS7+E,KAAKg/E,YAAY5B,MAAM7hD,KAAK1gB,OAAAA;AAAAA,YACrC;AAAA,UACD;AAED;AAAA,QACD;AACCgkE,mBAAS7+E,KAAKg/E,YAAY5B,MAAM7hD,KAAK1gB,OACrCxU;AAAAA,oBAAU+2E,KAAK/2E;AACf;AAAA,MAAA;AAEFw4E,aAAOx4E,UAAUA;AACjB,aAAOw4E;AAAAA,IACP,GAEDI,WAAW,SAASjvB,SAASz0B,KAC5B;AAAA,UAAIgmC,UAAUvhE,KAAK89E,kBAAkBn+E,WAAUwD,KAAKC,IAAI4sD,SAASz0B,KAAK,QAAQA,GAC9EgmC;AAAAA,cAAQ92D,SAASulD,QAAQ3jD;AACzBk1D,cAAQ72D,WAAWslD,QAAQriD,WAC3B,CAAA;AAAA,aAAO4zD;AAAAA,IACP,GAED2d,kBAAkB,SAAS/7E,MAAMg8E;AAChC,UAAIC,UAAUj8E,KAAKwK,WAClB+/B,GAAAA,QAAQvqC,KAAKkJ,SACbE,GAAAA,YAAY5M,WAAU+B,OAAO6K;AAC9B,aAAQmhC,QAAQnhC,cAAe4yE,iBAAiB5yE,aAAa,MAAMmhC,SAASnhC,cAAAA,CAAe6yE;AAAAA,IAC3F,GACDC,kBAAkB,SAASl8E,MAAMg8E;AAChC,UAAIC,UAAUj8E,KAAKwK,WAClB+/B,GAAAA,QAAQvqC,KAAKkJ,SAAAA,GACbC,aAAa3M,WAAU+B,OAAO4K,YAC9BC,YAAY5M,WAAU+B,OAAO6K;AAC9B,aAAQmhC,SAASphC,cAAAA,CAAgB6yE,iBAAiBC,YAAc1xC,CAAAA,SAAUnhC,aAAa,MAAQmhC,SAASnhC;AAAAA,IACxG,GACD+yE,oBAAoB,SAASn8E,MAAMg8E;AAClC,aAAQn/E,KAAKk/E,iBAAiB/7E,MAAMg8E,WAAAA,KAAgBn/E,KAAKq/E,iBAAiBl8E,MAAMg8E,WAChF;AAAA,IAAA,GAEDH,aAAa,SAAS5B,MAAM7hD,KAAK1gB,SAChC;AAAA,UAAItL,OAAOC;AAEX,UAAIiuE,eAAe99E,WAAU+B,OAAO+7E;AAEpC,UAAIt6E,OAAOnD,KAAK2+E,eAAevB,KAAKr6E,YAAYpD,WAAUwD,KAAKyzB,UAAU,IAAIpyB,KAAK44E,KAAKr6E,cAAc,UAAU06E,YAAAA;AAG/G,UAAI8B,WAAWnC,KAAKr6E;AAEpB,cAAQw4B;QACP,KAAK;AACJhsB,kBAAQ5P,WAAUwD,KAAKC,IAAID,MAAAA,CAAOs6E,cAAc,QAAA;AAEhD,eAAIz9E,KAAKs/E,mBAAmB/vE,OAAO,IAAM,GAAA;AACxC,iBAAKsL,WAAU7a,KAAKs/E,mBAAmBC,UAAU,OAAO;AAEvD,kBAAIC,YAAY;AAChB,kBAAG3kE,WAAUlb,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAK+K,KAAQxK,CAAAA,EAAAA,QAAAA,KAAapF,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAK+6E,QAAAA,CAAAA,EAAWx6E,QAChHy6E;AAAAA,4BAAY;AACb,kBAAGA;AACFjwE,wBAAQvP,KAAK89E,kBAAkBn+E,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,YAAAA,IAAgB,KAAS,GAAA,EAAA;AAEjFwM,oBAAM9E,SAAS9K,WAAU+B,OAAO6K,SAChCgD;AAAAA,oBAAM7E,WAAW,CAAA;AACjB6E,sBAAQ5P,WAAUwD,KAAKC,IAAImM,OAAQkuE,CAAAA,cAAc;YACjD;AAAA,UACD;AACDjuE,gBAAM7P,WAAUwD,KAAKC,IAAImM,OAAOkuE,cAAc,QAC9C;AAAA;AAAA,QACD,KAAK;AACJluE,kBAAQ5P,WAAUwD,KAAKC,IAAID,MAAMs6E,cAAc;AAE/C,cAAIgC,UAAU5kE,UAAStL,QAAQ5P,WAAUwD,KAAKC,IAAImM,OAAOkuE,cAAc,QAAA;AACvE,eAAIz9E,KAAKs/E,mBAAmBG,SAAS,KAAO,GAAA;AAC3C,gBAAI5kE,CAAAA,WAAU7a,KAAKs/E,mBAAmBC,UAAU,QAAQ;AACvD,kBAAA,CAAK1kE,SAAQ;AACZtL,wBAAQvP,KAAK89E,kBAAkBn+E,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,YAAY,GAAG,QAAQ,CAC9EwM;AAAAA,sBAAM9E,SAAS9K,WAAU+B,OAAO4K,UAChCiD;AAAAA,sBAAM7E,WAAW,CACzB;AAAA,cAAA,OAAc;AACN,oBAAI80E,YAAY;AAChB,oBAAI7/E,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAK+6E,QAAAA,CAAAA,EAAWx6E,aAAaw6E,SAASx6E,QAAAA,GAAW;AACjFy6E,8BAAY;AAAA,gBACZ;AACD,oBAAIA,WAAW;AACdjwE,0BAAQvP,KAAK89E,kBAAkBn+E,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,YAAY,GAAG,QAAQ,CAC9E;AAAA,gBAAA;AACDwM,sBAAM9E,SAAS9K,WAAU+B,OAAO4K,UAAAA;AAChCiD,sBAAM7E,WAAW,CAAA;AACjB6E,wBAAQ5P,WAAUwD,KAAKC,IAAImM,OAAOkuE,cAAc,QAChD;AAAA,cAAA;AAAA,YAED;AAAA,UACD;AACDjuE,gBAAM7P,WAAUwD,KAAKC,IAAImM,OAAOkuE,cAAc,QAAA;AAC9C;AAAA,QACD,KAAK;AACJluE,kBAAQvP,KAAKi/E,UAAU7B,KAAKr6E,YAAAA;AAC5ByM,gBAAMxP,KAAKi/E,UAAU7B,KAAKp6E,YAC1B;AAAA;AAAA,QACD,KAAK;AACJuM,kBAAQvP,KAAKi/E,UAAU7B,KAAKr6E,YAAY,CAAA;AACxCyM,gBAAMxP,KAAKi/E,UAAU7B,KAAKp6E,UAAU,CAAA;AACpC;AAAA,QACD;AACCuM,kBAAQpM;AACRqM,gBAAM7P,WAAUwD,KAAKC,IAAImM,OAAOkuE,cAAc,QAAA;AAC9C;AAAA;AAGF,aAAO,EAAC16E,YAAYwM,OAAOvM,UAAUwM,IACrC;AAAA,IAAA,GACDkwE,oBAAoB,SAAStC,MAAM7hD;AAClC,UAAIhsB,OAAOC;AACX,UAAIssB,QAAQn8B,WAAUsG,SAAAA;AAEtB,cAAQs1B,KACP;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AACJhsB,kBAAQ5P,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,gBAAgB,KAAA,CAAA;AACzEwM,kBAAQvP,KAAK89E,kBAAkBvuE,OAAQ,EAAA;AACvC;AAAA,QACD,KAAK;AAAA,QACL,KAAK;AACJA,kBAAQ5P,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAIg6E,KAAKr6E,YAAY,GAAG,KACxEwM,CAAAA;AAAAA,kBAAQvP,KAAK89E,kBAAkBvuE,OAAO,CACtC;AAAA;AAAA,QACD;AACCA,kBAAQ5P,WAAUwD,KAAKyzB,UAAUwmD,KAAKr6E,UACtC;AAAA;AAAA,MAAA;AAEF,UAAGq6E,KAAKr6E,WAAWgC,YAAY+2B,MAAM3rB,SAASpL,aAAaq4E,KAAKr6E,WAAWgC,QAAa+2B,KAAAA,MAAM1rB,SAASrL,QAAU,GAAA;AAChHwK,gBAAQ,IAAI/K,KAAKs3B,MAAM3rB,QAEvB;AAAA,MAAA;AACDX,YAAM,IAAIhL,KAAK+K,KACfC;AAAAA,UAAI/E,SAAS9K,WAAU+B,OAAO6K;AAC9B,aAAO,EAACxJ,YAAYwM,OAAOvM,UAAUwM,IACrC;AAAA,IAAA,GACDmwE,gBAAgB,SAASvC,MAAM7hD;AAC9B,aAAO,EAACx4B,YAAYq6E,KAAKr6E,YAAYC,UAAUo6E,KAAKp6E,SACpD;AAAA,IAAA,GAGD48E,eAAe,SAASz8E,MAAAA;AACvB,UAAIxD,CAAAA,WAAUkuB;AACb,eAAO;AAER,UAAI5S,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG;AAEzE,UAAI6P;AACJ,UAAG2L,UAAS;AACX3L,gBAAQ3P,WAAUk7B,gBAAgB5f,UAAU9X,IAAAA;AAAAA,MAChD,OAAQ;AACJmM,gBAAQ3P,WAAU6M,kBAAkBrJ,IAAAA;AAAAA,MACpC;AAED,aAAQxD,CAAAA,WAAUgR,SAASrB,KAAAA;AAAAA,IAC3B,GAEDwuE,mBAAmB,SAASvuE,OAAOgsB,KAClC;AAAA,UAAIp4B,OAAOoM;AACXgsB,YAAMA,OAAO;AACb,UAAIupB,SAAQnlD,WAAUsG;AAEtB,aAAOjG,CAAAA,KAAK4/E,cAAcz8E,IAAWo4B,MAAAA,MAAM,KAAKp4B,KAAK4B,aAAa+/C,OAAM10C,SAASrL,aAAew2B,MAAM,KAAKp4B,KAAK4B,QAAa+/C,KAAAA,OAAM30C,SAASpL,QAAAA,IAAY;AACvJ5B,eAAOnD,KAAK6/E,eAAe18E,MAAMo4B,GAAAA;AAAAA,MACjC;AAED,aAAOp4B;AAAAA,IACP,GAED08E,gBAAgB,SAAStwE,OAAOgsB,KAAAA;AAC/BA,YAAMA,OAAO;AACb,UAAItgB,WAAWtb,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG;AAEzE,UAAI0D;AACJ,UAAG8X,UAAS;AACX9X,eAAOxD,WAAUwD,KAAKC,IAAImM,OAAOgsB,MAAMtgB,SAASgT,QAAQhT,SAASiT,MACrE;AAAA,MAAA,OAAQ;AACJ/qB,eAAOxD,WAAUwD,KAAKyzB,UAAUj3B,WAAUwD,KAAKC,IAAImM,OAAOgsB,KAAK,KAAA,CAAA;AAAA,MAC/D;AAED,aAAOp4B;AAAAA,IACP,GAEDmgC,WAAU,SAASvO,MAAMC,IAAAA;AACxB,WAAIr1B,WAAUkuB;AACb,eAAO;AAER,UAAIiyD,UAAU,IAAIt7E,KAAKuwB,IAEvB;AAAA,aAAM+qD,QAAQ/6E,QAAYiwB,IAAAA,GAAGjwB,QAAU,GAAA;AACtC,YAAG/E,KAAK4/E,cAAcE;AAAU,iBAAO;AACvCA,kBAAU9/E,KAAK6/E,eAAeC,OAC9B;AAAA,MAAA;AACD,aAAO;AAAA,IACP,GAEDzC,UAAU,SAASD,MAAM7hD,KAAK9vB,MAAMoP,SAAAA;AACnC,UAAIgE;AACJpT,aAAOA,QAAQzL,KAAKm4E;AAEpB,UAAI4H,WAAWpgF,WAAUg0E,oBAAoBsE,SAAS5/D,UAAU0lE,MAAMX;AAEtE,cAAQ3xE,MAAAA;AAAAA,QACP,KAAKzL,KAAKk4E,OAAOxjE;AAChBmK,iBAAO7e,KAAK8+E,cAAciB,UAAUxkD,KAAK1gB,OACzC;AAAA;AAAA,QACD,KAAK7a,KAAKk4E,OAAOj9D;AAChB4D,iBAAO7e,KAAK4+E,iBAAiBmB,UAAUxkD,KAAK1gB,OAC5C;AAAA;AAAA,QACD,KAAK7a,KAAKk4E,OAAO/8D;AAChB0D,iBAAO7e,KAAK0+E,cAAcqB,UAAUxkD,KAAK1gB,OACzC;AAAA;AAAA,QACD,KAAK7a,KAAKk4E,OAAOn3C;AAChBliB,iBAAO7e,KAAK0+E,cAAcqB,UAAUxkD,KAAK1gB,OACzC;AAAA;AAAA,QACD,KAAK7a,KAAKk4E,OAAOM;AAChB35D,iBAAO7e,KAAK0/E,mBAAmBK,UAAUxkD,KAAK1gB,OAC9C;AAAA;AAAA,QACD,KAAK7a,KAAKk4E,OAAO/0D;AAChBtE,iBAAO7e,KAAK2/E,eAAeI,UAAUxkD,KAAK1gB,OAC1C;AAAA;AAAA,QACD,KAAK7a,KAAKk4E,OAAOS;AAChB95D,iBAAO7e,KAAKg/E,YAAYe,UAAUxkD,KAAK1gB,OACvC;AAAA;AAAA,MAAA;AAGF,UAAGgE,KAAK9b,WAAWgC,aAAa8Z,KAAK7b,SAAS+B,QAAU,GAAA;AACvD8Z,eAAO7e,KAAKq9E,SAASx+D,MAAM0c,KAAK9vB,IAAAA;AAAAA,MAChC;AAED,aAAO9L,WAAUg0E,oBAAoBsE,SAAS5/D,UAAU0lE,MAAMl/D,IAAAA;AAAAA,IAE9D,GAEDmhE,YAAY,SAAS5C,MAAM7hD,KAC1B;AAAA,UAAI9vB,OAAOzL,KAAKm4E;AAChB,UAAIt5D;AACJ,cAAQpT,MACP;AAAA,QAAA,KAAKzL,KAAKk4E,OAAOxjE;AAChB,cAAG6mB,OAAO,UAAUA,OAAO,SAAQ;AAClC1c,mBAAO7e,KAAK8+E,cAAc1B,MAAM7hD,GAAAA;AAAAA,UACtC,OAAU;AACJ1c,mBAAO7e,KAAKigF,gBAAgB7C,MAAM7hD,GAClC;AAAA,UAAA;AACD;AAAA,QACD,KAAKv7B,KAAKk4E,OAAOj9D;AAChB,cAAGsgB,OAAO,UAAUA,OAAO,MAAK;AAC/B1c,mBAAO7e,KAAK4+E,iBAAiBxB,MAAM7hD,GAAAA;AAAAA,UACzC,OAAU;AACJ1c,mBAAO7e,KAAKkgF,mBAAmB9C,MAAM7hD;UACrC;AACD;AAAA,QACD,KAAKv7B,KAAKk4E,OAAO/8D;AAChB0D,iBAAO7e,KAAKmgF,gBAAgB/C,MAAM7hD,GAClC;AAAA;AAAA,QACD,KAAKv7B,KAAKk4E,OAAOn3C;AAChBliB,iBAAO7e,KAAKmgF,gBAAgB/C,MAAM7hD;AAClC;AAAA,QACD,KAAKv7B,KAAKk4E,OAAOS;AAChB95D,iBAAO7e,KAAKogF,cAAchD,MAAM7hD,GAAAA;AAChC;AAAA,QACD,KAAKv7B,KAAKk4E,OAAOM;AAChB35D,iBAAO7e,KAAKqgF,qBAAqBjD,MAAM7hD,GACvC;AAAA;AAAA,QACD;AACC1c,iBAAOu+D;AACP;AAAA,MAGF;AAAA,UAAIt4B,SAAQnlD,WAAUsG,SAAAA;AACtB,UAAG4Y,KAAK9b,WAAWgC,YAAY+/C,OAAM30C,SAASpL,QAAU,GAAA;AACvD8Z,aAAK9b,aAAa/C,KAAK89E,kBAAkBh5B,OAAM30C,QAAAA;AAC/C0O,aAAK9b,WAAW0H,SAAS9K,WAAU+B,OAAO4K;MAC1C;AAED,UAAGuS,KAAK7b,SAAS+B,QAAAA,IAAY+/C,OAAM10C,SAASrL,QAAAA,GAAU;AAErD8Z,aAAK7b,WAAWhD,KAAK89E,kBAAkBh5B,OAAM10C,UAAW,EAAA;AAAA,MACxD;AAGD,aAAOzQ,WAAUg0E,oBAAoBsE,SAAS5/D,UAAU0lE,MAAMl/D,IAAAA;AAAAA,IAC9D,GAEDqhE,oBAAoB,SAAS9C,MAAMh2D,WAClC;AAAA,aAAOpnB,KAAKsgF,kBAAkB,EAC7B99E,MAAO,cACPokB,OAAQ,WAERw2D,GAAAA,MACAh2D,WACA,UAED;AAAA,IAAA,GAEDi5D,sBAAsB,SAASjD,MAAMh2D,WACpC;AAAA,aAAOpnB,KAAKsgF,kBAAkB,EAC5B99E,MAAO,cACPokB,OAAQ,WAETw2D,GAAAA,MACAh2D,WACA,YAED;AAAA,IAAA,GAEDk5D,mBAAmB,SAASC,mBAAmBnD,MAAMh2D,WAAWpgB,MAAAA;AAC/D,UAAI6X;AACJ,UAAI2hE,WAAWpD,KAAKG;AAEpB,UAAIiD,CAAAA,UAAS;AACZA,mBAAWD,kBAAkBn5D,SAC7B;AAAA,MAAA;AAED,WAAIo5D,YAAaD,CAAAA,kBAAkBn5D,YAAW;AAC7C,eAAOg2D;AAAAA,MACP;AAED,UAAGh2D,WAAU;AACZvI,eAAO7e,KAAKq9E,SAAS,EAACt6E,YAAYq6E,KAAKoD,WAAWn6E,SAAS+2E,KAAK/2E,QAAU+gB,GAAAA,WAAWpgB,MAAM,IAE3F;AAAA,YAAG6X,KAAK9b,WAAWgC,QAAAA,KAAaq4E,KAAKr6E,WAAWgC,QAAAA,GAAU;AACzD8Z,iBAAO7e,KAAKq9E,SAAS,EAACt6E,YAAY8b,KAAK9b,YAAYsD,SAAQwY,KAAKxY,QAAAA,GAAU+gB,WAAWpgB,MAAM;QAC3F;AAED6X,aAAK0+D,aAAaiD;AAAAA,MACtB,OAAQ;AACJ,eAAO7gF,WAAUg0E,oBAAoBsE,SAAS5/D,UAAU0lE,MAAMX,IAAAA;AAAAA,MAC9D;AAED,UAAIqD,WAAWzgF,KAAK0gF,gBAAgBtD,MAAMv+D,MAAMA,KAAK0+D;AAErD,UAAGkD,SAASz9E,SAAS+B,QAAa07E,KAAAA,SAAS19E,WAAWgC,QAAU,GAAA;AAC/D8Z,aAAK0+D,aAAa1+D,KAAK0+D,cAAc,aAAa,eAAe;AAAA,MACjE;AACDkD,iBAAWzgF,KAAK0gF,gBAAgBtD,MAAMv+D,MAAMA,KAAK0+D,UAEjD1+D;AAAAA,WAAK9b,aAAa09E,SAAS19E;AAC3B8b,WAAK7b,WAAWy9E,SAASz9E;AACzB,aAAO6b;AAAAA,IACP,GAED6hE,iBAAiB,SAASC,SAASC,SAASC;AAC3C,UAAIt4E,MAAM,EAACxF,YAAW,MAAMC,UAAS,KAAA;AAErC,UAAG69E,iBAAiB,cAAa;AAChCt4E,YAAIxF,aAAa69E,QAAQ79E;AACzBwF,YAAIvF,WAAW29E,QAAQ39E;AAAAA,MAC3B,OAAQ;AACJuF,YAAIxF,aAAa49E,QAAQ59E;AACzBwF,YAAIvF,WAAW49E,QAAQ79E;AAAAA,MACvB;AACD,aAAOwF;AAAAA,IAEP,GAED43E,iBAAiB,SAAS/C,MAAMh2D,WAAAA;AAC/B,UAAIg2D,OAAOp9E,KAAKsgF,kBAAkB,EAChCzK,IAAK,cACLC,MAAO,YACPtzE,MAAO,cACPokB,OAAQ,WAETw2D,GAAAA,MACAh2D,WACA,OAGDg2D;AAAAA,WAAKr6E,WAAW0H,SAAS9K,WAAU+B,OAAO4K,UAAAA;AAC1C8wE,WAAKp6E,WAAWrD,WAAUwD,KAAKC,IAAIg6E,KAAKp6E,cAAc,KAAA;AACtDo6E,WAAKp6E,SAASyH,SAAS9K,WAAU+B,OAAO6K;AACxC,aAAO6wE;AAAAA,IACP,GAED6C,iBAAiB,SAAS7C,MAAMh2D,WAAAA;AAC/B,UAAIvI;AAEJ,cAAQuI;QACP,KAAK;AAAA,QACL,KAAK;AACJvI,iBAAO7e,KAAKogF,cAAchD,MAAMh2D,SAChC;AAAA;AAAA,QACD;AACCvI,iBAAOu+D;AACP;AAAA;AAEFv+D,WAAKxY,UAAU+2E,KAAK/2E;AACpB,aAAOwY;AAAAA,IACP,GACDuhE,eAAe,SAAShD,MAAMh2D,WAC7B;AAAA,aAAOpnB,KAAKsgF,kBAAkB,EAC5BzK,IAAK,cACLC,MAAO,YACPtzE,MAAO,cACPokB,OAAQ,WAAA,GAETw2D,MACAh2D,WACA;IAED,GAED05D,YAAY,SAASvlD,KACpB;AAAA,UAAIO,QAAQn8B,WAAUsG,SAAAA;AAEtB,UAAIm3E,OAAOp9E,KAAKq9E,SAASr9E,MAAMu7B;AAC/B,UAAG6hD,KAAKr6E,WAAWgC,QAAY+2B,IAAAA,MAAM3rB,SAASpL,QAAAA,KAAaq4E,KAAKr6E,WAAWgC,QAAAA,KAAa+2B,MAAM1rB,SAASrL,QAAAA,GAAU;AAChHpF,QAAAA,WAAU8X,eAAe,IAAIjT,KAAK44E,KAAKr6E,UACvC,CAAA;AAAA,MAAA;AAED/C,WAAKk8E,OAAOkB,IAAAA;AAAAA,IACZ,GAEDt3D,MAAM,EACLtjB,MAAQ,WAAA;AACPxC,WAAK8gF,WAAW,MAAA;AAAA,IAChB,GACDl6D,OAAS,WAAA;AACR5mB,WAAK8gF,WAAW,OAAA;AAAA,IAChB,GACDhL,MAAQ;AAEP,UAAIr2E,OAAQO,KAAKm4E,SACjB;AAAA,UAAG14E,QAAQO,KAAKk4E,OAAO/0D,MAAK;AAC3BxjB,QAAAA,WAAUg0E,oBAAoB4G,cAAcliE,UAAU+iE,iBAC3D;AAAA,MAAA,OAAS;AACJp7E,aAAK8gF,WAAW,MAChB;AAAA,MAAA;AAAA,IAED,GAEDjL,IAAM,WAAA;AACL,UAAIp2E,OAAQO,KAAKm4E;AACjB,UAAG14E,QAAQO,KAAKk4E,OAAO/0D,MAAK;AAC3BxjB,QAAAA,WAAUg0E,oBAAoB4G,cAAcliE,UAAUujE;MAC3D,OAAS;AACJ57E,aAAK8gF,WAAW;MAChB;AAAA,IAED,GAED,cAAa,WACZ9gF;AAAAA,WAAKk8E,OAAOl8E,KAAKggF,WAAWhgF,MAAM,MAAA,CAAA;AAAA,IAClC,GACD,YAAW,WAAA;AACVA,WAAKk8E,OAAOl8E,KAAKggF,WAAWhgF,MAAM,IAAA,CAAA;AAAA,IAClC,GACD,eAAc;AACbA,WAAKk8E,OAAOl8E,KAAKggF,WAAWhgF,MAAM;IAClC,GACD,cAAa,WACZA;AAAAA,WAAKk8E,OAAOl8E,KAAKggF,WAAWhgF,MAAM,MAClC,CAAA;AAAA,IAAA,GAGD01E,OAAS,WACR;AAAA,UAAI91E,MAAM,EAACmD,YAAY,IAAIyB,KAAKxE,KAAK+C,UAAaC,GAAAA,UAAU,IAAIwB,KAAKxE,KAAKgD,QAE1E,EAAA;AAAA,UAAIvD,OAAOE,WAAUsG,SAAAA,EAAWxG;AAChC,UAAGE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAM,GAAA;AAE7C,YAAIwb,WAAWtb,WAAU4L,OAAO5L,WAAUsG,SAAAA,EAAWxG;AACrDG,YAAIqb,SAAS9Y,UAAcnC,IAAAA,KAAKqG;AAAAA,MACrC,WAAa1G,WAAU2L,UAAU3L,WAAU2L,OAAO7L,IAAM,GAAA;AACnD,YAAImV,OAAOjV,WAAU2L,OAAO7L,IAAAA;AAC5BG,YAAIgV,KAAKxS,MAAAA,IAAUpC,KAAKqG;AAAAA,MACxB;AAED1G,MAAAA,WAAU+V,YAAY9V;IACtB,EAKJD,EAAAA,CAAAA;AAAAA,IAAAA,WAAUg0E,oBAAoBsE,SAAS5/D,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoBsE,SAAS5/D,UAAUyN;EAE1G;ACxxBe,WAAQi7D,eAACphF,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoBqN,gBAAgB,SAASzzE,KAAK+B,OAAAA;AAC3DtP,WAAKwL,YAAY+B;AACjBvN,WAAKsP,QAAQA,SAAS;AAAA,IACvB;AAEA3P,IAAAA,WAAUg0E,oBAAoBqN,cAAc3oE,YAAY1Y,WAAU66E,SACjE76E,WAAUg0E,oBAAoBsI,YAC9B,EAECz3C,SAAS,WAAA;AACR,UAAIh5B,YAAYxL,KAAKwL;AACrB,aAAA,CAAA,CAASA,UAAUwV;AAAAA,IACnB,GAEDmoC,UAAU,WACT;AAAA,UAAIi1B,cAAc,IAAIz+E,WAAUg0E,oBAAoBsE;AACpD,UAAGmG,YAAY55C,QAAAA,GAAU;AACxB,eAAO45C;AAAAA,MACX,OAAQ;AACJ,eAAO,IAAIz+E,WAAUg0E,oBAAoB0K;AAAAA,MACzC;AAAA,IACD,GACDhkD,OAAO,WAAA;AACN16B,MAAAA,WAAUg0E,oBAAoB2H,WAAW2F,WAAWlP,QAAAA;AACpD/xE,WAAKwL,UAAUqvE,gBAAgB;AAC/Bl7E,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUgiB,MAAMjsB,MAAMpO,IAAAA;AAAAA,IAE/D,GACD26E,MAAM,WAAA;AACL36E,WAAKwL,UAAUsR,aAAa,YAAY,GAAA;AACxCnd,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUsiE,KAAKvsE,MAAMpO;IAC9D,GACDm7E,SAAS,WACR;AAAA,UAAA,CAAIn7E,KAAKsP,OAAM;AACd,eAAOtP,KAAKwL,UAAUwT,cAAc,sBACxC;AAAA,MAAA,OAAQ;AACJ,eAAOhf,KAAKwL,UAAUwT,cAAc;MACpC;AAAA,IACD,GAED8G,MAAM,EACLc,OAAS,SAAS/gB,GAAAA;AACjB7F,WAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBqN,cAAchhF,KAAKwL,WAAWxL,KAAKsP,QAAQ,IAAI,CAC7F,CAAA;AAAA,IAAA,GACD9M,MAAQ,SAASqD,GAAAA;AAChB7F,WAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBqN,cAAchhF,KAAKwL,WAAWxL,KAAKsP,QAAQ,IAAI;IAC7F,GACDwmE,MAAQ,WACP;AAAA,UAAIj3D,OAAO,IAAIlf,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAW,GAAG,CAAA;AAC5E,UAAGqT,QAAAA,CAASA,KAAK2lB,QAAU,GAAA;AAC1B3lB,eAAOA,KAAKsqC,SAAAA;AAAAA,MACZ;AAEDnpD,WAAKk8E,OAAOr9D,IACZ;AAAA,IAAA,GACD62D,OAAS,SAAS7vE,GAAAA;AACjB7F,WAAKm7E,QAAU39D,EAAAA,MAAAA;AAAAA,IACf;AAKJ7d,IAAAA,WAAUg0E,oBAAoBqN,cAAc3oE,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoBqN,cAAc3oE,UAAUyN,IAAAA;AAAAA,EAEpH;AClEe,WAAQq7D,aAACxhF,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoBuN,cAAc,SAAS3zE,KAAKsP,KAAKmsB,KAAAA;AAC9DhpC,WAAKwL,YAAY+B;AACjBvN,WAAK6c,MAAMA,OAAO;AAClB7c,WAAKgpC,MAAMA,OAAO;AAAA,IACnB;AAEArpC,IAAAA,WAAUg0E,oBAAoBuN,YAAY7oE,YAAY1Y,WAAU66E,SAC/D76E,WAAUg0E,oBAAoBsI,YAC9B,EAECz3C,SAAS,WACR;AAAA,UAAIxpB,OAAOhb,KAAKohF;AAChB,aAAUpmE,CAAAA,EAAAA,KAAKhb,KAAK6c,GAAQ7B,KAAAA,KAAKhb,KAAK6c,GAAK7c,EAAAA,KAAKgpC,GAChD;AAAA,IAAA,GACDmgB,UAAU,WACT;AAAA,UAAItsC,MAAM7c,KAAK6c;AACf,UAAImsB,MAAMhpC,KAAKgpC;AACf,UAAIhuB,OAAOhb,KAAKohF,SAAAA;AAChB,WAAIpmE,KAAK6B,GAAAA,GAAK;AACbA,cAAM;AAAA,MACN;AACD,UAAI0e,MAAM;AACV,UAAG1e,MAAM7B,KAAK5W,SAAS,GAAE;AACxBm3B,cAAM;AAAA,MACN;AAED,WAAIvgB,KAAK6B,GAAAA,GAAK;AACb,YAAIuhE,cAAc,IAAIz+E,WAAUg0E,oBAAoBsE;AACpD,YAAGmG,YAAY55C,QAAU,GAAA;AACxB,iBAAO45C;AAAAA,QACZ,OAAS;AACJ,iBAAO,IAAIz+E,WAAUg0E,oBAAoB0K;AAAAA,QACzC;AAAA,MACD;AAED,UAAG9iD,KAAI;AACN,iBAAQ7xB,IAAIs/B,KAAKhuB,KAAK6B,QAAQnT,IAAIsR,KAAK6B,KAAKzY,QAAQsF,KAAI;AACvD,cAAIsR,CAAAA,KAAK6B,GAAKnT,EAAAA,CAAAA,KAAMA,KAAKsR,KAAK6B,GAAAA,EAAKzY,SAAS,GAAE;AAC7CyY;AACAmsB,kBAAM;AAAA,UACN;AACD,cAAGhuB,KAAK6B,GAAKnT,EAAAA,CAAAA,GAAG;AACf,mBAAO,IAAI/J,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAWqR,KAAKnT,CAC1E;AAAA,UAAA;AAAA,QACD;AAAA,MACL,OAAQ;AACJ,iBAAQA,IAAIs/B,KAAKhuB,KAAK6B,QAAQnT,IAAIsR,KAAK6B,KAAKzY,QAAQsF,KAAI;AACvD,cAAIsR,CAAAA,KAAK6B,GAAKnT,EAAAA,CAAAA,KAAAA,CAAOA,GAAE;AACtBmT;AACAmsB,kBAAMhuB,KAAK6B,GAAAA,EAAKzY,SAAS;AAAA,UACzB;AACD,cAAG4W,KAAK6B,KAAKnT,CAAG,GAAA;AACf,mBAAO,IAAI/J,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAWqR,KAAKnT;UAC1E;AAAA,QACD;AAAA,MACD;AAED,aAAO,IAAI/J,WAAUg0E,oBAAoBqN,cAAchhF,KAAKwL,WAAW;IACvE,GACD6uB,OAAO;AACN16B,MAAAA,WAAUg0E,oBAAoB2H,WAAW2F,WAAWlP,QAAAA;AAEpD/xE,WAAKwL,UAAUqvE,gBAAgB,UAC/Bl7E;AAAAA,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUgiB,MAAMjsB,MAAMpO,IAAAA;AAAAA,IAC/D,GACD26E,MAAM;AACL36E,WAAKwL,UAAUsR,aAAa,YAAY,GAAA;AACxCnd,MAAAA,WAAUg0E,oBAAoBsI,WAAW5jE,UAAUsiE,KAAKvsE,MAAMpO,IAC9D;AAAA,IAAA,GACDqhF,UAAU,SAASxkE,KAAKmsB;AACvB,aAAOhpC,KAAKwL,UAAUwT,cAAc,kCAAgCnC,MAAM,KAAK,qBAAmBmsB,MAAM,KAAG;IAC3G,GACDmyC,SAAS,WACR;AAAA,aAAOn7E,KAAKqhF,SAASrhF,KAAK6c,KAAK7c,KAAKgpC,GAAAA;AAAAA,IACpC,GAEDo4C,UAAU,WAAA;AACT,UAAIljE,OAAOle,KAAKwL,UAAUvH,iBAAiB;AAC3C,UAAI+W,OAAO;AACX,eAAQ7W,IAAI,GAAGA,IAAI+Z,KAAK9Z,QAAQD,KAAI;AACnC6W,aAAK7W,KAAK,CACV;AAAA,YAAI0Y,MAAMqB,KAAK/Z;AACf,YAAIc,QAAQ4X,IAAI5Y,iBAAiB,IAAA;AACjC,iBAAQyF,IAAI,GAAGA,IAAIzE,MAAMb,QAAQsF,KAAI;AACpC,cAAIqvB,OAAO9zB,MAAMyE,CACjB;AAAA,cAAI43E,UAAU;AACd,cAAIr+E,MAAMtD,WAAUmS,cAAcinB,IAClC;AAAA,cAAG91B,IAAI8O,QAAQ,WAAA,IAAA,MAAqB9O,IAAI8O,QAAQ,YAAiB,IAAA,MAAK9O,IAAI8O,QAAQ,kBAAA,IAAA,IAAyB;AAC1GuvE,sBAAU;AAAA,UACV;AACDtmE,eAAK7W,CAAGuF,EAAAA,CAAAA,IAAK43E;AAAAA,QACb;AAAA,MACD;AACD,aAAOtmE;AAAAA,IACP,GAGD8K,MAAM,EACLc,OAAS,SAAS/gB,GAAAA;AACjB,UAAImV,OAAOhb,KAAKohF;AAChB,UAAIG,SAASvhF,KAAK6c;AAClB,UAAI2kE,SAASxhF,KAAKgpC,MAAM;AACxB,UAAA,CAAIhuB,KAAKumE,MAAYvmE,KAAAA,CAAAA,KAAKumE,MAAQC,EAAAA,MAAAA,GAAQ;AACzC,YAAGxmE,KAAKumE,SAAS,CAAG,GAAA;AACnBA,mBAASA,SAAS;AAClBC,mBAAS;AAAA,QACf,OAAU;AACJA,mBAASxhF,KAAKgpC;AAAAA,QACd;AAAA,MACD;AAED,UAAInqB,OAAO,IAAIlf,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAW+1E,QAAQC,MAAAA;AACjF,WAAI3iE,KAAK2lB,QAAAA,GAAU;AAClB3lB,eAAOA,KAAKsqC,SACZ;AAAA,MAAA;AAEDnpD,WAAKk8E,OAAOr9D,IAAAA;AAAAA,IACZ,GACDrc,MAAQ,SAASqD,GAChB;AAAA,UAAImV,OAAOhb,KAAKohF,SAAAA;AAChB,UAAIG,SAASvhF,KAAK6c;AAClB,UAAI2kE,SAASxhF,KAAKgpC,MAAM;AACxB,UAAIhuB,CAAAA,KAAKumE,YAAYvmE,KAAKumE,MAAAA,EAAQC,SAAQ;AACzC,YAAGxmE,KAAKumE,SAAS,IAAG;AACnBA,mBAASA,SAAS;AAClBC,mBAASxmE,KAAKumE,MAAQn9E,EAAAA,SAAS;AAAA,QACrC,OAAU;AACJo9E,mBAASxhF,KAAKgpC;AAAAA,QACd;AAAA,MACD;AAED,UAAInqB,OAAO,IAAIlf,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAW+1E,QAAQC,MACjF;AAAA,UAAA,CAAI3iE,KAAK2lB,QAAU,GAAA;AAClB3lB,eAAOA,KAAKsqC;MACZ;AAEDnpD,WAAKk8E,OAAOr9D,IACZ;AAAA,IAAA,GACDi3D,MAAQ,WACP;AAAA,UAAI96D,OAAOhb,KAAKohF;AAChB,UAAIG,SAASvhF,KAAK6c,MAAM;AACxB,UAAI2kE,SAASxhF,KAAKgpC;AAElB,UAAA,CAAIhuB,KAAKumE,MAAYvmE,KAAAA,CAAAA,KAAKumE,QAAQC,MAAQ,GAAA;AACzCD,iBAASvhF,KAAK6c;AAAAA,MACd;AAED,UAAIgC,OAAO,IAAIlf,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAW+1E,QAAQC,MAAAA;AACjF,UAAI3iE,CAAAA,KAAK2lB,WAAU;AAClB3lB,eAAOA,KAAKsqC,SACZ;AAAA,MAAA;AAEDnpD,WAAKk8E,OAAOr9D,IAAAA;AAAAA,IACZ,GACDg3D,IAAM;AACL,UAAI76D,OAAOhb,KAAKohF,SAChB;AAAA,UAAIG,SAASvhF,KAAK6c,MAAM;AACxB,UAAI2kE,SAASxhF,KAAKgpC;AAElB,WAAIhuB,KAAKumE,MAAAA,KAAAA,CAAYvmE,KAAKumE,MAAQC,EAAAA,MAAAA,GAAQ;AACzC,YAAIlyE,QAAQ;AACZ,YAAGtP,KAAKgpC,MAAMhuB,KAAKhb,KAAK6c,GAAKzY,EAAAA,SAAS,GAAE;AACvCkL,kBAAQ;AAAA,QACR;AACDtP,aAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBqN,cAAchhF,KAAKwL,WAAW8D;MACjF,OAAS;AACJ,YAAIuP,OAAO,IAAIlf,WAAUg0E,oBAAoBuN,YAAYlhF,KAAKwL,WAAW+1E,QAAQC,MACjF;AAAA,YAAA,CAAI3iE,KAAK2lB,QAAU,GAAA;AAClB3lB,iBAAOA,KAAKsqC,SAAAA;AAAAA,QACZ;AAEDnpD,aAAKk8E,OAAOr9D,IACZ;AAAA,MAAA;AAAA,IAED,GACD62D,OAAS,SAAS7vE;AACjB7F,WAAKm7E,QAAAA,EAAUn8D,cAAc,iBAAA,EAAmBxB;IAChD,EAKJ7d,EAAAA,CAAAA;AAAAA,IAAAA,WAAUg0E,oBAAoBuN,YAAY7oE,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoBuN,YAAY7oE,UAAUyN;EAEhH;AC1Le,WAAQ+P,UAACl2B,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoB0K,WAAW,SAAS/uE,OACjDtP;AAAAA,WAAKsP,QAAQA,SAAS;AAAA,IACvB;AAEA3P,IAAAA,WAAUg0E,oBAAoB0K,SAAShmE,YAAY1Y,WAAU66E,SAC5D76E,WAAUg0E,oBAAoBsI,YAC9B,EACCd,SAAS,SAAS7rE;AACjB,aAAO3P,WAAUqE,WAAWgb,cAAc;IAC1C,GAEDk4D,WAAU,MAEV1yC,SAAS,WAAA;AACR,aAAO;AAAA,IACP,GACD2kB,UAAS,WAAA;AACR,aAAOnpD;AAAAA,IACP,GAED8lB,MAAM,EACL,sBAAqB;AACpB9lB,WAAKk8E,OAAO,IAAIv8E,WAAUg0E,oBAAoBsE,UAC9C;AAAA,IAAA,EAAA,EAAA,CAAA;AAKJt4E,IAAAA,WAAUg0E,oBAAoB0K,SAAShmE,UAAUi/D,QAAQ33E,WAAUg0E,oBAAoB0K,SAAShmE,UAAUyN,IAE1G;AAAA,EAAA;AChCe,WAAQ27D,OAAC9hF,YAAAA;AAAAA,KAIxB;AACC,UAAI+hF,cAAc,CAElB;AAAA,eAASC;AACR,eAAUD,CAAAA,CAAAA,YAAkB;AAAA,MAC5B;AAED,eAASx7C,UAAUC,OAAO34B,QAAAA;AACzB,eAAM24B,SAASA,SAAS34B,QAAO;AAC9B24B,kBAAQA,MAAM14B;AAAAA,QACd;AAED,eAAU04B,CAAAA,EAAAA,SAAS34B;AAAAA,MACnB;AAED,eAASo0E,WAAWz/C,KAAAA;AACnB9oB,mBAAW,WACV;AAAA,cAAG1Z,WAAU8gB,YAAW;AACvB,mBAAO;AAAA,UACP;AACD,cAAIkhE,CAAAA,QAAAA,KAAAA,CAAez7C,UAAUrmC,SAASglC,eAAellC,WAAUqE,UAAc,GAAA;AAC5ErE,YAAAA,WAAU06B,MAAAA;AAAAA,UACV;AAAA,QACD,GAAE,CAAA;AAAA,MACH;AACD,eAASwnD,WAAW1/C;AACnBxiC,QAAAA,WAAUu8B,YAAYiG,KAAK,WAAWs1C;AACtC93E,QAAAA,WAAU6B,MAAM2gC,KAAK,WAAWs1C,SAAAA;AAChCiK,oBAAY79E,KAAKs+B,GAAAA;AAAAA,MAEjB;AAED,eAAS2/C;AACR,YAAI3/C,MAAMu/C,YAAYxpE,IACtB;AAAA,YAAGiqB,KAAK;AACPxiC,UAAAA,WAAUu8B,YAAYiG,KAAK,WAAWs1C,SACtC;AAAA,QAAA;AACDmK;MAEA;AAED,eAASG,WAAW5/C,KAIlB;AAAA,eAAOA,OAAOu/C,YAAYA,YAAYt9E,SAAS,CAAA;AAAA,MAGhD;AAED,eAASqzE,UAAUj2E;AAClB,YAAIA,SAAQA,UAASP,OAAOO;AAC5B,YAAIuE,SAASvE,OAAMwgF;AACnB,YAAA,CAAID,WAAWh8E,MAAS;AAAA;AAExBpG,QAAAA,WAAUg0E,oBAAoB8D,UAAU1xE,QAAQvE,MAAAA;AAAAA,MAChD;AAED,eAASygF,gBAAAA;AACRJ,mBAAWliF,WAAU0jD,YAAAA,CAAAA;AAAAA,MACrB;AAED1jD,MAAAA,WAAUiG,YAAY,cAAcq8E,aAAAA;AACpCtiF,MAAAA,WAAUiG,YAAY,mBAAmBk8E;AAEzCniF,MAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AAAWg8E;MAAa,CAElE;AAAA,UAAA,CAAIjiF,WAAUuiF,qBAAqB;AAClCviF,QAAAA,WAAUuiF,sBAAsB;AAEhC,YAAIC,eAAe;AACnB,YAAIC,cAAc;AAClB,cAAMV,eAAc;AACpB/hF,QAAAA,WAAUiG,YAAY,kBAAkB,SAASu8B;AAChDggD,yBAAetiF,SAASglC;AACxBu9C,wBAAcD;AAEd,iBAAMC,eAAeziF,WAAUmS,cAAcswE,WAAAA,EAAarwE,QAAQ,cAAkB,IAAA,GAAE;AACrFqwE,0BAAcA,YAAY30E;AAAAA,UAC1B;AACD,cAAG20E,aAAY;AACdA,0BAAcA,YAAY30E;AAAAA,UAC1B;AAED9N,UAAAA,WAAUu8B,YAAYiG,KAAK,WAAWs1C,SAAAA;AACtC93E,UAAAA,WAAU6B,MAAM2gC,KAAK,WAAWs1C,SAAAA;AAChCiK,UAAAA,aAAY79E,KAAKs+B,GAAAA;AAAAA,QACpB;AAGExiC,QAAAA,WAAUiG,YAAY,uBAAuB,WAAA;AAC5C,cAAIu8B,MAAMu/C,aAAYxpE;AACtB,cAAGiqB,KAAK;AACPxiC,YAAAA,WAAUu8B,YAAYiG,KAAK,WAAWs1C;UACtC;AACDp+D,qBAAW;AACV,gBAAG1Z,WAAU8gB,YAAW;AACvB,qBAAO;AAAA,YACP;AACD,gBAAIuhE,gBAAgBniF,SAASglC;AAC7B,mBAAMm9C,iBAAiBriF,WAAUmS,cAAckwE,aAAAA,EAAejwE,QAAQ,eAAA,IAAmB,GAAE;AAC1FiwE,8BAAgBA,cAAcv0E;AAAAA,YAC9B;AACD,gBAAGu0E;AACF;AAGD,gBAAGG,gBAAgBA,aAAa10E,YAAW;AAC1C00E,2BAAa9nD,MAElB;AAAA,YAAA,WAAa+nD,eAAeA,YAAY30E,YAAW;AAC9C20E,0BAAY/nD,MACZ;AAAA,YAAA;AACD8nD,2BAAe;AACfC,0BAAc;AAAA,UAEd,GAAE,CAAA;AAAA,QACN,CACE;AAAA,MAAA;AAEDziF,MAAAA,WAAUg0E,oBAAoBgO,UAAUA;AAAAA,IAGxC,GA3HD;AAAA,EA6HA;ACjIe,WAAQU,KAAC1iF,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoB2H,aAAa,EAC1CzlE,UAAU,OACVwlE,YAAY,MACZ4F,YAAY,IAAIthF,WAAUg0E,oBAAoB4G,iBAE9C2C,oBAAoB,SAAUj2E;AAC7B,UAAI1E,KAAKC;AAET,UAAIsoD,aAAanrD,WAAUqE,WAAWgb,cAAc,+BACpD;AAAA,UAAA,CAAI8rC,YAAW;AACdA,qBAAanrD,WAAUqE,WAAWgb,cAAc,eAAA;AAAA,MAChD;AAED,UAAG8rC,YAAW;AACbvoD,cAAMuoD,WAAWz9B;AACjB7qB,eAAOsoD,WAAW59B;AAAAA,MAClB;AAEDjmB;AAEA,UAAG6jD,YAAW;AACbA,mBAAWz9B,YAAY9qB;AACvBuoD,mBAAW59B,aAAa1qB;AAAAA,MACxB;AAAA,IACD,GACDo4E,QAAQ,WAAA;AACP,WAAIj7E,WAAUqE,YAAW;AAExB;AAAA,MACA;AAEDhE,WAAK6V,WAAW;AAChB,UAAIk6C,QAAO/vD;AACXA,WAAKk9E,mBAAmB;AACvBntB,QAAAA,MAAKkxB,WAAWrG,OAChB7qB;AAAAA,QAAAA,MAAK4rB,cAAc5rB,MAAKuyB,cAAAA,CAAAA;AAAAA,MAC3B;IACE,GAEDvQ,SAAS;AACR/xE,WAAK6V,WAAW;AAChB7V,WAAKihF,WAAWlP,QAChB;AAAA,IAAA,GAEDtwE,WAAW,WACV;AAAA,aAAA,CAAA,CAASzB,KAAK6V;AAAAA,IACd,GAED4kE,gBAAgB,WAAA;AACf,aAAOz6E,KAAKihF,WAAWxG;IACvB,GAED8H,gBAAgB;AACfviF,WAAK27E,cAAc37E,KAAKy6E,eAAAA,CAAAA;AAAAA,IACxB,GAED6H,eAAe,WAAA;AACd,UAAIz7D,OAAO7mB,KAAKq7E;AAChB,UAAGx0D,QAAAA,CAASA,KAAK2d,QAAAA,GAAU;AAC1B3d,eAAOA,KAAKsiC;MACZ;AACD,aAAOtiC;AAAAA,IACP,GAED27D,iBAAiB,WAChBxiF;AAAAA,WAAKyiF,SAASziF,KAAKihF,UAAAA;AACnBjhF,WAAK+kC,UAAU/kC,KAAKihF;IACpB,GAEDtF,eAAe,SAASn4D,KAAAA;AACvB,WAAIA,OAAOA,CAAAA,IAAGghB;AACb;AAED,UAAGxkC,KAAKq7E,YAAW;AAClB,YAAGr7E,KAAKq7E,WAAWc,UAAU34D,GAAAA,GAAI;AAChC;AAAA,QACA;AAAA,MACD;AACD,UAAGxjB,KAAKyB,UAAY,GAAA;AACnBzB,aAAKyiF,SAASziF,KAAKq7E;AACnBr7E,aAAKq7E,aAAa73D;AAClBxjB,aAAK+kC,UAAU/kC,KAAKq7E,UAAAA;AAAAA,MACpB;AAAA,IACD,GAEDt2C,WAAW,SAASvhB,KACnB;AAAA,UAAGA,OAAMA,IAAG6W,OAAM;AACjB7W,QAAAA,IAAG6W;AACH,YAAG7W,IAAG23D,WAAWt7E,SAASglC,iBAAiBrhB,IAAG23D,QAAU,GAAA;AACvDn7E,eAAK27E,cAAc,IAAIh8E,WAAUg0E,oBAAoB0K;QACrD;AAAA,MACD;AAAA,IACD,GACDoE,UAAU,SAASj/D,KAClB;AAAA,UAAGA,OAAMA,IAAGm3D,MAAK;AAChBn3D,QAAAA,IAAGm3D,KAAAA;AAAAA,MACH;AAAA,IACD,GAEDqC,iBAAiB,SAASj9E,KAAAA;AACzB,UAAI2iF,SAAS/iF,WAAUqE,WAAWgb,cAAc,qBAAmBrf,WAAU+B,OAAOwC,kBAAgB,OAAKnE,MAAG;AAC5G,UAAG2iF,UAAUA,OAAO1hE,aAAY;AAE/B,eAAO0hE;AAAAA,MACP;AACD,aAAO;AAAA,IACP,GAEDC,gBAAgB,SAAU98E;AAEzB,UAAGA,EAAE+8E,kBAAiB;AACrB;AAAA,MACA;AAED,UAAI/9C,gBAAgB7kC,KAAKsiF,cAAAA;AAEzB,UAAG3iF,WAAUg0E,oBAAoBgO,eAC9B98C,iBAAiBA,cAAcr5B,aAAa7L,WAAU6Z,MAAMirD,IAAIvhC,UAAU,EAACn9B,QAAO8+B,cAAcr5B,aAAY,qBAAqB,KAAA;AACnI;AAED,UAAG7L,WAAUsG,SAAW+iB,EAAAA,aAAahpB,KAAKg9E,gBAAgBr9E,WAAUsG,WAAW+iB,SAC9E;AAAA;AAED,UAAKhpB,CAAAA,KAAKyB;AACT;AAEDoE,UAAIA,KAAK5E,OAAOO;AAEhB,UAAIqhF,gBAAgB7iF,KAAKihF;AAEzB,UAAIzM,UAAU70E,WAAUg0E,oBAAoBC,UAAUgB,oBAAoB/uE,CAAAA;AAE1E,WAAIg/B,eAAc;AACjB7kC,aAAKuiF,eAAAA;AAAAA,MACL,WAAQ19C,cAAcsyC,YAAY3C,OAAS,GAAA;AAC3C3vC,sBAAcuyC,SAAS5C,SAAS3uE,CAChC;AAAA,MAAA,WAAQg9E,cAAc1L,YAAY3C,UAAS;AAC3CqO,sBAAczL,SAAS5C,SAAS3uE,CAAAA;AAAAA,MAChC;AAAA,IAED,GAEDi9E,UAAU,MACVhqE,OAAO,SAAS7R,UAAU6R,QAAAA;AAEzBQ,mBAAatZ,KAAK8iF,QAAAA;AAClB9iF,WAAK8iF,WAAWzpE,WAAWpS,UAAU6R,UAAS;IAE9C,EAGF;AAAA,EAAA;ACzJe,WAAQiqE,eAACpjF,YAAAA;AAGxBA,IAAAA,WAAUqjF,kBAAkB;AAE3BrjF,MAAAA,WAAU+B,OAAOuhF,UAAU;AAE3BtjF,MAAAA,WAAUg0E,oBAAoB4K,aAAa;AAC3C5+E,MAAAA,WAAUg0E,oBAAoB6K,gBAAgB;AAC9C,UAAI0E,SAAS;AAEb,UAAIx2D,MAAM,CAAA;AAEV,UAAI7sB,CAAAA,SAASM,MAAK;AACjBR,QAAAA,WAAU6B,MAAMP,QAAQ,QAAQ,WAC/BtB;AAAAA,UAAAA,WAAU6B,MAAM3B,SAASM,MAAM,aAAagjF,kBAAAA;AAAAA,QAC/C;MACA,OAAM;AACJxjF,QAAAA,WAAU6B,MAAM3B,SAASM,MAAM,aAAagjF;MAC5C;AAED,eAASA,mBAAmB3hF,QAC3BA;AAAAA,QAAAA,SAAQA,UAASP,OAAOO;AACxBkrB,YAAI5F,IAAItlB,OAAMyrB;AACdP,YAAI3F,IAAIvlB,OAAM4rB;AAAAA,MACd;AACD,eAAS40D,gBAAAA;AAER,YAAIoB,eAAe;AACnB,YAAIC,gBAAgB;AAEpB,YAAIt9E,SAASlG,SAASyjF,iBAAiB52D,IAAI5F,GAAG4F,IAAI3F;AAClD,eAAMhhB,UAAUA,UAAUpG,WAAU2kB,MAAK;AACxCve,mBAASA,OAAO0H;AAAAA,QAChB;AACD21E,0BAAkBr9E,UAAUpG,WAAU2kB;AAEtC++D,wBAAgB1jF,WAAUg0E,oBAAoB2H,WAAW75E,UAAAA;AAEzD,eAAO2hF,gBAAgBC;AAAAA,MACvB;AAED1jF,MAAAA,WAAUiG,YAAY,eAAe,SAAS7F,KAAG8F,GAChD;AAAA,YAAIi2B,QAAQn8B,WAAUsG;AAGtB,YAAK61B,EAAAA,MAAMr8B,QAAQq8B,MAAM3rB,WAAU;AAClC;AAAA,QACA;AACD,YAAIlD,WAAWtN,WAAUyG,cAAcP,CAAAA;AACvClG,QAAAA,WAAUg0E,oBAAoB4K,aAAatxE,SAAS9J;AACpDxD,QAAAA,WAAUg0E,oBAAoB6K,gBAAgBvxE,SAAS5G;AAAAA,MACzD,CAAA;AAEC,eAASk9E,kBAAkB/8E,IAAAA;AAAAA,eACnBA,GAAGoD;AAAiBpD,eAAAA,GAAGkrD;AACvBlrD,eAAAA,GAAG0kE;eAAkB1kE,GAAG4kE;AAAAA,MAC/B;AAED,eAASoY,UAAUh9E;AAClB,eAAO7G,WAAUoP,WAAW,CAAE,GAAEvI,EAChC;AAAA,MAAA;AAED7G,MAAAA,WAAU8jF,qBAAqB,SAASj9E;AACvC,YAAIrD,OAAOxD,WAAUg0E,oBAAoB4K;AACzC,YAAIl4E,UAAU1G,WAAUg0E,oBAAoB6K;AAE5C,YAAI1yD,iBAAiBtlB,GAAGxD,WAASwD,GAAGzD;AAEpC,YAAI2D,OAAO88E,UAAUh9E,EACrB+8E;AAAAA,0BAAkB78E;AAClBA,aAAK3D,aAAa,IAAIyB,KAAKrB;AAC3BuD,aAAK1D,WAAW,IAAIwB,KAAKkC,KAAK3D,WAAWgC,QAAY+mB,IAAAA,cAAAA;AAErD,YAAGzlB,SAAQ;AACV,cAAIyE,WAAWnL,WAAUi8B,sBAEzB;AAAA,cAAGj8B,WAAU+B,OAAO0D;AACnBsB,iBAAKoE,QAAAA,IAAYtE,GAAGsE,QAEpBpE;AAAAA;AAAAA,iBAAKoE,YAAYzE;AAAAA,QAClB;AACD,eAAOK;AAAAA,MACT;AACC/G,MAAAA,WAAU+jF,YAAY,SAASC,SAASC,aAAaC;AACpD,YAAGlkF,WAAUiL,UAAU,uBAAuB,CAAC+4E,SAASC,aAAaC,kBAAkB,OAAM;AAC5F;AAAA,QACA;AACDlkF,QAAAA,WAAUwH,SAASy8E,WACnBjkF;AAAAA,QAAAA,WAAUiL,UAAU,iBAAiB,CAAC+4E,SAASC,aAAaC;MAC9D;AAEClkF,MAAAA,WAAUmkF,qBAAqB,WAC9B;AAAA,YAAG9jF,KAAK67B,gBAAAA,KAAAA,CAAsB77B,KAAK+7B,kBAAuB/7B,KAAAA,KAAK0B,OAAOuhF,SAAQ;AAC7E,iBAAO;AAAA,QACP;AACD,eAAO;AAAA,MACT;AAEC,eAASc,mBAAAA;AACR,YAAIl9D,OAAOlnB,WAAUg0E,oBAAoB2H,WAAWgH,cAAAA;AACpD,YAAGz7D,QAAQA,KAAKzD;AAAS,iBAAOyD,KAAKzD;AACrC,eAAOzjB,WAAUipB;AAAAA,MACjB;AAEDjpB,MAAAA,WAAU6B,MAAM3B,UAAU,WAAW,SAASgG;AAE7C,aAAKA,EAAEkvE,WAAWlvE,EAAEmvE,YAAYnvE,EAAE41C,WAAW,MAAO97C,WAAUqkF,iBAAAA,CAAkBrkF,WAAUg0E,oBAAoB2H,WAAW75E,aAAa;AACrI9B,UAAAA,WAAUg0E,oBAAoB2H,WAAWzlE,WAAWmsE,cACpD;AAAA,QAAA;AAAA,MACH;AAECriF,MAAAA,WAAUo8E,sBAAsB,SAASl2E,GACxC;AAAA,YAAA,CAAIlG,WAAUmkF,mBAAAA;AAAsB,iBAAO;AAE3C,YAAIj+E,EAAE41C,WAAW,MAAM51C,EAAE41C,WAAW,IAAI;AACvC51C,YAAE6jB,eAAe;AAEjB,cAAI7K,OAAOlf,WAAUwD,KAAKC,IAAIzD,WAAUkV,OAAOhP,EAAE41C,WAAW,UAAU,GAAI97C,WAAUiN,KACpFjN;AAAAA,UAAAA,WAAU8X,eAAeoH,IACzB;AAAA,iBAAO;AAAA,QACP;AAED,YAAIwK,YAAY06D,iBAAAA;AAChB,aAAKl+E,EAAEkvE,WAAWlvE,EAAEmvE,YAAYnvE,EAAE41C,WAAW,IAAI;AAChD,cAAIpyB,WAAW;AACd1pB,YAAAA,WAAUqkF,gBAAgBR,UAAU7jF,WAAUmG,SAASujB,SACvD65D,CAAAA;AAAAA,qBAAS;AACTvjF,YAAAA,WAAUiL,UAAU,iBAAiB,CAACjL,WAAUmG,SAASujB,SACzD,CAAA,CAAA;AAAA,UAAA;AACD,iBAAO;AAAA,QACP;AACD,aAAKxjB,EAAEkvE,WAAWlvE,EAAEmvE,YAAYnvE,EAAE41C,WAAW,IAAI;AAChD,cAAIpyB,WAAW;AACd65D,qBAAS;AACT,gBAAI18E,KAAK7G,WAAUqkF,gBAAgBR,UAAU7jF,WAAUmG,SAASujB;AAEhE1pB,YAAAA,WAAUiY,YAAYpR,GAAGzG,EACzBJ;AAAAA,YAAAA,WAAUiL,UAAU,cAAc,CAACpE,EACnC,CAAA;AAAA,UAAA;AAAA,QACD;AAED,aAAKX,EAAEkvE,WAAWlvE,EAAEmvE,YAAYnvE,EAAE41C,WAAW,MAAMumC,cAAkB,GAAA;AACpE,cAAIx7E,KAAK7G,WAAUqkF,gBAAgBrkF,WAAUmG,SAASnG,WAAUqkF,cAAcjkF,EAAAA,IAAMJ,WAAUqkF;AAC9Fx9E,eAAKA,MAAM7G,WAAUqkF;AAErB,cAAIx9E,IAAI;AACP,gBAAIy9E,SAAStkF,WAAU8jF,mBAAmBj9E;AAC1C,gBAAI08E,QAAQ;AACXe,qBAAOlkF,KAAKJ,WAAU+O,IACtB/O;AAAAA,cAAAA,WAAU+jF,UAAUR,QAAQe,QAAQz9E,EACpC;AAAA,YAAA,OACI;AACJ,kBAAI+B,MAAM5I,WAAUiL,UAAU,wBAAuB,CAACq5E,QAAQp+E,GAAG,OAAOW,EAAAA,CAAAA;AACxE,kBAAI+B,KAAK;AACR5I,gBAAAA,WAAU+jF,UAAUR,QAAQe,QAAQz9E,EAAAA;AACpC08E,yBAAS;AAAA,cACT;AAAA,YACD;AAAA,UAED;AACD,iBAAO;AAAA,QACP;AAAA,MACH;AAAA,IACA;AACAvjF,IAAAA,WAAUqjF;EAEV;ACvKe,WAAQkB,mBAACvkF,YAExBA;AAAAA,IAAAA,WAAUg0E,oBAAoBwQ,0BAA0B,WAAA;AACvD,UAAI7I,aAAa37E,WAAUg0E,oBAAoB2H;AAE/C,UAAIqH,iBAAiB,SAAS98E;AAC7B,YAAIlG,CAAAA,WAAU+B,OAAOuhF;AAAS;AAE9B,eAAO3H,WAAWqH,eAAe98E,CACnC;AAAA,MAAA;AAEC,UAAIu+E,eAAe,WAAA;AAClB9I,mBAAW4B,mBAAmB;AAC7B5B,qBAAWkH,gBAAAA;AAAAA,QACd;MACA;AAEC,UAAI6B;AACJ1kF,MAAAA,WAAUiG,YAAY,gBAAgB,WAAA;AACrC,aAAIjG,WAAU+B,OAAOuhF;AAAS;AAC9B,YAAA,EAAK3H,WAAW75E,UAAgB9B,KAAAA,CAAAA,WAAUsG,SAAW+iB,EAAAA;AAAY;AAEjE1P,qBAAa+qE,QAAAA;AACbA,mBAAWhrE,WAAW,WAAA;AACrB,cAAG1Z,WAAU8gB,YAAW;AACvB,mBAAO;AAAA,UACP;AACD,cAAA,CAAI66D,WAAW75E,UACd65E;AAAAA,uBAAWV;AACZ0J,4BACH;AAAA,QAAA,CAAA;AAAA,MACA,CAEC;AAAA,UAAIA,oBAAoB,WACvB;AAAA,YAAA,CAAIhJ,WAAW75E,UACd;AAAA;AAED,YAAI45E,aAAaC,WAAWgH,cAC5B;AAAA,YAAA,CAAIjH;AACH;AAED,YAAA,CAAIA,WAAW72C,QAAU,GAAA;AACxB62C,uBAAaA,WAAWlyB,SAAAA;AAAAA,QACxB;AAED,YAAA,CAAIkyB,cAAcA,sBAAsB17E,WAAUg0E,oBAAoBqN,iBAAiB3F,sBAAsB17E,WAAUg0E,oBAAoBuN;AAC1I;AAED5F,mBAAW4B,mBAAmB,WAC7B7B;AAAAA,qBAAWhhD,MAAM,IACpB;AAAA,QAAA,CAAA;AAAA,MACA;AAEC16B,MAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzC,YAAI4F,YAAY7L,WAAUqE;AAC1BrE,QAAAA,WAAUu8B,YAAYr8B,UAAU,WAAW8iF,cAAAA;AAC3ChjF,QAAAA,WAAUu8B,YAAY1wB,WAAW,aAAa+4E,gBAAAA;AAC9C5kF,QAAAA,WAAUu8B,YAAY1wB,WAAW,SAAS44E,YAG1C;AAAA,YAAGzkF,WAAU+B,OAAOuhF,SAAQ;AAE3BtjF,UAAAA,WAAU6B,MAAM3B,UAAU,WAAW8iF;AACrChjF,UAAAA,WAAU6B,MAAMgK,WAAW,aAAa+4E;AACxC5kF,UAAAA,WAAU6B,MAAMgK,WAAW,SAAS44E,YAAAA;AAEpC54E,oBAAUsR,aAAa,YAAY,GAEtC;AAAA,QAAA,OAAO;AACJtR,oBAAUqvE,gBAAgB;QAC1B;AAAA,MACH,CAAA;AAEC,eAAS0J,iBAAiB1+E,GAAAA;AACzB,YAAIlG,CAAAA,WAAU+B,OAAOuhF;AAAS,iBAAO;AAErC,cAAMx3E,OAAO9L,WAAUqC,QACvB;AAAA,YAAIwiF,gBAAgB;AACpB,YAAI7kF,WAAUsG,SAAAA,EAAWxG,SAAS,SAAS;AAC1C+kF,0BAAgB7kF,WAAUg0E,oBAAoBztC,UAAUrgC,EAAEE,UAAUF,EAAEisB,YAAYnyB,WAAUqE,WAAWgb,cAAc;QACrH,WAAUvT,QAAQA,KAAKxJ,WAAW,YAAY;AAC9CuiF,0BAAgB7kF,WAAUg0E,oBAAoBztC,UAAUrgC,EAAEE,UAAUF,EAAEisB,YAAYnyB,WAAUqE,WAAWgb,cAAc;QACxH,OAAS;AACN,gBAAMylE,eAAe9kF,WAAUqE,WAAWC,iBAAiB;AAC3D,gBAAMygF,cAAc32E,MAAMgnB,KAAK0vD;AAC/BD,0BAAgBE,YAAYC,KAAKlmC,WAASA,UAAU54C,EAAEE,OAAO0H;QAC7D;AAED,YAAIif,MAAM/sB,WAAUyG,cAAcP,CAElC;AAAA,YAAIk/B;AACJ,YAAGplC,WAAU+oB,cAAc7iB,EAAEE,UAAUF,EAAEisB,UAAY,GAAA;AACpDiT,sBAAY,IAAIplC,WAAUg0E,oBAAoBuH,MAAMv7E,WAAU+oB,cAAc7iB,EAAEE,UAAUF,EAAEisB,UAAAA,CAAAA;AAAAA,QAC1F,WAAQ0yD,eAAc;AACtBz/C,sBAAY,IAAIplC,WAAUg0E,oBAAoBsE;AAC9C,cAAGvrD,IAAIvpB,QAAQqhF,eAAc;AAC5Bz/C,wBAAYA,UAAUs4C,SAAS,IAAI19E,WAAUg0E,oBAAoBsE,SAASvrD,IAAIvpB,MAAM,MAAMupB,IAAIrmB,OAC9F,CAAA;AAAA,UAAA;AAAA,QACD;AAED,YAAG0+B,WAAW;AACb,cAAKu2C,CAAAA,WAAW75E,UAAa,GAAA;AAC5B65E,uBAAWD,aAAat2C;AAAAA,UAE5B,OAAU;AACN,gBAAIrY,IAAIvpB,QAAQqhF,eAAe;AAC9BlJ,yBAAWxiE,MAAM,WAChBwiE;AAAAA,2BAAWK,cAAc52C,SAC/B;AAAA,cAAA,CAAA;AAAA,YACK;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAED,eAAS6/C,WAAWC,QACnB;AAAA,YAAA,CAAIllF,WAAU+B,OAAOuhF;AAAS;AAC9B,YAAI3H,CAAAA,WAAW75E,UAAa;AAAA;AAG5B,YAAIqjF,YAAYD;AAChB,YAAI9/C,YAAY,IAAIplC,WAAUg0E,oBAAoBuH,MAAM4J,UAAU1hE,OAAAA;AAClE,aAAI2hB,UAAUP,QAAAA,GAAU;AACvB,cAAIugD,YAAYhgD,UAAUx1B,SAASu1E,UAAUv1E;AAC7C,cAAIy1E,UAAUjgD,UAAUv1B,OAAOs1E,UAAUt1E;AACzC,cAAIy1E,cAAclgD,UAAU1+B,WAAWy+E,UAAUz+E;AAEjD0+B,sBAAY,IAAIplC,WAAUg0E,oBAAoBsE,SAAS8M,WAAWC,SAASC,WAC3E;AAAA,cAAA,CAAIlgD,UAAUP,QAAAA,GAAU;AACvBO,wBAAY,IAAIplC,WAAUg0E,oBAAoBsE;AAAAA,UAC9C;AAAA,QACD;AAEDqD,mBAAWK,cAAc52C,SAAAA;AACzB,YAAIle,OAAOy0D,WAAWgH;AACtB,YAAGz7D,QAAQA,KAAKs0D,WAAWt7E,SAASglC,iBAAiBhe,KAAKs0D,WAAU;AACnEG,qBAAWv2C,UAAUu2C,WAAWgH,cAAAA,CAAAA;AAAAA,QAChC;AAAA,MACD;AAGD,UAAI1qE,cAAcjY,WAAUiY;AAC5BjY,MAAAA,WAAUiY,cAAc,SAAS7X,KAChC;AAAA,YAAIwI,MAAMqP,YAAYxJ,MAAMpO,MAAMiU,SAAAA;AAClC,YAAGtU,WAAU+B,OAAOuhF,WAAW3H,WAAW75E,UAAAA,GAAY;AACrD,cAAG9B,WAAUsG,SAAWojB,EAAAA,aAAatpB,KAAG;AACvC,gBAAI2F,UAAU,IAAI/F,WAAUg0E,oBAAoBuH,MAAMn7E,GAAAA;AAEtD,gBAAIJ,CAAAA,WAAUsG,WAAWijB,aAAY;AACpC07D,yBAAWl/E,OACX;AAAA,YAAA;AAAA,UACD;AAAA,QACD;AACD,eAAO6C;AAAAA,MACT;AAEC5I,MAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAChD;AAAA,YAAA,CAAIJ,WAAU+B,OAAOuhF;AAAS,iBAAO;AACrC,YAAG3H,WAAW75E,UAAAA,GAAY;AACzB,cAAI45E,aAAaC,WAAWgH,cAC5B;AAAA,cAAGjH,WAAWj4D,WAAWrjB,KAAG;AAC3Bu7E,uBAAWK,cAAc,IAAIh8E,WAAUg0E,oBAAoBsE,UAC3D;AAAA,UAAA;AAAA,QACD;AACD,eAAO;AAAA,MACT,CAECt4E;AAAAA,MAAAA,WAAUiG,YAAY,cAAc,WAAA;AACnC,aAAIjG,WAAU+B,OAAOuhF;AAAS,iBAAO;AACrC,YAAG3H,WAAW75E,aAAY;AACzB,cAAG65E,WAAWgH,cAA2B3iF,aAAAA,WAAUg0E,oBAAoBuH,OAAM;AAC5EI,uBAAWK,cAAc,IAAIh8E,WAAUg0E,oBAAoBsE;UAC3D;AAAA,QACD;AAAA,MACH,CAEA;AAAA,IAAA;AAAA,EAEA;ACjLe,WAAQiN,iBAACvlF;AAExBA,IAAAA,WAAUg0E,oBAAoBwR,iBAAiB,CAE/CxlF;AAAAA,IAAAA,WAAUg0E,oBAAoByR,YAAY,SAASv+D,MAClD;AAAA,UAAIw+D,gBAAgB1lF,WAAUg0E,oBAAoBwR;AAClD,eAAQhhF,IAAI,GAAGA,IAAIkhF,cAAcjhF,QAAQD,KAAI;AAC5C,YAAGnE,KAAKkmC,UAAUrf,MAAMw+D,cAAclhF,CAAAA,CAAAA;AACrC,iBAAO;AAAA,MACR;AACD,aAAO;AAAA,IACR;AAEAxE,IAAAA,WAAUg0E,oBAAoBztC,YAAY,SAASC,OAAO34B;AACzD,aAAM24B,SAASA,UAAU34B,QAAO;AAC/B24B,gBAAQA,MAAM14B;AAAAA,MACd;AAED,aAAA,CAAA,EAAU04B,UAAU34B;AAAAA,IACrB;AAEA7N,IAAAA,WAAUg0E,oBAAoB2R,oBAAoB,WACjD;AAAA,UAAIhK,aAAa37E,WAAUg0E,oBAAoB2H;AAE/C,eAASiK,aAAa1/E,GACrB;AAAA,YAAIE,SAASF,EAAEE;AAEfu1E,mBAAWV,OAAAA;AACXU,mBAAWK,cAAc,IAAIh8E,WAAUg0E,oBAAoBqN,cAAcj7E,QAAQ,CACjF,CAAA;AAAA,MAAA;AAED,eAASy/E,aAAa3/E;AACrB,YAAIE,SAASF,EAAEE,UAAUF,EAAEisB;AAE3B,YAAI4B,OAAO/zB,WAAU6Z,MAAMirD,IAAIvhC,UAAUr9B,GAAG,uBAAuB,KACnE;AAAA,YAAIgZ,OAAOlf,WAAU6Z,MAAMirD,IAAIvhC,UAAUr9B,GAAG,uBAAuB,KAAA;AACnE,YAAIkzB,OAAOp5B,WAAU6Z,MAAMirD,IAAIvhC,UAAUr9B,GAAG,iBAAiB;AAE7D,YAAI4/E,WAAW;AACf,YAAIrsC,YAAY;AAChB,YAAGrgB,MAAK;AACP,cAAI0nC;AACJ,cAAIilB;AACJ,cAAI5F,UAAU/5E;AACd,iBAAM+5E,WAAWA,QAAQ/8C,QAAQpgB,YAAAA,KAAiB,MAAK;AACtDm9D,sBAAUA,QAAQryE;AAAAA,UAClB;AACD,cAAGqyE,SAAQ;AACV4F,iBAAK5F;AACLrf,YAAAA,MAAKilB,GAAGj4E;AAAAA,UACR;AAED,cAAGgzD,OAAMilB,IAAG;AACX,gBAAIxnE,OAAOuiD,IAAGhzD,WAAWxJ,iBAAiB,IAAA;AAC1C,qBAAQE,IAAI,GAAGA,IAAI+Z,KAAK9Z,QAAQD,KAAI;AACnC,kBAAG+Z,KAAK/Z,MAAMs8D,KAAG;AAChBglB,2BAAWthF;AACX;AAAA,cACA;AAAA,YACD;AACD,gBAAIc,QAAQw7D,IAAGx8D,iBAAiB,IAChC;AAAA,qBAAQE,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAI;AACpC,kBAAGc,MAAMd,CAAAA,KAAMuhF,IAAG;AACjBtsC,4BAAYj1C;AACZ;AAAA,cACA;AAAA,YACD;AAAA,UACD;AAAA,QACD;AACD,YAAIyb,OAAO/Z,EAAEm8E;AACb1G,mBAAWxiE,MAAM,WAAA;AAChB,cAAG4a,QAAQ7U,QAAQka,MAAK;AAEvB,gBAAIrzB;AACJ,gBAAGguB,MAAK;AACPhuB,wBAAU,IAAI/F,WAAUg0E,oBAAoBqN,cAAcphE,MAAM,CAAA;AAChE07D,yBAAWK,cAAc,IAAIh8E,WAAUg0E,oBAAoBqN,cAAcphE,MAAM,CAAA,CAAA;AAAA,YAC/E,WAAQf,MAAK;AACbnZ,wBAAU,IAAI/F,WAAUg0E,oBAAoBqN,cAAcphE,MAAM,CAAA;AAAA,YAChE,WAAQmZ,MAAK;AACbrzB,wBAAU,IAAI/F,WAAUg0E,oBAAoBuN,YAAYthE,MAAM6lE,UAAUrsC;YAExE;AAED,gBAAG1zC,SAAQ;AAEV41E,yBAAWV,OACX;AAAA,kBAAGl1E,QAAQ8+B,QAAU,GAAA;AACpB82C,2BAAWD,aAAa;AACxBC,2BAAWK,cAAcj2E,OAAAA;AAAAA,cACzB;AAAA,YAED;AAAA,UACD;AAAA,QAEJ,CACE;AAAA,MAAA;AAED,UAAG/F,WAAUmc,gBAAe;AAC3B,YAAI6pE,gBAAgBhmF,WAAUmc;AAC9Bnc,QAAAA,WAAUmc,iBAAiB,WAAA;AAC1B,cAAI8pE,MAAMD,cAAcv3E,MAAMpO,MAAMiU,SAAAA;AACpC,cAAIoxE,gBAAgB1lF,WAAUg0E,oBAAoBwR;AAElDxlF,UAAAA,WAAUu8B,YAAY0pD,KAAK,SAASJ,YACpC7lF;AAAAA,UAAAA,WAAU6B,MAAMokF,KAAK,SAASJ,YAE9B7lF;AAAAA,UAAAA,WAAUu8B,YAAY0pD,KAAK,SAASL;AACpC5lF,UAAAA,WAAU6B,MAAMokF,KAAK,SAASL;AAE9B,cAAIM,QAAQ;AACZ,mBAAQ1hF,IAAI,GAAGA,IAAIkhF,cAAcjhF,QAAQD,KAAI;AAC5C,gBAAGkhF,cAAclhF,CAAMyhF,KAAAA,KAAI;AAC1BC,sBAAQ;AACR;AAAA,YACA;AAAA,UACD;AACD,cAAIA,CAAAA;AACHR,0BAAcxhF,KAAK+hF,GAAAA;AAEpB,cAAGtK,WAAW75E,UAAAA,GAAY;AACzB,gBAAIolB,OAAOy0D,WAAWgH,cAAAA;AACtB,gBAAGz7D,QAAQA,KAAKrb,aAAao6E,KAAI;AAChCtK,yBAAWv2C,UAAUle;YAC1B,OAAS;AACJ++D,kBAAI9oE,aAAa,YAAY;YAC7B;AAAA,UACL,OAAQ;AACJ8oE,gBAAI9oE,aAAa,YAAY,GAAA;AAAA,UAC7B;AACD,iBAAO8oE;AAAAA,QACV;AAAA,MACE;AAED,UAAGjmF,WAAUge,iBAAgB;AAC5B,YAAImoE,iBAAiBnmF,WAAUge;AAC/Bhe,QAAAA,WAAUge,kBAAkB,SAASioE,KAAKjsE,OACzCisE;AAAAA,gBAAMA,QAAQjmF,WAAUomF,aAAapmF,WAAUomF,WAAW1lF,aAAa;AACvE,cAAIkI,MAAMu9E,eAAe13E,MAAMpO,MAAMiU,SAAAA;AAErC,eAAI2xE,OAAQA,CAAAA,IAAIn4E,YAAW;AAC1B,gBAAI43E,gBAAgB1lF,WAAUg0E,oBAAoBwR;AAClD,qBAAQhhF,IAAI,GAAGA,IAAIkhF,cAAcjhF,QAAQD,KAAI;AAC5C,kBAAGkhF,cAAclhF,CAAAA,KAAMyhF,KAAI;AAC1BjmF,gBAAAA,WAAUu8B,YAAYmpD,cAAclhF,CAAAA,GAAI,SAASohF,YAAAA;AACjDF,8BAAcjyE,OAAOjP,GAAG;AACxBA;AAAAA,cACA;AAAA,YACD;AAAA,UACD;AAED,iBAAOoE;AAAAA,QACV;AAAA,MACE;AAAA,IACF;AAAA,EAEA;ACxIe,WAAQ06E,QAACtjF,YAAAA;AACtBA,IAAAA,WAAU+B,OAAOuhF,UAAU;AAC3BtjF,IAAAA,WAAU+B,OAAO+7E,eAAe;AAChC99E,IAAAA,WAAUqmF,cAAc,SAAS9R,UAAUr2D,SAASooE,OAAAA;AACnD,UAAIC,cAAcC,SAASF,KAC3B;AAAA,UAAGC,aAAY;AACdA,oBAAY7tE,UAAUwK,KAAKqxD,UAAUr2D,OACrC;AAAA,MAAA;AAAA,IACJ;AAEEle,IAAAA,WAAUymF,qBAAqB,SAASlS,UAAU+R,OAAAA;AACjD,UAAIC,cAAcC,SAASF,KAC3B;AAAA,UAAGC,aAAY;AACd,YAAI/R,WAAWx0E,WAAUg0E,oBAAoBC,UAAU5rC,MAAMksC,QAAAA;AAC7D,YAAGC,SAAS/vE,QAAO;AAClB,iBAAO8hF,YAAY7tE,UAAU8+D,YAAYhD,SAAS,CAClD,CAAA;AAAA,QAAA;AAAA,MACD;AAAA,IACJ;AAEEx0E,IAAAA,WAAU0mF,iBAAiB,SAASnS,UAAU+R,OAC7C;AAAA,UAAIC,cAAcC,SAASF,KAAAA;AAC3B,UAAGC,aAAY;AACdA,oBAAY7tE,UAAUg/D,OAAOnD,QAC7B;AAAA,MAAA;AAAA,IACJ;AAEEv0E,IAAAA,WAAU06B,QAAQ,WACjB;AAAA,UAAA,CAAI16B,WAAU+B,OAAOuhF,SAAQ;AAC5B;AAAA,MACA;AACD,UAAIqD,OAAO3mF,WAAUg0E,oBAAoB2H;AACzCgL,WAAK1L,OACL;AAAA,UAAIS,aAAaiL,KAAKhE,cAAAA;AACtB,WAAIjH,cAAcA,sBAAsB17E,WAAUg0E,oBAAoBqN,iBAAiB3F,sBAAsB17E,WAAUg0E,oBAAoBuN,aAAY;AACtJoF,aAAK/D,eACT;AAAA,MAAA,OAAQ;AACJ+D,aAAKvhD,UAAUuhD,KAAKhE,cAAAA,CAAAA;AAAAA,MACpB;AAAA,IACJ;AAEE,aAAS6D,SAAS1mF,MACjB;AAAA,UAAI8mF,SAAS,EACZC,eAAgB7mF,WAAUg0E,oBAAoBqN,eAC9CyF,aAAc9mF,WAAUg0E,oBAAoBuN,aAC5CvhF,WAAYA,WAAUg0E,oBAAoB4G,eAC1Cz2D,UAAYnkB,WAAUg0E,oBAAoB0K,UAC1CqI,UAAY/mF,WAAUg0E,oBAAoBsE,UAC1Cz2E,OAAS7B,WAAUg0E,oBAAoBuH,MAGxC;AAAA,UAAIyL,YAAY,CAAA;AAChB,eAAQxiF,KAAKoiF;AACZI,kBAAUxiF,EAAEwe,YAAiB4jE,CAAAA,IAAAA,OAAOpiF;AAErC1E,cAAQA,OAAO,IAAIkjB,YAEnB;AAAA,aAAOgkE,UAAUlnF,IAAAA,KAAS8mF,OAAO5mF;AAAAA,IACjC;AAEDA,IAAAA,WAAUg0E,sBAAsB;AAEhCh0E,IAAAA,WAAU66E,WAAW,WACpB;AAAA,UAAInF,QAAQtnE,MAAMsK,UAAUpK,MAAMmI,KAAKnC,WAAW;AAClD,UAAI1L,MAAM,CAAA;AACV,eAAQpE,IAAI,GAAGA,IAAIkxE,MAAMjxE,QAAQD,KAAI;AACpC,YAAIvE,MAAMy1E,MAAMlxE,CAChB;AAAA,YAAA,OAAUvE,OAAO,YAAW;AAC3BA,gBAAM,IAAIA;AAAAA,QACV;AAED,iBAAQuK,KAAKvK,KAAI;AAChB2I,cAAI4B,CAAAA,IAAKvK,IAAIuK,CACb;AAAA,QAAA;AAAA,MACD;AACD,aAAO5B;AAAAA,IACV;AAEEmrE,uBAAmB/zE;AACnBq3E,iBAAar3E,UAAAA;AACb63E,qBAAiB73E,UACjB62D;AAAAA,WAAO72D,UACP26E;AAAAA,mBAAe36E;AACfq8E,aAASr8E,UAAAA;AACT28E,gBAAY38E,UACZ6B;AAAAA,UAAM7B;AACN29E,cAAU39E,UAAAA;AACVohF,mBAAephF,UAAAA;AACfwhF,iBAAaxhF,UACbk2B;AAAAA,cAAUl2B;AACV8hF,WAAO9hF,UAAAA;AACP0iF,SAAK1iF,UACLojF;AAAAA,mBAAepjF,UAEf;AAAA,KAAA,WAAA;AACCukF,yBAAmBvkF,UACnBulF;AAAAA,uBAAiBvlF;AAEjB,UAAI27E,aAAa37E,WAAUg0E,oBAAoB2H;AAE/C37E,MAAAA,WAAUg0E,oBAAoBwQ;AAE9B,UAAGxkF,WAAUmc,gBAAe;AAE3Bnc,QAAAA,WAAUg0E,oBAAoB2R,kBAClC;AAAA,MAAA,OAAQ;AAEJ,YAAIsB,aAAajnF,WAAUiG,YAAY,oBAAoB,WAC1DjG;AAAAA,UAAAA,WAAUujB,YAAY0jE,UACtBjnF;AAAAA,UAAAA,WAAUg0E,oBAAoB2R,kBAAAA;AAAAA,QACnC;MACI;AAID,eAASuB;AACR,YAAIlnF,CAAAA,WAAU+B,OAAOuhF;AAAS;AAE9B,YAAIrI;AACJ,YAAIuH,eAAetiF,SAASglC;AAE5B,YAAIs9C,CAAAA,gBAAgBxiF,WAAU6Z,MAAMirD,IAAIvhC,UAAUi/C,cAAc,sBAAsB,KAAO,GAAA;AAC5FvH,mBAAS;AAAA,QACd,OAAS;AACJA,mBAASj7E,WAAUg0E,oBAAoBztC,UAAUi8C,cAAcxiF,WAAUqE,UAAAA,KAAerE,WAAUg0E,oBAAoByR,UAAUjD;QAChI;AAED,eAAOvH;AAAAA,MACP;AAID,eAASkM,YAAYlM,QAAAA;AACpB,YAAGA,UAAWU,CAAAA,WAAW75E,aAAY;AACpC65E,qBAAWV,OACX;AAAA,QAAA,YAASA,UAAUU,WAAW75E,aAAY;AAC1C65E,qBAAWvJ;QACX;AAAA,MACD;AAED,YAAM/Z,aAAavJ,YAAY,WAC9B;AAAA,YAAA,CAAI9uD,WAAUqE,cAAerE,CAAAA,WAAUg0E,oBAAoBztC,UAAUvmC,WAAUqE,YAAYnE,SAASM,OAAM;AACzG;AAAA,QACA;AAED,YAAIy6E,SAASiM;AAEb,YAAGjM,QAAO;AACTkM,sBAAYlM;QACZ,WAAK,CAAIA,UAAUU,WAAW75E,UAAAA,GAAY;AAC1C4X,qBAAW,WAAA;AACV,gBAAG1Z,WAAU8gB,YAAW;AACvB;AAAA,YACA;AAED,gBAAG9gB,WAAU+B,OAAOuhF,SAAQ;AAC3B6D,0BAAYD,oBAAAA,CAAAA;AAAAA,YACnB,OAAW;AACJlnF,cAAAA,WAAUqE,WAAW62E,gBAAgB,UAAA;AAAA,YACrC;AAAA,UAED,GAAE,GAAA;AAAA,QACH;AAAA,MACD,GAAE;AACHl7E,MAAAA,WAAUiG,YAAY,aAAa,WAClC4oD;AAAAA,sBAAcwJ;MAClB,CACG;AAAA,IAAA,GACH;AAAA,EAAA;AC5Le,WAAQ+uB,MAACpnF,YAAAA;AAExBA,IAAAA,WAAUiG,YAAY,oBAAmB;AAExC5F,WAAKgnF,OAAOziD,KAAK,SAASpoB,GAAGC,GAC5B;AAAA,eAAOD,EAAE++B,SAAS9+B,EAAE8+B;AAAAA,MACtB,CAECv7C;AAAAA,MAAAA,WAAUw3D,WAAS,SAAS7G;AAC3BA,WAAG6D,WAAS,CAAC,yBAAwB,IAAG,iBAAgB,aAExDn0D;AAAAA,aAAK4F,YAAY,gBAAe,SAAS7F,KACxC;AAAA,cAAA,CAAKC,KAAKksB,YAAYlsB,KAAKinF,QAAQlnF,GAAOC,KAAAA,KAAK8F,SAAS/F,GAAAA,KAAOC,KAAK8F,SAAS/F,GAAAA,EAAIgnF,SAASz2B,GAAGy2B;AAC5Fz2B,eAAGK,WAAW5wD,KAAG,MAAK,UAAA;AAAA,QAC1B;AACEC,aAAK4F,YAAY,uBAAsB,SAAS7F,KAAAA;AAC/C,cAAGC,KAAK8F,SAAS/F,GAAOC,KAAAA,KAAK8F,SAAS/F,GAAIgnF,EAAAA,SAASz2B,GAAGy2B,OAAO;AAC5D,iBAAK/mF,KAAKinF,QAAQlnF,GAAK;AAAA;AACvB,gBAAI6wD,IAAEN,GAAGrqD,SAASlG,GAElB;AAAA,gBAAI6wD,KAAG,cAAc5wD,KAAKopB,YAAY;AAAGknC,iBAAGK,WAAW5wD,KAAG;AAAS,qBAAO;AAAA,YAAO;AACjF,gBAAI6wD,KAAG;AAAY,qBAAO;AAC1B,gBAAIA,KAAG;AAAiB,qBAAO;AAE/BN,eAAGK,WAAW5wD,KAAG,MAAK,SAAA;AACrB,mBAAO;AAAA,UACR;AACI,mBAAO;AAAA,QACf,CAAA;AACEC,aAAK4F,YAAY,kBAAiB,SAAS7F,KAAAA;AAC1C,eAAKC,KAAKksB,YAAYlsB,KAAKinF,QAAQlnF,GAAAA,KAAOC,KAAK8F,SAAS/F,GAAAA,KAAOC,KAAK8F,SAAS/F,KAAIgnF,SAASz2B,GAAGy2B;AAC5Fz2B,eAAGK,WAAW5wD,KAAG,MAAK,SAAA;AAAA,QAC1B,CAEEuwD;AAAAA,WAAGkE,cAAY,SAASz0D,KAAG60D;AAC1B,cAAIpuD,KAAGxG,KAAKJ,IAAIkG,SAAS/F,GACzB;AAAA,cAAI0R,OAAO,CAAA;AAEX,mBAAS0K,KAAK3V,IAAG;AAChB,gBAAI2V,EAAEpK,QAAQ,SAAO;AAAG;AACxB,gBAAIvL,GAAG2V,CAAAA,KAAM3V,GAAG2V,CAAGovB,EAAAA;AAClB95B,mBAAK0K,CAAAA,IAAKnc,KAAKJ,IAAI4xC,SAASG,WAAWnrC,GAAG2V,CAAAA,CAAAA;AAAAA;AAE1C1K,mBAAK0K,CAAK3V,IAAAA,GAAG2V,CACd;AAAA,UAAA;AACD,iBAAO1K;AAAAA,QACV;AACE6+C,WAAG42B,mBAAiB,WAAA;AAAA;AAEpB52B,WAAG1qD,YAAY,kBAAkBjG,WAAUsxD;AAC3CX,WAAG1qD,YAAY,kBAAkBjG,WAAUsxD,gBAAAA;AAC3CX,WAAG1qD,YAAY,kBAAkB,SAASsrD,KAAKnxD;AAC9CC,eAAKJ,IAAIuxD,YAAYpxD,KAAIC,KAAKoxD,cAAc,cAC5CpxD;AAAAA,eAAKJ,IAAImrB,YAAYhrB;QACxB,CACA;AAAA,MAAA;AAAA,OAEC,WACO;AAAA,YAAIonF,YAAY,SAASvnF,KAAAA;AACrB,cAAGA,QAAQ,eAAe,OAAQ;AAC9B,mBAAOA;AACX,cAAIysC,OAAO,IAAIzsC,IAAI2Y;AACnB,mBAAQrD,OAAOtV;AACXysC,iBAAKn3B,GAAOiyE,IAAAA,UAAUvnF,IAAIsV,GAC9B,CAAA;AAAA,iBAAOm3B;AAAAA,QACnB;AAEE1sC,QAAAA,WAAUynF,kBAAkB,CAAA;AAC5BznF,QAAAA,WAAU0nF,iBAAiB;AAC3B,iBAAQljF,KAAE,GAAGA,KAAExE,WAAUqnF,OAAO5iF,QAAQD,MAAK;AAC5CxE,UAAAA,WAAU+B,OAAO,cAAY/B,WAAUqnF,OAAO7iF,IAAGiW,IAAQ,IAAA;AAChDza,UAAAA,WAAU+B,OAAO,cAAY/B,WAAUqnF,OAAO7iF,EAAGiW,EAAAA,IAAAA,EAAMvX,WAAWskF,UAAUxnF,WAAU+B,OAAOg4B,SAAS72B,QAAAA;AAC/GlD,UAAAA,WAAU0nF,eAAe1nF,WAAUqnF,OAAO7iF,EAAAA,EAAGiW,QAAQza,WAAU+B,OAAO4lF,wBAAsB,IAAInjF,KAAE;AAClG,cAAGxE,WAAUqnF,OAAO7iF,EAAAA,EAAGujC,KAAK;AAC3B,gBAAI4oB,KAAK3wD,WAAUm5D,oBAAoB,EACtCpxB,KAAK/nC,WAAUqnF,OAAO7iF,EAAAA,EAAGujC;AAE1B4oB,eAAGy2B,QAAQpnF,WAAUqnF,OAAO7iF,EAAAA,EAAGiW;AAC/Bza,YAAAA,WAAUynF,gBAAgBvjF,KAAKysD,EAAAA;AAC/B3wD,YAAAA,WAAUynF,gBAAgBjjF,EAAAA,EAAGrD,KAAKnB,UAClC;AAAA,UAAA;AACD,cAAGA,WAAUqnF,OAAO7iF,EAAGojF,EAAAA;AACtB5nF,YAAAA,WAAU6nF,eAAe7nF,WAAUqnF,OAAO7iF,EAAGiW,EAAAA;AAAAA,QAC9C;AAAA,MACD,GA3BD;AA8BAza,MAAAA,WAAU8nF,YAAY,SAASC,QAC9B1nF;AAAAA,aAAK2nF,YAAYD,QAAQ,IAAA;AAAA,MAC3B;AAEC/nF,MAAAA,WAAUioF,YAAY,SAASF,QAAAA;AAC9B1nF,aAAK2nF,YAAYD,QAAQ;MAC3B;AAEC/nF,MAAAA,WAAUgoF,cAAc,SAASD,QAAQG,SACxC;AAAA,YAAId,SAAQ/mF,KAAK8nF,SAASJ;AAE1B,YAAUG,OAAAA,WAAW;AACpBd,UAAAA,OAAMc,UAAAA,CAAAA,CAAYA;AAAAA;AAElBd,UAAAA,OAAMc,WAAWd,OAAMc;AAExB7nF,aAAKyX,eAAezX,KAAK6U,OAAO7U,KAAK4M,KAAAA;AAAAA,MACvC;AAECjN,MAAAA,WAAUmoF,WAAW,SAASJ,QAAAA;AAC7B,YAAIX,QACHgB;AACD,mBAAUL,UAAU;AACnBK,uBAAaL;AACd,mBAAUA,UAAU;AACnBK,uBAAaL,OAAOX;AACrB,iBAAS5iF,KAAE,GAAGA,KAAExE,WAAUqnF,OAAO5iF,QAAQD,MAAK;AAC7C,cAAGxE,WAAUqnF,OAAO7iF,EAAAA,EAAGiW,QAAQ2tE;AAC9BhB,YAAAA,SAAQpnF,WAAUqnF,OAAO7iF;QAC1B;AACD,eAAO4iF;AAAAA,MACT;AAECpnF,MAAAA,WAAUiG,YAAY,oBAAoB,SAAU+mE,UACnD;AAAA,YAAInmE,KAAKxG,KAAK8F,SAAS6mE;AACjB3sE,aAAK0B,OAAOg4B,SAAS72B,WAAW7C,KAAK0B,OAAO,cAAY8E,GAAGugF,KAAOlkF,EAAAA;AAClElD,QAAAA,WAAUo6B,cAChB;AAAA,eAAO;AAAA,MACT,CAAA;AAECp6B,MAAAA,WAAUiG,YAAY,WAAW,SAAU+mE,UAAUqb,qBAAAA;AACpD,YAAIxhF,KAAK7G,WAAUmG,SAAS6mE,QAAAA;AACtB,gBAAQhtE,WAAUmoF,SAASthF,GAAGugF,KAAOkB,EAAAA;AAAAA,MAC7C;AAECtoF,MAAAA,WAAUiG,YAAY,oBAAoB,SAASY,IAAImD,KACtD;AAAA,YAAIo9E,SAAQ/mF,KAAK8nF,SAASthF;AAC1B,YAAIugF,CAAAA,OAAMla;AACT,iBAAO;AACR,YAAI53C,QAAQ;AACZ,iBAAQ9wB,KAAI,GAAGA,KAAEwF,IAAIvF,QAAQD,MAAK;AACjC,cAAGwF,IAAIxF,EAAG4iF,EAAAA,SAASA,OAAM3sE,QAAQzQ,IAAIxF,EAAGpE,EAAAA,MAAMyG,GAAGzG;AAChDk1B;AAAAA,QACD;AACD,eAAQA,SAASt1B,WAAU+B,OAAO+qE;AAAAA,MACpC,CAEC9sE;AAAAA,MAAAA,WAAUwH,WAAS,SAASpE,YAAWC,UAAS8D,MAAK/G,KAAGszC;AACvD,YAAI7sC,KAAGzD;AACP,YAAIkR,UAAU7P,UAAQ,GAAE;AACvBoC,eAAG6sC,cAAY;AACf7sC,aAAGzD,aAAWA;AACdyD,aAAGxD,WAASA;AACZwD,aAAGM,OAAKA;AACRN,aAAGzG,KAAGA;AACNyG,aAAGugF,QAAQ/mF,KAAKwnF;AAAAA,QAChB;AACDhhF,WAAGzG,KAAKyG,GAAGzG,MAAIJ,WAAU+O,IAAAA;AACzBlI,WAAGM,OAAON,GAAGM,QAAM;AAGnB,YAAWN,OAAAA,GAAGzD,cAAc;AAAWyD,aAAGzD,aAAW/C,KAAKqzB,UAAUsc,SAASnpC,GAAGzD;AAChF,YAAWyD,OAAAA,GAAGxD,YAAY;AAAWwD,aAAGxD,WAAShD,KAAKqzB,UAAUsc,SAASnpC,GAAGxD;AAC5EwD,WAAG4D,SAAOpK,KAAKqK,cAAc7D,EAAAA;AAE7B,YAAImsB,SAAAA,CAAQ3yB,KAAKkzC,QAAQ1sC,GAAGzG;AAC5BC,aAAKkzC,QAAQ1sC,GAAGzG,EAAIyG,IAAAA;AACpBxG,aAAKszC,cAAc9sC;AACnB,YAAKxG,CAAAA,KAAKksB;AACTlsB,eAAK4K,UAAU+nB,SAAO,iBAAe,kBAAiB,CAACnsB,GAAGzG,IAAGyG,EAChE,CAAA;AAAA,MAAA;AAECxG,WAAKkoF,aAAa;AAClB,eAAS/jF,IAAI,GAAGA,IAAInE,KAAKgnF,OAAO5iF,QAAQD,KAAK;AAC5CnE,aAAKkoF,WAAWloF,KAAKgnF,OAAO7iF,CAAAA,EAAGiW,QAAQ,CACvC;AAAA,MAAA;AAEDza,MAAAA,WAAU+V,cAAY,SAASnG,OAAMC,KAAI3J,GAAAA;AACxC,YAAI6lB,OAAO,CAAA;AACX,YAAA,OAAWnc,SAAS,UAAS;AAC5Bmc,iBAAOnc;AACPA,kBAAQ;AAAA,QACR;AAED,YAAIqE,KAAK5T,KAAK0B,OAAOoqB,kBAAgB9rB,KAAK0B,OAAOqqB,aAAW;AAC5D,YAAKxc,CAAAA;AAAOA,kBAAQ4B,KAAKI,MAAO5R,WAAUsM,aAAgBlH,EAAAA,QAAAA,IAAU6O,KAAGA;AACvE,YAAI7Q,aAAa,IAAIyB,KAAK+K,KAC1B;AAAA,YAAA,CAAKC,KAAI;AACR,cAAIwc,aAAahsB,KAAK0B,OAAO4K;AAC7B,cAAI0f,aAAajpB,WAAWsJ,SAAAA,GAAW;AACtCtJ,uBAAW0H,SAASuhB;AACpBzc,oBAAQxM,WAAWgC,QACnB;AAAA,UAAA;AACDyK,gBAAMD,QAAMqE;AAAAA,QACZ;AAGD8X,aAAK3oB,aAAa2oB,KAAK3oB,cAAYA;AACnC2oB,aAAK1oB,WAAY0oB,KAAK1oB,YAAU,IAAIwB,KAAKgL,GACzCkc;AAAAA,aAAK5kB,OAAO4kB,KAAK5kB,QAAM9G,KAAKynB,OAAOC,OAAO9gB;AAC1C8kB,aAAK3rB,KAAKC,KAAKuK,WAAWvK,KAAK0O,IAC/Bgd;AAAAA,aAAKq7D,QAAQ/mF,KAAKwnF;AAClBxnF,aAAKwK,aAAW;AAEhBxK,aAAKksB,WAAS;AACdlsB,aAAKmH,SAASukB,IACd1rB;AAAAA,aAAK4K,UAAU,kBAAiB,CAAC5K,KAAKuK,UAAS1E,CAAAA,CAAAA;AAC/C7F,aAAKksB,WAAS;AAEdlsB,aAAKmsB,cAAY;AACjBnsB,aAAKuoB,aAAa1iB,CACpB;AAAA,MAAA;AAEClG,MAAAA,WAAUwoF,sBAAsB,SAASroC,QACxC;AAAA,YAAI9/C,KAAK0B,OAAO41B,aAAAA,CAAct3B,KAAK2M,aAAa;AAC/C,cAAIuoC,MAAM,CAAA;AACV,cAAIC,MAAM;AACV,mBAASnmC,IAAI,GAAGA,IAAI8wC,OAAO17C,QAAQ4K,KAAK;AACvC,gBAAI8wC,OAAO9wC,CAAG5E,EAAAA;AACb8qC,kBAAIrxC,KAAKi8C,OAAO9wC;;AAEhBmmC,kBAAItxC,KAAKi8C,OAAO9wC,CAAAA,CAAAA;AAAAA,UACjB;AACDhP,eAAK2M,cAAc;AACnB3M,eAAK0X,YAAYy9B;AACjBn1C,eAAK2M,cAAc;AACnB3M,eAAK0X,YAAYw9B,GACjB;AAAA,QAAA;AAEAl1C,eAAK0X,YAAYooC,MAAAA;AAAAA,MACpB;AAECngD,MAAAA,WAAUgY,mBAAmB,WAC5B;AAAA,YAAI3X,KAAKg1C,aAAa;AACrBh1C,eAAKizB,eAAe;AACpB;AAAA,QACA;AACDjzB,aAAKizB,eAAe;AAEpBjzB,aAAKozC,WAELpzC;AAAAA,aAAKkoF,aAAa;AAClB,iBAAS/jF,KAAI,GAAGA,KAAInE,KAAKgnF,OAAO5iF,QAAQD,MAAK;AAC5CnE,eAAKkoF,WAAWloF,KAAKgnF,OAAO7iF,EAAGiW,EAAAA,IAAAA,IAAQ;QACvC;AAED,YAAIzQ,MAAM3J,KAAKw0C,mBAAAA;AACf,iBAASrwC,KAAI,GAAGA,KAAIwF,IAAIvF,QAAQD,MAAK;AACpC,cAAGnE,KAAKkoF,WAAWv+E,IAAIxF,EAAAA,EAAG4iF,KACzB/mF;AAAAA,iBAAKkoF,WAAWv+E,IAAIxF,EAAAA,EAAG4iF,OAAOljF,KAAK8F,IAAIxF;QACxC;AAED,YAAGnE,KAAK4M,SAAS,SAAS;AACzB,cAAIwgE,OAAO,CACX;AAAA,mBAASjpE,KAAI,GAAGA,KAAInE,KAAKgnF,OAAO5iF,QAAQD,MAAK;AAC5C,gBAAInE,KAAKgnF,OAAO7iF,EAAG0jF,EAAAA;AAClBza,qBAAOA,KAAKhiE,OAAOpL,KAAKkoF,WAAWloF,KAAKgnF,OAAO7iF,IAAGiW,IACnD,CAAA;AAAA,UAAA;AACDpa,eAAKmoF,oBAAoB/a;QACzB,OACI;AACJ,mBAASjpE,KAAI,GAAGA,KAAInE,KAAKgnF,OAAO5iF,QAAQD,MAAK;AAC5C,gBAAInE,KAAKgnF,OAAO7iF,EAAAA,EAAG0jF,SAAS;AAC3B,kBAAIO,YAAYpoF,KAAKkoF,WAAWloF,KAAKgnF,OAAO7iF,IAAGiW,IAC/Cpa;AAAAA,mBAAKmoF,oBAAoBC,SACzB;AAAA,YAAA;AAAA,UACD;AAAA,QACD;AAAA,MACH;AAECzoF,MAAAA,WAAUo7C,gBAAc,SAASv0C,IAAGsgB,GAAEC,GAAEjH,GAAEI,GAAE5d,OAAM05C,UAASC,UAASha,QACnE;AAAA,YAAIliC,MAAKyG,GAAGzG;AAEZ,YAAGi8C,SAASjqC,QAAQ,aAAmB,KAAA;AACtCiqC,qBAAYr8C,WAAU0zB,UAAU,kBAAgB7sB,GAAGugF,KAAAA,IAAQpnF,WAAU0zB,UAAU,kBAAgB7sB,GAAGugF,KAAAA,EAAOvgF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAIw1C,IAAAA;AACxI,YAAGC,SAASlqC,QAAQ,aAAmB,KAAA;AACvCkqC,qBAAYt8C,WAAU0zB,UAAU,gBAAc7sB,GAAGugF,KAAAA,IAAQpnF,WAAU0zB,UAAU,gBAAc7sB,GAAGugF,KAAAA,EAAOvgF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAIy1C,IAAAA;AAEnI,YAAIroC,IAAE/T,SAASC,cAAc,KAAA;AAC7B,YAAIo8C,MAAK;AACT,YAAIC,MAAOx8C,WAAU0zB,UAAU,iBAAe7sB,GAAGugF,KAAQpnF,IAAAA,WAAU0zB,UAAU,iBAAe7sB,GAAGugF,OAAOvgF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,IAAI7G,WAAU0zB,UAAUif,YAAY9rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA;AAC9L,YAAI21C;AAAKD,UAAAA,MAAGA,MAAG,MAAIC;AAEnB,YAAIksC,YAAY1oF,WAAUsuD,mBAE1B;AAAA,YAAIq6B,iBAAiBxoE,IAAI;AACzB,YAAIs8B,WAAWisC,YAAYC,iBAAkBxoE,IAAE,GAC/CyoE,cAAcF,YAAYC,iBAAkBxoE,IAAE,GAC9C0oE,YAAYH,YAAYC,iBAAkBxoE,IAAE,IAC5C2oE,cAAcJ,YAAaC,iBAAiB,IAAMxoE,IAAE;AAEpD,YAAI4oE,aAAaL,YAAanoE,IAAIlgB,KAAKsf,GAAGuG,sBAAwB3F,IAAE,KAAK;AAEzE,YAAIhd,OAAK,oBAAkBnD,MAAG,OAAKJ,WAAU+B,OAAOwC,kBAAgB,OAAKnE,MAAG,cAAYm8C,MAAG,qCAAmCn1B,IAAE,cAAYD,IAAE,eAAas1B,WAAS,gBAAcl8B,IAAE,SAAO5d,SAAO,MAAI;AACtMY,gBAAM,2CAAyCqlF,cAAY;AAC3DrlF,gBAAM,4BAA0B84C,WAAS;AACzC94C,gBAAM,yCAAuCslF,YAAU,gBAAcE,aAAW,UAAQzsC,WAAS;AACjG/4C,gBAAM,2CAAyCulF,cAAY,SAAOxmD,SAAO,sBAAoB,MAAI;AAEjGruB,UAAE1T,YAAUgD;AACZ0Q,UAAEtR,MAAM44C,SAAS;AACjB,eAAOtnC,EAAEvT;AAAAA,MACX;AAECV,MAAAA,WAAUw2C,mBAAiB,SAAS3vC,IACnC;AAAA,YAAIgH,SAAOxN,KAAK+L,KAAK,cAAgB,EAAA,CAAA;AAErC,YAAI+a,IAAE9mB,KAAKutB,OAAO/mB,GAAGkvC,KAAAA;AACrB,YAAIO,KAAGj2C,KAAKutB,OAAO/mB,GAAGmvC;AACtB,YAAIM,MAAInvB;AAAGmvB,eAAGj2C,KAAKutB,OAAO/mB,GAAGmvC,QAAM,CACnC;AAAA,YAAIe,KAAK12C,KAAKsf,GAAG6F;AAEjB,YAAI4B,IAAE/mB,KAAKutB,OAAOK,QAAQpnB,GAAGqvC,MAAAA,KAAS71C,KAAKutB,OAAOzc,SAAQ9Q,KAAKsf,GAAGiG,qBAAmB,IAAG,KAAG/e,GAAG8vC,UAAQI;AAEtG,YAAI9iC,IAAE/T,SAASC,cAAc,KAC7B;AAAA,YAAIo8C,MAAK11C,GAAG4D,SAAO,wBAAsB;AACzC,YAAI+xC,MAAOx8C,WAAU0zB,UAAU,iBAAe7sB,GAAGugF,SAAQpnF,WAAU0zB,UAAU,iBAAe7sB,GAAGugF,OAAOvgF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,IAAI7G,WAAU0zB,UAAUif,YAAY9rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA;AAC9L,YAAI21C;AAAKD,UAAAA,MAAGA,MAAG,MAAIC;AAEnB,YAAIj5C,OAAK,oBAAkBsD,GAAGzG,KAAG,OAAKC,KAAK0B,OAAOwC,kBAAgB,OAAKsC,GAAGzG,KAAG,cAAYm8C,MAAG,qCAAmCn1B,IAAE,cAAYD,IAAE,gBAAcmvB,KAAGnvB,IAAE,MAAI,SAAOtgB,GAAGw0C,eAAa,MAAI;AAEjM,YAAIx0C,GAAG4D;AACNlH,kBAAOvD,WAAU0zB,UAAU,oBAAkB7sB,GAAGugF,KAAQpnF,IAAAA,WAAU0zB,UAAU,oBAAkB7sB,GAAGugF,OAAOvgF,GAAGzD,YAAWyD,GAAGxD,UAASwD,MAAI7G,WAAU0zB,UAAUkf,eAAe/rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA;AACpMtD,gBAASvD,WAAU0zB,UAAU,oBAAkB7sB,GAAGugF,SAAQpnF,WAAU0zB,UAAU,oBAAkB7sB,GAAGugF,KAAAA,EAAOvgF,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,IAAI7G,WAAU0zB,UAAUmf,eAAehsC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,IAAM;AAC3MtD,gBAAM;AAEN0Q,UAAE1T,YAAUgD;AAEZlD,aAAK0zC,UAAU7vC,KAAK+P,EAAEvT,UAAAA;AACtBmN,eAAOpN,YAAYwT,EAAEvT;MACvB;AAECV,MAAAA,WAAU62C,eAAa,SAAShwC,IAAAA;AAC/B,YAAIi0C,OAAO96C,WAAU2f,GAAGkG;AACxB,YAAG7lB,WAAUmoF,SAASthF,GAAGugF,KAAOkB,EAAAA;AAC/BxtC,iBAAO;AAER,YAAIj0C,GAAGkvC,QAAM;AAAG;AAChB,YAAIloC,SAAO7N,WAAUuR,cAAc1K,GAAGkvC,KAAAA;AACtC,aAAKloC;AAAQ;AACb,YAAI4sC,KAAK5zC,GAAGzD,WAAWsJ,SAAW,IAAA,KAAG7F,GAAGzD,WAAW4K;AACnD,YAAI4sC,KAAM/zC,GAAGxD,SAASqJ,SAAAA,IAAW,KAAG7F,GAAGxD,SAAS2K,WAAgBhO,KAAAA,WAAU+B,OAAO6K,YAAU;AAE3F,YAAIhK,MAAO4O,KAAKI,OAAO6oC,KAAG,KAAG,MAAKp6C,KAAK0B,OAAO4K,aAAW,KAAG,KAAG,OAAMtM,KAAK0B,OAAO2P,gBAAc,KAAG,KAAG,IAAA,KAASrR,KAAK0B,OAAO2P,eAAa,MAAI;AAC3I,YAAIP,SAASK,KAAK5C,IAAI5O,WAAU2f,GAAG4F,mBAAkBq1B,KAAGH,MAAIp6C,KAAK0B,OAAO2P,eAAa,MAAI;AAEzF,YAAIN,QAAMI,KAAK8D,OAAOzH,OAAOyS,cAAYw6B,QAAMj0C,GAAGoyC,MAAAA;AAClD,YAAIp2C,OAAKgE,GAAG8vC,UAAQvlC,QAAM;AAC1B,YAAKvK,CAAAA,GAAG4xC;AAAQrnC,kBAAMA,SAAOvK,GAAGoyC,SAAOpyC,GAAG8vC;AAI1C,YAAI1iC,IAAE5T,KAAK+6C,cAAcv0C,GAAGzG,IAAG06C,OAAKj4C,MAAKD,KAAIwO,OAAMD,QAAOtK,GAAGw0C,aAAYr7C,WAAU0zB,UAAUgf,aAAa7rC,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,GAAI7G,WAAU0zB,UAAU0K,WAAWv3B,GAAGzD,YAAWyD,GAAGxD,UAASwD,EAAAA,CAAAA;AAEjMxG,aAAK0zC,UAAU7vC,KAAK+P,CACpBpG;AAAAA,eAAOpN,YAAYwT,CAEnBpR;AAAAA,eAAKA,OAAKwzB,SAASxoB,OAAOlL,MAAME,MAAK,EAAA,IAAIi4C;AAEzCl4C,eAAKvC,KAAKo0B;AACVxgB,UAAEtR,MAAM44C,SAASl7C,KAAKqnF,eAAe7gF,GAAGugF,KAAAA;AAExC,YAAI/mF,KAAKipB,YAAUziB,GAAGzG,IAAG;AACxB6T,YAAEtR,MAAM44C,SAASllB,SAASpiB,EAAEtR,MAAM44C,MAAAA,IAAQ;AAC1C,cAAIytC,aAAa/0E,EAAEtR,MAAM44C;AACzBnqC,kBAAMI,KAAK5C,IAAIwC,QAAM,GAAEpR,WAAU2f,GAAGqG,YAAAA;AACpC,cAAI/R,IAAE/T,SAASC,cAAc,KAC7B8T;AAAAA,YAAEkJ,aAAa,YAAWtW,GAAGzG,EAC7B6T;AAAAA,YAAEkJ,aAAa9c,KAAK0B,OAAOwC,iBAAgBsC,GAAGzG,EAAAA;AAC9CC,eAAKumB,OAAO3S,GAAE7C,OAAMD,SAAO,IAAGtO,MAAKD,MAAI;AACvCqR,YAAE/C,YAAU;AACZ+C,YAAEtR,MAAM44C,SAASytC;AACjB,cAAI72C,KAAGjyC,SAASC,cAAc,KAC9BE;AAAAA,eAAKumB,OAAOurB,IAAG/gC,QAAM,GAAED,SAAO;AAC9BghC,aAAGxvC,MAAMg5C,WAAS;AAGlBxJ,aAAGxvC,MAAM44C,SAASytC;AAClB/0E,YAAExT,YAAY0xC;AACd9xC,eAAK+L,KAAK,gBAAgB,CAAG3L,EAAAA,YAAYwT,CACzC5T;AAAAA,eAAK0zC,UAAU7vC,KAAK+P,CAAAA;AAEpBk+B,aAAG5xC,YAAU,sCAAoCsG,GAAGM,OAAK;AAEzD9G,eAAKu7C,UAAQzJ,GAAGzxC;AAChBL,eAAKu7C,QAAQtf,iBAAiB,YAAY,SAASp2B,GAAAA;AAClD,gBAAIA,EAAE21C;AAAU,qBAAO;AACvB,gBAAItQ,OAAMrlC,EAAE41C;AACZ,gBAAIvQ,QAAMvrC,WAAUmmB,KAAKC;AAAWpmB,cAAAA,WAAUmpB,SAAS;AACvD,gBAAIoiB,QAAMvrC,WAAUmmB,KAAKE;AAAarmB,cAAAA,WAAUmpB,SAAS;UAC7D,CACG9oB;AAAAA,eAAKu7C,QAAQtf,iBAAiB,eAAe,SAASp2B,GAAIA;AAAAA,cAAE6jB,eAAa;AAAM,mBAAO;AAAA,UAAO,CAAA;AAC7FooB,aAAGzxC,WAAWg6B,MAAAA;AAEdr6B,eAAK+L,KAAK,cAAA,EAAgB,CAAGmhB,EAAAA,aAAW;AACxC4kB,aAAGzxC,WAAWsoB;QACd;AACD,YAAI3oB,KAAK4oB,cAAYpiB,GAAGzG,IAAG;AAC1B6T,YAAEtR,MAAM44C,SAASllB,SAASpiB,EAAEtR,MAAM44C,UAAQ;AAC1C,cAAIQ,QAAM17C,KAAK0B,OAAO,YAAW1B,KAAKipB,YAAUziB,GAAGzG,KAAI,SAAO,SAC9D;AAAA,cAAI47C,YAAU;AACd,mBAASx3C,KAAE,GAAGA,KAAEu3C,MAAMt3C,QAAQD;AAC7Bw3C,yBAAW,+BAA6BD,MAAMv3C,MAAG,cAAYnE,KAAKynB,OAAOC,OAAOg0B,MAAMv3C,OAAI;AAC3F,cAAIvE,MAAMI,KAAK+6C,cAAcv0C,GAAGzG,IAAGyC,OAAKi4C,OAAK,GAAEl4C,KAAIk4C,MAAKiB,MAAMt3C,SAAO,KAAG,IAAG,IAAG,qCAAoCu3C,WAAU,IAC5H/7C;AAAAA,cAAI0C,MAAME,OAAKA,OAAKi4C,OAAK;AACzB76C,cAAI0C,MAAM44C,SAAStnC,EAAEtR,MAAM44C;AAC3Bl7C,eAAK+L,KAAK,cAAA,EAAgB,CAAG3L,EAAAA,YAAYR;AACzCI,eAAK0zC,UAAU7vC,KAAKjE,GACpB;AAAA,QAAA;AAAA,MAEH;AAEID,MAAAA,WAAUipF,gBAAgB,SAAS7oF,KAAIyB;AACnC,YAAIulF,SAAQpnF,WAAUmoF,SAAStmF,OAAMulF;AACrC,eAAQA,UAASA,OAAMc;AAAAA,MAC/B;AAAA,IACA,CAGA;AAAA,EAAA;AChae,WAAQ9vE,MAACpY,YAAAA;AAExBA,IAAAA,WAAU+B,OAAOqI,cAAc;AAC/BpK,IAAAA,WAAU+B,OAAOsI,YAAc;AAC/BrK,IAAAA,WAAU+B,OAAOmnF,aAAc;AAC/BlpF,IAAAA,WAAU+B,OAAO8H,eAAe;AAEhC7J,IAAAA,WAAUmpF,oBAAoB,WAAA;AAC7B,UAAItc,SAAS;AACb,UAAI/kE,iBAAiB;AAErB9H,MAAAA,WAAUiG,YAAY,sBAAqB,SAASmjF,IAAGC,IAAGC,IAAGC,IAAAA;AAE5D,iBAASC,UAAUhmF,MAAM1D,MACxB;AAAA,cAAIsK,cAAcpK,WAAU+B,OAAOqI,aAClCC,YAAYrK,WAAU+B,OAAOsI,WAC7Bo/E,WAAYzpF,WAAUwD,KAAKC,IAAID,MAAK,GAAE1D;AAEvC,iBAAQ0D,KAAK4B,YAAYiF,UAAUjF,QAAAA,KAAaqkF,YAAYr/E,YAAYhF;QACxE;AAED,YAAIpF,WAAU+B,OAAOmnF,YAAW;AAC/BK,eAAKA,MAAIF;AAAIC,eAAKA,MAAIF;AACtB,cAAII,UAAUD,IAAID,EAAAA,KAAAA,EAASD,GAAGjkF,QAAamkF,KAAAA,GAAGnkF,QAAW,IAAA;AACxDsU,uBAAW,WACV;AAAA,kBAAG1Z,WAAU8gB,YAAW;AACvB,uBAAO;AAAA,cACP;AACD,kBAAI4oE,YAAAA,CAAaF,UAAUH,IAAIC,EAAAA,IAAMD,KAAKrpF,WAAU+B,OAAOqI;AAE3DpK,cAAAA,WAAU8X,eAAAA,CAAgB0xE,UAAUE,WAAWJ,MAAMI,YAAY,MAAMJ;YACvE,GAAC,CAAA;AACF,mBAAO;AAAA,UACP;AAAA,QACD;AACD,eAAO;AAAA,MACT,CACCtpF;AAAAA,MAAAA,WAAUiG,YAAY,eAAe,SAASmsB;AAC7C,eAASA,EAAAA,aAAatqB;AAAAA,MACxB,CAAA;AACC9H,MAAAA,WAAUiG,YAAY,gBAAe,SAAS7F,KAC7C;AAAA,YAAA,CAAKA;AAAI,iBAAO;AAChB,eAAOJ,WAAU4J,oBAAoB5J,WAAUmG,SAAS/F;MAC1D,CACCJ;AAAAA,MAAAA,WAAUiG,YAAY,WAAW,SAAU+mE,UAAUqb,qBAAAA;AACpD,eAAOroF,WAAU4J,oBAAoB5J,WAAUmG,SAAS6mE,QAAAA,CAAAA;AAAAA,MAC1D;AACChtE,MAAAA,WAAUiG,YAAY,oBAAmB,SAAS7F;AAEjD,YAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5BysE,iBAAS,CAAChmE,GAAGzD,YAAYyD,GAAGxD;AAC5B,eAAOrD,WAAU4J,oBAAoB/C,EACvC;AAAA,MAAA,CAAA;AACC7G,MAAAA,WAAUiG,YAAY,eAAe,SAAS7F,KAAI0R,MAAM63E,cAGvD;AAAA,YAAA,EAAK73E,KAAK1O,cAAc0O,KAAKzO,WAAU;AACtC,cAAIwD,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B0R,eAAK1O,aAAa,IAAIyB,KAAKgC,GAAGzD,UAAAA;AAC9B0O,eAAKzO,WAAW,IAAIwB,KAAKgC,GAAGxD;QAC5B;AAED,YAAGyO,KAAK7H,UAAS;AAGhB,cAAI2/E,YAAY5pF,WAAUwO,YAAYsD,IAAAA;AACtC9R,UAAAA,WAAUotE,iBAAiBwc,SAAAA;AAC3B,iBAAO5pF,WAAU4J,oBAAoBggF,SACrC;AAAA,QAAA;AACD,eAAO5pF,WAAU4J,oBAAoBkI;MACvC,CACC9R;AAAAA,MAAAA,WAAUiG,YAAY,gBAAe,SAAS7F,KAC7C;AAAA,YAAA,CAAKA;AAAI,iBAAO;AAChB,YAAIyG,KAAK7G,WAAUmG,SAAS/F,GAC5B;AAAA,YAAA,CAAKJ,WAAU4J,oBAAoB/C,OAAO7G,WAAU+B,OAAOqI,eAAepK,WAAU+B,OAAOsI,WAAW;AAErG,cAAIxD,GAAGzD,aAAapD,WAAU+B,OAAOqI,aAAa;AACjDvD,eAAGzD,aAAa,IAAIyB,KAAK7E,WAAU+B,OAAOqI,WAAAA;AAAAA,UAC1C;AACD,cAAIvD,GAAGzD,WAAWgC,QAAapF,KAAAA,WAAU+B,OAAOsI,UAAUjF,QAAAA,GAAW;AACpEyB,eAAGzD,aAAa/C,KAAKmD,KAAKC,IAAIzD,WAAU+B,OAAOsI,eAAe,KAAA;AAAA,UAC9D;AACD,cAAIxD,GAAGxD,WAAWrD,WAAU+B,OAAOqI,aAAa;AAC/CvD,eAAGxD,WAAW,IAAIwB,KAAK7E,WAAU+B,OAAOqI,WACxC;AAAA,UAAA;AACD,cAAIvD,GAAGxD,SAAS+B,aAAapF,WAAU+B,OAAOsI,UAAUjF,QAAAA,GAAW;AAClEyB,eAAGxD,WAAWhD,KAAKmD,KAAKC,IAAIzD,WAAU+B,OAAOsI,WAAAA,IAAe,KAAA;AAAA,UAC5D;AACD,cAAIxD,GAAGzD,WAAWgC,QAAayB,KAAAA,GAAGxD,SAAS+B,QAAW,GAAA;AACrDyB,eAAGxD,WAAWhD,KAAKmD,KAAKC,IAAIoD,GAAGzD,YAAa/C,KAAK0B,OAAOoqB,kBAAgB9rB,KAAK0B,OAAOqqB,WAAY;UAChG;AACDvlB,aAAG4D,SAAOpK,KAAKqK,cAAc7D;QAC7B;AACD,eAAO;AAAA,MACT,CAAA;AACC7G,MAAAA,WAAUiG,YAAY,kBAAiB,SAAS7F,KAC/C;AAAA,YAAA,CAAKA;AAAI,iBAAO;AAChB,YAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,aAAKJ,WAAU4J,oBAAoB/C,KAAI;AACtC,cAAA,CAAKgmE;AAAQ,mBAAO;AACpBhmE,aAAGzD,aAAaypE,OAAO,CACvBhmE;AAAAA,aAAGxD,WAAWwpE,OAAO,CAAA;AACrBhmE,aAAG4D,SAAOpK,KAAKqK,cAAc7D,EAAAA;AAAAA,QAC7B;AACD,eAAO;AAAA,MACT;AACC7G,MAAAA,WAAUiG,YAAY,wBAAuB,SAASY,IAAIgjF,eAAe72D,QAAAA;AACxE,eAAOhzB,WAAU4J,oBAAoB/C;MACvC,CACC7G;AAAAA,MAAAA,WAAUiG,YAAY,wBAAwB,SAASY,IACtD;AAAA,YAAIzD,aAAapD,WAAUyG,cAAcI,IAAIrD;AAC7C,YAAI3B,SAAQ,EACX4I,QAAQ,MACRrH,YACAC,UAAUrD,WAAUwD,KAAKC,IAAIL,YAAYpD,WAAU+B,OAAOqqB,WAAW,QAEtE,EAAA;AAAA,eAAOpsB,WAAU4J,oBAAoB/H,MAAAA;AAAAA,MACvC;AAEC7B,MAAAA,WAAUiG,YAAY,gBAAgB,WAAA;AACrCjG,QAAAA,WAAUiM,UACZ;AAAA,MAAA,CAAA;AAECjM,MAAAA,WAAUiG,YAAY,0BAA0B;AAC/C3E,eAAOoY,WAAW,WACjB;AAAA,cAAG1Z,WAAU8gB,YAAW;AACvB,mBAAO;AAAA,UACP;AACD9gB,UAAAA,WAAUiM,UACV;AAAA,QAAA,GAAE,CACH;AAAA,eAAO;AAAA,MACT,CAECjM;AAAAA,MAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzCjG,QAAAA,WAAU8pF,kBAAkBxoF,OAAOwtD,YAAY,WAAA;AAC9C,eAAI9uD,WAAUk8B,gBAAAA;AACb;AACDl8B,UAAAA,WAAUiM,UAAAA;AAAAA,QACV,GAAE,GACL;AAAA,MAAA,CAAA;AAECjM,MAAAA,WAAUiG,YAAY,aAAa,WAClC4oD;AAAAA,sBAAc7uD,WAAU8pF,eAC1B;AAAA,MAAA,CAAA;AAAA,IAEA;AACA9pF,IAAAA,WAAUmpF,kBAAAA;AAAAA,EAGV;AAAA,EClJO,MAAMY;IAMZ,YAAY/pF;AACXK,WAAKyF,MAAM;AACXzF,WAAK2pF,WAAW,CAChB3pF;AAAAA,WAAKL,YAAYA;AAAAA,IAClB;AAAA,IACA,aAAa6B,QAAAA;AACZ,UAAIxB,KAAK2pF,YAAY3pF,KAAK2pF,SAASvlF,SAAS,GAAG;AAC9C,iBAASD,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,cAAI3C,OAAMzB,MAAMC,KAAK2pF,SAASxlF,CAAAA,EAAG3C,MAAMzB,IAAI;AAC1C,gBAAI6pF,OAAO5pF,KAAKsD,SAASumF,sBAAsB7pF,KAAKsD,SAASwmF;AACzD,gBAAAtoF,OAAMuoF,OAAOvoF,OAAMwoF,KAAI;AAC1BhqF,mBAAKyF,IAAIwkF,UAAU,EAClBF,KAAKvoF,OAAMuoF,KACXC,KAAKxoF,OAAMwoF,IAAAA,CAAAA;AAEPhqF,mBAAAyF,IAAIykF,QAAQN;YAAI,OACf;AACN5pF,mBAAKyF,IAAIwkF,UAAU,EAClBF,KAAK/pF,KAAKsD,SAAS6mF,eAAeJ,KAClCC,KAAKhqF,KAAKsD,SAAS6mF,eAAeH;AAE9BhqF,mBAAAyF,IAAIykF,QAAQN,IAClB;AAAA,YAAA;AACOQ,mBAAAC,KAAK7oF,MAAM8oF,QAAQtqF,KAAK2pF,SAASxlF,CAAGqyD,EAAAA,QAAQ;UACpD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,WAAWhrD,WAAwB5D;AAClC5H,WAAKsD,WAAWsE;AAChB,UAAIjI,aAAYK,KAAKL;AACrB,UAAI4qF,aAAa,EAChBC,QAAQ,EAAET,KAAKniF,QAAQ6iF,iBAAiBV,KAAKC,KAAMpiF,QAAQ6iF,iBAAiBT,IAC5EJ,GAAAA,MAAMhiF,QAAQkiF,cACdY,OAAOl/E,UAAUzL,IACjB4qF,aAAa,MACbC,WAAWhjF,QAAQZ,KAGhB;AAAA,UAAAhH,KAAKyF,QAAQ,MAAM;AACtBzF,aAAKyF,MAAM,IAAI2kF,OAAOC,KAAKQ,IAAIr/E,WAAW++E;MAAU,OAEhD;AACJ,YAAI9kF,MAAMzF,KAAKyF;AACf+F,kBAAUpL,YAAYJ,KAAKyF,IAAIqlF,KAAKC,cACpCv/E;AAAAA,kBAAUpL,YAAYJ,KAAKyF,IAAIqlF,KAAKE,cACpC3xE;AAAAA,mBAAW,WACV5T;AAAAA,cAAIwlF,WAAW,EAACz/E,WAAWA,UAAUzL;WACnC;MACJ;AACAqqF,aAAOC,KAAK7oF,MAAM0pF,YAAYlrF,KAAKyF,KAAK,YAAY,SAASjE,QAAAA;AAC5D,cAAM2pF,WAAW,IAAIf,OAAOC,KAAKe;AAEjC,YAAKzrF,CAAAA,WAAU+B,OAAOioB,YAAYhqB,WAAU+B,OAAO+T,iBAAiB;AACnE,cAAI41E,QAAQ7pF,OAAM8pF;AACTH,mBAAAI,QACR,EAAED,QAAUD,SACZ,SAASG,SAAShjD,QACjB;AAAA,gBAAIA,UAAU4hD,OAAOC,KAAKoB,eAAeC,IAAI;AACpCL,sBAAAG,QAAQ,CAAA,EAAGG,SAASC;AAC5BjsF,cAAAA,WAAU+V,YAAY,EACrBq0E,KAAKsB,MAAMtB,IAAAA,GACXC,KAAKqB,MAAMrB,IAAAA,GACX6B,gBAAgBL,QAAQ,GAAGM,mBAC3B/oF,YAAYpD,WAAUsG,SAAW9C,EAAAA,MACjCH,UAAUrD,WAAUwD,KAAKC,IAAIzD,WAAUsG,WAAW9C,MAAMxD,WAAU+B,OAAOqqB,WAAW,QAAA,EAAA,CAAA;AAAA,YACpF,OACK;AACExV,sBAAAC,MAAM,0DAA0DgyB;YACzE;AAAA,UACD,CAAA;AAAA,QAEF;AAAA,MAAA,CAEF;AAAA,IAAA;AAAA,IAEA,QAAQh9B,WAAAA;AACA4+E,aAAAC,KAAK7oF,MAAMuqF,uBAAuB9qF,MAAAA;AAClCmpF,aAAAC,KAAK7oF,MAAMuqF,uBAAuBlsF,QAClCuqF;AAAAA,aAAAC,KAAK7oF,MAAMuqF,uBAAuBvgF,SACzC;AAAA,aAAOA,UAAUnL,YAAY;AAC5BmL,kBAAUnL,WAAWk0B,OAAAA;AAAAA,MACtB;AACA/oB,gBAAUtL,YAAY;AAAA,IACvB;AAAA,IAEA,qBAAqBsB,QAAAA;AACpB,UAAIE,SAAS,EACZmpB,OAAOrpB,OAAMsF,MACbmG,UAAU,CAAC,GACXxH,KAAK,CAAC;AAGH,UAAAjE,OAAMuoF,OAAOvoF,OAAMwoF,KAAK;AAC3BtoF,eAAOuL,WAAW,EAAE88E,KAAKvoF,OAAMuoF,KAAKC,KAAKxoF,OAAMwoF,IAAAA;AAAAA,MAAI,OAC7C;AACCtoF,eAAAuL,WAAW,EAAE88E,KAAK/pF,KAAKsD,SAAS6mF,eAAeJ,KAAKC,KAAKhqF,KAAKsD,SAAS6mF,eAAeH;MAC9F;AACA,YAAA,EAAMgC,sBAAkC5B,IAAAA,MAAAA,OAAOC,KAAK4B,cAAc;AAC9D,UAAAz1B;AACJ,UAAIx2D,KAAKL,UAAUkmE,IAAIqmB,QAAQC,cAAc;AAC5CzqF,eAAO+D,MAAMzF,KAAKyF;AAClB+wD,QAAAA,UAASx2D,KAAKL,UAAUkmE,IAAIqmB,QAAQC,aAAazqF,MAAM;AAAA,MAAA,OACjD;AACG80D,QAAAA,UAAA,IAAIw1B,sBAAsBtqF,MACnC80D;AAAAA,QAAAA,QAAO/wD,MAAMzF,KAAKyF;AAAAA,MACnB;AACO+wD,MAAAA,QAAA41B,OAAOpsF,KAAKyF,GAAAA;AAEf,UAAAjE,OAAM,sBAAA,KAA2B,gBAAe;AACnDg1D,QAAAA,QAAO41B,OAAO,IAAA;AAAA,MACf;AACAhC,aAAOC,KAAK7oF,MAAM0pF,YAAY10B,SAAQ,SAAS,MAC9C;AAAA,YAAIx2D,KAAKqsF,YAAY;AACpBrsF,eAAKqsF,WAAWC;QACjB;AACKtsF,aAAAqsF,aAAa,IAAIjC,OAAOC,KAAKkC,WAAW,EAACC,UAAUxsF,KAAKsD,SAASmpF,sBACtEzsF,CAAAA;AAAAA,aAAKqsF,WAAWK,WAAW1sF,KAAKL,UAAU0zB,UAAUs5D,iBAAiBnrF,MACrExB,CAAAA;AAAAA,aAAKqsF,WAAW7hD,KAAK,EACpBoiD,QAAQp2B,SACR/wD,KAAKzF,KAAKyF,IAAAA,CAAAA;AAAAA,MACV;AAEF,UAAIonF,aAAa,EAACrrF,OAAUE,QAAAA,GAAAA,QAAQ80D;AAC/Bx2D,WAAA2pF,SAAS9lF,KAAKgpF,UAAAA;AAAAA,IACpB;AAAA,IAEA,kBAAkBzpE;AACjB,eAASjf,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,YAAIif,WAAWpjB,KAAK2pF,SAASxlF,CAAG3C,EAAAA,MAAMzB,IAAI;AACzCC,eAAK2pF,SAASxlF,CAAAA,EAAGqyD,OAAOs2B,WAAW,KAAA;AACnC9sF,eAAK2pF,SAASxlF,CAAAA,EAAGqyD,OAAO41B,OAAO;AAC/BpsF,eAAK2pF,SAASxlF,GAAGqyD,OAAOu2B,YAAY;AAC/B/sF,eAAA2pF,SAASxlF,CAAGqyD,EAAAA,SAAS;AACrBx2D,eAAA2pF,SAASv2E,OAAOjP,GAAE,CAAA;AACvBA;AAAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,kBAAkB3C,QACjB;AAAA,eAAS2C,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,YAAGnE,KAAK2pF,SAASxlF,CAAG3C,EAAAA,MAAMzB,MAAMyB,OAAMzB,IAAI;AACpCC,eAAA2pF,SAASxlF,CAAG3C,EAAAA,QAAQA;AACzBxB,eAAK2pF,SAASxlF,GAAG8I,SAAS88E,MAAMvoF,OAAMuoF;AACtC/pF,eAAK2pF,SAASxlF,CAAAA,EAAG8I,SAAS+8E,MAAMxoF,OAAMwoF;AACtChqF,eAAK2pF,SAASxlF,CAAG2C,EAAAA,OAAOtF,OAAMsF;AAC1B,cAAAkmF,SAAS,IAAI5C,OAAOC,KAAK4C,OAAOzrF,OAAMuoF,KAAKvoF,OAAMwoF;AACrDhqF,eAAK2pF,SAASxlF,GAAGqyD,OAAOu2B,YAAYC;QACrC;AAAA,MACD;AAAA,IACD;AAAA,IAEA;AACK,UAAAhtF,KAAK2pF,SAASvlF,SAAS,GAAG;AAC7B,iBAASD,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9CnE,eAAK2pF,SAASxlF,CAAAA,EAAGqyD,OAAO41B,OAAO;QAChC;AACApsF,aAAK2pF,WAAW,CACjB;AAAA,MAAA;AAAA,IACD;AAAA,IAEA,QAAQuD,UAAkBC,WAAmBvD;AAC5C5pF,WAAKyF,IAAIwkF,UAAU,EAClBF,KAAKmD,UACLlD,KAAKmD,UAAAA,CAAAA;AAEDntF,WAAAyF,IAAIykF,QAAQN,IAClB;AAAA,IAAA;AAAA,IAEA,qBAAqBwD,QAAAA;AACpB,YAAMjC,WAAW,IAAIf,OAAOC,KAAKe;AACjC,UAAIn+E,WAAAA,MAAsB,IAAIu6B,QAASwC,aAAAA;AAC7BmhD,iBAAAI,QACR,EAAE8B,SAAWD,OAAAA,GACb,SAAS5B,SAAShjD,QAAAA;AACjB,cAAIA,UAAU4hD,OAAOC,KAAKoB,eAAeC,IAAI;AACpC1hD,oBAAA,EACP+/C,KAAKyB,QAAQ,GAAGG,SAASC,SAAS7B,OAClCC,KAAKwB,QAAQ,CAAGG,EAAAA,SAASC,SAAS5B,IAClC,EAAA,CAAA;AAAA,UAAA,OACK;AACEzzE,oBAAAC,MAAM,0DAA0DgyB,MACxEwB;AAAAA,oBAAQ,CAAE,CAAA;AAAA,UACX;AAAA,QACD,CACD;AAAA,MAAA,CAAA;AAEM,aAAA/8B;AAAAA,IACR;AAAA,EAAA;AAAA,ECnMM,MAAMqgF,qBAKZ;AAAA,IAAA,YAAY3tF,YAAAA;AACXK,WAAKyF,MAAM;AACXzF,WAAK2pF,WAAW,CAAA;AAChB3pF,WAAKL,YAAYA;AAAAA,IAClB;AAAA,IACA,aAAa6B,QACZ;AAAA,UAAIxB,KAAK2pF,YAAY3pF,KAAK2pF,SAASvlF,SAAS,GAAG;AAC9C,iBAASD,IAAI,GAAGA,IAAKnE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC/C,cAAI3C,OAAMzB,MAAOC,KAAK2pF,SAASxlF,GAAG3C,MAAMzB,IAAI;AAC3CC,iBAAK2pF,SAASxlF,CAAGqyD,EAAAA,OAAO+2B;AACxBvtF,iBAAK2pF,SAASxlF,GAAGqyD,OAAOg3B,aAAAA;AACpB,gBAAAhsF,OAAMuoF,OAAOvoF,OAAMwoF,KAAK;AACtBhqF,mBAAAytF,QAAQjsF,OAAMuoF,KAAKvoF,OAAMwoF,KAAKhqF,KAAKsD,SAASumF,sBAAsB7pF,KAAKsD,SAASwmF,YAAAA;AAAAA,YAAY,OAC3F;AACN9pF,mBAAKytF,QAAQztF,KAAKsD,SAAS6mF,eAAeJ,KAAK/pF,KAAKsD,SAAS6mF,eAAeH,KAAKhqF,KAAKsD,SAASumF,sBAAsB7pF,KAAKsD,SAASwmF,YACpI;AAAA,YAAA;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,WAAWt+E,WAAwB5D,SAClC;AAAA,UAAIjI,aAAYK,KAAKL;AACjB,UAAA+tF,aAAa7tF,SAASC,cAAc,KAAA;AACxC4tF,iBAAW78E,YAAY;AACvB68E,iBAAW3tF,KAAK;AACL2tF,iBAAAprF,MAAMyO,QAAQvF,UAAUlJ,MAAMyO;AAC9B28E,iBAAAprF,MAAMwO,SAAStF,UAAUlJ,MAAMwO;AAC1CtF,gBAAUpL,YAAYstF,UAElB;AAAA,UAAAjoF,MAAMkoF,EAAEloF,IAAIioF,YAAY,EAC3BlD,QAAQmD,EAAErC,OAAO1jF,QAAQ6iF,iBAAiBV,KAAKniF,QAAQ6iF,iBAAiBT,GAAAA,GACxEJ,MAAMhiF,QAAQkiF,cACdvwB,UAAU,MAAA,CAAA;AAEXo0B,QAAEC,UAAU,mDAAA,EAAqDC,MAAMpoF,GACnEA;AAAAA,UAAAqoF,GAAG,YAAYnmD,eAAe9hC,GACjC;AAAA,cAAMvC,WAAW,EAChBgX,QAAU,OACVstB,SAAS,EACR,mBAAoB,KAAA,EAAA;AAGtB,YAAI4Z,WAAiBusC,MAAAA,MAAM,mDAAmDloF,EAAEmnF,OAAOjD,WAAWlkF,EAAEmnF,OAAOhD,GAAmB1mF,gBAAAA,QAAAA,EAAUiyD,KAAK/T,eAAYA,UAAS5B;AAClK,YAAI4B,SAAS6rC,SAAS;AACjB,cAAAA,UAAU7rC,SAAS6rC,QAAQW;AAC/BruF,UAAAA,WAAU+V,YAAY,EACrBq0E,KAAKlkF,EAAEmnF,OAAOjD,KACdC,KAAKnkF,EAAEmnF,OAAOhD,KACd6B,gBAAgBwB,SAChBtqF,YAAYpD,WAAUsG,WAAW9C,MACjCH,UAAUrD,WAAUwD,KAAKC,IAAIzD,WAAUsG,SAAAA,EAAW9C,MAAMxD,WAAU+B,OAAOqqB,WAAW,QACpF,EAAA,CAAA;AAAA,QAAA,OACK;AACExV,kBAAAC,MAAM,0CAA0CgrC,SAAShrC;QAClE;AAAA,MAAA,CAAA;AAEDxW,WAAKyF,MAAMA;AACXzF,WAAKsD,WAAWsE;AAAAA,IACjB;AAAA,IAEA,QAAQ4D,WACPxL;AAAAA,WAAKyF,IAAI8uB,OACT;AAAA,aAAO/oB,UAAUnL,YAAY;AAC5BmL,kBAAUnL,WAAWk0B;MACtB;AACA/oB,gBAAUtL,YAAY;AAAA,IACvB;AAAA,IAEA,eAAesB;AACR,YAAAysF,SAASN,EAAE/jE,KAAK,EACrBskE,SAAS,+DACTC,UAAc,CAAC,IAAI,KACnBC,YAAc,CAAC,IAAI,EACnBC,GAAAA,YAAc,CAAC,IAAI,EAAA,GACnBC,cAAc,CAAC,GAAG,EAEnB,EAAA,CAAA;AAAA,UAAIC,cAAc,EACjBC,UAAU,KACVhC,UAAUxsF,KAAKsD,SAASmpF,sBAAAA;AAEnB,YAAAgC,cAAcd,EAAEe,MAAMH,WAAa7B,EAAAA,WAAW1sF,KAAKL,UAAU0zB,UAAUs5D,iBAAiBnrF,MAAAA,CAAAA;AAC9F,YAAMmtF,WAAUhB,EAAEgB,UAAUjC,WAAWlrF,OAAMsF;AAE7C,UAAI8nF,eAAe,CAClBptF,OAAMuoF,KACNvoF,OAAMwoF,GAAAA;AAGP,WAAKxoF,OAAMuoF,OAAAA,CAAQvoF,OAAMwoF,KAAK;AACd4E,uBAAA,CAAC5uF,KAAKsD,SAAS6mF,eAAeJ,KAAK/pF,KAAKsD,SAAS6mF,eAAeH,GAChF;AAAA,MAAA;AACM,YAAAxzB,UAASm3B,EAAEn3B,OAAOo4B,cAAc,EACrChlE,MAAMqkE,OAAAA,CAAAA,EACJY,UAAUJ,WAAaK,EAAAA,YAAYH,QAASd,EAAAA,MAAM7tF,KAAKyF,GACpD;AAAA,YAAAonF,aAAa,EAACrrF,OAAAA,QAAOg1D;AACtBx2D,WAAA2pF,SAAS9lF,KAAKgpF,UAAAA;AAAAA,IACpB;AAAA,IAEA,kBAAkBzpE;AACjB,eAASjf,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,YAAIif,WAAWpjB,KAAK2pF,SAASxlF,CAAG3C,EAAAA,MAAMzB,IAAI;AACzCC,eAAKyF,IAAIspF,YAAY/uF,KAAK2pF,SAASxlF,CAAAA,EAAGqyD;AACjCx2D,eAAA2pF,SAASv2E,OAAOjP,GAAE;AACvBA;AAAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,kBAAkB3C,QACjB;AAAA,eAAS2C,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,YAAGnE,KAAK2pF,SAASxlF,CAAAA,EAAG3C,MAAMzB,MAAMyB,OAAMzB,IAAI;AACpCC,eAAA2pF,SAASxlF,CAAAA,EAAG3C,QAAQA;AACzB,eAAKA,OAAMuoF,OAAAA,CAAQvoF,OAAMwoF,KAAI;AAC5BhqF,iBAAK2pF,SAASxlF,CAAAA,EAAGqyD,OAAOw4B,UAAU,CAAChvF,KAAKsD,SAAS6mF,eAAeJ,KAAK/pF,KAAKsD,SAAS6mF,eAAeH,GAAAA,CAAAA;AAAAA,UAAI,OAChG;AACDhqF,iBAAA2pF,SAASxlF,CAAAA,EAAGqyD,OAAOw4B,UAAU,CAACxtF,OAAMuoF,KAAKvoF,OAAMwoF,GACrD,CAAA;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,oBACC;AAAA,UAAGhqF,KAAK2pF,UAAU;AACjB,iBAASxlF,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9CnE,eAAKyF,IAAIspF,YAAY/uF,KAAK2pF,SAASxlF,CAAAA,EAAGqyD;QACvC;AACAx2D,aAAK2pF,WAAW,CACjB;AAAA,MAAA;AAAA,IACD;AAAA,IAEA,QAAQuD,UAAkBC,WAAmBvD;AAC5C5pF,WAAKyF,IAAIgoF,QAAQ,CAACP,UAAUC,SAAYvD,GAAAA,IAAAA;AAAAA,IACzC;AAAA,IAEA,MAAMqF,eAAe7B;AACpB,YAAM9pF,WAAW,EAChBgX,QAAU,OACVstB,SAAS,EACR,mBAAoB,KAGtB,EAAA;AAAA,UAAI36B,WAAe,CAAA;AACnB,UAAIu0C,WAAiBusC,MAAAA,MAAM,gDAAgDX,MAAAA,gBAAsB9pF,UAAUiyD,KAAK/T,eAAYA,UAAS5B,KACjI,CAAA;AAAA,UAAA4B,YAAYA,SAASp9C,QAAQ;AAChC6I,iBAAS88E,OAAOvoC,SAAS,CAAA,EAAGuoC;AAC5B98E,iBAAS+8E,MAAAA,CAAOxoC,SAAS,CAAG0tC,EAAAA;AAAAA,MAAA,OACtB;AACE34E,gBAAAC,MAAM,sDAAsD42E;MACrE;AACO,aAAAngF;AAAAA,IACR;AAAA,EC3JM;AAAA,EAAA,MAAMkiF,cAKZ;AAAA,IAAA,YAAYxvF,YACXK;AAAAA,WAAKyF,MAAM;AACXzF,WAAK2pF,WAAW,CAChB3pF;AAAAA,WAAKL,YAAYA;AAAAA,IAClB;AAAA,IACA,aAAa6B;AACZ,UAAIxB,KAAK2pF,YAAY3pF,KAAK2pF,SAASvlF,SAAS,GAAG;AAC9C,iBAASD,IAAI,GAAGA,IAAKnE,KAAK2pF,SAASvlF,QAAQD,KAAK;AACnC,gBAAMuqF,QAAQ1uF,KAAK2pF,SAASxlF,CAAGqyD,EAAAA,OAAO44B;AAClC,cAAAV,MAAMW,OAAS,GAAA;AACfX,kBAAMn6D,OACV;AAAA,UAAA;AACZ,cAAI/yB,OAAMzB,MAAOC,KAAK2pF,SAASxlF,CAAAA,EAAG3C,MAAMzB,IAAI;AAC3CC,iBAAK2pF,SAASxlF,GAAGqyD,OAAO84B,YAAAA;AACpB,gBAAA9tF,OAAMuoF,OAAOvoF,OAAMwoF,KAAK;AACtBhqF,mBAAAytF,QAAQjsF,OAAMuoF,KAAKvoF,OAAMwoF,KAAKhqF,KAAKsD,SAASumF,sBAAsB7pF,KAAKsD,SAASwmF,YAAY;AAAA,YAAA,OAC3F;AACN9pF,mBAAKytF,QAAQztF,KAAKsD,SAAS6mF,eAAeJ,KAAK/pF,KAAKsD,SAAS6mF,eAAeH,KAAKhqF,KAAKsD,SAASumF,sBAAsB7pF,KAAKsD,SAASwmF,YAAAA;AAAAA,YACpI;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,WAAWt+E,WAAwB5D;AAC5B,UAAIjI,aAAYK,KAAKL;AAE3B4vF,eAASC,cAAc5nF,QAAQ4nF;AACnB,YAAA/pF,MAAM,IAAI8pF,SAAS1E,IAAI,EACzBr/E,WACAg/E,QAAQ,CAAC5iF,QAAQ6iF,iBAAiBT,KAAKpiF,QAAQ6iF,iBAAiBV,GAChEH,GAAAA,MAAOhiF,QAAQkiF,eAAe;AAE9BrkF,UAAAqoF,GAAG,YAAWnmD,eAAe9hC,GAAAA;AAClC,YAAA27C,WAAiBusC,MAAAA,MAAM,qDAAqDloF,EAAE4pF,OAAOzF,GAAQnkF,IAAAA,EAAE4pF,OAAO1F,GAAyBniF,sBAAAA,QAAQ4nF,eAAej6B,KAAK/T,eAAYA,UAAS5B,KAAAA,CAAAA;AACpL,YAAI4B,SAASkuC,UAAS;AACrB,cAAIrC,UAAU7rC,SAASkuC,SAAS,CAAA,EAAGC;AACnChwF,UAAAA,WAAU+V,YAAY,EACrBq0E,KAAKlkF,EAAE4pF,OAAO1F,KACdC,KAAKnkF,EAAE4pF,OAAOzF,KACd6B,gBAAgBwB,SAChBtqF,YAAYpD,WAAUsG,WAAW9C,MACjCH,UAAUrD,WAAUwD,KAAKC,IAAIzD,WAAUsG,SAAAA,EAAW9C,MAAMxD,WAAU+B,OAAOqqB,WAAW,QACpF,EAAA,CAAA;AAAA,QAAA,OACK;AACNxV,kBAAQC,MAAM,wCACf;AAAA,QAAA;AAAA,MAAA;AAEKxW,WAAKyF,MAAMA;AACXzF,WAAKsD,WAAWsE;AAAAA,IACvB;AAAA,IAEA,QAAQ4D,WAAAA;AACPxL,WAAKyF,IAAI8uB,OAAAA;AACH,aAAO/oB,UAAUnL,YAAY;AAClCmL,kBAAUnL,WAAWk0B,OAAAA;AAAAA,MACtB;AACM/oB,gBAAUtL,YAAY;AAAA,IAC7B;AAAA,IAEA,eAAesB,QACR;AAAA,UAAIE,SAAS,CAClBF,OAAMwoF,KACNxoF,OAAMuoF;AAGP,UAAKvoF,CAAAA,OAAMuoF,QAAQvoF,OAAMwoF,KAAK;AACpBtoF,iBAAA,CAAC1B,KAAKsD,SAAS6mF,eAAeH,KAAKhqF,KAAKsD,SAAS6mF,eAAeJ,GAAAA;AAAAA,MAC1E;AAEM,YAAA2E,QAAQ,IAAIa,SAASK,MAAM,EAAEz8E,QAAQ,IAAI08E,gBAAgB,MAAA,CAAA,EACpDC,YAAY,GAAG9vF,KAAKsD,SAASmpF,qBAAAA,IAAAA,EAC7BsD,QAAQ/vF,KAAKL,UAAU0zB,UAAUs5D,iBAAiBnrF,MAAAA,CAAAA;AACvD,YAAMg1D,UAAS,IAAI+4B,SAASS,SACvBC,UAAUvuF,MACVwuF,EAAAA,SAASxB,OACTb,MAAM7tF,KAAKyF,GACV;AAAA,YAAAonF,aAAa,EAACrrF,OAAAA,QAAOg1D;AACtBx2D,WAAA2pF,SAAS9lF,KAAKgpF,UAC1B;AAAA,IAAA;AAAA,IAEA,kBAAkBzpE;AACjB,eAASjf,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,YAAIif,WAAWpjB,KAAK2pF,SAASxlF,CAAG3C,EAAAA,MAAMzB,IAAI;AACzCC,eAAK2pF,SAASxlF,CAAAA,EAAGqyD,OAAOjiC,OACPv0B;AAAAA,eAAA2pF,SAASv2E,OAAOjP,GAAE;AACnCA;AAAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,kBAAkB3C,QAAAA;AACjB,eAAS2C,IAAI,GAAGA,IAAInE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC9C,YAAGnE,KAAK2pF,SAASxlF,CAAAA,EAAG3C,MAAMzB,MAAMyB,OAAMzB,IAAI;AACpCC,eAAA2pF,SAASxlF,CAAAA,EAAG3C,QAAQA;AACzB,cAAA,CAAKA,OAAMuoF,OAAQvoF,CAAAA,OAAMwoF,KAAI;AAC5BhqF,iBAAK2pF,SAASxlF,CAAAA,EAAGqyD,OAAOy5B,UAAU,CAACjwF,KAAKsD,SAAS6mF,eAAeH,KAAKhqF,KAAKsD,SAAS6mF,eAAeJ,GAAAA,CAAAA;AAAAA,UAAI,OAChG;AACD/pF,iBAAA2pF,SAASxlF,CAAGqyD,EAAAA,OAAOy5B,UAAU,CAACzuF,OAAMwoF,KAAKxoF,OAAMuoF;UACrD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,oBACC;AAAA,eAAS5lF,IAAI,GAAGA,IAAGnE,KAAK2pF,SAASvlF,QAAQD,KAAK;AAC7CnE,aAAK2pF,SAASxlF,GAAGqyD,OAAOjiC,OAAAA;AAAAA,MACzB;AACAv0B,WAAK2pF,WAAW;IACjB;AAAA,IAEA,QAAQuD,UAAkBC,WAAmBvD,MAC5C5pF;AAAAA,WAAKyF,IAAIwkF,UAAU,CAACkD,WAAWD,QACpBltF,CAAAA;AAAAA,WAAAyF,IAAIykF,QAAQN;IACxB;AAAA,IAEA,MAAA,eAAqBwD,QACpB;AAAA,UAAI5rC,iBAAiBusC,MAAM,qDAAqDX,MAA4BptF,sBAAAA,KAAKsD,SAASksF,WAAej6B,EAAAA,EAAAA,KAAK/T,eAAYA,UAAS5B,KAAAA,CAAAA;AACnK,UAAI3yC,WAAe,CAAA;AACf,UAAAu0C,YAAYA,SAASkuC,SAAStrF,QAAQ;AACzC6I,iBAAS+8E,MAAMxoC,SAASkuC,SAAS,CAAGlF,EAAAA,OAAO;AAC3Cv9E,iBAAS88E,MAAMvoC,SAASkuC,SAAS,CAAA,EAAGlF,OAAO,CAAC;AAAA,MAAA,OACtC;AACEj0E,gBAAAC,MAAM,sDAAsD42E,MAAAA,EAAAA;AAAAA,MACrE;AACO,aAAAngF;AAAAA,IACR;AAAA;ACjID,WAAAkjF,SAAwBxwF,YAExB;AAAA,QAAIywF,aAAiC;AACrC,QAAIC,kBAA4B,CAChC;AAAA,UAAMC,WAA2C,EAChDC,WAAW,IAAI7G,iBAAiB/pF,aAChC6wF,gBAAgB,IAAIlD,qBAAqB3tF,UACzC8wF,GAAAA,QAAQ,IAAItB,cAAcxvF,UAAAA,EAAAA;AAGxB,QAACA,CAAAA,WAAUkmE,KAAI;AACjBlmE,MAAAA,WAAUkmE,MAAM;IACjB;AACAlmE,IAAAA,WAAUkmE,IAAIqmB,UAAU,EACvBwE,eAAe,WACP;AAAA,aAAAJ,SAAS3wF,WAAU+B,OAAOivF;IAClC,GACAxE,cAAc,SAASzqF,QAAAA;AACtB,aAAO,IAAI0oF,OAAOC,KAAK2F,OAAOtuF,MAAAA;AAAAA,IAC/B,GACAkvF,gBAAgB,MAChBN,SAED3wF;AAAAA,IAAAA,WAAUkxF,gBAAiB;AAC3BlxF,IAAAA,WAAUmxF,wBAAwB;AAClCnxF,IAAAA,WAAU+B,OAAOivF,oBAAoB;AACrChxF,IAAAA,WAAU+B,OAAOqvF,eAAe,EAC/BtG,kBAAkB,EACfV,KAAK,QACLC,KAAK,MAERG,GAAAA,gBAAgB,EACbJ,KAAK,IACLC,KAAK,GAAA,GAERF,cAAc,GACdD,oBAAoB,IACpB4C,uBAAuB,KACvBuE,uBAAuB,MACvBC,wBAAwB,MACxBC,eAAe;AAEZ,QAAAvxF,WAAU+B,OAAOyvF,sBAAsB;AAChCxxF,MAAAA,WAAA+B,OAAOqvF,aAAatG,mBAAmB,EAChDV,KAAKpqF,WAAU+B,OAAOyvF,qBAAqBpH,IAC3CC,GAAAA,KAAKrqF,WAAU+B,OAAOyvF,qBAAqBnH,IAE7C,EAAA;AAAA,IAAA;AAEI,QAAArqF,WAAU+B,OAAO0vF,oBAAoB;AAC9BzxF,MAAAA,WAAA+B,OAAOqvF,aAAa5G,iBAAiB,EAC9CJ,KAAKpqF,WAAU+B,OAAO0vF,mBAAmBrH,OACzCC,KAAKrqF,WAAU+B,OAAO0vF,mBAAmBpH;IAE3C;AAEArqF,IAAAA,WAAU2f,GAAG+xE,iBAAiB;AAC9B1xF,IAAAA,WAAU2f,GAAGgyE,iBAAiB;AAC9B3xF,IAAAA,WAAU2f,GAAGiyE,wBAAwB;AACrC5xF,IAAAA,WAAUwD,KAAKquF,UAAU,SAASruF,MAAMmqC,KAAK7tC,MAC5C;AAAA,aAAQ,IAAI+E,KAAKrB,KAAK4B;IAAS;AAEhCpF,IAAAA,WAAU0zB,UAAUo+D,WAAW,SAASp8D,IAAIC,IAAI71B;AACxC,aAAA;AAAA,IAAA;AAERE,IAAAA,WAAU0zB,UAAUq+D,WAAW,SAASniF,OAAOC,KAAKhJ,IAAAA;AACnD,UAAI7G,WAAU+B,OAAOijB,QAAQne,GAAG4D,QAAQ;AAChC,eAAAzK,WAAU0zB,UAAUoK,SAASjuB,OAAO,cAAc7P,WAAU0zB,UAAUoK,SAASluB,KAAAA;AAAAA,MAAK,WACjF/I,GAAG4D,QAAQ;AACd,eAAApK,KAAKy9B,SAASj3B,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAM,IAAA,MAAMxG,KAAKmyC,WAAW5iC;MAAK,OAC5E;AACC,eAAA5P,WAAU0zB,UAAUoK,SAASluB,KAAS,IAAA,cAAc5P,WAAU0zB,UAAUoK,SAASjuB,GACzF;AAAA,MAAA;AAAA,IAAA;AAED7P,IAAAA,WAAU0zB,UAAUs+D,WAAW,SAASpiF,OAAOC,KAAKhJ,IAAAA;AACnD,aAAOA,GAAGM;AAAAA,IAAA;AAEDnH,IAAAA,WAAA0zB,UAAUs5D,mBAAmB,SAASnrF,QAAAA;AACrC,aAAA,6BAA6BA,OAAMsF,IAClBtF;AAAAA,4BAAAA,OAAMqqF;0BACRlsF,WAAU0zB,UAAUuf,oBAAoBpxC,OAAMuB,UAAAA,CAAAA;AAAAA,wBAChDpD,WAAU0zB,UAAUuf,oBAAoBpxC,OAAMwB,QAAAA,CAAAA;AAAAA;AAAAA,IAAS;AAGrErD,IAAAA,WAAAwD,KAAKyuF,YAAY,SAASh+E,GAAAA;AAC5B,aAAAA;AAAAA,IAAA;AAGR,aAASi+E,aAAalyF;AAERA,mBAAAA,YAAUkmE,IAAIqmB,QAAQwE,cAAAA;AACboB,4BACvB;AAAA,IAAA;AACenqD,mBAAAoqD,qBAAqBvwF,QAAuB4uF;AAC1D,UAAI4B,cAAAA,MAAoB5B,YAAWnB,eAAeztF,OAAMqqF,cACxDrqF;AAAAA,MAAAA,OAAMuoF,MAAMiI,YAAYjI;AACxBvoF,MAAAA,OAAMwoF,MAAMgI,YAAYhI;AACxBoG,kBAAW6B,kBAAkB5sF,OAAO7D,OAAMzB;AAC1CqwF,kBAAW8B,eAAe1wF;AACnB,aAAAA;AAAAA,IACR;AACS,aAAA2wF,gBAAgBvqF,SAAuBwqF,SAAAA;AAC/C,UAAIxqF,QAAQopF,uBAAuB;AAClC,YAAItrD,UAAU2sD,aAAa;AAChB3sD,oBAAA2sD,YAAYC,mBAAmB,SAASrlF,UACzCmlF;AAAAA,oBAAA3E,QAAQxgF,SAASslF,OAAOrF,UAAUjgF,SAASslF,OAAOpF,WAAWvlF,QAAQiiF,sBAAuBjiF,QAAQkiF,YAAAA;AAAAA,UAAY;QAE1H;AAAA,MAAA,OACM;AACEsI,gBAAA3E,QAAQ7lF,QAAQ6iF,iBAAiBV,KAAKniF,QAAQ6iF,iBAAiBT,KAAKpiF,QAAQkiF,YAAAA;AAAAA,MACrF;AAAA,IACD;AACUnqF,IAAAA,WAAA6yF,wBAAwB,SAAS3sF;AACtC,UAAAtE,YAAYsE,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eACtD,GAAA;AAAA,UAAI3C,WAAU;AACb,YAAI6hB,UAAU7hB,UAAUkD,aAAa,GAAG9E,WAAU+B,OAAOwC,eACzDvE,EAAAA;AAAAA,QAAAA,WAAU0rB,aAAajI,OACxB;AAAA,MAAA;AACI,WAACpjB,KAAK0B,OAAOioB,YAAY3pB,KAAK0B,OAAO+T,mBAAoBlU,CAAAA,WAAW;AACvEvB,aAAK0V,YAAY,EAChB3S,YAAapD,WAAU+B,OAAOkwF,WAC9B5uF,UAAUrD,WAAUwD,KAAKC,IAAKzD,WAAU+B,OAAOkwF,WAAWjyF,WAAU+B,OAAOqqB,WAAW,QAExF,EAAA,CAAA;AAAA,MAAA;AAAA,IAAA;AAGD,aAAS+lE;AACSzB,sBAAAxsF,KACjBlE,WAAUiG,YAAY,eAAc,SAAS7F,KAAGyG,IAAGmsB,QAC9C;AAAA,YAAA8/D,kBAAkB9yF,WAAUmG,SAAS/F;AACzC,YAAI0yF,mBAAmBA,gBAAgB5G,kBAAkBrlF,GAAGqlF,gBAAgB;AAC3ElsF,UAAAA,WAAUmxF,wBAAwB;AAAA,QACnC;AACO,eAAA;AAAA,MAAA,CAELnxF,GAAAA,WAAUiG,YAAY,kBAAkB,CAAC7F,KAAIyB,WAAAA;AACzC,gBAAAuB,YAAaC,SAAYxB,IAAAA;AAC/B,cAAM2O,EAAAA,UAACC,SAAUA,IAAYzQ,WAAUsG,SACpC;AAAA,YAAAlD,WAAWgC,QAAYqL,IAAAA,SAASrL,QAAa/B,KAAAA,SAAS+B,YAAYoL,SAASpL,QAAAA,GAAU;AACvF,cAAIqrF,YAAY;AACX,gBAAAzwF,WAAU+B,OAAOqvF,aAAaE,0BAA0BzvF,OAAMqqF,kBAAAA,CAAmBlsF,WAAUkxF,eAAgB;AAC7GkB,mCAAqBvwF,QAAO4uF,UAAAA;AAAAA,YAAU,OACjC;AACNA,yBAAWsC,kBAAkBlxF,MAAAA;AAAAA,YAC9B;AAAA,UACD;AAAA,QACD;AACA7B,QAAAA,WAAUkxF,gBAAiB;AACpB,eAAA;AAAA,MAAA,IAERlxF,WAAUiG,YAAY,mBAAmB,SAASyjD,QAAOzV;AACpD,YAAA++C,aAAahzF,WAAUmG,SAAS8tC;AACpCw8C,iDAAY6B,kBAAkB5oC;AAC9B+mC,iDAAY8B,eAAeS;AAAAA,MAAU,CAEnChzF,GAAAA,WAAUiG,YAAY,gBAAgB,CAAC7F,KAAIyB,WAAAA;AACvC,gBAAAuB,YAAaC,SAAYxB,IAAAA;AAC/B,cAAM2O,EAAAA,UAACC,SAAUA,IAAYzQ,WAAUsG,SACpC;AAAA,YAAAlD,WAAWgC,QAAYqL,IAAAA,SAASrL,QAAa/B,KAAAA,SAAS+B,YAAYoL,SAASpL,QAAAA,GAAU;AAClF,cAAIqrF,YAAY;AACpB,gBAAIzwF,WAAU+B,OAAOqvF,aAAaE,0BAA0BzvF,OAAMqqF,kBAAkBlsF,WAAUmxF,uBAAuB;AACpHiB,mCAAqBvwF,QAAO4uF,UAAAA;AAC5BzwF,cAAAA,WAAUmxF,wBAAwB;AAAA,YAAA,OAC5B;AACNV,yBAAW8B,eAAe1wF,MAAAA;AAC1B4uF,yBAAWwC,aAAapxF,MAAAA;AAAAA,YACzB;AAAA,UACD;AAAA,QACD;AAAA,UAEE7B,WAAUiG,YAAY,WAAW,SAAU7F,KAAI8F;AAC3C,cAAArE,SAAQ7B,WAAUmG,SAAS/F;AACjC,YAAIqwF,cAAc5uF;AAAO4uF,qBAAWwC,aAAapxF;AAC1C,eAAA;AAAA,MAAA,CAEL7B,GAAAA,WAAUiG,YAAY,uBAAuB,CAAC7F,KAAIyB,WACpD;AAAA,YAAI4uF,YAAY;AACfA,qBAAW6B,kBAAkBlyF,GAAAA;AAAAA,QAC9B;AACO,eAAA;AAAA,MAAA;IAGT;AACA,aAAS8yF;AACRxC,sBAAgB1sF,QAAQ5D,CAAAA,QAAMJ,WAAUujB,YAAYnjB,GACpDswF,CAAAA;AAAAA,wBAAkB;IACnB;AAEU1wF,IAAAA,WAAAiG,YAAY,oBAAoB,WAAA;AAEtC,UAAAjG,WAAU+B,OAAOoxF,qBAA+B,QAAA;AAClDnzF,QAAAA,WAAU+B,OAAOqvF,aAAajH,eAAenqF,WAAU+B,OAAOoxF;AAAAA,MAC/D;AACG,UAAAnzF,WAAU+B,OAAOqxF,2BAAsC,QAAA;AACzDpzF,QAAAA,WAAU+B,OAAOqvF,aAAalH,qBAAqBlqF,WAAU+B,OAAOqxF;AAAAA,MACrE;AACG,UAAApzF,WAAU+B,OAAOsxF,6BAAuC,QAAA;AAC1DrzF,QAAAA,WAAU+B,OAAOqvF,aAAatE,wBAAwB9sF,WAAU+B,OAAOsxF;AAAAA,MACxE;AACG,UAAArzF,WAAU+B,OAAOuxF,8BAAAA,QAAwC;AAC3DtzF,QAAAA,WAAU+B,OAAOqvF,aAAaC,wBAAwBrxF,WAAU+B,OAAOuxF;AAAAA,MACxE;AACG,UAAAtzF,WAAU+B,OAAOivF,sBAAAA,QAAgC;AACnDhxF,QAAAA,WAAU+B,OAAOqvF,aAAaG,gBAAgBvxF,WAAU+B,OAAOivF;AAAAA,MAChE;AACG,UAAAhxF,WAAU+B,OAAOwxF,aAAAA,QAAuB;AAC1CvzF,QAAAA,WAAU+B,OAAOqvF,aAAa/pF,OAAOrH,WAAU+B,OAAOwxF;AAAAA,MACvD;AACG,UAAAvzF,WAAU+B,OAAOyxF,+BAAAA,QAAyC;AAC5DxzF,QAAAA,WAAU+B,OAAOqvF,aAAaE,yBAAyBtxF,WAAU+B,OAAOyxF;AAAAA,MACzE;AACAxzF,MAAAA,WAAUkmE,IAAIqmB,QAAQ0E,iBAAiBjxF,WAAU+B,OAAOivF;AAEpD,UAAAlrF,MAAM5F,SAASC,cAAc,KAAA;AACjC2F,UAAIoL,YAAY;AAChBpL,UAAI1F,KAAK;AACT0F,UAAInD,MAAMod,UAAU;AACpBja,UAAInD,MAAM44C,SAAS;AACTv7C,MAAAA,WAAA2kB,KAAKlkB,YAAYqF,GAE3B;AAAA,YAAMonC,MAAMltC,WAAU+X;AACZ/X,MAAAA,WAAA+X,cAAc,SAAS/N,KAAKmrC,MAAAA;AACjC,YAAA90C,KAAK4M,SAAS,OAAO;AACXwmF,uBAAAA;AACT,cAAAtzC,SAASngD,WAAU60C,mBACvB;AAAA,cAAI47C,YAAY;AACfA,uBAAWiD;AACXvzC,mBAAOn8C,QAASnC,CAAAA,WAAU4uF,yCAAY8B,eAAe1wF,OACtD;AAAA,UAAA;AAAA,QACD;AACQ,iBAAAqrC,IAAIz+B,MAAMpO,MAAMiU,SAAS;AAAA,MAAA;AAGxBtU,MAAAA,WAAAwwF,WAAW,SAAS1wF;AAC7BE,QAAAA,WAAUoM,KAAK0d,aAAa,CAAGnnB,EAAAA,MAAMyO,QAASpR,WAAU2f,GAAG+xE,iBAAiB1xF,WAAU2f,GAAGiyE,wBAAwB,IAAK;AACtH5xF,QAAAA,WAAUyM,YAAYzM,WAAU+B,OAAOkwF,aAAcjyF,WAAUsM,aAAAA;AACrDtM,QAAAA,WAAAwM,YAAYxM,WAAU+B,OAAO4xF,WAAW3zF,WAAUwD,KAAKC,IAAIzD,WAAUsM,aAAgB,GAAA,GAAG;AAClGtM,QAAAA,WAAUgN,cAAc;AACxBq8D,sBAAcvpE,IAAAA;AACV,YAAA8zF,eAAe1zF,SAAS0kB,eAAe,cAAA;AAC3CivE,oBAAY,cAGZ;AAAA,YAAI/zF,QAAQ8zF,cAAc;AACzB9tF,cAAInD,MAAMod,UAAU;AACP0zE,uBAAAA;AAEb,cAAIzzF,WAAU+B,OAAOivF,qBAAqBhxF,WAAUkmE,IAAIqmB,QAAQ0E,gBAAgB;AAC/ER,qDAAYqD,QAAQF;AACpB1B,yBAAalyF,UAAAA;AACbywF,qDAAYsD,WAAWH,cAAc5zF,WAAU+B,OAAOqvF;AAAAA,UAAY,OAC5D;AACNX,qDAAYqD,QAAQF;AACpB1B,yBAAalyF,UACbywF;AAAAA,qDAAYsD,WAAWH,cAAc5zF,WAAU+B,OAAOqvF;AACrDpxF,YAAAA,WAAUkmE,IAAIqmB,QAAQ0E,iBAAiBjxF,WAAU+B,OAAOivF;AAAAA,UAC1D;AACA,cAAGP,YAAY;AACE+B,4BAAAxyF,WAAU+B,OAAOqvF,cAAcX,UAChD;AAAA,UAAA;AAAA,QAAA,OACM;AACN3qF,cAAInD,MAAMod,UAAU;AACpB/f,UAAAA,WAAUoM,KAAK0d,aAAa,CAAGnnB,EAAAA,MAAMyO,QAAQ;AAC5C,cAAIq/E,cAAcmD,cAAe;AACjCnD,uBAAWqD,QAAQF;AACNnD,yBAAA;AACbzwF,YAAAA,WAAUkmE,IAAIqmB,QAAQ0E,iBAAiBjxF,WAAU+B,OAAOivF;AAAAA,UACtD;AACqBkC;QACzB;AAAA,MAAA;AAGD,eAASW,YAAYG;AAChBluF,YAAAA,OAAM5F,SAAS0kB,eAAeovE,OAAAA;AAClC,YAAIluF,MAAK;AACR,gBAAM8Z,aAAa5f,WAAUqE,WAAWgb,cAAc,oBAAoB8B;AACtE,cAAAhQ,SAASnR,WAAUqE,WAAWgb,cAAc,eAAA,EAAiB8B,eAAenhB,WAAUqE,WAAWgb,cAAc,iBAAmB8B,EAAAA;AACtI,cAAIhQ,SAAS;AACHA,qBAAA;AACN,cAAAC,QAAQpR,WAAUumB,KAAKvmB,WAAU2f,GAAG+xE,iBAAiB1xF,WAAU2f,GAAGiyE,wBAAwB;AAC9F,cAAIxgF,QAAQ;AACHA,oBAAA;AACTtL,eAAInD,MAAMwO,SAASA,SAAS;AAC5BrL,eAAInD,MAAMyO,QAAQA,QAAQ;AAC1BtL,eAAInD,MAAM2K,WAAW;AACrBxH,eAAInD,MAAMC,MAAMgd,aAAa;AACzB,cAAA5f,WAAU+B,OAAOijB,KAAK;AACzBlf,iBAAInD,MAAMsxF,cAAej0F,WAAU2f,GAAG+xE,iBAAiB1xF,WAAU2f,GAAGiyE,wBAAwB,IAAK;AAAA,UAAA,OAC3F;AACN9rF,iBAAInD,MAAMG,aAAc9C,WAAU2f,GAAG+xE,iBAAiB1xF,WAAU2f,GAAGiyE,wBAAwB,IAAK;AAAA,UACjG;AACA9rF,eAAInD,MAAMuxF,YAAal0F,WAAU2f,GAAGC,aAAa,IAAK;AAAA,QACvD;AAAA,MACD;AACA,eAAS6zE,eAAAA;AAEJ,YAAAtzC,SAASngD,WAAU60C;AAChBsL,eAAAvb,KAAK,SAASpoB,GAAGC,GAAAA;AACvB,cAAGD,EAAEpZ,WAAWgC,QAAWqX,KAAAA,EAAErZ,WAAWgC,QACvC;AAAA,mBAAOoX,EAAEpc,KAAGqc,EAAErc,KAAG,IAAA;AAClB,iBAAOoc,EAAEpZ,aAAWqZ,EAAErZ,aAAW;QAAE,CAAA;AAIhC,YAAA64C,WAAWj8C,WAAUgoB,SAASsX,cAAAA;AAE9B,YAAA/7B,OAAO,UAAQ04C,WAAS;AAC5B,iBAASz3C,IAAI,GAAGA,IAAI27C,OAAO17C,QAAQD,KAAK;AACnC,cAAAqC,KAAKs5C,OAAO37C,CAChB;AAAA,cAAImuC,cAAe9rC,GAAGzG,MAAMJ,WAAUm0F,qBAAsB,2BAA2B;AACvF,cAAIt2C,WAAYh3C,GAAG20C,QAAS,sCAAsC30C,GAAG20C,QAAQ,MAAO;AACpF,cAAIA,QAAS30C,GAAGs1C,YAAa,iCAAiCt1C,GAAGs1C,YAAY,MAAO;AAEpF,cAAIF,YAAWj8C,WAAUgoB,SAASuX,iBAAiB14B,EAAAA;AAC/C,cAAAutF,iBAAiBp0F,WAAUgoB,SAASwX,oBAAAA;AAExCj8B,kBAAQ,UAAQ04C,YAAS,aAAatJ,cAAc,iBAAiB9rC,GAAGzG,KAAK,OAAKJ,WAAU+B,OAAOwC,kBAAgB,OAAKsC,GAAGzG,KAAG,cAAcy9C,WAAgBrC,SAAc30C,GAAGw0C,eAAe,MAAM,cAAcr7C,WAAU2f,GAAG+xE,iBAAiB1xF,WAAU2f,GAAGiyE,wBAAwB,KAAK,wDAAwD5xF,WAAU2f,GAAG+xE,iBAAiB,WAAW1xF,WAAU0zB,UAAUq+D,SAASlrF,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAM,IAAA;AACxbtD,kBAAQ,QAAQ6wF,cAAAA;AAAAA;AAAAA;AAGhB7wF,kBAAQ,iDAAiDvD,WAAU2f,GAAGiyE,wBAAwB5xF,WAAU2f,GAAGgyE,kBAAkB,UAAU3xF,WAAU0zB,UAAUs+D,SAASnrF,GAAGzD,YAAYyD,GAAGxD,UAAUwD,MAAM;AAAA,QACvM;AACQtD,gBAAA,sCAAoCvD,WAAU+B,OAAOijB,MAAM,aAAa,cAAchlB,WAAU2f,GAAG+xE,iBAAiB,KAAK;AAGjI1xF,QAAAA,WAAUoM,KAAK,gBAAgB,CAAGshB,EAAAA,YAAY;AAC9C1tB,QAAAA,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG7L,YAAYgD;AAG9C,YAAIiR,IAAIxU,WAAUoM,KAAK,cAAgB,EAAA,CAAA,EAAG1L,WAAWwR;AAEjD,YAAA+3D,cAAcjqE,WAAUk3B,mBAAAA;AAC5B,YAAG+yC,aAAY;AACdA,sBAAY1pE,YAAUP,WAAU0zB,UAAU1zB,WAAUiN,QAAQ,OAASjN,EAAAA,WAAUyM,WAAWzM,WAAUwM,WAAWxM,WAAUiN,KAAAA;AAAAA,QAC1H;AAEAjN,QAAAA,WAAU+zC,YAAY;AACtB,iBAASvvC,IAAI,GAAGA,IAAIgQ,EAAE/P,SAAS,GAAGD,KAAK;AACtCxE,UAAAA,WAAU+zC,UAAUvvC,CAAAA,IAAKgQ,EAAEhQ,CAC5B;AAAA,QAAA;AAAA,MACD;AACA,eAAS6kE,cAAcvpE,MACtB;AAAA,YAAIA,MAAM;AACH,gBAAAwpE,IAAItpE,WAAU8nB,OAAOC;AACjB/nB,UAAAA,WAAAoM,KAAK,gBAAkB,EAAA,CAAA,EAAG7L,YAAY,8CAClCP,WAAU2f,GAAG+xE,iBAAiB1xF,WAAU2f,GAAGiyE,wBAAwB,KACpE,oDACA5xF,WAAU2f,GAAG+xE,iBAAiB,UAAUpoB,EAAE9lE,OAC1C,2DACAxD,WAAU2f,GAAGiyE,wBAAwB,UAAUtoB,EAAEnK,cAAc;AAC5En/D,UAAAA,WAAUgN,cAAc;AACxBhN,UAAAA,WAAUqlB,UACX;AAAA,QAAA;AAAA,MACD;AAEUrlB,MAAAA,WAAAiG,YAAY,mBAAmB,SAAU7F,KAAAA;AAClDwc,cAAM,yBACN;AAAA,eAAO6tE,OAAOC,KAAK4C,OAAO,UAAoB,QAAA;AAAA,MAAA;AAG3C,UAAA+G,uBAAuBrsD,eAAenmC,QACzC;AAAA,YAAI4uF,YAAW;AACd,gBAAM4B,cAAoB5B,MAAAA,WAAWnB,eAAeztF,OAAMqqF,cAAAA;AACtD,cAAAmG,YAAYjI,OAAOiI,YAAYhI,KAAK;AACjCxoF,YAAAA,OAAAuoF,MAAAA,CAAOiI,YAAYjI;AACnBvoF,YAAAA,OAAAwoF,OAAOgI,YAAYhI;AAAAA,UAAA,OACnB;AACNrqF,YAAAA,WAAUiL,UAAU,mBAAmB,CAACpJ,OAAMzB,EAAAA,CAAAA;AAC9CyB,YAAAA,OAAMwoF,MAAMrqF,WAAU+B,OAAOqvF,aAAa5G,eAAeH;AACzDxoF,YAAAA,OAAMuoF,MAAMpqF,WAAU+B,OAAOqvF,aAAa5G,eAAeJ;AAAAA,UAC1D;AACApqF,UAAAA,WAAUkxF,gBAAgB;AAC1BlxF,UAAAA,WAAUiL,UAAU,kBAAkB,CAACpJ,OAAMzB,IAAIyB,MAAAA,CAAAA;AAAAA,QAClD;AAAA,MAAA;AAED,UAAIyyF,SAAS,SAAS35E,QAAQT,QAAQihD,QAAQhiD;AAC7CO,mBAAW,WAAA;AACV,cAAG1Z,WAAU8gB,YAAW;AAChB,mBAAA;AAAA,UACR;AACA,cAAIyzE,MAAM55E,OAAOlM,MAAMyL,QAAQihD,MAAAA;AAC/BxgD,mBAAST,SAASihD,SAAS;AACpB,iBAAAo5B;AAAAA,QAAA,GACLp7E,UAAS,CAAA;AAAA,MAAC;AAEdnZ,MAAAA,WAAUw0F,uBAAuB;AACvBx0F,MAAAA,WAAAiG,YAAY,kBAAkB,SAASpE;AAC5C,YAAAA,OAAMuoF,OAAOvoF,OAAMwoF,KAAK;AACrBxoF,UAAAA,OAAAuoF,OAAOvoF,OAAMuoF;AACbvoF,UAAAA,OAAAwoF,MAAOxoF,CAAAA,OAAMwoF;AAAAA,QACpB;AACI,YAAArqF,WAAU+B,OAAOqvF,aAAaE,0BAA0BzvF,OAAMqqF,mBAAmBrqF,OAAMuoF,OAAAA,CAAQvoF,OAAMwoF,KAAK;AAC7GrqF,UAAAA,WAAUw0F,wBAAwB;AAClCF,iBAAOD,sBAAsBh0F,MAAM,CAACwB,MAAAA,GAAQ7B,WAAUw0F,oBAAAA;AAAAA,QACvD;AACO,eAAA;AAAA,MAAA;IACP,CAGF;AAAA,EAAA;ACtZe,WAAQC,QAACz0F,YAAAA;AAExB,UAAM00F,mBAAmB10F,WAAUmoB,qBAGnCnoB;AAAAA,IAAAA,WAAU+B,OAAO4yF,eAAe,EAC/BC,aAAa,KAEd50F;AAAAA,IAAAA,WAAU60F,wBAAwB,CAAA;AAClC70F,IAAAA,WAAUmc,iBAAiB,SAASlc,KAAK60F,OAAOC,YAAAA;AAC/C,UAAI9O,MAAM;AACV,UAAIziF,OAAOvD,IAAIuD,QAASxD,WAAUsM;AAClC,UAAW9I,OAAAA,QAAQ;AAClBA,eAAOnD,KAAKqzB,UAAUsc,SAASxsC;AAEhC,UAAKsxF,CAAAA,OAAO;AACX,YAAIE,OAAO/0F,IAAI4L;AACf,YAAIkhB,MAAM9sB,IAAIqN;AAEd,YAAW0nF,OAAAA,QAAQ;AAClBA,iBAAO90F,SAAS0kB,eAAeowE,IAEhC;AAAA,YAAA,OAAWjoE,OAAO;AACjBA,gBAAM7sB,SAAS0kB,eAAemI;AAC/B,YAAIA,QAAAA,OAAeA,IAAIlqB,QAAQ,eAAA,OAAsBkqB,IAAI9F,SAAS,cAAc;AAC/E,cAAIguE,OAAOj1F,WAAU6tB,YAAY8X,UAAU5Y,GAC3CA;AAAAA,gBAAM,EACLnqB,KAAKqyF,KAAKryF,MAAMmqB,IAAI5L,cACpBte,MAAMoyF,KAAKpyF;QAEZ;AACD,YAAA,CAAKmyF;AACJA,iBAAOh1F,WAAUk1F,cAAcnoE,GAAAA;AAEhCk5D,cAAM5lF,KAAK80F,iBAAiBH,MAAMxxF,MAAMvD,GAAAA;AAExC,YAAKgmF,CAAAA,IAAInoE,iBAAiB;AACzBmoE,cAAInoE,kBAAkB;AACtB42E,2BAAiBpsE,OAAO29D,KAAK,UAAS,SAAU//E,GAAAA;AAC/C,gBAAI2P,MAAM3P,EAAEE,UAAUF,EAAEisB;AAExB,gBAAIijE,OAAOp1F,WAAU6tB;AACrB,gBAAIunE,KAAK/uF,QAAQwP,KAAK,oBAAoB;AACzC,kBAAA,CAAKu/E,KAAK/uF,QAAQwP,KAAK,YAAkBu/E,KAAAA,CAAAA,KAAK/uF,QAAQwP,KAAK,aAAA,GAAgB;AAE1E,oBAAIw/E,WAAWD,KAAK/uF,QAAQwP,KAAK,kBACjC;AAAA,oBAAIy/E,gBAAgBD,SAASvwF,aAAa;AAC1C,oBAAI88D,UAAU5hE,WAAU0zB,UAAUmG,WAAWy7D,aAE7Ct1F;AAAAA,gBAAAA,WAAUu1F,eAAel1F,IACzBL;AAAAA,gBAAAA,WAAUw1F,aAAan1F,MAAMuhE,SAAS;AACtCvhE,qBAAKo1F,aAAa7zB;AAClB,oBAAIvhE,KAAKq1F,KAAKx3E;AAAS7d,uBAAKq1F,KAAKx3E,QAAQzH,KAAKzW,YAAW4hE,SAASvhE,IAClE;AAAA,cAAA;AAAA,YACD;AAAA,UACD,GAAE6iB,KAAK+iE;QACR;AAAA,MAEH,OAAQ;AACNA,cAAM5lF,KAAK80F,iBAAiBL,MAAMhnF,YAAYtK,MAAMvD,KAAK60F;AACzD90F,QAAAA,WAAUu1F,eAAetP;MACzB;AAED,UAAIjmF,WAAU+B,OAAO4yF,aAAaC,aAAa;AAC9C,YAAIhlF,QAAQ5P,WAAUwD,KAAK8pC,YAAY9pC,IAAAA;AACvC,YAAIqM,MAAM7P,WAAUwD,KAAKC,IAAImM,OAAO,GAAG,OAAA;AACvC,YAAI5F,MAAM3J,KAAK81C,UAAUvmC,OAAOC;AAChC,YAAIolC,SAAS50C,KAAK,YAAYA,KAAK4M;AACnC,YAAI0oF,cAAc,CAAA;AAClB,iBAASnxF,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,cAAIqC,KAAKmD,IAAIxF,CACb;AAAA,cAAIywC,WAAWA,OAAOpuC,GAAGzG,IAAIyG,EAC5B;AAAA;AACD,cAAIoN,IAAIpN,GAAGzD;AACX,cAAI6Q,EAAE7O,QAAYwK,IAAAA,MAAMxK;AACvB6O,gBAAIrE;AACLqE,cAAIjU,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKoP,EAAE7O,QAAAA,CAAAA,CAAAA;AACxC,iBAAO6O,IAAIpN,GAAGxD,UAAU;AACvB,iBAAIsyF,YAAa1hF,CAAAA,CAAAA,GAAI;AACpB0hF,0BAAa1hF,CAAAA,CAAAA,IAAK;AAClB5T,mBAAKm1F,aAAavP,KAAKhyE,GAAG;YAC1B;AACDA,gBAAI5T,KAAKmD,KAAKC,IAAIwQ,GAAG,GAAG,KAAA;AACxB,gBAAIA,EAAE7O,aAAayK,IAAIzK,QAAAA;AACtB;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAED/E,WAAKu1F,yBAAyB3P,GAE9BA;AAAAA,UAAIyP,OAAOz1F;AACX,UAAIA,IAAI41F,QAASd,CAAAA;AAChB10F,aAAKw0F,sBAAsB3wF,KAAK+hF,GAEjC;AAAA,UAAA,CAAIA,IAAIyP,KAAKI,iBAAgB;AAC5B7P,YAAIyP,KAAKI,kBAAkB91F,WAAUiG,YAAY,SAAS,SAAS8vF;AAClE/1F,UAAAA,WAAUg2F,eAAe/P,KAAKA,IAAIyP,KAAKlyF;QAC1C,CACE;AAAA,MAAA;AAED,UAAGnD,KAAK0B,OAAO8f,uBAAuBxhB,KAAK0B,OAAO8iB,2BAA0B;AAC3EohE,YAAI9oE,aAAa,QAAQ,aACzB;AAAA,MAAA;AAED,aAAO8oE;AAAAA,IACR;AACAjmF,IAAAA,WAAUk1F,gBAAgB,SAASnoE,KAClC;AAAA,UAAA,CAAK1sB,KAAK+lF,YAAY;AACrB/lF,aAAK+lF,aAAalmF,SAASC,cAAc,KAAA;AACzCE,aAAK+lF,WAAWl1E,YAAY;AAC5BlR,QAAAA,WAAU6B,MAAMxB,KAAK+lF,YAAY,SAAS,SAASlgF,GAAAA;AAAKA,YAAE6jB,eAAe;AAAA,QAAO,CAChF7pB;AAAAA,iBAASM,KAAKC,YAAYJ,KAAK+lF;MAC/B;AAED,UAAGr5D,IAAIlqB,MAAK;AACXxC,aAAK+lF,WAAWzjF,MAAME,OAAOkqB,IAAIlqB,OAAO;AAAA,MACxC;AACD,UAAGkqB,IAAI9F,OAAM;AACZ5mB,aAAK+lF,WAAWzjF,MAAMskB,QAAQ8F,IAAI9F,QAAQ;AAAA,MAC1C;AACD,UAAG8F,IAAInqB,KAAI;AACVvC,aAAK+lF,WAAWzjF,MAAMC,MAAMmqB,IAAInqB,MAAM;AAAA,MACtC;AACD,UAAGmqB,IAAIuV,QAAO;AACbjiC,aAAK+lF,WAAWzjF,MAAM2/B,SAASvV,IAAIuV,SAAS;AAAA,MAC5C;AAEDjiC,WAAK+lF,WAAW6P,WAAW,oBAAIpxF;AAE/B,aAAOxE,KAAK+lF;AAAAA,IACb;AACApmF,IAAAA,WAAUk2F,kBAAkB,SAASjQ,KAAKziF;AACzC,UAAWA,OAAAA,QAAQ;AAClBA,eAAOxD,WAAU0zB,UAAUsc,SAASxsC,IAAAA;AAErC,UAAIA,CAAAA,OAAAA,CAAQyiF,IAAIz5E,aAAchJ,CAAAA,OAAAA,CAAQyiF,IAAIx5E;AACzC,eAAO;AAER,UAAI0sB,QAAQ8sD,IAAI5mE,cAAc,kBAAkBnN,WAAW,CAAA;AAE3D,UAAIikF,UAAU;AACd,UAAIC,MAAM,IAAIvxF,KAAKohF,IAAIx5E;AACvB,aAAOpM,CAAAA,KAAKmD,KAAKC,IAAI2yF,KAAK,GAAG,MAAY5yF,KAAAA,CAAAA,MAAK;AAC7C4yF,cAAM/1F,KAAKmD,KAAKC,IAAI2yF,KAAK,GAAG,MAAA;AAC5BD;AAAAA,MACA;AAED,UAAI17C,KAAKz6C,WAAU+B,OAAOsrC;AAC1B,UAAIxtC,OAAO2D,KAAK4F,OAAAA,MAAaqxC,KAAK,IAAI,OAAOA,KAAK,IAAI;AAEtD,YAAM47C,UAAUl9D,MAAM9Z,cAAc,gCAAgC82E,UAAU,CAAoCt2F,mCAAAA,MAAM,CACxH,GAAA;AAAA,UAAGw2F,SAAS;AACX,eAAOA,QAAQ31F;AAAAA,MACjB,OAAQ;AACN,eAAO;AAAA,MACP;AAAA,IACF;AACAV,IAAAA,WAAUw1F,eAAe,SAASvP,KAAKziF,MAAMF,KAAAA;AAC5C,UAAIsK,MAAMvN,KAAK61F,gBAAgBjQ,KAAKziF;AACpC,UAAIoK,CAAAA;AACH;AAEDA,UAAIsD,aAAa,MAAM5N;AAAAA,IACxB;AACAtD,IAAAA,WAAUu1F,iBAAiB,SAAStP,KAAKziF,MAAMF;AAC9CE,aAAOA,QAAQyiF,IAAIwP;AACnBnyF,YAAMA,OAAO;AACb,WAAKE;AAAM;AACX,UAAIqgB,MAAKxjB,KAAK61F,gBAAgBjQ,KAAKziF,IAAAA;AACnC,UAAIqgB,CAAAA;AACH;AACDA,MAAAA,IAAG3S,aAAa2S,IAAG3S,aAAa,IAAIkZ,QAAQ+S,OAAO75B,KAAK,GACzD,CAAA;AAAA,IAAA;AACAtD,IAAAA,WAAUs2F,iBAAiB,SAASllF;AACnC,UAAIykB,OAAQzkB,SAAS;AACrB,UAAIvO,OAAO;AAEX,UAAI0zF,gBAAgBr2F,SAASC,cAAc,KAC3C;AAAA,UAAIq2F,aAAan2F,KAAKmD,KAAK6B,WAAWrF,WAAUsM;AAChD,eAAS9H,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3BnE,aAAK0Q,MAAMvM,KAAKgN,KAAK8D,MAAMugB,QAAQ,IAAIrxB,EAAAA;AACvCnE,aAAKw0B,iBAAiBrwB,GAAG3B,MAAM2zF,YAAYD;AAC3CC,qBAAan2F,KAAKmD,KAAKC,IAAI+yF,YAAY,GAAG,KAC1C3gE;AAAAA,gBAAQx1B,KAAK0Q,MAAMvM;AACnB3B,gBAAQxC,KAAK0Q,MAAMvM,CACnB;AAAA,MAAA;AACD+xF,oBAAcx3C,UAAU7tC,aAAa;AACrC,aAAOqlF;AAAAA,IACR;AACAv2F,IAAAA,WAAUg2F,iBAAiB,SAAS/1F,KAAKk2B;AACxCl2B,UAAIy1F,KAAKlyF,OAAO2yB;AAChB91B,WAAK8b,eAAelc,IAAIy1F,MAAMz1F,KAAK,IAAA;AAAA,IACpC;AACAD,IAAAA,WAAUy2F,mBAAmB,CAAC,UAAU;AACxCz2F,IAAAA,WAAUm1F,mBAAmB,SAASl1F,KAAKk2B,IAAIu/D,MAAMgB,UAEpD;AAAA,UAAIC,KAAK32F,WAAU0zB;AACnB,UAAIgZ,OAAOrsC,KAAK0Q;AAChB1Q,WAAK0Q,QAAQ,CACb;AAAA,UAAI6lF,QAAQv2F,KAAK4M;AACjB5M,WAAK4M,QAAQ;AACb,UAAI4pF,QAAQx2F,KAAKutB;AACjBvtB,WAAKutB,SAAS,EAACzc,QAAQ,EAAA;AACvB,UAAI2lF,QAAQ,IAAIjyF,KAAKxE,KAAKoM,SAAAA;AAC1B,UAAIsqF,QAAQ,IAAIlyF,KAAKxE,KAAKmM;AAC1B,UAAIwqF,QAAQ,IAAInyF,KAAK7E,WAAUkV,KAC/B;AAAA,UAAI+hF,QAAQN,GAAGj9D;AACf,UAAIw9D,QAAQ72F,KAAK6tB;AAAmB7tB,WAAK6tB,oBAAoB;AAC7DyoE,SAAGj9D,YAAYi9D,GAAGtjD;AAElBld,WAAK91B,KAAKmD,KAAK8pC,YAAYnX,EAC3B;AAAA,UAAIogE,gBAAgBl2F,KAAKi2F,eAAer2F,IAAIohB,cAAc,IAAIhhB,KAAK0B,OAAO4yF,aAAawC,OAEvF;AAAA,UAAIljF;AACJ,UAAIyiF,UAAS;AACZziF,YAAIyiF;AAAAA,MACN,OAAQ;AACNziF,YAAI/T,SAASC,cAAc,KAC3B8T;AAAAA,UAAE/C,YAAY;AAAA,MACd;AACD+C,QAAEkJ,aAAa,QAAQ9c,KAAKwxC,SAASG,WAAW7b,EAChDliB,CAAAA;AAAAA,QAAE1T,YAAY,iEAEXP,WAAU+B,OAAOijB,MAAM,oBAAoB,QAC5C,iCAA+BuxE,gBAAgBA,cAAch2F,YAAY,MAAI;AAG/E,UAAI2jB,SAASjQ,EAAEoL,cAAc,iBAC7B;AAAA,UAAI+3E,aAAanjF,EAAEoL,cAAc;AACjC,UAAI7e,OAAOyT,EAAEoL,cAAc,gBAAA;AAE3B6E,aAAO3jB,YAAYF,KAAKqzB,UAAUyf,eAAehd;AACjD,UAAIu/D,KAAKz3E,YAAY;AACpB,YAAIo5E,yBAAyB,SAASl5E,UAAUiR,MAC/C;AAAA,cAAI5rB,OAAOxD,WAAUwD,KAAKC,IAAI0a,SAASjJ,OAAOka,MAAM,OAAA;AACpDpvB,UAAAA,WAAUg2F,eAAe73E,UAAU3a;AACnC,cAAIxD,WAAUkV,MAAM+D,SAAckF,KAAAA,SAASjJ,MAAM+D,SAAAA,KAAcjZ,WAAUkV,MAAM8D,YAAAA,KAAiBmF,SAASjJ,MAAM8D,YAAAA,GAAe;AAC7HhZ,YAAAA,WAAU41F,yBAAyBz3E,QACnC;AAAA,UAAA;AAAA,QACJ;AAEE,YAAIm5E,iBAAiB,CAAC,uBAAuB,qBAAA;AAC7C,YAAIC,YAAY,CAAC,uCAAuC,iDAAA;AACxD,YAAIC,QAAQ,CAAA,IAAK,CACjB;AAAA,YAAIt5E,UAAU,SAASkR,MAAAA;AACtB,iBAAO,WAAA;AACN,gBAAIsmE,KAAKG,MAAM;AACd,kBAAI7tB,YAAYhoE,WAAU60F;AAC1B,uBAASxlF,IAAI,GAAGA,IAAI24D,UAAUvjE,QAAQ4K,KAAK;AAC1CgoF,uCAAuBrvB,UAAU34D,CAAAA,GAAI+f,IACrC;AAAA,cAAA;AAAA,YACN,OAAW;AACN,kBAAIpvB,WAAU+B,OAAOijB,KAAK;AACzBoK,uBAAQA,CAAAA;AAAAA,cACR;AACDioE,qCAAuBpjF,GAAGmb,IAC1B;AAAA,YAAA;AAAA,UACL;AAAA,QACA;AACE,YAAIrH,SAAS,CAAC/nB,WAAU8nB,OAAOC,OAAOgM,MAAM/zB,WAAU8nB,OAAOC,OAAO7I,IACpE;AAAA,iBAAS4U,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B,cAAI2jE,QAAQv3F,SAASC,cAAc;AAEnCs3F,gBAAMvmF,YAAYomF,eAAexjE,CAAAA;AAEjC9zB,UAAAA,WAAUgoB,SAASgM,wBAAwByjE,OAAO1vE,OAAO+L,CAAAA,CAAAA;AAEzD2jE,gBAAM90F,MAAMg5C,UAAU47C,UAAUzjE,CAAAA;AAChC2jE,gBAAMl3F,YAAYF,KAAKo2F,iBAAiB3iE,CACxC5P;AAAAA,iBAAOzjB,YAAYg3F,KACnB/C;AAAAA,2BAAiBpsE,OAAOmvE,OAAO,SAASv5E,QAAQs5E,MAAM1jE;QACtD;AAAA,MACD;AACD7f,QAAEiB,QAAQ,IAAIrQ,KAAKsxB,EAAAA;AAEnBliB,QAAE5O,cAAc8wB,GAAG/sB,YAAY/I,KAAK0B,OAAOsrC,kBAAkB,IAAI,KAAK,KAAK;AAE3E,UAAI3X,KAAKzhB,EAAExH,YAAYpM,KAAKmD,KAAK6B,WAAW8wB,EAC5CliB;AAAAA,QAAEzH,YAAYnM,KAAKmD,KAAKC,IAAIwQ,EAAExH,WAAW,GAAG,MAAA;AAE5CpM,WAAKo3B,mBAAmBj3B,MAAM21B,IAAIT,IAAI;AAEtC,UAAKghE,CAAAA;AACJz2F,YAAIQ,YAAYwT,CAAAA;AAEjBmjF,iBAAWz0F,MAAMwO,SAAUimF,WAAWllF,WAAW,GAAGiP,eAAe,IAAK;AAExE,UAAIue,WAAW1/B,WAAU+O,IACzB/O;AAAAA,MAAAA,WAAUgoB,SAASyX,cAAcvb,QAAQwb,QACzC1/B;AAAAA,MAAAA,WAAUgoB,SAAS2X,YAAY1rB,EAAEoL,cAAc,gBAAmBqgB,GAAAA,QAAAA;AAClE1/B,MAAAA,WAAUgoB,SAAS4X,WAAWw3D,UAE9B;AAAA,UAAIM,aAAaN,WAAW9yF,iBAAiB,gBAC7C;AAAA,eAAQE,IAAI,GAAGA,IAAIkzF,WAAWjzF,QAAQD,KAAI;AACzCxE,QAAAA,WAAUgoB,SAAS+X,gBAAgB23D,WAAWlzF,CAAAA,CAAAA;AAAAA,MAC9C;AACD,UAAImzF,WAAWn3F,KAAK8D,iBAAiB,qBAAA;AACrC,UAAIm/D,YAAY,IAAI5+D,KAAK6wB,EAAAA;AACzB,eAAQlxB,IAAI,GAAGA,IAAImzF,SAASlzF,QAAQD,KAAI;AAEvCxE,QAAAA,WAAUgoB,SAAS6X,eAAe83D,SAASnzF,CAAAA,GAAI,IAAIK,KAAK4+D,SAAAA,CAAAA;AACxDA,oBAAYzjE,WAAUwD,KAAKC,IAAIggE,WAAW,GAAG,KAC7C;AAAA,MAAA;AAEDzjE,MAAAA,WAAUgoB,SAASyX,cAAcvb,QAAQwb,QAGzCr/B;AAAAA,WAAK0Q,QAAQ27B;AACbrsC,WAAK4M,QAAQ2pF;AACbv2F,WAAKutB,SAASipE;AACdx2F,WAAKoM,YAAYqqF;AACjBz2F,WAAKmM,YAAYuqF;AACjB/2F,MAAAA,WAAUkV,QAAQ8hF;AAClBL,SAAGj9D,YAAYu9D;AACf52F,WAAK6tB,oBAAoBgpE;AACzB,aAAOjjF;AAAAA,IACR;AACAjU,IAAAA,WAAUge,kBAAkB,SAASioE,KAAKjsE;AACzC,UAAKisE,CAAAA,OAAO5lF,KAAK+lF,cAAc/lF,KAAK+lF,WAAW1lF,YAAY;AAC1D,YAAIsZ,UAAS,oBAAKnV,QAAQO,QAAAA,IAAY/E,KAAK+lF,WAAW6P,SAAS7wF,QAAY,IAAA;AAC1E6gF,gBAAM5lF,KAAK+lF,WAAW1lF;AAAAA,MACvB;AACD,UAAA,CAAKulF;AAAK;AACVyO,uBAAiBtsE,UAEjB69D;AAAAA,UAAI1lF,YAAY;AAChB,UAAI0lF,IAAIn4E;AACPm4E,YAAIn4E,WAAWC,YAAYk4E;AAC5B,UAAI5lF,KAAK+lF;AACR/lF,aAAK+lF,WAAWzjF,MAAMC,MAAM;AAE7B,UAAGqjF,IAAIyP,QAAQzP,IAAIyP,KAAKI;AACvB91F,QAAAA,WAAUujB,YAAY0iE,IAAIyP,KAAKI,eAAAA;AAAAA,IACjC;AACA91F,IAAAA,WAAU+d,oBAAoB,WAC7B;AAAA,UAAI1d,KAAK+lF,cAAc/vD,SAASh2B,KAAK+lF,WAAWzjF,MAAMC,KAAK,EAAA,IAAM;AAChE,eAAOvC,KAAK+lF;AACb,aAAO;AAAA,IACR;AAEApmF,IAAAA,WAAUiG,YAAY,oBAAoB,WAAA;AACzCjG,MAAAA,WAAU6B,MAAM3B,SAASM,MAAM,SAAS,WAAA;AAAaR,QAAAA,WAAUge,gBAAkB;AAAA,MAAA,CAAA;AAAA,IAClF,GAAG,EAACyE,MAAM,KAIVziB,CAAAA;AAAAA,IAAAA,WAAU4jD,YAAYtQ,gBAAgB,EACrC7rC,QAAQ,SAAS+8C,KAAAA;AAChB,UAAIjhD,OAAO;AAEX,UAAIU,MAAMjE,WAAU+B;AACpB,UAAIgjD,KAAK1kD,KAAKmD,KAAKyF,UAAUjJ,WAAUsM;AAEvC,UAAI04C,OAAO,KAAK,IAAI5b,QAAQ;AAC5B,UAAInlC,IAAIghD,mBAAmB;AAC1B7b,gBAAQ,KAAKnlC,IAAI0I;AACjBq4C,eAAO,KAAK/gD,IAAI2I,YAAY;AAAA,MAC5B;AACDm4C,SAAGj6C,SAASs+B,QAAQ,EAAA;AAEpBob,UAAIgB,eAAe,CAAA;AACnBjiD,cAAQ;AACR,eAASiB,IAAI4kC,OAAO5kC,IAAIwgD,MAAMxgD,KAAKnE,KAAK0B,OAAOqqB,YAAY,GAAG;AAC7D,YAAIm4B,OAAOlkD,KAAKqzB,UAAU6e,YAAYwS;AACtCxhD,gBAAQ,oBAAoBiB,IAAI,OAAO+/C,OAAO;AAC9CC,YAAIgB,aAAathD,KAAKM,CAAAA;AACtBugD,aAAK1kD,KAAKmD,KAAKC,IAAIshD,IAAI1kD,KAAK0B,OAAOqqB,WAAW;MAC9C;AACD7oB,cAAQ;AAIR,aAAO,wDAAwDA,OAAO,2EAA2EA,OAAO;AAAA,IACxJ,GACDwgD,WAAW,SAAS78B,MAAMxI,OAAO7X,IAAI9E,QAAAA;AAEpC,UAAI61F,SAAS1wE,KAAKQ,qBAAqB,OAAA;AACvC,UAAImwE,UAAU3wE,KAAKQ,qBAAqB,QACxC;AAAA,UAAItkB,YACHC;AAED,UAAI0gB,aAAa,SAAS+zE,KAAKt0F,MAAMu0F,QAAAA;AACpC/3F,QAAAA,WAAU6B,MAAMi2F,KAAK,SAAS,WAC7B93F;AAAAA,UAAAA,WAAUge,gBAAgB,MAAM;AAChChe,UAAAA,WAAUmc,eAAe,EACxB7O,UAAUwqF,KACVt0F,MAAM,IAAIqB,KAAKxE,KAAK6U,KAAAA,GACpB+I,YAAY,MACZC,SAAS,SAAS85E,UACjBF;AAAAA,gBAAIp5E,QAAQ1e,WAAU0zB,UAAU4f,cAAc0kD,QAAAA;AAC9CF,gBAAI5iF,QAAQ,IAAIrQ,KAAKmzF,QACrBh4F;AAAAA,YAAAA,WAAUge;AACV,gBAAIhe,WAAU+B,OAAOoqB,kBAAkBnsB,WAAU+B,OAAOgkD,iBAAiBgyC,WAAW,GAAG;AACtFE,qCACA;AAAA,YAAA;AAAA,UACD,EAEN,CAAA;AAAA,QAAA,CAAA;AAAA,MACA;AAEE,UAAIj4F,WAAU+B,OAAO2jD,UAAU;AAC9B,aAAKx+B,KAAKy+B,WAAW;AACpB,cAAIpiD,OAAO,qFAAqFvD,WAAU8nB,OAAOC,OAAO29B,WAAW;AACnI,cAAK1lD,CAAAA,WAAU+B,OAAOouC;AACrB5sC,mBAAO2jB,KAAK83B,gBAAgBz+C,YAAYgD;AACzC2jB,eAAK83B,gBAAgBz+C,YAAYgD;AACjC2jB,eAAKy+B,YAAY;AAAA,QACjB;AACD,YAAIthB,QAAQnd,KAAK83B,gBAAgBt3B,qBAAqB,OAAS,EAAA,CAAA;AAE/D,YAAIwwE,iBAAkBl4F,WAAUwD,KAAK8sB,UAAUzpB,GAAGzD,UAAgB,MAAA,KAAKpD,WAAUwD,KAAK8sB,UAAUzpB,GAAGxD,QAAAA,MAAc;AACjHghC,cAAMuhB,UAAUsyC;AAEhBL,gBAAQ,CAAA,EAAGhyC,WAAWxhB,MAAMuhB;AAC5BiyC,gBAAQ,CAAA,EAAGhyC,WAAWxhB,MAAMuhB;AAE5B,aAAKvhB,MAAMvmB,iBAAiB;AAC3BumB,gBAAMvmB,kBAAkB;AACxB9d,UAAAA,WAAU6B,MAAMwiC,OAAO,SAAS;AAC/B,gBAAIA,MAAMuhB,YAAY,MAAM;AAC3B,kBAAI3lD,MAAM,CAAA;AACVD,cAAAA,WAAU4jD,YAAYtQ,cAAcuQ,UAAU38B,MAAMjnB,GAEpDmD;AAAAA,2BAAapD,WAAUwD,KAAKyF,UAAUhJ,IAAImD,UAAAA;AAC1CC,yBAAWrD,WAAUwD,KAAKyF,UAAUhJ,IAAIoD,QAAAA;AAExC,kBAAKA,CAAAA,YAAAA,CAAaD,eAAgBC,YAAaD,CAAAA,eAAeyD,GAAGxD,SAASqJ,SAAAA,MAAe,KAAK7F,GAAGxD,SAAS2K,WAAiB,MAAA;AAC1H3K,2BAAWrD,WAAUwD,KAAKC,IAAIJ,UAAU,GAAG;YAC5C;AAED,gBAAIuM,QAAQxM,cAAcyD,GAAGzD;AAC7B,gBAAIyM,MAAMxM,YAAYwD,GAAGxD;AACzB80F,2BAAeP,OAAO,CAAIhoF,GAAAA,KAAAA;AAC1BuoF,2BAAeP,OAAO,CAAA,GAAI/nF;AAC1BgoF,oBAAQ,CAAA,EAAGn5E,QAAQ9O,MAAMlD,SAAAA,IAAa,KAAKkD,MAAM5B;AACjD6pF,oBAAQ,CAAA,EAAGn5E,QAAQ7O,IAAInD,SAAAA,IAAa,KAAKmD,IAAI7B,WAAAA;AAE7C6pF,oBAAQ,CAAA,EAAGhyC,WAAWxhB,MAAMuhB;AAC5BiyC,oBAAQ,CAAGhyC,EAAAA,WAAWxhB,MAAMuhB;AAAAA,UAEjC,CAAA;AAAA,QACI;AAAA,MACD;AACD,UAAI5lD,WAAU+B,OAAOoqB,kBAAkBnsB,WAAU+B,OAAOgkD,eAAe;AAEtE,YAAIkyC,yBAAyB,WAAA;AAC5B,gBAAMj4F,WAAU+B,OAAOgkD,iBAAiB/lD,WAAU+B,OAAOoqB,iBAAgB;AAExE;AAAA,UACA;AACD/oB,uBAAapD,WAAUwD,KAAKC,IAAIm0F,OAAO,CAAG1iF,EAAAA,OAAO2iF,QAAQ,CAAGn5E,EAAAA,OAAO,QACnErb;AAAAA,qBAAW,IAAIwB,KAAKzB,WAAWy3B,YAAa76B,WAAU+B,OAAOoqB,iBAAiB,KAAK,GAAA;AAEnFyrE,iBAAO,CAAA,EAAGl5E,QAAQ1e,WAAU0zB,UAAU4f,cAAcjwC,QACpDu0F;AAAAA,iBAAO,GAAG1iF,QAAQlV,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKxB,QAAAA,CAAAA;AAEpDw0F,kBAAQ,CAAGn5E,EAAAA,QAAQrb,SAASqJ,SAAa,IAAA,KAAKrJ,SAAS2K,WAAAA;AAAAA,QAC3D;AAEG,YAAI6pF,CAAAA,QAAQ,GAAG/5E,iBAAgB;AAC9B+5E,kBAAQ,CAAGv7D,EAAAA,iBAAiB,UAAU27D,sBAAAA;AAAAA,QACtC;AAAA,MACD;AAED,eAASE,eAAeL,KAAKt0F,MAAMu0F;AAClCh0E,mBAAW+zE,KAAKt0F,MAAMu0F,MAAAA;AACtBD,YAAIp5E,QAAQ1e,WAAU0zB,UAAU4f,cAAc9vC,IAAAA;AAC9Cs0F,YAAI5iF,QAAQlV,WAAUwD,KAAKyF,UAAU,IAAIpE,KAAKrB,IAAAA,CAAAA;AAAAA,MAC9C;AAED20F,qBAAeP,OAAO,IAAI/wF,GAAGzD,YAAY,CACzC+0F;AAAAA,qBAAeP,OAAO,CAAI/wF,GAAAA,GAAGxD,UAAU,CACvC0gB;AAAAA,mBAAa;MAAW;AAExB,eAASq0E,eAAe50F,MAAAA;AACvB,YAAIyiD,cAAclkD,OAAOyjD;AACzB,YAAIU,eAAe1iD,KAAKkJ,SAAa,IAAA,KAAKlJ,KAAKwK,WAAAA;AAC/C,YAAIm4C,cAAcD;AAClB,YAAIE,cAAc;AAElB,iBAAS/2C,IAAI,GAAGA,IAAI42C,YAAYxhD,QAAQ4K,KAAK;AAC5C,cAAIg3C,MAAMJ,YAAY52C,CACtB;AAAA,cAAIg3C,QAAQH,cAAc;AACzBE,0BAAc;AACd;AAAA,UACA;AACD,cAAIC,MAAMH;AACTC,0BAAcE;AAAAA,QACf;AAED,cAAKD,eAAeD;AACnB,iBAAQ;AAET,eAAO,cAAgBD,eAAeC;AAAAA,MACtC;AAED0xC,cAAQ,CAAGn5E,EAAAA,QAAQ05E,eAAevxF,GAAGzD,UAAAA;AACrCy0F,cAAQ,CAAGn5E,EAAAA,QAAQ05E,eAAevxF,GAAGxD;IAErC,GACDwgD,WAAW,SAAS38B,MAAMrgB,IAAAA;AACzB,UAAI+wF,SAAS1wE,KAAKQ,qBAAqB,OAAA;AACvC,UAAImwE,UAAU3wE,KAAKQ,qBAAqB,QAExC7gB;AAAAA,SAAGzD,aAAapD,WAAUwD,KAAKC,IAAIm0F,OAAO,GAAG1iF,OAAO2iF,QAAQ,GAAGn5E,OAAO,QAAA;AACtE7X,SAAGxD,WAAWrD,WAAUwD,KAAKC,IAAIm0F,OAAO,CAAG1iF,EAAAA,OAAO2iF,QAAQ,CAAGn5E,EAAAA,OAAO;AAEpE,UAAI7X,GAAGxD,YAAYwD,GAAGzD;AACrByD,WAAGxD,WAAWrD,WAAUwD,KAAKC,IAAIoD,GAAGzD,YAAYpD,WAAU+B,OAAOqqB,WAAW;AAC7E,aAAO,EACNhpB,YAAY,IAAIyB,KAAKgC,GAAGzD,UACxBC,GAAAA,UAAU,IAAIwB,KAAKgC,GAAGxD,QAEvB,EAAA;AAAA,IAAA,GACDq3B,OAAO,SAASxT,MAAAA;AAAAA,IACf;AAEFlnB,IAAAA,WAAUq4F,eAAe,SAASl6E,UAAUm6E;AAC3C,UAAI/vC,SAAS;AACZ,YAAI/kD,OAAOxD,WAAUkV;AACrB,YAAIqjF,UAAU,IAAI1zF,KAAKrB,KAAK4B,QAAAA,CAAAA;AAC5B,YAAIkzF;AAAUC,oBAAUD,SAASC,OACjCA;AAAAA,gBAAQhrD,QAAQ,CAAA;AAChBvtC,QAAAA,WAAUg2F,eAAe73E,UAAUo6E;AACnC,eAAO;AAAA,MACT;AAECv4F,MAAAA,WAAUiG,YAAY,gBAAgBsiD,MAAAA;AACtCvoD,MAAAA,WAAUiG,YAAY,SAASsiD;AAC/BvoD,MAAAA,WAAUiG,YAAY,gBAAgBsiD,MACtCvoD;AAAAA,MAAAA,WAAUiG,YAAY,kBAAkBsiD;AACxCvoD,MAAAA,WAAUiG,YAAY,kBAAkBsiD,MACxCA;AAAAA,aAAAA;AAAAA,IACD;AAEAvoD,IAAAA,WAAU41F,2BAA2B,SAASz3E,UAAAA;AAC7C,UAAIge,QAAQn8B,WAAUsG;AACtB,UAAI8uB,OAAO+G,MAAM3rB;AACjB,UAAI6kB,KAAK8G,MAAM1rB;AACf,UAAI3Q,OAAOq8B,MAAMr8B;AAEjB,UAAIwtC,cAActtC,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKsZ,SAASjJ,KAAAA,CAAAA;AAC/D,UAAIsjF,YAAYx4F,WAAUwD,KAAKC,IAAI6pC,aAAa,GAAG,OAAA;AAEnD,UAAImrD,cAAc,EACjBr3D,OAAQ,MACR5lB,MAAO,MACPJ,QAAS,MACTC,MAAO,KAAA;AAGR,UAAGo9E,YAAY34F,IAAAA,KAAUs1B,KAAKhwB,QAAakoC,KAAAA,YAAYloC,aAAaiwB,GAAGjwB,QAAAA,KAAaozF,UAAUpzF,QAAAA,GAAW;AACxG;AAAA,MACA;AAED,UAAI+6E,UAAU/qD;AACd,aAAM+qD,QAAQ/6E,QAAAA,IAAYiwB,GAAGjwB,QAAAA,GAAU;AACtC,YAAIkoC,YAAYloC,aAAa+6E,QAAQ/6E,QAAAA,KAAaozF,YAAYrY,SAAS;AACtEngF,UAAAA,WAAUw1F,aAAar3E,UAAUgiE,SAAS,oBAAA;AAAA,QAC1C;AACDA,kBAAUngF,WAAUwD,KAAKC,IAAI08E,SAAS,GAAG,KAAA;AAAA,MACzC;AAAA,IACF;AAEAngF,IAAAA,WAAUiG,YAAY,iBAAiB,WAAA;AACtCjG,MAAAA,WAAUge,gBAAgB,MAAM,IACjC;AAAA,IAAA,CAAA;AAEAhe,IAAAA,WAAUiG,YAAY,aAAa;AAClCjG,MAAAA,WAAUge,gBAAAA;AAAAA,IACX;EAEA;AC7jBe,WAAQ06E,YAAC14F,YAAAA;AAExBA,IAAAA,WAAUiG,YAAY,oBAAmB;AACxCjG,MAAAA,WAAU2f,GAAG+F,eAAe;AAE5B,UAAIwnB,MAAMltC,WAAUgY;AACpBhY,MAAAA,WAAUgY,mBAAiB;AAC1B,YAAIlG,OAAOzR,KAAK+L,KAAK,cAAA,EAAgB,CACrC0F;AAAAA,aAAKpR,WAAW2tE,SAAS;AAEzBnhC,YAAIz+B,MAAMzO,YAAUsU;AAIpB,YAAInD,SAASklB,SAASvkB,KAAKnP,MAAMwO,MACjCW;AAAAA,aAAKnP,MAAMwO,SAAO;AAClBW,aAAKnP,MAAMwO,SAAOW,KAAKylC,eAAa;AAEpCl3C,aAAKskB,KAAKhiB,MAAMwO,SAAS9Q,KAAKskB,KAAKlE,eAAe3O,KAAKylC,eAAepmC,SAAS;AAAA,MACjF;AAEC,UAAIwnF,QAAM34F,WAAUy3B;AACpBz3B,MAAAA,WAAUy3B,qBAAmB,SAASjb,GAAEC,GAAE1S,GAAEkK,GAC3C;AAAA,YAAIsW,QAAQ,EAAC9J,cAAa;AAC1Bk4E,cAAMlqF,MAAMzO,YAAU,CAACuqB,OAAM9N,GAAE1S,GAAEkK;AACjCuI,UAAEjc,YAAYgqB,MAAMhqB;AAAAA,MACtB;AAAA,IAEA,CAEA;AAAA,EAAA;AC5Be,WAAQq4F,wBAAC54F,YAAAA;AACvB2wE,mBAAe/zD,MAAM,gBAAgB5c,WAAU8a,MAAAA;AAAAA,EAChD;ACJe,WAAQ+9E,YAAC74F,YAGxB;AAAA,aAAS84F,gBAAgBz5C,QAAQt9C,QAAAA;AAChC,UAAIkd,QAAQjf,WAAUmoC,KAAKa,MAAM,eAAeqW,OAAO1U,MAAAA;AACvD,UAAIz7B,MAAM,CAAA;AACV,eAAS1K,IAAI,GAAGA,IAAIya,MAAMxa,QAAQD,KAAK;AACtC0K,YAAI+P,MAAMza,CAAGM,EAAAA,aAAa/C,OAAOU,MAAAA,CAAAA,IAAW;AAAA,MAC5C;AACD,aAAOyM;AAAAA,IACR;AAEA,aAAS6pF,iBAAiB15C,QAAQt9C,QAAAA;AACjC,UACC;AAAA,YAAIkd,QAAQ6F,KAAKujB,MAAMgX,OAAO1U,OAAOjuB,YAAAA;AACrC,YAAIxN,MAAM,CAAA;AACV,iBAAS1K,IAAI,GAAGA,IAAIya,MAAMxa,QAAQD,KAAK;AACtC,cAAI+7C,SAASthC,MAAMza;AAEnB0K,cAAIqxC,OAAO7hC,SAAS6hC,OAAOhrC,OAAOgrC,OAAOngD,EAAM,IAAA;AAAA,QAC/C;AACD,eAAO8O;AAAAA,MACP,SAAMhJ;AACN,eAAO;AAAA,MACP;AAAA,IACF;AAEAlG,IAAAA,WAAU4jD,YAAY,aAAA,IAAe,EACpCn8C,QAAO,SAAS+8C;AACf,UAAIlhD,MAAM,+CAA6CkhD,IAAI/pC;AAC3D,UAAK+pC,CAAAA,CAAAA,IAAIguB,UAAS;AACjBlvE,eAAO;AAAA,MACP;AAED,UAAI01F,UAAU,iBAAe11F,MAAI,0CAAwCkhD,IAAIrzC,SAAO;AACpF,eAAS3M,IAAE,GAAGA,IAAEggD,IAAIv8C,QAAQxD,QAAQD,KAAK;AACxCw0F,mBAAW,0CAAwCx0C,IAAIv8C,QAAQzD,CAAAA,EAAG+Q,MAAI,QAAMivC,IAAIv8C,QAAQzD,CAAAA,EAAGqjB,QAAM;AAAA,MACjG;AACDmxE,iBAAW;AACX,aAAOA;AAAAA,IACP,GACDj1C,WAAU,SAAS78B,MAAKxI,OAAM7X,IAAG9E,QAAAA;AAEhC,UAAIk3F,YAAY/xE,KAAKQ,qBAAqB,OAC1C;AAAA,eAAQljB,IAAE,GAAEA,IAAEy0F,UAAUx0F,QAAOD,KAAK;AACnCy0F,kBAAUz0F,CAAGohD,EAAAA,UAAU;AAAA,MACvB;AAED,eAASszC,aAAahqF,KAAAA;AACrB,YAAI+pF,aAAY/xE,KAAKQ,qBAAqB,OAC1C;AAAA,iBAAQljB,KAAE,GAAEA,KAAEy0F,WAAUx0F,QAAQD,MAAK;AACpCy0F,UAAAA,WAAUz0F,EAAGohD,EAAAA,UAAAA,CAAAA,CAAa12C,IAAI+pF,WAAUz0F,IAAGka,KAC3C;AAAA,QAAA;AAAA,MACD;AAED,UAAIy6E,OAAO,CAAA;AACX,UAAItyF,GAAG9E,OAAOU,SAAS;AACtB,YAAIopF,WAAWhlF,GAAG9E,OAAOU,UAAU,IAAIkD,MAAM5D,OAAOq3F,aAAap5F,WAAU+B,OAAO6D,qBAAqB;AACvG,iBAASpB,IAAI,GAAGA,IAAIqnF,QAAQpnF,QAAQD,KAAK;AACxC20F,eAAKtN,QAAQrnF,CAAM,CAAA,IAAA;AAAA,QACnB;AACD00F,qBAAaC,IAAAA;AAAAA,MAChB,OAAS;AACN,YAAIn5F,WAAUypB,cAAAA,CAAe1nB,OAAOs3F;AACnC;AACD,YAAIC,aAAap5F,SAASC,cAAc,KAAA;AACxCm5F,mBAAWpoF,YAAY;AACvBooF,mBAAW32F,MAAMg5C,UAAU;AAC3Bz0B,aAAKzmB,YAAY64F,UAEjB;AAAA,YAAIvxD,OAAM,CACThmC,OAAOs3F,YACNt3F,OAAOs3F,WAAWjnF,QAAQ,GAAS,KAAA,KAAI,MAAM,KAC9C,mBAAmBrQ,OAAOU,SAAS,MAAMoE,GAAGzG,KAAK,UAAUJ,WAAU+O,IAAAA,CAAAA,EACpEoB,KAAK,EAAA;AAEPnQ,QAAAA,WAAUmoC,KAAK0B,IAAI9B,MAAK,SAASsX,QAAAA;AAChC,cAAIp3C,UAAU8wF,iBAAiB15C,MAC/B;AAAA,cAAA,CAAIp3C,SAAQ;AACXA,sBAAU6wF,gBAAgBz5C,QAAQt9C,MAAAA;AAAAA,UAClC;AACDm3F,uBAAajxF,OAAAA;AACbif,eAAKnZ,YAAYurF;QACrB,CACG;AAAA,MAAA;AAAA,IACD,GACDz1C,WAAU,SAAS38B,MAAKrgB,IAAG9E,QAAAA;AAC1B,UAAIi3F,UAAU;AACd,UAAIC,YAAY/xE,KAAKQ,qBAAqB,OAAA;AAC1C,eAAQljB,IAAE,GAAEA,IAAEy0F,UAAUx0F,QAAOD,KAAK;AACnC,YAAGy0F,UAAUz0F,GAAGohD;AACfozC,kBAAQ90F,KAAK+0F,UAAUz0F,GAAGka,KAC3B;AAAA,MAAA;AACD,aAAOs6E,QAAQ7oF,KAAKpO,OAAOq3F,aAAap5F,WAAU+B,OAAO6D,qBAAqB;IAC9E,GAED80B,OAAM,SAASxT,MAAAA;AAAAA,IACd;EAGF;ACpGe,WAAQqyE,YAACv5F,YAAAA;AAGvB,aAASw5F,OAAOv5F,KAAAA;AACf,UAAIuU,IAAI,WAAA;AAAA;AACRA,QAAEkE,YAAYzY;AACd,aAAOuU;AAAAA,IACP;AAED,QAAI04B,MAAMltC,WAAUqzB;AACpBrzB,IAAAA,WAAUqzB,QAAM,SAAS0U,MAAI3S,MAAAA;AAC5B2S,MAAAA,OAAIA,QAAK1nC,KAAKqhD;AACd,UAAW3Z,OAAAA,QAAO,UAAS;AAC1B,YAAIvzB,IAAIglF,OAAOn5F,KAAKmzC,OACpB;AAAA,iBAAShvC,IAAE,GAAGA,IAAIujC,KAAItjC,QAAQD,KAAK;AAClCnE,eAAKmzC,UAAQ,IAAIh/B;AACjB04B,cAAIz2B,KAAKpW,MAAK0nC,KAAIvjC,CAAAA,GAAG4wB,IACrB;AAAA,QAAA;AAAA,MACD;AACA8X,YAAIz+B,MAAMpO,MAAKiU,SAClB;AAAA,IAAA;AAAA,EAEA;ACtBe,WAAQmlF,IAACz5F,YAEvB;AAAA,QAAIiE,MAAM,EACTy1F,QAAS;AAIV,aAASC,SAAS9yF;AACjB,UAAI5G,MAAM,CAAA;AACV,eAASsV,OAAO1O;AACf,YAAI0O,IAAInD,QAAQ,GAAS,MAAA;AACxBnS,cAAIsV,GAAAA,IAAO1O,GAAG0O,GAEhB;AAAA,UAAA,CAAKtR,IAAIy1F;AACDz5F,eAAAA,IAAIG;AAEZ,aAAOH;AAAAA,IACP;AAED,QAAI25F;AACJ,aAAS5nE,cAAAA;AACRrY,mBAAaigF,YACbA;AAAAA,qBAAelgF,WAAW,WACzB;AAAA,YAAG1Z,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACD9gB,QAAAA,WAAUiB,WAAAA;AAAAA,MACV,GAAC,CACF;AAAA,IAAA;AAED,aAAS44F,gBAAgB5T;AACxBA,UAAI15D,WAAW;AACf05D,UAAI5wC,cAAc;AAElB4wC,UAAIh7E,UAAU,SAAS,CAAA,CAAA;AAAA,IACvB;AACD,aAAS6uF,iBAAiB7T;AACzBA,UAAI5wC,cAAc;AAClB,UAAI4wC,IAAI3yD;AACP2yD,YAAIjuE;AACLiuE,UAAI15D,WAAW;AAEf05D,UAAIh7E,UAAU,SAAS,CACvB,CAAA;AAAA,IAAA;AAGD,aAAS8uF,QAAQC;AAChB,aAAO/1F,IAAIy1F,SAASM,MAAM55F,KAAK45F,MAAMC;AAAAA,IACrC;AAEFj6F,IAAAA,WAAUk6F,WAAW,SAAS/5C,QAAQp+C,QAAAA;AACrC,UAAIA;AAAQkC,cAAMlC;AAElBo+C,aAAOj9B,KAAK,UAAU,SAAS82E,OAAO7/B,MACrC;AAAA,YAAI8/B,MAAMF,QAAQC,KAAAA;AAClB,YAAInzF,KAAK7G,WAAUuzC,QAAQ0mD,GAAAA,IAAOD,MAAMG,OACxCtzF;AAAAA,WAAGzG,KAAK65F;AAERj6F,QAAAA,WAAUggD,YAAYn5C,EACtBmrB;AAAAA,oBAAAA;AAAAA,MACF,CACCmuB;AAAAA,aAAOj9B,KAAK,UAAU,SAAS82E,OAAOI,SACrC;AAAA,YAAIH,MAAMF,QAAQC,KAAAA;AAClB,YAAIh6F,WAAUuzC,QAAQ0mD,GACrBj6F;AAAAA,UAAAA,WAAUorB,YAAY6uE,GACzB;AAAA,MAAA,CAAA;AAEC,UAAII,QAAQ,CAAA;AACZ,eAASC,iBAAAA;AACR,YAAGt6F,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACD,YAAIu5E,MAAM51F,QAAO;AAChBzE,UAAAA,WAAUqoC,MAAMgyD,OAAO;AACvBA,kBAAQ,CAAA;AAAA,QACR;AAAA,MACD;AAEDl6C,aAAOj9B,KAAK,OAAO,SAAS82E,OAAOI,SAAAA;AAClC,YAAIH,MAAMF,QAAQC;AAClB,YAAKh6F,CAAAA,WAAUuzC,QAAQ0mD,GAAAA,GAAK;AAC3B,cAAIpzF,KAAMmzF,MAAMG,OAChBtzF;AAAAA,aAAGzG,KAAK65F;AACRj6F,UAAAA,WAAUggD,YAAYn5C,EAAAA;AAEtBwzF,gBAAMn2F,KAAK2C,EAAAA;AACX,cAAIwzF,MAAM51F,UAAU;AACnBiV,uBAAW4gF,gBAAe,CAC3B;AAAA,QAAA;AAAA,MACH;AAECn6C,aAAOj9B,KAAK,WAAW,SAASjjB,KAAAA;AAC/B,YAAIA,eAAes6F,SAASC;AAC3BX,0BAAgB75F;MACnB,CACCmgD;AAAAA,aAAOj9B,KAAK,QAAQ,SAASjjB;AAC5B,YAAIA,eAAes6F,SAASC;AAC3BV,2BAAiB95F,UACpB;AAAA,MAAA,CAAA;AACCmgD,aAAOj9B,KAAK,SAAS,SAASjjB,KAC7B;AAAA,YAAIA,eAAes6F,SAASC;AAC3BV,2BAAiB95F,UAAAA;AAAAA,MACpB;AAGCA,MAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAAA;AAChD,YAAIyG,KAAK,IAAIs5C,OAAO65C,MAAMh6F,WAAUmG,SAAS/F,GAAAA,CAAAA;AAC7CJ,QAAAA,WAAUuzC,QAAQnzC,GAAAA,IAAMyG,GAAGszF,OAAAA;AAC3Bn6F,QAAAA,WAAUuzC,QAAQnzC,GAAAA,EAAIA,KAAKA;AAE3B,eAAO;AAAA,MACT,CAECJ;AAAAA,MAAAA,WAAUiG,YAAY,gBAAgB,SAAS7F,KAC9C;AAAA,YAAA,CAAK+/C,OAAOtW,IAAIzpC,GAAAA,GAAI;AACnB,cAAI0R,OAAO6nF,SAAS35F,WAAUmG,SAAS/F,GACvC,CAAA;AAAA,cAAI45F,QAAQ,IAAI75C,OAAO65C,MAAMloF,IAE7B;AAAA,cAAImoF,MAAMF,QAAQC;AAClB,cAAIC,OAAO75F;AACVC,iBAAK2zC,cAAc5zC,KAAI65F,GACxB95C;AAAAA,iBAAO18C,IAAIu2F,KAAAA;AACX75C,iBAAOwqC,QAAQ,iBAAiBqP;QAChC;AACD,eAAO;AAAA,MACT,CACCh6F;AAAAA,MAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAChD;AAAA,YAAIyG,KAAKs5C,OAAOtW,IAAIzpC;AACpB,YAAImxD,MAAMooC,SAAS35F,WAAUmG,SAAS/F,GAEtCyG,CAAAA;AAAAA,WAAG4lC,IAAI8kB,GACPpR;AAAAA,eAAOwqC,QAAQ,oBAAoB9jF,EAAAA;AAEnC,eAAO;AAAA,MACT;AACC7G,MAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAAA;AAChD,YAAI45F,QAAQ75C,OAAOtW,IAAIzpC,GAAAA;AACvB,YAAI45F,OAAM;AACT75C,iBAAOwqC,QAAQ,oBAAoBqP;AACnC75C,iBAAOvrB,OAAOx0B,GACd;AAAA,QAAA;AACD,eAAO;AAAA,MACT,CAAA;AAAA,IACA;AAAA,EAEA;ACjJe,WAAQqmE,UAACzmE,YAIvBA;AAAAA,IAAAA,WAAUiG,YAAY,oBAAoB;AACzC,UAAIw0F,UAAO,IAAQC;AACnB,UAAIxtD,MAAMutD,QAAQE;AAClB,UAAIC;AACJH,cAAQE,WAAW,SAASz0F;AAC3B00F,qBAAa10F;AACb,eAAOgnC,IAAIz+B,MAAMpO,MAAMiU,SAAAA;AAAAA,MAC1B;AAEE,eAASumF,QAAQC,kBAAkBC,aAAaC,kBAAkBC;AAEjE,YAAIj7F,WAAUgL,WAAW,wBAAA,KAAA,CAA8BhL,WAAUiL,UAAU,0BAA0B,CAAC6vF,kBAAkBC,aAAaC,kBAAkBC,YAAYL,UAAAA,CAAAA;AAClK;AAED,YAAIluD,OAAO1sC,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAAA;AAC5D,eAAKJ,WAAUiL,UAAU,oBAAoB,CAAC7K,KAAI06F,kBAAkBF,UAAAA,CAAAA,GAAc;AACjFv6F,iBAAKwK,aAAaxK,KAAKuK,WAAW;AAClCvK,iBAAK+qB,YAAYhrB;UACjB;AAAA,QACL,CAAA;AAEG,YAAI86F,cAAcl7F,WAAUyG,cAAcm0F,UAC1C;AAAA,YAAIO,aAAa,EAChB/3F,YAAY,IAAIyB,KAAKq2F,YAAY13F,IAIlC,EAAA;AAAA,YAAIxD,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,QAAQ;AAC1D,cAAImuF,eAAep7F,WAAU4L,OAAO5L,WAAUiN,KAC9CkuF;AAAAA,qBAAWC,aAAa54F,UAAAA,IAAc04F,YAAYx0F;AAElD,cAAIqmB,MAAM/sB,WAAUq7F,sBAAsBT;AAC1CO,qBAAW/3F,aAAag4F,aAAaxhB,SAAS7sD,IAAI5F,CAClDg0E;AAAAA,qBAAW93F,WAAWrD,WAAUwD,KAAKC,IAAI03F,WAAW/3F,YAAYg4F,aAAa9sE,QAAQ8sE,aAAa7sE,MAClG;AAAA,QAAA;AACD,YAAIvuB,WAAU2L,UAAU3L,WAAU2L,OAAO3L,WAAUiN,KAAQ,GAAA;AAC1DkuF,qBAAWn7F,WAAU2L,OAAO3L,WAAUiN,KAAOxK,EAAAA,MAAAA,IAAUy4F,YAAYx0F;AAAAA,QACnE;AAED1G,QAAAA,WAAU+V,YAAYolF;AAEtBn7F,QAAAA,WAAUujB,YAAYmpB;MACtB;AAED+tD,cAAQa,eAAet7F,WAAUoM,KAAK,cAAgB,EAAA,CAAA,GAAI,EACzDmvF,OAAO,SAAST,kBAAkBC,aAAaC,kBAAkBC;AAChEJ,gBAAQC,kBAAkBC,aAAaC,kBAAkBC;MACzD,GACDO,SAAS,SAAS91D,YAAY+1D,aAAAA;AAC7B,eAAO/1D;AAAAA,MACP,GACDg2D,UAAU,SAASh2D;AAClB,eAAOrlC;AAAAA,MACP;AAGF,UAAGX,OAAOi8F,aAAa;AACtBj8F,eAAOi8F,YAAYC,QAAQ57F,WAAUoM,KAAK,cAAA,EAAgB,IAAI,EAC7DyvF,QAAQ,SAAU9hF,QAAQ3T,QAAQ6N,GAAG/N,GAAAA;AACpC,cAAI41F,eAAep8F,OAAOi8F,YAAYI,UAAUhiF,MAAAA;AAChD6gF,uBAAa10F;AACb20F,kBAAQ9gF,QAAQ+hF,cAAc11F,QAAQF,EAAEE,UAAUF,EAAEisB,UACpD;AAAA,QAAA,GAED6pE,UAAU,SAAUjiF,QAAQ3T,QAAQF,GAAAA;AACnC,iBAAOE;AAAAA,QACP,EAAA,GACC;MACH;AAAA,IACH,CAAA;AAAA,EAEA;AC3Ee,WAAQ61F,IAACj8F,YAEvB;AAAA,QAAImV,IAAI6Y,IACPkuE,cAAc,IAAI/+D,OAAO,WAAW,MACpCg/D,iBAAiB,IAAIh/D,OAAO,aAAa;AAE1C,aAASi/D,WAAW90E;AACnB,aAAOA,IAAI8C,QAAQ+xE,gBAAgB,IAAA,EAAM/xE,QAAQ8xE,aAAa;IAC9D;AAED,aAASG,OAAOl1E,GAAG3T;AAClB2T,UAAIm1E,WAAWn1E,CACf3T;AAAAA,eAAS8oF,WAAW9oF,MACpB;AAAA,UAAA,CAAKgU,MAAMhU,MAAS2T;AAAAA,aAAK3T;AAEzB,UAAI2M,IAAIo8E,UAAUp1E,CAAAA;AAClBA,UAAIA,IAAIhH,EAAE/O,QAAQ+O,EAAE3B,OAAKrJ;AACzB,aAAOqS,MAAML,CAAG,IAAA,SAAQ,MAAIA,IAAC;AAAA,IAC7B;AAED,aAASq1E,aAAar1E,GAAG3T,QAAQipF,SAAAA;AAChCt1E,UAAIm1E,WAAWn1E;AACf3T,eAAS8oF,WAAW9oF;AACpB,UAAKgU,CAAAA,MAAMhU,WAAWipF;AAASt1E,aAAK3T;AAEpC,UAAI2M,IAAIo8E,UAAUp1E,CAAAA;AAClBA,UAAIA,IAAIhH,EAAE/O,QAAQ+O,EAAE3B,OAAKrJ;AACzB,aAAOqS,MAAML,CAAG,IAAA,SAAQ,MAAIA,KAAGhS,MAAAA,CAAKqS,MAAMhU,MAAQA,IAAAA,SAAO;AAAA,IACzD;AACD,aAAS+oF,UAAUnrF,OAAAA;AAClB,UAAI8gB,IAAI;AACR,UAAIhO,SAASlkB,WAAUoM,KAAKswF,eAAe,GAAGxqF;AAC9C,UAAIvE,MAAMuW,OAAO,CAAA,IAAKA,OAAO,CAAGhS,EAAAA,aAAagS,OAAO,CAAA,EAAGhS;AACvD,eAAS1N,IAAI,GAAGA,IAAImJ,IAAIlJ,QAAQD,KAAK;AACpC,YAAIqf,MAAKlW,IAAInJ,CAAAA,EAAG7B,QAAQgL,IAAInJ,CAAAA,IAAKmJ,IAAInJ,CAAGsJ,EAAAA;AACxC,YAAIqS,IAAIm8E,WAAWz4E,IAAGlhB,MAAMyO;AAC5B,YAAIA,QAAQ+O,GAAE;AACb/O,mBAAU+O,IAAE;AACZ+R,eAAI/R,IAAE;AAAA,QACN;AAEA;AAAA,MACD;AACD,aAAO,EAAE/O,OAAO8gB,GAAG1T,MAAMha;IACzB;AAED,aAASm4F,OAAOv1E,GACfA;AAAAA,UAAIk1E,WAAWl1E,CACf;AAAA,UAAII,MAAMJ,CAAAA;AAAI,eAAO;AACrB,aAAO,MAAMA,IAAI4G;AAAAA,IACjB;AAED,aAAS4uE,UAAU11E,MAAMvkB,OAAAA;AACxB,cAAQrB,OAAOmgB,mBAAkBngB,OAAOmgB,iBAAiByF,MAAM,MAAMvkB,KAASukB,IAAAA,KAAK0c,eAAa1c,KAAK0c,aAAajhC,KAAO,IAAA,SAAQ;AAAA,IACjI;AAED,aAASk6F,OAAO31E,MAAMsR,GAAAA;AACrB,UAAIrR,IAAIkP,SAASnP,KAAKvkB,MAAME,MAAM,EAElC;AAAA,eAASsS,MAAK,GAAGA,MAAKnV,WAAU+Q,MAAMtM,QAAQ0Q,OAAM;AACnDgS,aAAKnnB,WAAU+Q,MAAMoE,GACrB;AAAA,YAAIgS,IAAI;AAAG,iBAAOhS;AAAAA,MAClB;AACD,aAAOqjB;AAAAA,IACP;AAED,aAASskE,QAAQ51E,MAAMsR,GACtB;AAAA,UAAIpR,IAAIiP,SAASnP,KAAKvkB,MAAMC,KAAK,EAAA;AACjC,eAASorB,MAAK,GAAGA,MAAKhuB,WAAU4tB,OAAOK,QAAQxpB,QAAQupB;AACtD,YAAIhuB,WAAU4tB,OAAOK,QAAQD,GAAM5G,IAAAA;AAAG,iBAAO4G;AAC9C,aAAOwK;AAAAA,IACP;AAED,aAASukE,UAAUxwC,KAClB;AAAA,aAAOA,MAAM,MAAIA,MAAI,MAAM;AAAA,IAC3B;AACD,aAASywC,QAAQzwC;AAChB,aAAOA,MAAM,OAAKA,MAAI,MAAM;AAAA,IAC5B;AAED,aAAS0wC,QAAQ1wC,KAAK2wC,SAASh5E,QAAQi5E,QAAAA;AACtC,UAAIr0D,MAAM,MAAIyjB,MAAI,eAAe2wC,UAAU;AAC3C,UAAIh5E;AACH4kB,eAAO,cAAc5kB,SAAS;AAC/B,UAAIi5E;AACHr0D,eAAO,cAAcq0D,SAAS;AAC/Br0D,aAAO;AACP,aAAOA;AAAAA,IACP;AAED,aAASs0D,kBACR;AAAA,UAAIt0D,MAAM;AAEV,UAAIhpC,OAAOE,WAAUiN;AACrB,UAAIjN,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAClDnN;AAAAA,eAAQE,WAAU4L,OAAO5L,WAAUiN,KAAOxF,EAAAA,UAAU,SAAU,WAAW;AAC1EqhC,aAAO,kBAAkBhpC,OAAO,cAAcE,WAAUoM,KAAKixF,aAAa,CAAA,EAAG98F,YAAY;AAEzF,UAAIP,WAAUiN,SAAS,eAAe;AACrC,YAAIqwF,KAAKt9F,WAAUoM,KAAK0d,aAAa,CAAGpC,EAAAA,qBAAqB;AAC7D,iBAASljB,IAAI,GAAGA,IAAI84F,GAAG74F,QAAQD;AAC9B,cAAI84F,GAAG94F,CAAG0M,EAAAA,aAAa;AACtB43B,mBAAO,aAAaszD,WAAWkB,GAAG94F,GAAGjE,SAAa,IAAA;AAAA,MACvD,WAAaP,WAAUiN,SAAS,YAAYjN,WAAUiN,SAAS,OAAO;AACnE,YAAIqwF,KAAKt9F,WAAUoM,KAAKswF,eAAe,GAAGxqF,WAAW,CAAA,EAAGA;AAExD42B,eAAO,aAAaszD,WAAWkB,GAAG,GAAG/8F,SAAa,IAAA,sBAAsB67F,WAAWkB,GAAG,CAAA,EAAG/8F,SAAa,IAAA;AAAA,MACzG,WAAaP,WAAUiN,SAAS,QAAQ;AACrC,YAAIqwF,KAAKt9F,WAAUoM,KAAK0d,aAAa,GAAG5X;AACxC,iBAAS1N,IAAI,GAAGA,IAAI84F,GAAG74F,QAAQD,KAAK;AACnCskC,iBAAO,mBAAmBszD,WAAWkB,GAAG94F,CAAG6a,EAAAA,cAAc,mBAAmB9e,SAAa,IAAA;AACzFuoC,iBAAOy0D,gBAAgBD,GAAG94F,CAAG6a,EAAAA,cAAc,kBAAkBnN,UAC7D42B;AAAAA,iBAAO00D,UAAUF,GAAG94F,CAAAA,EAAG6a,cAAc,gBAAA,CAAA;AACrCypB,iBAAO;AAAA,QACP;AAAA,MACJ,OAAS;AACNA,eAAO;AACP,YAAIw0D,KAAKt9F,WAAUoM,KAAKswF,eAAe,CAAGxqF,EAAAA;AAC1C42B,eAAOy0D,gBAAgBD,EAAAA;AACvBx0D,eAAO;AAEP,YAAI20D,KAAKz9F,WAAUoM,KAAK0d,aAAa,CAAA;AACrC,YAAI9pB,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AAC1D67B,iBAAO;AACP,mBAAStkC,IAAI,GAAGA,IAAIi5F,GAAG/8F,WAAW6d,KAAK9Z,QAAQD,KAAK;AACnD,gBAAIqf,MAAK45E,GAAG/8F,WAAW6d,KAAK/Z,CAC5BskC;AAAAA,mBAAO,mBAAmBszD,WAAWv4E,IAAGve,MAAM,CAAA,EAAG/E,aAAa;AAAA,UAC9D;AACDuoC,iBAAO;AACP9a,eAAKyvE,GAAG/8F,WAAW6d,KAAK,CAAGjZ,EAAAA,MAAM,GAAG6b;AAAAA,QACpC,WAAUs8E,GAAG/8F,WAAW0iC,WAAW,SAAS;AAC5C0F,iBAAO00D,UAAUC;QACrB,OAAU;AACNA,eAAKA,GAAGvrF,WAAWurF,GAAGvrF,WAAWzN,SAAS,CAC1C;AAAA,iBAAOg5F,GAAGvsF,UAAUkB,QAAQ;AAC3BqrF,iBAAKA,GAAGz+C;AACTy+C,eAAKA,GAAGvrF;AAER42B,iBAAO;AACP,mBAAStkC,IAAI,GAAGA,IAAIi5F,GAAGh5F,QAAQD;AAC9BskC,mBAAO,qBAAqBszD,WAAWqB,GAAGj5F,GAAGjE,SAAa,IAAA;AAC3DuoC,iBAAO;AACP9a,eAAKyvE,GAAG,CAAA,EAAGt8E;AAAAA,QACX;AAAA,MACD;AACD2nB,aAAO;AACP,aAAOA;AAAAA,IACP;AAED,aAAS00D,UAAUC,IAAAA;AAClB,UAAI30D,MAAM;AACV,UAAI5W,IAAIurE,GAAGn5F,iBAAiB,IAAA;AAC5B,eAASE,IAAI,GAAGA,IAAI0tB,EAAEztB,QAAQD,KAAK;AAClC,YAAI0D,OAAO;AACX,YAAI5C,QAAQ4sB,EAAE1tB,CAAGF,EAAAA,iBAAiB;AAElC,iBAASwvB,IAAI,GAAGA,IAAIxuB,MAAMb,QAAQqvB;AACjC5rB,eAAKhE,KAAKoB,MAAMwuB,CAAGzU,EAAAA,cAAc,iBAAmB9e,EAAAA,SAAAA;AAErDuoC,eAAO,oBAAoBxjC,MAAM,GAAG6b,eAAe,gBAAgBi7E,WAAWl0F,KAAKiI,KAAK,GAAQ,CAAA,IAAA;AAChG6d,aAAK1oB,MAAM,CAAA,EAAG6b;AAAAA,MACd;AACD,aAAO2nB;AAAAA,IACP;AAED,aAASy0D,gBAAgBD,IAAAA;AACxB,UAAII,KACH50D,MAAM;AACP,UAAI9oC,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAAA,GAAQ;AAC1D,YAAIjN,WAAU4L,OAAO5L,WAAUiN,KAAAA,EAAO0wF;AACrCD,gBAAMJ,GAAG,CAAGprF,EAAAA;AAEborF,aAAKA,GAAG,CAAA,EAAGprF;AAAAA,MACX;AAED,eAAS1N,IAAI,GAAGA,IAAI84F,GAAG74F,QAAQD;AAC9BskC,eAAO,wBAAwBszD,WAAWkB,GAAG94F,GAAGjE,SAAa,IAAA;AAC9D4U,WAAKmoF,GAAG,GAAGj8E;AAEX,UAAIq8E,KAAK;AACR,YAAItsF,QAAQ;AACZ,YAAIwsF,YAAYN,GAAG,GAAGj8E;AACtB,YAAIw8E,UAAU;AACd,iBAASr5F,IAAI,GAAGA,IAAIk5F,IAAIj5F,QAAQD,KAAK;AACpCskC,iBAAO,6BAA6B+0D,UAAU,gBAAgBzB,WAAWsB,IAAIl5F,CAAAA,EAAGjE,aAAa;AAC7F6Q,mBAASssF,IAAIl5F,CAAG6c,EAAAA;AAChB,cAAIjQ,SAASwsF,WAAW;AACvBA,yBAAcN,GAAGO,OAAWP,IAAAA,GAAGO,SAASx8E,cAAc;AACtDw8E;AAAAA,UACA;AACD1oF,eAAKuoF,IAAI,CAAA,EAAGr8E;AAAAA,QACZ;AAAA,MACD;AACD,aAAOynB;AAAAA,IACP;AAED,aAASg1D,SAASC,QAAAA;AACjB,UAAIj1D,MAAM;AACV,UAAI9+B,MAAMhK,WAAU+zC;AACpB,UAAInoC,SAAS5L,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAE5D;AAAA,UAAIjN,WAAUiN,SAAS,YAAYjN,WAAUiN,SAAS,OAAO;AAE5D,iBAASzI,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AACnBskC,iBAAO,2BAA2BszD,WAAWpyF,IAAIxF,GAAG0N,WAAW,CAAA,EAAG3R,aAAa,8BAA8B67F,WAAWpyF,IAAIxF,CAAG0N,EAAAA,WAAW,CAAG3R,EAAAA,SAAAA,IAAa;AAAA,MAE1K,WAAaP,WAAUiN,SAAS,eAAe;AAE5C,iBAASzI,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AAC/BskC,iBAAO,iBAAiB9+B,IAAIxF,CAAGsJ,EAAAA,WAAWhJ,aAAa,KAAA,IAAS,aAAas3F,WAAWpyF,IAAIxF,GAAGjE,SAAa,IAAA;AAAA,MAEhH,WAAaP,WAAUiN,SAAS,QAAQ;AAErC,YAAIjD,MAAMhK,WAAU60C,mBACpB;AAAA,iBAASrwC,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,cAAIyP,IAAIjK,IAAIxF,GAAGpB;AACf,cAAI6Q,EAAE7O,QAAAA,IAAYpF,WAAUyM,UAAUrH,QAAAA;AACrC6O,gBAAIjU,WAAUyM;AAEf,iBAAOwH,IAAIjK,IAAIxF,CAAGnB,EAAAA,UAAU;AAC3B,gBAAIu7C,IAAI3qC,EAAEgF,SAAa,IAAA,MAAMhF,EAAE+E,YAAgBhZ,IAAAA,WAAUyM,UAAUuM,YAAAA,KAAiBhZ,WAAUg+F,YAAYC;AAC1G,gBAAIp+F,MAAMG,WAAUg+F,YAAYp/C,CAAK3qC,IAAAA,EAAExK,QAAY,IAAA;AACnD,gBAAIy0F,aAAaH,SAASnB,UAAU58F,WAAUw5E,eAAevlE,IAAI,OAAW,IAAA;AAC5E,gBAAI4pC,WAAWkgD,SAASnB,UAAU58F,WAAUw5E,eAAevlE,CAAI,GAAA,iBAAA,IAAqB;AAEpF60B,mBAAO,iBAAkBjpC,MAAM,IAAK,aAAa2R,KAAK8D,MAAMzV,MAAM,CAAK,IAAA,cAAc++C,IAAI,wBAAwBf,WAAW,cAAcqgD,aAAa;AACvJjqF,gBAAIjU,WAAUwD,KAAKC,IAAIwQ,GAAG,GAAG,KAC7B;AAAA,gBAAIA,EAAE7O,QAAAA,KAAapF,WAAUwM,UAAUpH,QAAAA;AACtC;AAAA,UACD;AAAA,QACD;AAAA,MACD,WAAUwG,UAAUA,OAAOnE,UAAU,QAAQ;AAC7C,YAAIuC,MAAMhK,WAAUoM,KAAK0d,aAAa,CAAGpC,EAAAA,qBAAqB,IAC9D;AAAA,iBAASljB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,cAAI05F,aAAaH,SAASnB,UAAU5yF,IAAIxF,CAAAA,GAAI,WAAW;AACvD,cAAIq5C,WAAWkgD,SAASnB,UAAU5yF,IAAIxF,CAAAA,GAAI,qBAAqB;AAC/DskC,iBAAO,qCAAqC+U,WAAW,cAAcqgD,aAAa,gBAAgB9B,WAAWpyF,IAAIxF,CAAAA,EAAGjE,aAAa;AAAA,QACjI;AAAA,MACJ,OAAS;AACN,iBAASiE,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,cAAI25F,IAAIC;AACR,cAAIp+F,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AAE1DkxF,iBAAK9B,OAAOryF,IAAIxF,GAAG7B,MAAME,IAAAA;AACzBu7F,kBAAM/B,OAAOryF,IAAIxF,CAAG6c,EAAAA,WAAAA,IAAa;AAAA,UACtC,OAAW;AAEN,gBAAIg9E,YAAYr+F,WAAU+B,OAAOsuC,wBAAwB,IAAI;AAC7D8tD,iBAAK3B,aAAaxyF,IAAIxF,CAAAA,EAAG7B,MAAME,MAAMw7F,WAAW,IAChDD;AAAAA,kBAAM5B,aAAaxyF,IAAIxF,CAAAA,EAAG7B,MAAMyO,OAAOitF,SAAAA,IAAW;AAAA,UAClD;AACD,cAAI72E,MAAM42E,MAAM;AAAI;AACpB,cAAIE,KAAK3B,OAAO3yF,IAAIxF,GAAG7B,MAAMC,GAAAA;AAC7B,cAAI27F,MAAM5B,OAAO3yF,IAAIxF,CAAAA,EAAG7B,MAAMwO,MAE9B;AAAA,cAAIqtF,SAASx0F,IAAIxF,CAAAA,EAAG0M,UAAUvL,MAAM,KAAK,CAAGykB,EAAAA,QAAQ,YAAY,EAChE;AAAA,cAAIo0E,WAAW;AAAoB;AAEnC,cAAIC,OAAOz+F,WAAUmG,SAAS6D,IAAIxF,GAAGM,aAAa9E,WAAU+B,OAAOwC,eACvD,CAAA;AAAA,cAAA,CAAKk6F;AAAM;AACvB,cAAI5+F,MAAM4+F,KAAK1oD;AACf,cAAI2oD,OAAOD,KAAKvoD;AAChB,cAAIzxC,SAASg6F,KAAKtkD,WAAW;AAE7B,cAAIn6C,WAAUiN,SAAS,SAAS;AAC/BsxF,kBAAMloE,SAASrsB,IAAIxF,CAAAA,EAAG2c,cAAc,EACpCm9E;AAAAA,iBAAKjoE,SAASrsB,IAAIxF,CAAAA,EAAG7B,MAAMC,KAAK,EAAA,IAAM5C,WAAU2f,GAAGsG;AAEnDpmB,kBAAMg9F,OAAO7yF,IAAIxF,CAAI3E,GAAAA,GAAAA;AACrB6+F,mBAAO5B,QAAQ9yF,IAAIxF,CAAIk6F,GAAAA,IAAAA;AAAAA,UAC5B,WAAe1+F,WAAU4L,UAAU5L,WAAU4L,OAAO5L,WAAUiN,KAAQ,GAAA;AACjEpN,kBAAM;AACN,gBAAIgkB,MAAK7Z,IAAIxF,GAAGsJ,WAAWA,WAAWA;AACtC4wF,mBAAO76E,IAAGiiE;AACV,gBAAI6Y,UAAU3wE;AACdA,iBAAKhkB,IAAIxF,CAAGsJ,EAAAA,WAAWqT;AACvBm9E,iBAAK3B,OAAO3yF,IAAIxF,CAAAA,EAAG7B,MAAMC,GACzB07F;AAAAA,kBAAMA,KAAK;AACXtwE,iBAAK2wE;AAAAA,UACV,OAAW;AACN,gBAAI30F,IAAIxF,GAAGsJ,cAAc9N,WAAUoM,KAAK0d,aAAa,CAAA;AAAI;AACzD,gBAAIjc,SAAS7N,WAAUoM,KAAK,gBAAgB,CAAG8F,EAAAA,WAAW;AAC1D,gBAAIsB,SAAS8oF,WAAWzuF,OAAOqD,UAAUkB,QAAQ,kBAAA,KAAA,KAA4BvE,OAAOlL,MAAME,OAAO,CACjGs7F;AAAAA,kBAAM9B,OAAOryF,IAAIxF,CAAAA,EAAGsJ,WAAWnL,MAAME,MAAM2Q,MAC3C;AAAA,UAAA;AAEDs1B,iBAAO,oBAAoB41D,OAAO,YAAY7+F,MAAM,aAAa2+F,SAAS,UAAUL,KAAK,UAAUG,KAAK,cAAcF,MAAM,eAAeG,MAAM,YAAY95F,SAAS;AAEtK,cAAI+5F,UAAU,SAAS;AACtB11D,mBAAO,sBAAsBszD,WAAWpyF,IAAIxF,CAAG0N,EAAAA,WAAW,CAAG3R,EAAAA,SAAAA,IAAa;AAC1E,gBAAI29F,aAAaH,SAASnB,UAAU5yF,IAAIxF,GAAG0N,WAAW,CAAA,GAAI,OAAW,IAAA;AACrE,gBAAI2rC,WAAWkgD,SAASnB,UAAU5yF,IAAIxF,CAAAA,EAAG0N,WAAW,CAAI,GAAA,iBAAA,IAAqB;AAC7E42B,mBAAO,4BAA4B+U,WAAW,cAAcqgD,aAAa,gBAAgB9B,WAAWpyF,IAAIxF,CAAG0N,EAAAA,WAAW,CAAG3R,EAAAA,SAAAA,IAAa;AAAA,UAC3I,OAAW;AACN,gBAAI29F,aAAaH,SAASnB,UAAU5yF,IAAIxF,CAAAA,GAAI,OAAW,IAAA;AACvD,gBAAIq5C,WAAWkgD,SAASnB,UAAU5yF,IAAIxF,CAAAA,GAAI,qBAAqB;AAC/DskC,mBAAO,4BAA4B+U,WAAW,cAAcqgD,aAAa,gBAAgB9B,WAAWpyF,IAAIxF,CAAAA,EAAGjE,aAAa;AAAA,UACxH;AACDuoC,iBAAO;AAAA,QACP;AAAA,MACA;AAEF,aAAOA;AAAAA,IACP;AAED,aAAS81D,MAAMhvF,OAAOC,KAAK/D,MAAMhM,MAAMokB,QAAQi5E,QAC9C;AAAA,UAAIY,SAAS;AACb,UAAIj+F,QAAQ,aAAa;AACxBi+F,iBAAS;AACTj+F,eAAO;AAAA,MACP;AAEDA,aAAOA,QAAQ;AAEf,UAAIgpC,MAAM;AACV,UAAIl5B,OAAO;AAEV,YAAIivF,gBAAgB7+F,WAAUkV;AAC9B,YAAI4pF,gBAAgB9+F,WAAUiN;AAC9B4C,cAAM7P,WAAUwD,KAAKsI,OAAK,QAAA,EAAU+D;AACpCA,cAAM7P,WAAUwD,KAAK,SAAOsI,OAAK,MAAU9L,IAAAA,WAAUwD,KAAK,SAAOsI,OAAK,QAAQ+D,GAAO7P,IAAAA,WAAUwD,KAAKC,IAAIoM,KAAK,GAAG/D,IAAAA;AAEhHg9B,cAAMm0D,QAAQ,SAASn9F,MAAMokB,QAAQi5E,MAAAA;AACrC,iBAAS4B,YAAY,IAAIl6F,KAAK+K,SAASmvF,YAAalvF,CAAAA,KAAKkvF,YAAY1+F,KAAKmD,KAAKC,IAAIs7F,WAAW,GAAGjzF,IAAO,GAAA;AACvGzL,eAAKyX,eAAeinF,WAAWjzF;AAC/Bg9B,iBAAOi0D,UAAU,UAAUK,gBAAkBhzE,EAAAA,QAAQ,KAAU,GAAA,IAAO0zE,SAASC,MAAUf,IAAAA,QAAQ,MACjG;AAAA,QAAA;AACDl0D,eAAOk0D,QAAQ,OAAA;AAEf38F,aAAKyX,eAAe+mF,eAAeC,aACtC;AAAA,MAAA,OAAS;AACNh2D,cAAMm0D,QAAQ,QAAQn9F,MAAMokB,QAAQi5E,MAAUC,IAAAA,gBAAAA,EAAkBhzE,QAAQ,KAAU,GAAA,IAAO0zE,SAASC,MAAUf,IAAAA,QAAQ;MACpH;AACD,aAAOl0D;AAAAA,IACP;AACD9oC,IAAAA,WAAUg/F,aAAaJ;AACvB,aAASK,SAASn2D,KAAKf;AACtB,UAAIh5B,OAAM/O,WAAU+O,IAAAA;AACpB,UAAIkF,IAAI/T,SAASC,cAAc,KAC/B8T;AAAAA,QAAEtR,MAAMod,UAAU;AAClB7f,eAASM,KAAKC,YAAYwT,CAE1BA;AAAAA,QAAE1T,YAAY,eAAewO,OAAM,6CAA6Cg5B,OAAM;AACtF7nC,eAAS0kB,eAAe7V,MAAKrO,WAAWge,QAAQkpB,mBAAmBkB,GACnE5oC;AAAAA,eAAS0kB,eAAe7V,IAAKmwF,EAAAA,OAAAA;AAC7BjrF,QAAEnG,WAAWC,YAAYkG,CACzB;AAAA,IAAA;AAED,aAASkrF,OAAOvvF,OAAOC,KAAK/D,MAAMi8B,MAAKjoC,MAAMokB,QAAQi5E;AACpD,UAAIr0D,MAAM;AACV,UAAUhpC,OAAAA,QAAQ,UAAS;AAC1BgpC,cAAMs2D,gBAAgBt/F,IAAAA;AAAAA,MACzB,OAAO;AACJgpC,cAAM81D,MAAMnwF,MAAMpO,MAAM,CAACuP,OAAOC,KAAK/D,MAAMhM,MAAMokB,QAAQi5E,MACzD,CAAA;AAAA,MAAA;AAED8B,eAASn2D,KAAKf,IAAAA;AAAAA,IACd;AAED,aAASq3D,gBAAgBC,SACxB;AAAA,UAAIv2D,MAAM;AACV,eAAQtkC,IAAE,GAAGA,IAAI66F,QAAQ56F,QAAQD,KAAI;AACpCskC,eAAOu2D,QAAQ76F,CAAAA,EAAGuV,OAAOilF,WAAWK,QAAQ76F,GAAGoL,OAAOyvF,QAAQ76F,CAAGqL,EAAAA,KAAKwvF,QAAQ76F,CAAGsH,EAAAA,MAAMuzF,QAAQ76F,CAAG1E,EAAAA,MAAMu/F,QAAQ76F,CAAG0f,EAAAA,QAAQm7E,QAAQ76F,CAAAA,EAAG24F;MACtI;AACDr0D,aAAO;AACP,aAAOA;AAAAA,IACP;AAaD9oC,IAAAA,WAAUs/F,QAAQ,SAASv3D,MAAKjoC,MAAMokB,QAAQi5E,QAAAA;AAC7C,aAAOgC,OAAO1wF,MAAMpO,MAAM,CAAC,MAAM,MAAM,MAAM0nC,MAAKjoC,MAAMokB,QAAQi5E;IAClE;AACCn9F,IAAAA,WAAUu/F,aAAa,SAAS3vF,OAAOC,KAAK/D,MAAMi8B,MAAKjoC,MAAMokB,QAAQi5E;AACpE,UAAWvtF,OAAAA,SAAS,UAAU;AAC7BA,gBAAQ5P,WAAU0zB,UAAUsc,SAASpgC,KACrCC;AAAAA,cAAM7P,WAAU0zB,UAAUsc,SAASngC;MACnC;AAED,aAAOsvF,OAAO1wF,MAAMpO,MAAMiU,SAC5B;AAAA,IAAA;AAAA,EAEA;ACvYe,WAAQkrF,WAACx/F;AAExBA,IAAAA,WAAU+B,OAAOuvC,eAAe,CAAC,aAAa,aAC9CtxC;AAAAA,IAAAA,WAAU+B,OAAOmxB,oBAAoB;AACrClzB,IAAAA,WAAU+B,OAAO09F,kBAAkB;AACnCz/F,IAAAA,WAAU2f,GAAGkG,aAAa;AAI1B,QAAI65E,yBAAyB;AAC7B1/F,IAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,YAAM4F,YAAY7L,WAAUqE;AAC5B,UAAGwH,UAAU8zF,oBAAmB;AAC/B;AAAA,MACF,OAAM;AACJ9zF,kBAAU8zF,qBAAqB;AAG/B3/F,QAAAA,WAAU6B,MAAMgK,WAAW,aAAa,SAAS3F,GAChD;AAAA,gBAAMo1E,eAAep1E,EAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eAAAA,GAAAA;AAC3D,cAAI+2E,cAAc;AACjBokB,qCAAyB,EACxBt/F,IAAIk7E,aAAax2E,aAAa9E,WAAU+B,OAAOwC,eAAAA,GAC/C+I,UAAUsyF,2BAA2BtkB,YAAAA,EAAAA;AAAAA,UAEtC;AAAA,QACJ,CAAA;AACEt7E,QAAAA,WAAUiG,YAAY,aAAa;iBAC3B4F,UAAU8zF;AAAAA,QAAkB;MAEpC;AAAA,IACF,CAAA;AAEA3/F,IAAAA,WAAUiG,YAAY,WAAW,SAAS7F,KAAAA;AACzC,WAAIJ,WAAU+B,OAAO09F,iBAAgB;AACpC;AAAA,MACA;AACDz/F,MAAAA,WAAU6/F,cAAcz/F,GACxB;AAAA,aAAO;AAAA,IACR,CAEA;AAAA,KAAA,WAAA;AAGC,UAAI+/C,SAAS,CAAC,gBAAgB,gBAAgB,cAAc,uBAAuB,cAAA;AACnF,UAAI2/C,kBAAkB,WAAA;AACrB9/F,QAAAA,WAAU+/F,cAAc,IAAA;AACxB,eAAO;AAAA,MACT;AACC,eAASv7F,IAAE,GAAGA,IAAE27C,OAAO17C,QAAQD,KAAI;AAClCxE,QAAAA,WAAUiG,YAAYk6C,OAAO37C,CAAAA,GAAIs7F;MACjC;AAAA,IACD;AAED9/F,IAAAA,WAAU0zB,UAAUssE,mBAAmB,SAASpwF,OAAOC,KAAKhJ,IAAAA;AAAK,aAAOA,GAAGM,KAAKi6C,OAAO,GAAE,EAAI;AAAA,IAAA;AAC7FphD,IAAAA,WAAU0zB,UAAUusE,qBAAqB,SAASrwF,OAAOC,KAAKhJ;AAAK,aAAOA,GAAG4kB,WAAW;AAAA,IAAG;AAC3FzrB,IAAAA,WAAU0zB,UAAUwsE,kBAAkB,SAAStwF,OAAOC,KAAKhJ,IAC1D;AAAA,UAAI7G,WAAU0K,cAAc7D,OAAO7G,WAAU+B,OAAOijB,KAAI;AACvD,eAAOhlB,WAAU0zB,UAAUoK,SAASluB,OAAOC,KAAKhJ,MAAM,MAAK7G,WAAU0zB,UAAUgf,aAAa7iC,KAAKD,OAAO/I,EACxG;AAAA,MAAA,WAAU7G,WAAU0K,cAAc7D,EAAK,GAAA;AACvC,eAAO7G,WAAU0zB,UAAUoK,SAASluB,OAAOC,KAAKhJ,EAAM,IAAA,MAAK7G,WAAU0zB,UAAUgf,aAAa9iC,OAAOC,KAAKhJ,EAAAA;AAAAA,MAC1G,WAAY7G,WAAU+B,OAAOijB,KAAK;AAChC,eAAOhlB,WAAU0zB,UAAUmc,UAAUhgC,KAAKD,OAAO/I,EACnD;AAAA,MAAA,OAAQ;AACN,eAAO7G,WAAU0zB,UAAUmc,UAAUjgC,OAAOC,KAAKhJ,EAAAA;AAAAA,MACjD;AAAA,IACF;AAEA7G,IAAAA,WAAU6/F,gBAAgB,SAASz/F;AAClC,UAAIA,OAAMC,KAAK8/F;AAAoB;AACnC9/F,WAAK0/F,cAAc,IAAA;AACnB,UAAG1/F,KAAK4K,UAAU,qBAAqB,CAAC7K,UAAS,OAAM;AACtD;AAAA,MACA;AAED,UAAI2sB;AACJ,UAAG2yE,0BAA0BA,uBAAuBt/F,MAAMA,KAAG;AAC5D2sB,cAAM2yE,uBAAuBpyF;AAAAA,MAC/B,OAAQ;AACNyf,cAAM1sB,KAAK+/F,wBAAwBhgG,GAAAA;AAAAA,MACnC;AAGD,UAAI2sB,KAAI;AACP1sB,aAAKggG,kBAAkBhgG,KAAKigG,iBAAiBvzE;AAC7C1sB,aAAKkgG,iBAAiBngG;AACtBC,aAAKmgG,iBAAiBzzE;AAEtB1sB,aAAK4K,UAAU,eAAe,CAAC7K;MAC/B;AAAA,IACF;AAAA,KAEA;AAEA,eAASqgG,YAAYl8C;AACpBA,eAAOA,QAAQ;AAEf,YAAItW,MAAMquD,WAAW/3C,IAAAA,GACpBtvC,OAAOsvC,KAAK9Z,MAAM,QAClBi2D;AAED,YAAIzrF,MAAM;AACTA,iBAAOA,KAAK,CAAA;AAAA,QACZ;AAED,gBAAQA,MAAAA;AAAAA,UACP,KAAK;AACJyrF,2BAAezyD,MAAM;AACrB;AAAA,UACD,KAAK;AACJyyD,2BAAezyD;AACf;AAAA,UACD;AACCyyD,2BAAe;AACf;AAAA,QAGF;AAAA,eAAOA;AAAAA,MACR;AAEA1gG,MAAAA,WAAU+/F,gBAAgB,SAASY,QAAAA;AAClC,YAAIC,KAAKvgG,KAAKggG;AACd,YAAI58E,UAAUpjB,KAAK8/F;AACnB9/F,aAAK8/F,qBAAqB;AAE1B,YAAIS,MAAMA,GAAG9yF,YAAW;AACvB,cAAIsD,QAAQwvF,GAAGv/E;AACf,cAAIrhB,WAAU+B,OAAOqvC,qBAAqB;AACzC/wC,iBAAK4K,UAAU,oBAAoB,CAACwY,OAAAA,CAAAA;AACpC,mBAAOm9E,GAAG9yF,WAAWC,YAAY6yF,EACjC;AAAA,UAAA;AAED,cAAIA,GAAGj+F,MAAMskB,SAAS;AACrB25E,eAAGj+F,MAAME,OAAAA,CAAQuO,QAAQ;AAAA;AAEzBwvF,eAAGj+F,MAAMskB,QAAAA,CAAS7V,QAAQ;AAE3B,cAAIuvF,QAAQ;AACXC,eAAG9yF,WAAWC,YAAY6yF,EAAAA;AAAAA,UAC7B,OAAO;AAEJ,gBAAIj+F;AACJ,gBAAGrB,OAAOmgB,kBAAiB;AAC1B9e,sBAAQrB,OAAOmgB,iBAAiBm/E,IAAI,IAAA;AAAA,YACxC,WAAYA,GAAGh9D,cAAa;AACxBjhC,sBAAQi+F,GAAGh9D;AAAAA,YACX;AACD,gBAAIzqB,SAAQsnF,YAAY99F,MAAM,kBAAA,CAAA,IAAuB89F,YAAY99F,MAAM,qBAAA,CAAA;AACvE+W,uBAAW,WACV;AAAA,kBAAGknF,GAAG9yF,YAAW;AAChB8yF,mBAAG9yF,WAAWC,YAAY6yF,EAC1B;AAAA,cAAA;AAAA,YACD,GAAEznF,MACH;AAAA,UAAA;AAED9Y,eAAK4K,UAAU,oBAAoB,CAACwY,OAAAA,CAAAA;AAAAA,QACpC;AAAA,MACF;AAAA,IAEC;AAEDzjB,IAAAA,WAAU6B,MAAMP,QAAQ,WAAW,SAAS4E,GAC3C;AAAA,UAAIA,EAAE41C,WAAW;AAChB97C,QAAAA,WAAU+/F,cACZ;AAAA,IAAA,CAAA;AAEA//F,IAAAA,WAAUwgG,mBAAmB,SAASzzE,KACrC;AAAA,UAAI6zE,KAAK5gG,WAAUqgG;AACnBrgG,MAAAA,WAAU2kB,KAAKlkB,YAAYmgG,EAC3B;AAAA,UAAIxvF,QAAQwvF,GAAGv/E;AACf,UAAIlQ,SAASyvF,GAAGz/E;AAEhB,UAAInhB,WAAU+B,OAAOqvC,qBAAoB;AACxC,YAAIvuC,OAAOkqB,IAAIlqB,OAAOkqB,IAAI5X,MAAI/D,QAAQ2b,IAAI3b;AAC1C,YAAGpR,WAAUqC,QAAAA,KAAarC,WAAUqC,QAAUw+F,EAAAA,WAAU;AAEvD,cAAG7gG,WAAU+B,OAAOijB,KAAI;AACvBniB,oBAAQ7C,WAAUqC,UAAUw+F;AAAAA,UAChC,OAAQ;AACJh+F,oBAAQ7C,WAAUqC,QAAUw+F,EAAAA;AAAAA,UAC5B;AAAA,QAED;AAED,YAAI55E,QAAQpkB,OAAOuO;AACnB,YAAG6V,QAAQ3lB,OAAO8e,YAAW;AAC5Bvd,iBAAOvB,OAAO8e,aAAahP;AAAAA,QAC3B;AACDvO,eAAO2O,KAAK5C,IAAI,GAAG/L,IAEnB+9F;AAAAA,WAAGj+F,MAAME,OAAOA,OAAO;AACvB+9F,WAAGj+F,MAAMC,MAAMmqB,IAAInqB,OAAOmqB,IAAIiB,KAAG7c,UAAQ4b,IAAI5b,UAAU;AAAA,MACzD,OAAQ;AAEN,cAAM2vF,UAAU9gG,WAAUqE,WAAWgb,cAAc,iBAAiBwH;AACpE+5E,WAAGj+F,MAAMC,MAAMk+F,UAAU,KAAK;AAC9B,YAAI/zE,IAAI5X,MAAM,GAAE;AACfyrF,aAAGj+F,MAAMskB,QAAQ;AACjB25E,aAAGj+F,MAAME,OAAAA,CAAQuO,QAAQ;AAEzBsI,qBAAW,WACVknF;AAAAA,eAAGj+F,MAAME,OAAO;AAAA,UAChB,GAAC,CACL;AAAA,QAAA,OAAS;AACN+9F,aAAGj+F,MAAME,OAAO;AAChB+9F,aAAGj+F,MAAMskB,QAAAA,CAAS7V,QAAQ;AAE1BsI,qBAAW,WACVknF;AAAAA,eAAGj+F,MAAMskB,QAAQ;AAAA,UACjB,GAAC,CACF;AAAA,QAAA;AACD25E,WAAG1vF,YAAY0vF,GAAG1vF,UAAUkZ,QAAQ,gBAAe,EAAIA,EAAAA,QAAQ,iBAAgB,EAAI,IAAA,cAAY2C,IAAI5X,MAAI,IAAE,SAAO;AAAA,MAChH;AAEDyrF,SAAGG,kBAAkB;AACpBC,0BAAkBJ,EAAAA;AAClBA,WAAGG,kBAAkB;AAAA,MAAI;AAE1BrnF,iBAAW;AACVsnF,0BAAkBJ,EAAAA;AAAAA,MAAG,GACnB,CACJ;AAAA,IAAA;AAEA,aAASI,kBAAkBC,gBAAAA;AAC1B,YAAMC,YAAYD,eAAe1+D,sBACjC;AAAA,YAAM4+D,gBAAgBnhG,WAAUqE,WAAWk+B;AAG3C,YAAM6+D,eAAeD,cAAc7+D,SAAS4+D,UAAU5+D;AAGtD,UAAI8+D,eAAe,GAAG;AACrBH,uBAAet+F,MAAMC,MAAM,GAAG05F,WAAW2E,eAAet+F,MAAMC,GAAAA,IAAOw+F;MACrE;AAAA,IACF;AAEAphG,IAAAA,WAAUiG,YAAY,oBAAoB,WACzCjG;AAAAA,MAAAA,WAAU+/F;AACV,UAAG1/F,KAAKggG,iBAAgB;AACvB,YAAI79D,MAAMniC,KAAKggG;AACf,YAAG79D,IAAI10B,YAAW;AACjB00B,cAAI10B,WAAWC,YAAYy0B,GAAAA;AAAAA,QAC3B;AACDniC,aAAKggG,kBAAkB;AAAA,MACvB;AAAA,IACF;AACArgG,IAAAA,WAAUqhG,+BAA+B,SAASn7F,GACjDlG;AAAAA,MAAAA,WAAU+/F;IACX;AACA//F,IAAAA,WAAUsgG,mBAAmB,WAAA;AAC5B,WAAKjgG,KAAKggG,iBAAgB;AAGzB,YAAIO,KAAKvgG,KAAKggG,kBAAkBngG,SAASC,cAAc,KAAA;AAEvDE,aAAK2nB,SAAS2Z,cAAci/D;AAE5BA,WAAG1vF,YAAY;AACf,YAAIlR,WAAUshG;AACbV,aAAG1vF,aAAa;AACjB,YAAIlR,WAAU+B,OAAOijB;AAAK47E,aAAG1vF,aAAa;AAE1C,YAAI+qC,WAAW57C,KAAK2nB,SAAS4Z,0BAAAA;AAC7B,YAAIr+B,OAAO;AAAA;AAAA;AAAA;AAAA,kCAIqB04C;;;;;;AAQhC14C,gBAAQ;AACR,YAAI4mB,UAAUnqB,WAAU+B,OAAOuvC;AAC9B,iBAAS9sC,IAAI,GAAGA,IAAI2lB,QAAQ1lB,QAAQD,KAAK;AACxC,cAAIy3C,WAAW57C,KAAK2nB,SAAS8Z,0BAA0BzhC,KAAKynB,OAAOC,OAAOoC,QAAQ3lB,CAAAA,CAAAA,CAAAA;AAClFjB,kBAAQ,QAAQ04C,QAAAA,2BAAmC9xB,QAAQ3lB,CAAcxE,CAAAA,YAAAA,WAAU8nB,OAAOC,OAAOoC,QAAQ3lB,CAC7E2lB,CAAAA,CAAAA;AAAAA,gCAAAA,QAAQ3lB,kBAAkBxE,WAAU8nB,OAAOC,OAAOoC,QAAQ3lB,CAAAA,CAAAA,CAAAA;AAAAA,QACtF;AAEFjB,gBAAQ;AAERq9F,WAAGrgG,YAAYgD;AACfvD,QAAAA,WAAU6B,MAAM++F,IAAI,SAAS,SAAS/5F;AACrC7G,UAAAA,WAAUuhG,iBAAiB16F,GAAGT,UAAUS,GAAGsrB,UAC9C;AAAA,QAAA,CAAA;AACE,YAAInyB,WAAU+B,OAAOqvC,qBAAoB;AACxCpxC,UAAAA,WAAU4jB,gBAAgB5jB,WAAUoM,KAAK,cAAgB,EAAA,CAAA,GAAI,UAAUpM,WAAUqhG,4BAAAA;AACjFrhG,UAAAA,WAAU6B,MAAM7B,WAAUoM,KAAK,cAAA,EAAgB,IAAI,UAAUpM,WAAUqhG;QACvE;AAAA,MACD;AAED,aAAOhhG,KAAKggG;AAAAA,IACb;AAEArgG,IAAAA,WAAUuhG,mBAAmB,SAASr6E,MAAAA;AACrC,UAAIsb,MAAMxiC,WAAUqgG;AACpB,UAAKn5E,CAAAA,QAAQA,QAAQsb;AAAK;AAE1B,UAAGtb,KAAK7gB,QAAQ,uBAAyB,GAAA;AACxCrG,QAAAA,WAAU+/F,cACV;AAAA;AAAA,MACA;AAED,UAAI71E,OAAOlqB,WAAUmS,cAAc+U;AACnC,UAAIgD,KAAK9X,QAAQ,OAAW,KAAA,IAAE;AAC7B,YAAIhS,MAAKJ,WAAUmgG;AACnBngG,QAAAA,WAAUqoB,OAAO8B,QAAQD,KAAKvkB,MAAM,GAAA,EAAK,CAAGykB,EAAAA,QAAQ,SAAQ,EAAKhqB,CAAAA,EAAAA,GAAAA;AAAAA,MACjE;AACAJ,QAAAA,WAAUuhG,iBAAiBr6E,KAAKpZ,UAClC;AAAA,IAAA;AAEA,aAAS8xF,2BAA2B75F;AACnC,UAAIlD,OAAO;AACX,UAAID,MAAM;AAEV,UAAIskB,OAAOnhB;AACX,aAAOmhB,QAAQA,QAAQlnB,WAAU2kB,MAAK;AACrC9hB,gBAAQqkB,KAAK0b;AACbhgC,eAAOskB,KAAKL,YAAUK,KAAKwG;AAC3BxG,eAAOA,KAAK2b;AAAAA,MACZ;AACD,UAAG3b,MAAK;AACP,YAAI/R,KAAMtS,OAAOkD,QAAQsb,cAAY,IAAMrhB,WAAUumB,KAAG,IAAK,IAAI;AACjE,YAAIyH,KAAMprB,MAAMmD,QAAQob,eAAa,IAAMnhB,WAAUujD,KAAG,IAAK,IAAI;AAEjE,eAAO,EAAE1gD,MAAWD,KAASuS,IAAO6Y,IACnC5c,OAAMrL,QAAQsb,aAAalQ,QAAOpL,QAAQob,aAAAA;AAAAA,MAC3C;AACD,aAAO;AAAA,IACR;AAEAnhB,IAAAA,WAAUogG,0BAA0B,SAAShgG,KAAAA;AAC5C,UAAIohG,QAAQxhG,WAAUg+C,iBAAiB59C,GACvC;AAAA,aAAOw/F,2BAA2B4B,KACnC;AAAA,IAAA;AAEAxhG,IAAAA,WAAUugG,mBAAoB,SAASngG,KACtC;AAAA,UAAIyG,KAAK7G,WAAUmG,SAAS/F;AAC5B,UAAIwgG,KAAK5gG,WAAUqgG;AAEnBrgG,MAAAA,WAAUmgG,qBAAqB//F;AAI/B,UAAI8jB,SAAS,EACZiU,SAASn4B,WAAU0zB,UAAUssE,iBAAiBn5F,GAAGzD,YAAYyD,GAAGxD,UAAUwD,KAC1ErD,MAAMxD,WAAU0zB,UAAUwsE,gBAAgBr5F,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAEvE,EAAA;AAAA,UAAI46F,eAAeb,GAAGvhF,cAAc;AACpCoiF,mBAAalhG,YAAY,SAAS2jB,OAAOiU;AACzC,UAAIupE,YAAYd,GAAGvhF,cAAc,mBAAA;AACjCqiF,gBAAUnhG,YAAY2jB,OAAO1gB;AAE7BxD,MAAAA,WAAUgoB,SAAS6Z,gBAAgB++D,IAAI,CAAC18E,OAAOiU,SAASjU,OAAO1gB,IAAM2M,EAAAA,KAAK,GAG1E,CAAA;AAAA,UAAIwxF,OAAOf,GAAGvhF,cAAc;AAC5B,YAAMuiF,cAAc5hG,WAAU0zB,UAAUusE,mBAAmBp5F,GAAGzD,YAAYyD,GAAGxD,UAAUwD,EAAAA;AACvF,UAAG+6F,aAAY;AACdD,aAAK5kF,UAAU6X,OAAO,YACtB+sE;AAAAA,aAAKphG,YAAYqhG;AAAAA,MACnB,OAAM;AACJD,aAAK5kF,UAAUtZ,IAAI,YACnB;AAAA,MAAA;AAAA,IACF;AAAA,EAGA;ACnXe,WAAQumB,SAAChqB,YAAAA;AAExBA,IAAAA,WAAUiG,YAAY,oBAAoB;AACzC,UAAI47F;AACJ,UAAI7hG,WAAU4jD,YAAYoF,WAAW;AACpC64C,oCAA4B7hG,WAAU4jD,YAAYoF,UAAUjF;AAAAA,MAC5D;AACD,UAAI+9C,wBAAwB9hG,WAAU+B,OAAOwvC,aAAajjC;AAC1D,UAAIyzF,yBAAyB/hG,WAAU+B,OAAOyvC,cAAcljC,MAE5DtO;AAAAA,MAAAA,WAAUiG,YAAY,oBAAoB,SAAS7F;AAClD,YAAIC,KAAK0B,OAAOigG,iBAAiB3hG,KAAK8F,SAAS/F,GAAAA,EAAI4pB,UAAU;AAC5D3pB,eAAK0B,OAAOymD,kBAAkB;AAAA,QAC9B,OACI;AACJnoD,eAAK0B,OAAOymD,kBAAkB;AAC9BxoD,UAAAA,WAAU+B,OAAOwvC,eAAeuwD,sBAAsBxzF,MAAAA;AACtDtO,UAAAA,WAAU+B,OAAOyvC,gBAAgBuwD,uBAAuBzzF,MAAAA;AAGxD,cAAGtO,WAAU4jD,YAAYoF,WAAW;AACnChpD,YAAAA,WAAU4jD,YAAYoF,UAAUjF,YAAY89C;AAAAA,UAC5C;AAAA,QACD;AAED,YAAIr9C,MAAMnkD,KAAK0B,OAAOg4B,SAAS72B;AAC/B,YAAI7C,KAAK0B,OAAOymD,iBAAiB;AAChC,mBAAShkD,IAAI,GAAGA,IAAIggD,IAAI//C,QAAQD,KAAK;AACpC,gBAAIggD,IAAIhgD,CAAG6C,EAAAA,QAAQ,aAAa;AAC/B,kBAAIhH,KAAK0B,OAAOymD,mBAAmBxoD,WAAU4jD,YAAYoF,WAAW;AACnEhpD,gBAAAA,WAAU4jD,YAAYoF,UAAUjF,YAAY,SAAS78B,MAAMxI,OAAO7X,IAAAA;AACjE,sBAAIo9D,UAAUjkE,WAAU6tB,YAAYxnB,QAAQ6gB,MAAM;AAClD,sBAAIvkB,QAAQ;AACZshE,0BAAQ5kD,cAAc,mBAAqBU,EAAAA,UAAUpd;AACrDshE,0BAAQ5kD,cAAc,oBAAoBU,UAAUpd;AACpDshE,0BAAQthE,MAAMod,UAAUpd;AAExB3C,kBAAAA,WAAUyoD;gBACjB;AAAA,cACM;AAAA,YACD;AAAA,UACD;AAED,cAAIw5C,oBAAoB,CAAC,kBAAkB,cAC3C;AAAA,cAAIC,gBAAgB,CAACliG,WAAU+B,OAAOwvC,cAAcvxC,WAAU+B,OAAOyvC,aAAAA;AACrE,mBAAShtC,IAAI,GAAGA,IAAIy9F,kBAAkBx9F,QAAQD,KAAK;AAClD,gBAAI29F,mBAAmBF,kBAAkBz9F,CACzC;AAAA,qBAAS6K,IAAI,GAAGA,IAAI6yF,cAAcz9F,QAAQ4K,KAAK;AAC9C,kBAAI+yF,eAAeF,cAAc7yF;AACjC,kBAAIM,QAAAA;AACJ,uBAASnF,IAAI,GAAGA,IAAI43F,aAAa39F,QAAQ+F,KAAK;AAC7C,oBAAI43F,aAAa53F,CAAM23F,KAAAA,kBAAkB;AACxCxyF,0BAAQnF;AACR;AAAA,gBACA;AAAA,cACD;AACD,kBAAImF,SAAAA,IAAa;AAChByyF,6BAAa3uF,OAAO9D,OAAO;cAC3B;AAAA,YACD;AAAA,UACD;AAAA,QACD;AAEDtP,aAAK+5B;AAEL,eAAO;AAAA,MACT,CAEC;AAAA,eAASioE,YAAY91C,KAAKt4C,GAAGukB,GAAGrxB,MAC/B;AAAA,YAAIm7F,OAAOruF,EAAEyT,qBAAqB6kC,GAClC;AAAA,YAAIg2C,OAAO/pE,EAAE9Q,qBAAqB6kC;AAClC,iBAAS/nD,IAAI+9F,KAAK99F,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC1C,cAAIg0B,IAAI+pE,KAAK/9F;AACb,cAAK2C,CAAAA,MAAK;AACTqxB,cAAEqtB,WAAW;AAEb,gBAAG5xC,EAAE2xC;AACJptB,gBAAEotB,UAAU;AAAA,UACjB,OAAS;AACL,gBAAIpxC,IAAItU,SAASC,cAAc;AAC/BqU,cAAEtD,YAAY;AACdsD,cAAEjU,YAAY4G,KAAKm7F,KAAK99F;AACxBg0B,cAAE1qB,WAAW6Y,aAAanS,GAAGgkB,CAAAA;AAC7BA,cAAE1qB,WAAWC,YAAYyqB,CACzB;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AAED,UAAI0U,MAAMltC,WAAU8mD;AACpB9mD,MAAAA,WAAU8mD,iBAAiB,WAAA;AAE1B,YAAI+B,KAAKxoD,KAAKqjD,YACd;AAAA,YAAIrjD,KAAK0B,OAAOymD,iBAAiB;AAChCK,aAAGlmD,MAAMk1B,aAAa;AAGtBgxB,aAAGlmD,MAAMod,UAAU;AAAA,QACnB;AACD,YAAInX,MAAMskC,IAAIz+B,MAAMpO,MAAMiU,SAAAA;AAC1B,YAAIjU,KAAK0B,OAAOymD,iBAAiB;AAEhCK,aAAGlmD,MAAMk1B,aAAa;AACtBgxB,aAAGlmD,MAAMod,UAAU;AAAA,QACnB;AAED,YAAI1f,KAAK0B,OAAOymD,iBAAiB;AAEhC,cAAIg6C,eAAeniG,KAAKqjD;AACxB,cAAI++C,eAAepiG,KAAKqiG,cAAcF,aAAa79F,UAAU,IAC7D89F;AAAAA,uBAAariG,KAAKJ,WAAU+O;AAC5B0zF,uBAAavxF,aAAa;AAC1BmxF,sBAAY,YAAYG,cAAcC,cAAc,SAASjmF,GAC5D;AAAA,mBAAOA,EAAEkC;AAAAA,UACb,CAAA;AACG2jF,sBAAY,SAASG,cAAcC,cAAc,KACjDJ;AAAAA,sBAAY,UAAUG,cAAcC,cAAc,SAASjmF,GAAAA;AAC1D,iBAAIA,EAAEvU,QAAQxD;AAAQ,qBAAO;AAC7B,mBAAO+X,EAAEvU,QAAQuJ,KAAK5C,IAAK4N,EAAE8pC,iBAAiB,GAAI,IAAIn/C;AAAAA,UAC1D,CAAA;AAEGq7F,uBAAa10F,WAAW6Y,aAAa87E,cAAcD,YAAAA;AAEnDniG,eAAKsmD,UAAU87C,YAAAA;AACf,cAAIziG,WAAU8mB;AACb9mB,YAAAA,WAAU8mB,UAAUhZ,WAAWC,YAAY/N,WAAU8mB;AACtDzmB,eAAKymB,YAAY27E;AAEjB,cAAIziG,WAAU+B,OAAO+uC;AACpB9wC,YAAAA,WAAU6B,MAAM4gG,aAAa/hG,YAAY,aAAaV,WAAU+oD;AAEjE/oD,UAAAA,WAAUmoD,sBAAAA;AACV9nD,eAAKooD,gBAAAA;AAAAA,QACL;AACD,eAAO7/C;AAAAA,MACT;AAEC,UAAIusC,OAAOn1C,WAAUwnD;AACrBxnD,MAAAA,WAAUwnD,gBAAgB,WAAA;AACzB,YAAInnD,KAAKqiG,aAAa;AACrBriG,eAAKqiG,YAAY50F,WAAWC,YAAY1N,KAAKqiG,WAAAA;AAC7CriG,eAAKqiG,cAAcriG,KAAKymB,YAAY;AAAA,QACpC;AAED,eAAOquB,KAAK1mC,MAAMpO,MAAMiU,SAAAA;AAAAA,MAC1B;AAAA,IACA,CAGA;AAAA,EAAA;ACjJO,MAAIquF,eAAe,CACtB,MACA,MACA,MACA,MACA,MACA,MACA,IAEJ;AAAA,MAAIC,UAAyB,WACzB;AAAA,aAASA,SAAQC,SAASrqE,GAAAA;AACtB,UAAIA,MAAM;AACN,cAAM,IAAIlmB,MAAM,kCACpBjS;AAAAA,WAAKwiG,UAAUA;AACfxiG,WAAKm4B,IAAIA;AAAAA,IACZ;AACDoqE,IAAAA,SAAQE,UAAU,SAAU3rE,KACxB;AAAA,aAAO,IAAIyrE,SAAQD,aAAavwF,QAAQ+kB,GAAAA,CAAAA;AAAAA,IAChD;AAGIyrE,IAAAA,SAAQlqF,UAAUqqF,MAAM,SAAUvqE,GAAAA;AAC9B,aAAOn4B,KAAKm4B,MAAMA,IAAIn4B,OAAO,IAAIuiG,SAAQviG,KAAKwiG,SAASrqE,CAC/D;AAAA,IAAA;AAEIoqE,IAAAA,SAAQlqF,UAAUgI,SAAS,SAAUsiF,OAAAA;AACjC,aAAO3iG,KAAKwiG,YAAYG,MAAMH,WAAWxiG,KAAKm4B,MAAMwqE,MAAMxqE;AAAAA,IAClE;AAEIoqE,IAAAA,SAAQlqF,UAAUC,WAAW,WAAA;AACzB,UAAI7O,IAAI64F,aAAatiG,KAAKwiG,OAC1B;AAAA,UAAIxiG,KAAKm4B;AACL1uB,aAAKzJ,KAAKm4B,IAAI,IAAI,MAAM,MAAM9yB,OAAOrF,KAAKm4B,CAAAA,IAAK1uB;AACnD,aAAOA;AAAAA,IACf;AACI84F,IAAAA,SAAQlqF,UAAUuqF,eAAe,WAAA;AAC7B,aAAO5iG,KAAKwiG,YAAY,IAAI,IAAIxiG,KAAKwiG,UAAU;AAAA,IACvD;AACI,WAAOD;AAAAA,EACX,ECtCO;AAAA,MAAIM,YAAY,SAAUxkF;AAC7B,WAAOA,UAAU,QAAQA,UAAUhQ;AAAAA,EACvC;AACO,MAAIy0F,WAAW,SAAUzkF,OAAAA;AAC5B,kBAAcA,UAAU;AAAA,EAC5B;AACO,MAAI0kF,eAAe,SAAU1kF,OAChC;AAAA,WAAA,OAAcA,UAAU,YAAYikF,aAAaU,SAAS3kF,KAAAA;AAAAA,EAC9D;AACO,MAAIpG,UAAUlK,MAAMkK;AAIpB,MAAI6sC,QAAQ,SAAUv1C,OAAOC,KAChC;AAAA,QAAIA,gBAAgB;AAAEA,YAAMD;AAAAA,IAAQ;AACpC,QAAI0E,UAAU7P,WAAW,GAAG;AACxBoL,YAAMD;AACNA,cAAQ;AAAA,IACX;AACD,QAAI0zF,OAAO,CAAA;AACX,aAAS9+F,IAAIoL,OAAOpL,IAAIqL,KAAKrL;AACzB8+F,WAAKp/F,KAAKM,CACd;AAAA,WAAO8+F;AAAAA,EACX;AAIO,MAAIC,SAAS,SAAU7kF,OAAO8kF;AACjC,QAAIh/F,IAAI;AACR,QAAI6+C,QAAQ,CACZ;AAAA,QAAI/qC,QAAQoG,KAAQ,GAAA;AAChB,aAAOla,IAAIg/F,OAAOh/F;AACd6+C,cAAM7+C,KAAK,CAAGiH,EAAAA,OAAOiT;IAC5B,OACI;AACD,aAAOla,IAAIg/F,OAAOh/F;AACd6+C,cAAM7+C,KAAKka;AAAAA,IAClB;AACD,WAAO2kC;AAAAA,EACX;AACO,MAAIogD,UAAU,SAAUzqC,MAC3B;AAAA,QAAI1gD,QAAQ0gD,IAAO,GAAA;AACf,aAAOA;AAAAA,IACV;AACD,WAAO,CAACA,IAAAA;AAAAA,EACZ;AACO,WAAS0qC,SAAS1qC,MAAM2qC,cAAcC;AACzC,QAAIA,cAAAA,QAAsB;AAAEA,kBAAY;AAAA,IAAM;AAC9C,QAAIzsE,MAAMzxB,OAAOszD;AACjB2qC,mBAAeA,gBAAgB;AAC/B,QAAIxsE,IAAI1yB,SAASk/F,cAAc;AAC3B,aAAOj+F,OAAOyxB;IACjB;AACDwsE,mBAAeA,eAAexsE,IAAI1yB;AAClC,QAAIk/F,eAAeC,UAAUn/F,QAAQ;AACjCm/F,mBAAaL,OAAOK,WAAWD,eAAeC,UAAUn/F,MAAAA;AAAAA,IAC3D;AACD,WAAOm/F,UAAUt1F,MAAM,GAAGq1F,gBAAgBj+F,OAAOyxB,GAAAA;AAAAA,EACrD;AAIO,MAAIxxB,QAAQ,SAAUwxB,KAAK0sE,KAAK51D,KACnC;AAAA,QAAI61D,SAAS3sE,IAAIxxB,MAAMk+F;AACvB,WAAO51D,MACD61D,OAAOx1F,MAAM,GAAG2/B,GAAKxiC,EAAAA,OAAO,CAACq4F,OAAOx1F,MAAM2/B,KAAK99B,KAAK0zF,GAAAA,CAAAA,CAAAA,IACpDC;AAAAA,EACV;AAgBO,MAAIC,QAAQ,SAAUvnF,GAAGC,GAC5B;AAAA,QAAIyV,IAAI1V,IAAIC;AAEZ,WAAOyV,IAAIzV,IAAI,IAAIyV,IAAIzV,IAAIyV;AAAAA,EAC/B;AAIO,MAAI8xE,SAAS,SAAUxnF,GAAGC;AAC7B,WAAO,EAAE7O,KAAK4D,KAAK8D,MAAMkH,IAAIC,CAAIwnF,GAAAA,KAAKF,MAAMvnF,GAAGC;EACnD;AACO,MAAIynF,QAAQ,SAAUjkG,KAAAA;AACzB,YAAQijG,UAAUjjG,GAAAA,KAAQA,IAAIwE,WAAW;AAAA,EAC7C;AAQO,MAAI0/F,WAAW,SAAUlkG,KAAAA;AAC5B,YAAQikG,MAAMjkG,GAAAA;AAAAA,EAClB;AAIO,MAAIojG,WAAW,SAAU7jD,KAAKl4B;AACjC,WAAO68E,SAAS3kD,QAAQA,IAAIptC,QAAQkV,GAAU,MAAA;AAAA,EAClD;ACnHO,MAAI88E,WAAW,SAAUh9E,GAAGw3B,GAAG3qC,GAAGsM,GAAG/b,GAAGsF,GAC3C;AAAA,QAAIyW,cAAc;AAAEA,UAAI;AAAA,IAAI;AAC5B,QAAI/b,MAAW,QAAG;AAAEA,UAAI;AAAA,IAAI;AAC5B,QAAIsF,cAAc;AAAEA,UAAI;AAAA,IAAI;AAC5B,WAAO,IAAIjF,KAAKA,KAAKgoC,IAAIzlB,GAAGw3B,IAAI,GAAG3qC,GAAGsM,GAAG/b,GAAGsF,CAChD,CAAA;AAAA,EAAA;AAMO,MAAIu6F,aAAa,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;AAI9D,MAAIC,UAAU,MAAO,KAAK,KAAK;AAI/B,MAAIC,UAAU;AAMd,MAAIC,eAAeJ,SAAS,MAAM,GAAG,CAKrC;AAAA,MAAIK,cAAc,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;AASrC,MAAIC,aAAa,SAAUlpF,MAAAA;AAC9B,WAAQA,OAAO,MAAM,KAAKA,OAAO,QAAQ,KAAMA,OAAO,QAAQ;AAAA,EAClE;AACO,MAAIzC,SAAS,SAAU2F;AAC1B,WAAOA,iBAAiB7Z;AAAAA,EAC5B;AACO,MAAI8/F,cAAc,SAAUjmF;AAC/B,WAAO3F,OAAO2F,WAAW8I,MAAM9I,MAAMmc;EACzC;AAUO,MAAI+pE,cAAc,SAAUC,OAAOC,OAGtC;AAAA,QAAIC,UAAUF,MAAMhqE,QAAAA;AACpB,QAAImqE,UAAUF,MAAMjqE,QAEpB;AAAA,QAAIoqE,eAAeF,UAAUC;AAE7B,WAAOxzF,KAAKI,MAAMqzF,eAAeX,OACrC;AAAA,EAAA;AAIO,MAAIY,YAAY,SAAU1hG,MAC7B;AAAA,WAAOohG,YAAYphG,MAAMghG,YAAAA;AAAAA,EAC7B;AAIO,MAAIW,cAAc,SAAUC,SAAAA;AAC/B,WAAO,IAAIvgG,KAAK2/F,aAAa3pE,QAAYuqE,IAAAA,UAAUd;EACvD;AACO,MAAIe,eAAe,SAAU7hG;AAChC,QAAI49B,QAAQ59B,KAAKmoC,YACjB;AAAA,WAAOvK,UAAU,KAAKsjE,WAAWlhG,KAAKooC,eAAAA,CAAAA,IAChC,KACAy4D,WAAWjjE,KAAAA;AAAAA,EACrB;AAIO,MAAIkkE,aAAa,SAAU9hG,MAC9B;AAAA,WAAOihG,YAAYjhG,KAAKsoC;EAC5B;AAIO,MAAIy5D,aAAa,SAAU/pF,MAAM4lB;AACpC,QAAI59B,OAAO4gG,SAAS5oF,MAAM4lB,QAAQ,GAAG,CAAA;AACrC,WAAO,CAACkkE,WAAW9hG,OAAO6hG,aAAa7hG,IAAAA,CAAAA;AAAAA,EAC3C;AAIO,MAAIgiG,UAAU,SAAUhiG,MAAM+gD;AACjCA,WAAOA,QAAQ/gD;AACf,WAAO,IAAIqB,KAAKA,KAAKgoC,IAAIrpC,KAAKooC,eAAAA,GAAkBpoC,KAAKmoC,YAAenoC,GAAAA,KAAKkoC,cAAc6Y,KAAK73C,SAAAA,GAAY63C,KAAKv2C,WAAAA,GAAcu2C,KAAKlY,WAAckY,GAAAA,KAAKkhD;EACvJ;AACO,MAAIrnB,QAAQ,SAAU56E,MAAAA;AACzB,QAAIkiG,QAAQ,IAAI7gG,KAAKrB,KAAKq3B;AAC1B,WAAO6qE;AAAAA,EACX;AACO,MAAIC,aAAa,SAAU3gG,OAAAA;AAC9B,QAAI4gG,SAAS,CAAA;AACb,aAASphG,IAAI,GAAGA,IAAIQ,MAAMP,QAAQD,KAAK;AACnCohG,aAAO1hG,KAAKk6E,MAAMp5E,MAAMR,CAAAA,CAAAA,CAAAA;AAAAA,IAC3B;AACD,WAAOohG;AAAAA,EACX;AAIO,MAAIhhE,OAAO,SAAU5/B,OAAAA;AACxBA,UAAM4/B,KAAK,SAAUpoB,GAAGC,GACpB;AAAA,aAAOD,EAAEqe,QAAAA,IAAYpe,EAAEoe,QAC/B;AAAA,IAAA,CAAA;AAAA,EACA;AACO,MAAIgrE,oBAAoB,SAAUthD,MAAMlZ,KAAAA;AAC3C,QAAIA,QAAAA,QAAgB;AAAEA,YAAM;AAAA,IAAO;AACnC,QAAI7nC,OAAO,IAAIqB,KAAK0/C,IAAAA;AACpB,WAAO,CACHm/C,SAASlgG,KAAKooC,eAAiBjzB,EAAAA,SAAAA,GAAY,GAAG,GAC9C+qF,GAAAA,SAASlgG,KAAKmoC,YAAAA,IAAgB,GAAG,GAAG,GAAA,GACpC+3D,SAASlgG,KAAKkoC,WAAAA,GAAc,GAAG,GAC/B,GAAA,KACAg4D,SAASlgG,KAAK0oC,eAAe,GAAG,GAAA,GAChCw3D,SAASlgG,KAAK2oC,cAAAA,GAAiB,GAAG,GAClCu3D,GAAAA,SAASlgG,KAAK4oC,cAAAA,GAAiB,GAAG,GAClCf,GAAAA,MAAM,MAAM,EACdl7B,EAAAA,KAAK;EACX;AACO,MAAI21F,oBAAoB,SAAUC;AACrC,QAAI55B,KAAK;AACT,QAAI65B,OAAO75B,GAAGnrB,KAAK+kD,KAAAA;AACnB,QAAKC,CAAAA;AACD,YAAM,IAAI1zF,MAAM,wBAAwB7G,OAAOs6F,KAAAA,CAAAA;AACnD,WAAO,IAAIlhG,KAAKA,KAAKgoC,IAAIxW,SAAS2vE,KAAK,CAAA,GAAI,KAAK3vE,SAAS2vE,KAAK,IAAI,EAAM,IAAA,GAAG3vE,SAAS2vE,KAAK,IAAI,EAAK3vE,GAAAA,SAAS2vE,KAAK,CAAI,GAAA,EAAA,KAAO,GAAG3vE,SAAS2vE,KAAK,CAAI,GAAA,EAAA,KAAO,GAAG3vE,SAAS2vE,KAAK,IAAI,EAAO,KAAA,CAAA,CAAA;AAAA,EACvL;AACA,MAAIC,kBAAkB,SAAUziG,MAAM0iG;AAElC,QAAIC,UAAU3iG,KAAK2+D,eAAe,SAAS,EAAE+jC,SAAUA,CAAAA;AAEvD,WAAOC,QAAQ/7E,QAAQ,KAAK,GAAA,IAAO;AAAA,EACvC;AACO,MAAIg8E,iBAAiB,SAAU5iG,MAAM0iG,UACxC;AAAA,QAAIG,gBAAgBC,KAAKC,eAAAA,EAAiBC,kBAAkBN;AAE5D,QAAIO,gBAAgB,IAAI5hG,KAAKohG,gBAAgBziG,MAAM6iG;AACnD,QAAIK,iBAAiB,IAAI7hG,KAAKohG,gBAAgBziG,MAAM0iG,aAAa,QAAQA,aAAkB,SAAIA,WAAW,KAC1G,CAAA;AAAA,QAAIS,WAAWD,eAAe7rE,QAAAA,IAAY4rE,cAAc5rE,QACxD;AAAA,WAAO,IAAIh2B,KAAKrB,KAAKq3B,QAAY8rE,IAAAA,QAAAA;AAAAA,EACrC;AC5JA,MAAIC,aAA4B;AAC5B,aAASA,YAAWjsF,QAAQlB,MAAAA;AACxBpZ,WAAK6wB,UAAU;AACf7wB,WAAK8wB,UAAU;AACf9wB,WAAK24F,UAAU,CAAA;AACf34F,WAAK+yD,QAAQ;AACb/yD,WAAKsa,SAASA;AACdta,WAAKoZ,OAAOA;AACZ,UAAIkB,WAAW,WAAW;AACtBta,aAAK8wB,UAAU1X,KAAKk0B,MACdl0B,KAAKozD,SACL,IAAIhoE,KAAK4U,KAAKozD,OAAOhyC,QAAAA,IAAY;AACvCx6B,aAAK6wB,UAAUzX,KAAKk0B,MAAMl0B,KAAKotF,QAAQ,IAAIhiG,KAAK4U,KAAKotF,MAAMhsE,YAAY,CAC1E;AAAA,MAAA,WACQlgB,WAAW,UAAU;AAC1Bta,aAAK8wB,UAAU1X,KAAKk0B,MAAMl0B,KAAKsrC,KAAK,IAAIlgD,KAAK4U,KAAKsrC,GAAGlqB,YAAY,CACpE;AAAA,MAAA,WACQlgB,WAAW,SAAS;AACzBta,aAAK6wB,UAAUzX,KAAKk0B,MAAMl0B,KAAKsrC,KAAK,IAAIlgD,KAAK4U,KAAKsrC,GAAGlqB,QAAY,IAAA,CAAA;AAAA,MACpE;AAAA,IACJ;AASD+rE,IAAAA,YAAWluF,UAAUouF,SAAS,SAAUtjG,MAClCnD;AAAAA,QAAAA,KAAK+yD;AACP,UAAI2zC,WAAW1mG,KAAK6wB,WAAW1tB,OAAOnD,KAAK6wB;AAC3C,UAAI81E,UAAU3mG,KAAK8wB,WAAW3tB,OAAOnD,KAAK8wB;AAC1C,UAAI9wB,KAAKsa,WAAW,WAAW;AAC3B,YAAIosF;AACA,iBAAO;AACX,YAAIC;AACA,iBAAO;AAAA,MACd,WACQ3mG,KAAKsa,WAAW,UAAU;AAC/B,YAAIqsF;AACA,iBAAO;AAAA,MACd,WACQ3mG,KAAKsa,WAAW,SAAS;AAC9B,YAAIosF;AACA,iBAAO;AACX1mG,aAAKoD,IAAID;AACT,eAAO;AAAA,MACV;AACD,aAAOnD,KAAKoD,IAAID,IAAAA;AAAAA,IACxB;AAMIojG,IAAAA,YAAWluF,UAAUjV,MAAM,SAAUD,MAAAA;AACjCnD,WAAK24F,QAAQ90F,KAAKV,IAClB;AAAA,aAAO;AAAA,IACf;AAOIojG,IAAAA,YAAWluF,UAAUirC,WAAW,WAAA;AAC5B,UAAI/6C,MAAMvI,KAAK24F;AACf,cAAQ34F,KAAKsa,QACT;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AACD,iBAAO/R;AAAAA,QACX,KAAK;AAAA,QACL,KAAK;AAAA,QACL;AACI,iBAAQA,IAAInE,SAASmE,IAAIA,IAAInE,SAAS,CAAK,IAAA;AAAA,MAAA;AAAA,IAE3D;AACImiG,IAAAA,YAAWluF,UAAU0lE,QAAQ,WACzB;AAAA,aAAO,IAAIwoB,YAAWvmG,KAAKsa,QAAQta,KAAKoZ;IAChD;AACI,WAAOmtF;AAAAA,EACX;ACrEA,MAAIK,gBAAgB,SAAShzF,GAAGwI,GAAAA;AAC9BwqF,oBAAgB3sF,OAAO4sF,kBAClB,EAAEC,WAAW,CAAA,EAAA,aAAgB/4F,SAAS,SAAU6F,IAAGwI,IAAKxI;AAAAA,MAAAA,GAAEkzF,YAAY1qF;AAAAA,IAAE,KACzE,SAAUxI,IAAGwI,IAAAA;AAAK,eAASjS,KAAKiS;AAAG,YAAInC,OAAO5B,UAAUzJ,eAAewH,KAAKgG,IAAGjS,CAAAA;AAAIyJ,UAAAA,GAAEzJ,CAAAA,IAAKiS,GAAEjS;;AAChG,WAAOy8F,cAAchzF,GAAGwI;EAC1B;AAEO,WAAS2qF,UAAUnzF,GAAGwI;AAC3B,QAAWA,OAAAA,MAAM,cAAcA,MAAM;AACjC,YAAM,IAAI4qF,UAAU,yBAAyB3hG,OAAO+W,KAAK,+BAC7DwqF;AAAAA,kBAAchzF,GAAGwI,CACjB;AAAA,aAAS6qF;AAAOjnG,WAAKuY,cAAc3E;AAAAA,IAAI;AACvCA,MAAEyE,YAAY+D,MAAM,OAAOnC,OAAOigB,OAAO9d,MAAM6qF,GAAG5uF,YAAY+D,EAAE/D,WAAW,IAAI4uF;AAAAA,EACjF;AAEO,MAAIC,WAAW,WAAA;AACpBA,eAAWjtF,OAAOktF,UAAU,SAASD,UAAS/yF;AAC1C,eAAS1K,GAAGtF,IAAI,GAAGg0B,IAAIlkB,UAAU7P,QAAQD,IAAIg0B,GAAGh0B,KAAK;AACjDsF,YAAIwK,UAAU9P,CACd;AAAA,iBAASgG,KAAKV;AAAG,cAAIwQ,OAAO5B,UAAUzJ,eAAewH,KAAK3M,GAAGU,CAAIgK;AAAAA,cAAEhK,KAAKV,EAAEU,CAAAA;AAAAA,MAC7E;AACD,aAAOgK;AAAAA,IACV;AACD,WAAO+yF,SAAS94F,MAAMpO,MAAMiU;EAC9B;AA6KO,WAASmzF,cAAcpyE,IAAID,MAAMsyE,MACtC;AAAA,QAAIA,QAAQpzF,UAAU7P,WAAW;AAAG,eAASD,IAAI,GAAG8kE,IAAIl0C,KAAK3wB,QAAQm3D,KAAIp3D,IAAI8kE,GAAG9kE,KAAK;AACjF,YAAIo3D,OAAQp3D,EAAAA,KAAK4wB,OAAO;AACpB,cAAA,CAAKwmC;AAAIA,YAAAA,MAAKxtD,MAAMsK,UAAUpK,MAAMmI,KAAK2e,MAAM,GAAG5wB;AAClDo3D,UAAAA,IAAGp3D,CAAAA,IAAK4wB,KAAK5wB,CAChB;AAAA,QAAA;AAAA,MACJ;AACD,WAAO6wB,GAAG5pB,OAAOmwD,OAAMxtD,MAAMsK,UAAUpK,MAAMmI,KAAK2e,IACpD,CAAA;AAAA,EAAA;AAAA,SAiG8BuyE,oBAAoB,aAAaA,kBAAkB,SAAU9wF,OAAO+wF,YAAY1gG,UAC5G;AAAA,QAAIhB,IAAI,IAAIoM,MAAMpL;AAClB,WAAOhB,EAAEuU,OAAO,mBAAmBvU,EAAE2Q,QAAQA,OAAO3Q,EAAE0hG,aAAaA,YAAY1hG;AAAAA,EACjF;AC3TA,MAAI2hG,qBAAoC,SAAUC;AAC9CV,cAAUS,qBAAoBC;AAC9B,aAASD,oBAAmBltF,QAAQlB,MAAMsuF,UAAAA;AACtC,UAAIC,QAAQF,OAAOrxF,KAAKpW,MAAMsa,QAAQlB,IAASpZ,KAAAA;AAC/C2nG,YAAMD,WAAWA;AACjB,aAAOC;AAAAA,IACV;AACDH,IAAAA,oBAAmBnvF,UAAUjV,MAAM,SAAUD,MAAAA;AACzC,UAAInD,KAAK0nG,SAASvkG,MAAMnD,KAAK24F,QAAQv0F,MAAS,GAAA;AAC1CpE,aAAK24F,QAAQ90F,KAAKV;AAClB,eAAO;AAAA,MACV;AACD,aAAO;AAAA,IACf;AACI,WAAOqkG;AAAAA,EACX,EAAEjB;AClBF,MAAIqB,UAAU,EACVC,UAAU,CACN,UACA,UACA,WACA,aACA,YACA,UACA,UAEJC,GAAAA,YAAY,CACR,WACA,YACA,SACA,SACA,OACA,QACA,QACA,UACA,aACA,WACA,YACA,UAAA,GAEJC,QAAQ,EACJC,MAAM,oBACNtQ,QAAQ,gBACRuQ,cAAc,qBACdC,OAAO,WACP,UAAU,WACV,cAAc,eACd,WAAW,YACX,WAAW,YACX,aAAa,cACb,YAAY,aACZ,WAAW,YACXpa,IAAI,aACJqa,IAAI,UACJC,KAAK,SACLr/D,OAAO,WACPkkC,QAAQ,YACRo7B,OAAO,WACP3F,KAAK,mCACL/9C,MAAM,UACN2jD,KAAK,SACL,WAAW,YACX5C,OAAO,cACP6C,QAAQ,kBACRC,SAAS,sBACTC,WAAW,wBACXC,UAAU,uBACVC,QAAQ,kBACRC,UAAU,oBACVC,QAAQ,kBACRC,SAAS,gBACTC,UAAU,iBACVC,OAAO,cACPC,OAAO,cACPC,KAAK,SACLC,MAAM,WACNC,MAAM,WACNC,QAAQ,eACRC,WAAW,qBACXC,SAAS,gBACTC,UAAU,iBACVC,UAAU,iBACVC,OAAO,wBC5Df,EAAA;AAAA,MAAItjE,WAAW,SAAU+Y,KAAKl4B;AAC1B,WAAOk4B,IAAIptC,QAAQkV,GAAU,MAAA;AAAA,EACjC;AACA,MAAI0iF,iBAAiB,SAAU5pG,KAAAA;AAAM,WAAOA,IAAGuY,SAAAA;AAAAA;AAC/C,MAAIsxF,uBAAuB,SAAUzuF,MAAM4lB,OAAOvhC,KAAO;AAAA,WAAO,GAAG4L,OAAO21B,OAAO,KAAK31B,OAAO5L,KAAK,IAAM4L,EAAAA,OAAO+P;;AAS/G,MAAI0uF,SAAwB,WACxB;AAAA,aAASA,QAAOC,OAAOC,SAASC,UAAUC,eAAAA;AACtC,UAAIF,YAAiB,QAAG;AAAEA,kBAAUJ;AAAAA,MAAiB;AACrD,UAAIK,aAAAA,QAAqB;AAAEA,mBAAWpC;AAAAA,MAAU;AAChD,UAAIqC,kBAAuB,QAAG;AAAEA,wBAAgBL;AAAAA,MAAuB;AACvE5pG,WAAK8G,OAAO,CACZ9G;AAAAA,WAAKgqG,WAAWA,YAAYpC;AAC5B5nG,WAAK+pG,UAAUA;AACf/pG,WAAKiqG,gBAAgBA;AACrBjqG,WAAK8pG,QAAQA;AACb9pG,WAAK4H,UAAUkiG,MAAMliG;AACrB5H,WAAKkqG,cAAcJ,MAAMI;AACzB,UAAIlqG,KAAKkqG,YAAYC,YAAY;AAC7B,YAAIA,aAAa,CAAA,EAAG/+F,OAAOpL,KAAK4H,QAAQuiG,UACxC;AAAA,YAAIC,cAAc,CAAGh/F,EAAAA,OAAOpL,KAAK4H,QAAQwiG,WAAAA;AACzCD,mBAAW5lE,KAAK,SAAUpoB,GAAGC,GAAAA;AAAK,iBAAOD,IAAIC;AAAAA,QAAE;AAC/CguF,oBAAY7lE,KAAK,SAAUpoB,GAAGC;AAAK,iBAAOA,IAAID;AAAAA,QAAE,CAEhDnc;AAAAA,aAAKmqG,aAAaA,WAAW/+F,OAAOg/F,WACpC;AAAA,YAAA,CAAKpqG,KAAKmqG,WAAW/lG;AACjBpE,eAAKmqG,aAAa;AAAA,MACzB;AACD,UAAItH,UAAU7iG,KAAKkqG,YAAYG,YAAY;AACvC,YAAIA,aAAapyF,QAAQjY,KAAKkqG,YAAYG,SACpC,IAAA,CAACrqG,KAAKkqG,YAAYG,aAClBrqG,KAAKkqG,YAAYG;AACvB,YAAIxiG,OAAOxC,OAAOglG,SAClBrqG;AAAAA,aAAKqqG,YAAY,EACbC,UAAUD,UAAUz1D,OAAO,SAAU4tD,SACjC;AAAA,iBAAA,CAAQA,QAAQrqE;AAAAA,QACpC,CAAA,GACgBoyE,WAAWF,UAAUz1D,OAAO,SAAU4tD,SAAAA;AAClC,iBAAOzoF,QAAQyoF,QAAQrqE;QAC3C,CACgBqyE,GAAAA,YAAY3iG,KAAKkK,QAAQ,gBACrBlK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,IACjB04F,YAAY5iG,KAAKkK,QAAQ,IAAW,MAAA,MAChClK,KAAKkK,QAAQ,gBACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,MACxBlK,KAAKkK,QAAQ,IAAA,MAAA,MACblK,KAAKkK,QAAQ,IAAW,MAAA,GAAA;AAEhC,YAAI24F,eAAe,SAAUvuF,GAAGC,GAC5B;AAAA,iBAAOD,EAAEqmF,UAAUpmF,EAAEomF;AAAAA,QACrC;AACYxiG,aAAKqqG,UAAUC,SAAS/lE,KAAKmmE,YAC7B1qG;AAAAA,aAAKqqG,UAAUE,UAAUhmE,KAAKmmE,YAC9B;AAAA,YAAA,CAAK1qG,KAAKqqG,UAAUC,SAASlmG;AACzBpE,eAAKqqG,UAAUC,WAAW;AAC9B,YAAA,CAAKtqG,KAAKqqG,UAAUE,UAAUnmG;AAC1BpE,eAAKqqG,UAAUE,YAAY;AAAA,MAClC,OACI;AACDvqG,aAAKqqG,YAAY;AAAA,MACpB;AAAA,IACJ;AAODR,IAAAA,QAAOc,qBAAqB,SAAUb,OAAAA;AAClC,UAAIc,aAAa;AACjB,UAAMd,EAAAA,MAAMliG,QAAQijG,QAAQhB,QAAOiB;AAC/B,eAAO;AACX,UAAIhB,MAAMI,YAAYxE,SAASoE,MAAMI,YAAYj1E;AAC7C,eAAO;AACX,eAAS/f,OAAO40F,MAAMI,aAAa;AAC/B,YAAI9jE,SAAS,CAAC,WAAW,QAAQ,QAAQ,SAASlxB,GAC9C;AAAA,iBAAO;AACX,YAAA,CAAKkxB,SAASyjE,QAAOiB,YAAYhB,MAAMliG,QAAQijG,IAAAA,GAAO31F;AAClD,iBAAO;AAAA,MACd;AACD,aAAO01F;AAAAA,IACf;AACIf,IAAAA,QAAOxxF,UAAUsyF,qBAAqB,WAAA;AAClC,aAAOd,QAAOc,mBAAmB3qG,KAAK8pG,KAAAA;AAAAA,IAC9C;AAQID,IAAAA,QAAOxxF,UAAUC,WAAW,WACxB;AAAA,UAAIyxF,UAAU/pG,KAAK+pG;AACnB,UAAM/pG,EAAAA,KAAK4H,QAAQijG,QAAQhB,QAAOiB,cAAc;AAC5C,eAAOf,QAAQ,yDAClB;AAAA,MAAA;AACD/pG,WAAK8G,OAAO,CAACijG,QAAQ,OAAA,CAAA;AAGrB/pG,WAAK+qG,MAAMC,YAAYhrG,KAAK4H,QAAQijG,IAAAA,CAAAA,EAAAA;AACpC,UAAI7qG,KAAK4H,QAAQ89F,OAAO;AACpB1lG,aAAKoD,IAAI2mG,QAAQ;AACjB,YAAIrE,QAAQ1lG,KAAK4H,QAAQ89F;AACzB1lG,aAAKoD,IAAIpD,KAAKiqG,cAAcvE,MAAMn6D,kBAAkBvrC,KAAKgqG,SAASlC,WAAWpC,MAAMp6D,gBAAgBo6D,MAAMr6D,WAAAA,CAAAA,CAAAA;AAAAA,MAC5G,WACQrrC,KAAK4H,QAAQqtB,OAAO;AACzBj1B,aAAKoD,IAAI2mG,QAAQ,KACZ3mG,CAAAA,EAAAA,IAAIpD,KAAK4H,QAAQqtB,MAAM3c,YACvBlV,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQqtB,KAAS80E,IAAAA,QAAQ,WAAWA,QAAQ,MAAA,CAAA;AAAA,MACzE;AACD,UAAK/pG,CAAAA,KAAK2qG,mBACN3qG;AAAAA,aAAKoD,IAAI2mG,QAAQ,iBAAA,CAAA;AACrB,aAAO/pG,KAAK8G,KAAKgJ,KAAK,EAC9B;AAAA,IAAA;AACI+5F,IAAAA,QAAOxxF,UAAU6yF,SAAS,WACtB;AAAA,UAAInB,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAAA,CAAAA;AACnCtY,WAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAAYsyC,IAAAA,QAAQ,WAAWA,QAAQ,MAAA,CAAA;AAAA,IACjF;AACIF,IAAAA,QAAOxxF,UAAU8yF,WAAW,WAAA;AACxB,UAAIpB,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C;AACnCtY,WAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAAAA,IAC5BsyC,QAAQ,SACRA,IAAAA,QAAQ;IACtB;AACIF,IAAAA,QAAOxxF,UAAU+yF,QAAQ,WAAA;AACrB,UAAIrB,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SACnC,CAAA;AAAA,UAAItY,KAAKqqG,aAAarqG,KAAKqqG,UAAUG,YAAY;AAC7CxqG,aAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAC5BsyC,IAAAA,QAAQ,cACRA,QAAQ,SAAA,CAAA;AAAA,MACjB,OACI;AACD/pG,aAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,YAAYsyC,QAAQ,MAAA,IAAUA,QAAQ,KAAA,CAAA;AAAA,MAC3E;AACD,UAAI/pG,KAAKkqG,YAAYmB,SAAS;AAC1BrrG,aAAKoD,IAAI2mG,QAAQ,IACjB/pG,CAAAA;AAAAA,aAAKsrG;MACR;AACD,UAAItrG,KAAKmqG,YAAY;AACjBnqG,aAAKurG,YACR;AAAA,MAAA,WACQvrG,KAAKqqG,WAAW;AACrBrqG,aAAKwrG;MACR,WACQxrG,KAAKkqG,YAAYuB,QAAQ;AAC9BzrG,aAAK0rG;MACR;AAAA,IACT;AACI7B,IAAAA,QAAOxxF,UAAUszF,SAAS;AACtB,UAAI5B,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,aAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,YAAYlV,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,YAAYsyC,QAAQ,OAAA,IAAWA,QAAQ,MAAA,CAAA;AAAA,MAClH;AACD,UAAI/pG,KAAKqqG,aAAarqG,KAAKqqG,UAAUG,YAAY;AAC7C,YAAIxqG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,eAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAC5BsyC,IAAAA,QAAQ,cACRA,QAAQ,SAAA,CAAA;AAAA,QACjB,OACI;AACD/pG,eAAKoD,IAAI2mG,QAAQ,IAAA,CAAA,EAAO3mG,IAAI2mG,QAAQ;QACvC;AAAA,MACJ,WACQ/pG,KAAKqqG,aAAarqG,KAAKqqG,UAAUI,YAAY;AAClDzqG,aAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAAAA,IAAYsyC,QAAQ,MAAUA,IAAAA,QAAQ,KAC3E,CAAA;AAAA,MAAA,OACI;AACD,YAAI/pG,KAAK4H,QAAQ6vD,aAAa;AAC1Bz3D,eAAKoD,IAAI2mG,QAAQ,MACrB,CAAA;AAAA,YAAI/pG,KAAKkqG,YAAYmB,SAAS;AAC1BrrG,eAAKoD,IAAI2mG,QAAQ,IACjB/pG,CAAAA;AAAAA,eAAKsrG,SACR;AAAA,QAAA;AACD,YAAItrG,KAAKmqG,YAAY;AACjBnqG,eAAKurG,YAAAA;AAAAA,QACR,WACQvrG,KAAKqqG,WAAW;AACrBrqG,eAAKwrG,WACR;AAAA,QAAA;AACD,YAAIxrG,KAAKkqG,YAAYuB,QAAQ;AACzBzrG,eAAK0rG,QACR;AAAA,QAAA;AAAA,MACJ;AAAA,IACT;AACI7B,IAAAA,QAAOxxF,UAAUuzF,UAAU,WAAA;AACvB,UAAI7B,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAKkqG,YAAYmB,SAAS;AAC1B,YAAIrrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,eAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAYlV,CAAAA,EAAAA,IAAI2mG,QAAQ,QACvD,CAAA;AAAA,cAAI/pG,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAAAA;AACzBz3D,iBAAKoD,IAAI2mG,QAAQ;QAIxB;AACD/pG,aAAKsrG,SACR;AAAA,MAAA,OACI;AACD,YAAItrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,eAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAClC,CAAA;AAAA,QAAA;AACDtY,aAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAC5BsyC,IAAAA,QAAQ,YACRA,QAAQ,OAAA,CAAA;AAAA,MACjB;AACD,UAAI/pG,KAAKmqG,YAAY;AACjBnqG,aAAKurG,YACR;AAAA,MAAA,WACQvrG,KAAKqqG,aAAarqG,KAAKqqG,UAAUG,YAAY;AAClDxqG,aAAKoD,IAAI2mG,QAAQ,IAAA,CAAA,EAAO3mG,IAAI2mG,QAAQ,UAAA,CAAA;AAAA,MACvC,WACQ/pG,KAAKqqG,WAAW;AACrBrqG,aAAKwrG,WACR;AAAA,MAAA;AAAA,IACT;AACI3B,IAAAA,QAAOxxF,UAAUwzF,SAAS,WACtB;AAAA,UAAI9B,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAKkqG,YAAYmB,SAAS;AAC1B,YAAIrrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,eAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C;AAC/BtY,eAAKoD,IAAI2mG,QAAQ,OAIpB,CAAA;AAAA,QAAA;AACD/pG,aAAKsrG,SAAAA;AAAAA,MACR,OACI;AACD,YAAItrG,KAAK4H,QAAQ6vD,aAAa,GAAG;AAC7Bz3D,eAAKoD,IAAIpD,KAAK4H,QAAQ6vD,SAASn/C,SAAAA,CAAAA;AAAAA,QAClC;AACDtY,aAAKoD,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQ6vD,QAAAA,IAAYsyC,QAAQ,OAAWA,IAAAA,QAAQ;MAC5E;AACD,UAAI/pG,KAAKmqG,YAAY;AACjBnqG,aAAKurG,YAAAA;AAAAA,MACR,WACQvrG,KAAKqqG,WAAW;AACrBrqG,aAAKwrG;MACR;AACD,UAAIxrG,KAAK4H,QAAQkkG,WAAW;AACxB9rG,aAAKoD,IAAI2mG,QAAQ,QAAA,CAAA,EACZ3mG,IAAIpD,KAAKmjB,KAAKnjB,KAAK4H,QAAQkkG,WAAW9rG,KAAK0iG,KAAKqH,QAAQ,KACxD3mG,CAAAA,CAAAA,EAAAA,IAAI2mG,QAAQ,KACpB,CAAA;AAAA,MAAA;AACD,UAAI/pG,KAAK4H,QAAQmkG,UAAU;AACvB/rG,aAAKoD,IAAI2mG,QAAQ,OACZ3mG,IAAIpD,KAAKirG,OAAOjrG,KAAK4H,QAAQmkG,SAAS3nG,MAAAA,IACrC2lG,QAAQ,OACRA,IAAAA,QAAQ,SACT3mG,IAAIpD,KAAKmjB,KAAKnjB,KAAK4H,QAAQmkG,UAAU19F,QAAW07F,QAAQ,KAChE,CAAA,CAAA;AAAA,MAAA;AAAA,IACT;AACIF,IAAAA,QAAOxxF,UAAUkzF,cAAc,WAAA;AAC3B,UAAIxB,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAKqqG,aAAarqG,KAAKqqG,UAAUC,UAAU;AAC3CtqG,aAAKoD,IAAI2mG,QAAQ,OACZ3mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKqqG,UAAUC,UAAUtqG,KAAKgsG,aAAajC,QAAQ,IAAA,CAAA,CAAA,EACjE3mG,IAAI2mG,QAAQ,KAAA,CAAA,EACZ3mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKmqG,YAAYnqG,KAAK0iG,KAAKqH,QAAQ;MACzD,OACI;AACD/pG,aAAKoD,IAAI2mG,QAAQ,QAAW3mG,CAAAA,EAAAA,IAAIpD,KAAKmjB,KAAKnjB,KAAKmqG,YAAYnqG,KAAK0iG,KAAKqH,QAAQ,KAAA,CAAA,CAAA;AAAA,MAChF;AAAA,IAET;AACIF,IAAAA,QAAOxxF,UAAUmzF,aAAa;AAC1B,UAAIzB,UAAU/pG,KAAK+pG;AACnB,UAAI/pG,KAAKqqG,UAAUC,aAAatqG,KAAKqqG,UAAUG,YAAY;AACvDxqG,aAAKoD,IAAI2mG,QAAQ,IAAA,CAAA,EAAO3mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKqqG,UAAUC,UAAUtqG,KAAKgsG,WAAAA,CAAAA;AAAAA,MACvE;AACD,UAAIhsG,KAAKqqG,UAAUE,WAAW;AAC1B,YAAIvqG,KAAKqqG,UAAUC;AACftqG,eAAKoD,IAAI2mG,QAAQ,KAAA,CAAA;AACrB/pG,aAAKoD,IAAI2mG,QAAQ,QAAW3mG,CAAAA,EAAAA,IAAIpD,KAAKmjB,KAAKnjB,KAAKqqG,UAAUE,WAAWvqG,KAAKgsG,aAAajC,QAAQ;MACjG;AAAA,IACT;AACIF,IAAAA,QAAOxxF,UAAUqzF,UAAU;AACvB,UAAI3B,UAAU/pG,KAAK+pG;AACnB/pG,WAAKoD,IAAI2mG,QAAQ,OAAO3mG,IAAIpD,KAAKmjB,KAAKnjB,KAAKkqG,YAAYuB,QAAQp9F,QAAW07F,QAAQ,KAC1F,CAAA,CAAA;AAAA,IAAA;AACIF,IAAAA,QAAOxxF,UAAUizF,WAAW;AACxBtrG,WAAKoD,IAAIpD,KAAKmjB,KAAKnjB,KAAK4H,QAAQyjG,SAASrrG,KAAKisG,WAAWjsG,KAAK+pG,QAAQ,KAC9E,CAAA,CAAA;AAAA,IAAA;AACIF,IAAAA,QAAOxxF,UAAUqqF,MAAM,SAAUvqE,GAAAA;AAC7BA,UAAInC,SAASmC,EAAE7f,YAAY,EAC3B;AAAA,UAAIoqF;AACJ,UAAIqH,UAAU/pG,KAAK+pG;AACnB,UAAI5xE,MAAO;AACP,eAAO4xE,QAAQ,MAAA;AACnB,UAAImC,OAAO/6F,KAAKge,IAAIgJ,CAAAA;AACpB,cAAQ+zE,MACJ;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACDxJ,gBAAMwJ,OAAOnC,QAAQ;AACrB;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AACDrH,gBAAMwJ,OAAOnC,QAAQ,IACrB;AAAA;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AACDrH,gBAAMwJ,OAAOnC,QAAQ,IAAA;AACrB;AAAA,QACJ;AACIrH,gBAAMwJ,OAAOnC,QAAQ,IAAA;AAAA,MAAA;AAE7B,aAAO5xE,IAAI,IAAIuqE,MAAM,MAAMqH,QAAQ,MAAUrH,IAAAA;AAAAA,IACrD;AACImH,IAAAA,QAAOxxF,UAAU4zF,YAAY,SAAU1tD,GAAAA;AACnC,aAAOv+C,KAAKgqG,SAASlC,WAAWvpD,IAAI;IAC5C;AACIsrD,IAAAA,QAAOxxF,UAAU2zF,cAAc,SAAUG,MACrC;AAAA,UAAI3J,UAAUM,SAASqJ,IAAAA,KAASA,OAAO,KAAK,IAAIA,KAAKvJ,aACrD;AAAA,cAASuJ,KAAKh0E,IAAIn4B,KAAK0iG,IAAIyJ,KAAKh0E,KAAK,MAAM,MACvCn4B,KAAKgqG,SAASnC,SAASrF,OACnC;AAAA,IAAA;AACIqH,IAAAA,QAAOxxF,UAAU4yF,SAAS,SAAU9yE,GAChC;AAAA,aAAOA,IAAI,QAAQ;AAAA,IAC3B;AACI0xE,IAAAA,QAAOxxF,UAAUjV,MAAM,SAAUqG;AAC7BzJ,WAAK8G,KAAKjD,KAAK,GACf7D;AAAAA,WAAK8G,KAAKjD,KAAK4F;AACf,aAAOzJ;AAAAA,IACf;AACI6pG,IAAAA,QAAOxxF,UAAU8K,OAAO,SAAUg8B,KAAKl4C,UAAUmlG,YAAYC;AACzD,UAAI1E,QAAQ3nG;AACZ,UAAIqsG,UAAAA,QAAkB;AAAEA,gBAAQ;AAAA,MAAM;AACtC,WAAKp0F,QAAQknC,GAAAA,GAAM;AACfA,cAAM,CAACA;MACV;AACD,UAAImtD,YAAY,SAAUtpD,OAAO+1C,WAAWwT,gBAAAA;AACxC,YAAIppF,OAAO;AACX,iBAAShf,IAAI,GAAGA,IAAI6+C,MAAM5+C,QAAQD,KAAK;AACnC,cAAIA,MAAM,GAAG;AACT,gBAAIA,MAAM6+C,MAAM5+C,SAAS,GAAG;AACxB+e,sBAAQ,MAAMopF,iBAAiB;AAAA,YAClC,OACI;AACDppF,sBAAQ41E,YAAY;AAAA,YACvB;AAAA,UACJ;AACD51E,kBAAQ6/B,MAAM7+C,CAAAA;AAAAA,QACjB;AACD,eAAOgf;AAAAA,MACnB;AACQlc,iBACIA,YACI,SAAUulG,GAAAA;AACN,eAAOA,EAAEl0F,SAAAA;AAAAA,MAC7B;AACQ,UAAIm0F,eAAe,SAAUruE,KAAAA;AACzB,eAAOn3B,YAAYA,SAASmP,KAAKuxF,OAAOvpE,GAAAA;AAAAA,MACpD;AACQ,UAAIguE,YAAY;AACZ,eAAOE,UAAUntD,IAAI15C,IAAIgnG,eAAeJ,OAAOD,UAAAA;AAAAA,MAClD,OACI;AACD,eAAOjtD,IAAI15C,IAAIgnG,cAAc38F,KAAKu8F,QAAQ,GAC7C;AAAA,MAAA;AAAA,IACT;AACI,WAAOxC;AAAAA,EACX;ACnYA,MAAI6C,SAAwB,WAAA;AACxB,aAASA,QAAOC,OAAAA;AACZ3sG,WAAK4sG,OAAO;AACZ5sG,WAAK2sG,QAAQA;AAAAA,IAChB;AACDD,IAAAA,QAAOr0F,UAAU9I,QAAQ,SAAUzI;AAC/B9G,WAAK8G,OAAOA;AACZ9G,WAAK4sG,OAAO;AACZ,aAAO5sG,KAAK6sG,WACpB;AAAA,IAAA;AACIH,IAAAA,QAAOr0F,UAAUy0F,SAAS,WACtB;AAAA,aAAO9sG,KAAK4sG,QAAQ5sG,KAAK+sG,WAAW;AAAA,IAC5C;AACIL,IAAAA,QAAOr0F,UAAUw0F,aAAa,WAC1B;AAAA,UAAIG;AACJ,UAAIC;AACJjtG,WAAK+sG,SAAS;AACd/sG,WAAKqe,QAAQ;AACb,SAAG;AACC,YAAIre,KAAK4sG;AACL,iBAAO;AACX,YAAIM;AACJF,eAAO;AACP,iBAASG,UAAUntG,KAAK2sG,OAAO;AAC3BO,iBAAOltG,KAAK2sG,MAAMQ,MAAAA;AAClB,cAAI/iE,QAAQ8iE,KAAKvsD,KAAK3gD,KAAK8G;AAC3B,cAAIsjC,OAAO;AACP,gBAAI4iE,SAAS,QAAQ5iE,MAAM,GAAGhmC,SAAS4oG,KAAK,GAAG5oG,QAAQ;AACnD4oG,qBAAO5iE;AACP6iE,2BAAaE;AAAAA,YAChB;AAAA,UACJ;AAAA,QACJ;AACD,YAAIH,QAAQ,MAAM;AACdhtG,eAAK8G,OAAO9G,KAAK8G,KAAKi6C,OAAOisD,KAAK,CAAG5oG,EAAAA,MAAAA;AACrC,cAAIpE,KAAK8G,SAAS;AACd9G,iBAAK4sG,OAAO;AAAA,QACnB;AACD,YAAII,QAAQ,MAAM;AACdhtG,eAAK4sG,OAAO;AACZ5sG,eAAK+sG,SAAS;AACd/sG,eAAKqe,QAAQ;AACb;AAAA,QACH;AAAA,MACb,SAAiB4uF,eAAe;AACxBjtG,WAAK+sG,SAASE;AACdjtG,WAAKqe,QAAQ2uF;AACb,aAAO;AAAA,IACf;AACIN,IAAAA,QAAOr0F,UAAUouF,SAAS,SAAUrsF,MAChC;AAAA,UAAIpa,KAAK+sG,WAAW3yF,MAAM;AACtB,YAAIpa,KAAKqe,OAAO;AACZ,cAAI+uF,IAAIptG,KAAKqe;AACbre,eAAK6sG,WAAAA;AACL,iBAAOO;AAAAA,QACV;AACDptG,aAAK6sG,WACL;AAAA,eAAO;AAAA,MACV;AACD,aAAO;AAAA,IACf;AACIH,IAAAA,QAAOr0F,UAAUg1F,eAAe;AAC5B,aAAOrtG,KAAKymG,OAAO,QAAA;AAAA,IAC3B;AACIiG,IAAAA,QAAOr0F,UAAUi1F,SAAS,SAAUlzF,MAAAA;AAChC,UAAIpa,KAAKymG,OAAOrsF,IACZ;AAAA,eAAO;AACX,YAAM,IAAInI,MAAM,cAAcmI,OAAO,gBAAgBpa,KAAK+sG,MAAAA;AAAAA,IAClE;AACI,WAAOL;AAAAA,EACX;AACe,WAASa,UAAUzmG,MAAMkjG;AACpC,QAAIA,aAAAA,QAAqB;AAAEA,iBAAWpC;AAAAA,IAAU;AAChD,QAAIhgG,UAAU,CAAA;AACd,QAAI4lG,MAAM,IAAId,OAAO1C,SAASjC,MAC9B;AAAA,QAAA,CAAKyF,IAAIj+F,MAAMzI,IAAAA;AACX,aAAO;AACX2mG,MAAAA;AACA,WAAO7lG;AACP,aAAS6lG,IAELD;AAAAA,UAAIF,OAAO,OACX;AAAA,UAAIn1E,IAAIq1E,IAAIH,aAAAA;AACZ,UAAIl1E;AACAvwB,gBAAQ6vD,WAAWzhC,SAASmC,EAAE,CAAI,GAAA,EAAA;AACtC,UAAIq1E,IAAIV,OAAAA;AACJ,cAAM,IAAI76F,MAAM,gBACpB;AAAA,cAAQu7F,IAAIT,QACR;AAAA,QAAA,KAAK;AACDnlG,kBAAQijG,OAAOE,MAAMK;AACrB,cAAIoC,IAAIX,WAAAA,GAAc;AAClBa,eACAC;AAAAA,cAAAA;AAAAA,UACH;AACD;AAAA,QAGJ,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMY;AACrB/jG,kBAAQyiG,YAAY,CAACU,MAAM6C,IAAI7C,MAAM8C,IAAI9C,MAAM+C,IAAI/C,MAAMgD,IAAIhD,MAAMiD,EACnER;AAAAA,cAAIX;AACJa,aACAC;AAAAA,YAAAA;AACA;AAAA,QACJ,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMY;AACrB,cAAI6B,IAAIX,WAAc,GAAA;AAClBoB,eACAP;AAAAA,eAAAA;AACAC;UACH;AACD;AAAA,QACJ,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMG;AACrB,cAAIsC,IAAIX,cAAc;AAClBoB,eAAAA;AACAN;UACH;AACD;AAAA,QACJ,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMI;AACrB,cAAIqC,IAAIX,WAAc,GAAA;AAClBoB;AACAN,cACH;AAAA,UAAA;AACD;AAAA,QACJ,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMa;AACrB,cAAI4B,IAAIX,WAAc,GAAA;AAClBoB,eACAN;AAAAA,cAAAA;AAAAA,UACH;AACD;AAAA,QACJ,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMc;AACrB,cAAI2B,IAAIX,WAAAA,GAAc;AAClBoB,eACAN;AAAAA,cAAAA;AAAAA,UACH;AACD;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMY;AACrB,cAAIz2F,MAAMs4F,IAAIT,OACThsD,OAAO,GAAG,CACVrW,EAAAA,YAAAA;AACL9iC,kBAAQyiG,YAAY,CAACU,MAAM71F,GAAAA,CAAAA;AAC3B,eAAKs4F,IAAIX,WAAAA;AACL;AAEJ,iBAAOW,IAAI/G,OAAO,OAAA,GAAU;AACxB,gBAAI+G,IAAIV;AACJ,oBAAM,IAAI76F,MAAM,gBACpB;AAAA,gBAAIi8F,MAAMC,UAAAA;AACV,iBAAKD,KAAK;AACN,oBAAM,IAAIj8F,MAAM,uBAAuBu7F,IAAIT,SAAS,oBACvD;AAAA,YAAA;AACDnlG,oBAAQyiG,UAAUxmG,KAAKknG,MAAMmD,GAC7BV,CAAAA;AAAAA,gBAAIX;UACP;AACDa,aAAAA;AACAU,gBACAT;AAAAA,YAAAA;AACA;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD/lG,kBAAQijG,OAAOE,MAAMc;AACrBjkG,kBAAQyjG,UAAU,CAACgD,QAAAA,CAAAA;AACnB,eAAKb,IAAIX,WAAAA;AACL;AAEJ,iBAAOW,IAAI/G,OAAO,OAAU,GAAA;AACxB,gBAAI+G,IAAIV;AACJ,oBAAM,IAAI76F,MAAM,gBACpB;AAAA,gBAAIssC,IAAI8vD,QACR;AAAA,gBAAA,CAAK9vD,GAAG;AACJ,oBAAM,IAAItsC,MAAM,uBAAuBu7F,IAAIT,SAAS;YACvD;AACDnlG,oBAAQyjG,QAAQxnG,KAAK06C;AACrBivD,gBAAIX,WAAAA;AAAAA,UACP;AACDoB,aACAN;AAAAA,YAAAA;AACA;AAAA,QACJ;AACI,gBAAM,IAAI17F,MAAM;;IAE3B;AACD,aAASg8F;AACL,UAAIngB,KAAK0f,IAAI/G,OAAO,IAAA;AACpB,UAAI2B,MAAMoF,IAAI/G,OAAO,KAAA;AACrB,YAAM3Y,MAAMsa;AACR;AACJ,SAAG;AACC,YAAI1F,MAAM4L;AACV,YAAIJ,MAAMC;AACV,YAAI5vD,IAAI8vD;AAER,YAAI3L,KAAK;AAEL,cAAIwL,KAAK;AACLV,gBAAIX;AACJ,gBAAKjlG,CAAAA,QAAQyiG;AACTziG,sBAAQyiG,YAAY,CACxBziG;AAAAA,oBAAQyiG,UAAUxmG,KAAKknG,MAAMmD,KAAKxL,IAAIA,GAAAA,CAAAA;AAAAA,UACzC,OACI;AACD,gBAAA,CAAK96F,QAAQuiG;AACTviG,sBAAQuiG,aAAa,CAAA;AACzBviG,oBAAQuiG,WAAWtmG,KAAK6+F;AACxB8K,gBAAI/G,OAAO,QACd;AAAA,UAAA;AAAA,QAEJ,WACQyH,KAAK;AACVV,cAAIX,WAAAA;AACJ,eAAKjlG,QAAQyiG;AACTziG,oBAAQyiG,YAAY;AACxBziG,kBAAQyiG,UAAUxmG,KAAKknG,MAAMmD,GAAAA,CAAAA;AAAAA,QAChC,WACQV,IAAIT,WAAW,cAAc;AAClCS,cAAIX,WAAAA;AACJ,eAAKjlG,QAAQyiG,WAAW;AACpBziG,oBAAQyiG,YAAY,CAACU,MAAM6C,IAAI7C,MAAM8C,IAAI9C,MAAM+C,IAAI/C,MAAMgD,IAAIhD,MAAMiD,EAAAA;AAAAA,UACtE;AAAA,QACJ,WACQR,IAAIT,WAAW,WAAW;AAC/BS,cAAIX;AACJ,cAAI10E,IAAIq1E,IAAIH,aAAAA;AACZ,eAAKl1E,GAAG;AACJ,kBAAM,IAAIlmB,MAAM,uBAAuBu7F,IAAIT,SAAS,wBACvD;AAAA,UAAA;AACDnlG,kBAAQmkG,WAAW,CAAC/1E,SAASmC,EAAE,CAAA,GAAI;AACnC,iBAAOq1E,IAAI/G,OAAO,OAAA,GAAU;AACxBtuE,gBAAIq1E,IAAIH;AACR,gBAAKl1E,CAAAA,GAAG;AACJ,oBAAM,IAAIlmB,MAAM,uBAAuBu7F,IAAIT,SAAS,qBAAA;AAAA,YACvD;AACDnlG,oBAAQmkG,SAASloG,KAAKmyB,SAASmC,EAAE,CAAI,GAAA,EAAA,CAAA;AAAA,UACxC;AAAA,QACJ,WACQomB,GAAG;AACRivD,cAAIX,WACJ;AAAA,cAAA,CAAKjlG,QAAQyjG;AACTzjG,oBAAQyjG,UAAU,CAAA;AACtBzjG,kBAAQyjG,QAAQxnG,KAAK06C;QACxB,OACI;AACD;AAAA,QACH;AAAA,MACJ,SAAQivD,IAAI/G,OAAO,YAAY+G,IAAI/G,OAAO,UAAU+G,IAAI/G,OAAO,IACnE;AAAA,IAAA;AACD,aAASiH,KACL;AAAA,UAAIvF,KAAKqF,IAAI/G,OAAO;AACpB,UAAK0B,CAAAA;AACD;AACJ,SAAG;AACC,YAAIhwE,IAAIq1E,IAAIH,aACZ;AAAA,YAAA,CAAKl1E,GAAG;AACJ,gBAAM,IAAIlmB,MAAM,uBAAuBu7F,IAAIT,SAAS;QACvD;AACDnlG,gBAAQ6jG,SAAS,CAACz1E,SAASmC,EAAE,CAAA,GAAI;AACjC,eAAOq1E,IAAI/G,OAAO,OAAU,GAAA;AACxBtuE,cAAIq1E,IAAIH,aAAAA;AACR,cAAKl1E,CAAAA,GAAG;AACJ,kBAAM,IAAIlmB,MAAM,uBAAuBu7F,IAAIT,SAAS,iBACvD;AAAA,UAAA;AACDnlG,kBAAQ6jG,OAAO5nG,KAAKmyB,SAASmC,EAAE,IAAI,EACtC,CAAA;AAAA,QAAA;AAAA,MACb,SAAiBq1E,IAAI/G,OAAO,OAAY+G,KAAAA,IAAI/G,OAAO,IAC9C;AAAA,IAAA;AACD,aAAS4H,UACL;AAAA,cAAQb,IAAIT,QACR;AAAA,QAAA,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX,KAAK;AACD,iBAAO;AAAA,QACX;AACI,iBAAO;AAAA;IAElB;AACD,aAASoB;AACL,cAAQX,IAAIT,QACR;AAAA,QAAA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,iBAAOS,IAAIT,OAAOhsD,OAAO,GAAG,CAAGrW,EAAAA,YAAAA;AAAAA,QACnC;AACI,iBAAO;AAAA;IAElB;AACD,aAAS4jE;AACL,cAAQd,IAAIT;QACR,KAAK;AACDS,cAAIX,WAAAA;AACJ;QACJ,KAAK;AACDW,cAAIX,WAAAA;AACJ,iBAAO;AAAA,QACX,KAAK;AACDW,cAAIX;AACJ,iBAAOW,IAAI/G,OAAO,MAAW,IAAA,KAAI;AAAA,QACrC,KAAK;AACD+G,cAAIX,WAAAA;AACJ,iBAAOW,IAAI/G,OAAO,eAAe;AAAA,QACrC,KAAK;AACD,cAAI2G,IAAIp3E,SAASw3E,IAAInvF,MAAM,CAAA,GAAI;AAC/B,cAAI+uF,IAAAA,QAAYA,IAAI;AAChB,kBAAM,IAAIn7F,MAAM,uBAAuBm7F,CAAAA;AAC3CI,cAAIX,WACJ;AAAA,iBAAOW,IAAI/G,OAAO,MAAA,IAAA,CAAW2G,IAAIA;AAAAA,QACrC;AACI,iBAAO;AAAA,MAAA;AAAA,IAElB;AACD,aAASgB,QAAAA;AACLZ,UAAI/G,OAAO,IAAA;AACX+G,UAAI/G,OAAO;AACX,UAAI/D,MAAM4L;AACV,UAAK5L,CAAAA;AACD;AACJ96F,cAAQuiG,aAAa,CAACzH,GAAAA;AACtB8K,UAAIX,WACJ;AAAA,aAAOW,IAAI/G,OAAO,OAAA,GAAU;AACxB/D,cAAM4L,UAAAA;AACN,YAAK5L,CAAAA,KAAK;AACN,gBAAM,IAAIzwF,MAAM,uBAAuBu7F,IAAIT,SAAS,qBACvD;AAAA,QAAA;AACDnlG,gBAAQuiG,WAAWtmG,KAAK6+F,GACxB8K;AAAAA,YAAIX;MACP;AAAA,IACJ;AACD,aAASc,IACL;AAAA,UAAIH,IAAIT,WAAW,SAAS;AACxB,YAAI5pG,OAAOqB,KAAKwjC,MAAMwlE,IAAI1mG,IAC1B;AAAA,YAAA,CAAK3D;AACD,gBAAM,IAAI8O,MAAM,6BAA6Bu7F,IAAI1mG,IACrDc;AAAAA,gBAAQ89F,QAAQ,IAAIlhG,KAAKrB,IAC5B;AAAA,MAAA,WACQqqG,IAAI/G,OAAO,QAAQ;AACxB7+F,gBAAQqtB,QAAQe,SAASw3E,IAAInvF,MAAM,CAAA,GAAI;AACvCmvF,YAAIF,OAAO;MAEd;AAAA,IACJ;AAAA,EACL;ACrYO,MAAIiB;AAAAA,GACX,SAAWA,YAAAA;AACPA,IAAAA,WAAUA,WAAU,QAAA,IAAY,CAAK,IAAA;AACrCA,IAAAA,WAAUA,WAAU,SAAA,IAAa,CAAK,IAAA;AACtCA,IAAAA,WAAUA,WAAU,QAAA,IAAY,KAAK;AACrCA,IAAAA,WAAUA,WAAU,OAAW,IAAA,CAAA,IAAK;AACpCA,IAAAA,WAAUA,WAAU,QAAY,IAAA,CAAA,IAAK;AACrCA,IAAAA,WAAUA,WAAU,cAAc,CAAK,IAAA;AACvCA,IAAAA,WAAUA,WAAU,cAAc,CAAK,IAAA;AAAA,EAC1C,GAAEA,cAAcA,YAAY,CAAE,EAAA;AACxB,WAASC,qBAAqB3D;AACjC,WAAOA,OAAO0D,UAAUrD;AAAAA,EAC5B;ACkFA,MAAIuD,WAAW,SAAU3nG,MAAMkjG,UAAAA;AAC3B,QAAIA,aAAkB,QAAG;AAAEA,iBAAWpC;AAAAA,IAAU;AAChD,WAAO,IAAImD,MAAMwC,UAAUzmG,MAAMkjG,QAAa37F,KAAAA,MAAAA;AAAAA,EAClD;AACA,MAAIiG,SAAS,CACT,SACA,SACA,YACA,aACA,cACA,SAEJu1F;AAAAA,SAAOiB,cAAc,CACrBjB;AAAAA,SAAOiB,YAAYyD,UAAUrD,MAAAA,IAAU52F;AACvCu1F,SAAOiB,YAAYyD,UAAUpD,QAAAA,IAAY72F;AACzCu1F,SAAOiB,YAAYyD,UAAUnD,KAAS,IAAA,CAAC,QAAUhgG,EAAAA,OAAOkJ;AACxDu1F,SAAOiB,YAAYyD,UAAU5C,MAAUr3F,IAAAA;AACvCu1F,SAAOiB,YAAYyD,UAAU3C,OAAWt3F,IAAAA;AACxCu1F,SAAOiB,YAAYyD,UAAU1C,UAAU,CAAC,YAAY,aAAazgG,OAAOkJ,MAAAA;AAIxE,MAAIo6F,SAAS,SAAU5E,OAAOC,SAASC,UAAUC,eAC7C;AAAA,WAAO,IAAIJ,OAAOC,OAAOC,SAASC,UAAUC,eAAe3xF,SAC/D;AAAA,EAAA;AACA,MAAIqyF,qBAAqBd,OAAOc;ACnHhC,MAAIgE,OAAsB,WACtB;AAAA,aAASA,MAAK3tE,MAAMC,QAAQgsC,QAAQ2hC,aAChC5uG;AAAAA,WAAKghC,OAAOA;AACZhhC,WAAKihC,SAASA;AACdjhC,WAAKitE,SAASA;AACdjtE,WAAK4uG,cAAcA,eAAe;AAAA,IACrC;AACDD,IAAAA,MAAKt2F,UAAUhM,WAAW;AACtB,aAAOrM,KAAKghC;AAAAA,IACpB;AACI2tE,IAAAA,MAAKt2F,UAAU1K,aAAa,WAAA;AACxB,aAAO3N,KAAKihC;AAAAA,IACpB;AACI0tE,IAAAA,MAAKt2F,UAAU2zB,aAAa,WAAA;AACxB,aAAOhsC,KAAKitE;AAAAA,IACpB;AACI0hC,IAAAA,MAAKt2F,UAAU+sF,kBAAkB,WAAA;AAC7B,aAAOplG,KAAK4uG;AAAAA,IACpB;AACID,IAAAA,MAAKt2F,UAAUmiB,UAAU,WAAA;AACrB,cAASx6B,KAAKghC,OAAO,KAAK,KAAKhhC,KAAKihC,SAAS,KAAKjhC,KAAKitE,UAAU,MAC7DjtE,KAAK4uG;AAAAA,IACjB;AACI,WAAOD;AAAAA,EACX;AAEA,MAAIE,WAA0B,SAAUpH,QAAAA;AACpCV,cAAU8H,WAAUpH,MAAAA;AACpB,aAASoH,UAAS1zF,MAAM4lB,OAAOvhC,KAAKwhC,MAAMC,QAAQgsC,QAAQ2hC;AACtD,UAAIjH,QAAQF,OAAOrxF,KAAKpW,MAAMghC,MAAMC,QAAQgsC,QAAQ2hC,WAAgB5uG,KAAAA;AACpE2nG,YAAMxsF,OAAOA;AACbwsF,YAAM5mE,QAAQA;AACd4mE,YAAMnoG,MAAMA;AACZ,aAAOmoG;AAAAA,IACV;AACDkH,IAAAA,UAASC,WAAW,SAAU3rG,MAC1B;AAAA,aAAO,IAAInD,KAAKmD,KAAKooC,eAAkBpoC,GAAAA,KAAKmoC,gBAAgB,GAAGnoC,KAAKkoC,cAAcloC,KAAK0oC,YAAAA,GAAe1oC,KAAK2oC,cAAiB3oC,GAAAA,KAAK4oC,cAAiB5oC,GAAAA,KAAK4B,YAAY,GAC3K;AAAA,IAAA;AACI8pG,IAAAA,UAASx2F,UAAU4sF,aAAa;AAC5B,aAAOA,WAAW,IAAIzgG,KAAKxE,KAAKw6B,QACxC,CAAA,CAAA;AAAA,IAAA;AACIq0E,IAAAA,UAASx2F,UAAUmiB,UAAU;AACzB,aAAO,IAAIh2B,KAAKA,KAAKgoC,IAAIxsC,KAAKmb,MAAMnb,KAAK+gC,QAAQ,GAAG/gC,KAAKR,KAAKQ,KAAKghC,MAAMhhC,KAAKihC,QAAQjhC,KAAKitE,QAAQjtE,KAAK4uG,WAAcp0E,CAAAA,EAAAA,QAAAA;AAAAA,IAC9H;AACIq0E,IAAAA,UAASx2F,UAAUtP,SAAS,WAAA;AACxB,aAAO/I,KAAKR;AAAAA,IACpB;AACIqvG,IAAAA,UAASx2F,UAAUO,WAAW,WAC1B;AAAA,aAAO5Y,KAAK+gC;AAAAA,IACpB;AACI8tE,IAAAA,UAASx2F,UAAU02F,UAAU,WACzB;AAAA,aAAO/uG,KAAKmb;AAAAA,IACpB;AACI0zF,IAAAA,UAASx2F,UAAU22F,WAAW,SAAUC,OAAAA;AACpCjvG,WAAKmb,QAAQ8zF;AAAAA,IACrB;AACIJ,IAAAA,UAASx2F,UAAU62F,YAAY,SAAUrrC;AACrC7jE,WAAK+gC,SAAS8iC;AACd,UAAI7jE,KAAK+gC,QAAQ,IAAI;AACjB,YAAIouE,UAAUh+F,KAAK8D,MAAMjV,KAAK+gC,QAAQ,EAAA;AACtC,YAAIquE,WAAW1L,MAAM1jG,KAAK+gC,OAAO;AACjC/gC,aAAK+gC,QAAQquE;AACbpvG,aAAKmb,QAAQg0F;AACb,YAAInvG,KAAK+gC,UAAU,GAAG;AAClB/gC,eAAK+gC,QAAQ;YACX/gC,KAAKmb;AAAAA,QACV;AAAA,MACJ;AAAA,IACT;AACI0zF,IAAAA,UAASx2F,UAAUg3F,YAAY,SAAUxnG,MAAMynG;AAC3C,UAAIA,OAAOtvG,KAAKilG,WAAc,GAAA;AAC1BjlG,aAAKR,OAAAA,EAASQ,KAAKilG,WAAe,IAAA,KAAK,IAAIqK,SAASznG,OAAO;AAAA,MAC9D,OACI;AACD7H,aAAKR,OAAAA,EAASQ,KAAKilG,WAAeqK,IAAAA,QAAQznG,OAAO;AAAA,MACpD;AACD7H,WAAKuvG,OACb;AAAA,IAAA;AACIV,IAAAA,UAASx2F,UAAUm3F,WAAW,SAAU3nG,MAAAA;AACpC7H,WAAKR,OAAOqI;AACZ7H,WAAKuvG,OACb;AAAA,IAAA;AACIV,IAAAA,UAASx2F,UAAUo3F,WAAW,SAAU/hE,OAAOgiE,UAAUjE,QACrD;AAAA,UAAIiE,UAAU;AAEV1vG,aAAKghC,QAAQ7vB,KAAK8D,OAAO,KAAKjV,KAAKghC,QAAQ0M,KAASA,IAAAA;AAAAA,MACvD;AACD,iBAAS;AACL1tC,aAAKghC,QAAQ0M;AACb,YAAIiiE,KAAKhM,OAAO3jG,KAAKghC,MAAM,KAAK4uE,SAASD,GAAGpiG,KAAKsiG,UAAUF,GAAG/L;AAC9D,YAAIgM,QAAQ;AACR5vG,eAAKghC,OAAO6uE;AACZ7vG,eAAKwvG,SAASI,MAAAA;AAAAA,QACjB;AACD,YAAI/L,MAAM4H,WAAWzI,SAASyI,QAAQzrG,KAAKghC,IACvC;AAAA;AAAA,MACP;AAAA,IACT;AACI6tE,IAAAA,UAASx2F,UAAUy3F,aAAa,SAAU1wB,SAASswB,UAAUjE,QAAQsE,UACjE;AAAA,UAAIL,UAAU;AAEV1vG,aAAKihC,UACD9vB,KAAK8D,OAAO,QAAQjV,KAAKghC,OAAO,KAAKhhC,KAAKihC,WAAWm+C,OAAAA,IAAWA;AAAAA,MACvE;AACD,iBAAS;AACLp/E,aAAKihC,UAAUm+C;AACf,YAAIuwB,KAAKhM,OAAO3jG,KAAKihC,QAAQ,EAAK+uE,GAAAA,UAAUL,GAAGpiG,KAAK0iG,YAAYN,GAAG/L;AACnE,YAAIoM,SAAS;AACThwG,eAAKihC,SAASgvE;AACdjwG,eAAKyvG,SAASO,SAAS,OAAOvE,MACjC;AAAA,QAAA;AACD,aAAK5H,MAAM4H,WAAWzI,SAASyI,QAAQzrG,KAAKghC,IACvC6iE,OAAAA,MAAMkM,aAAa/M,SAAS+M,UAAU/vG,KAAKihC,MAAAA,IAAU;AACtD;AAAA,QACH;AAAA,MACJ;AAAA,IACT;AACI4tE,IAAAA,UAASx2F,UAAU63F,aAAa,SAAUC,SAAST,UAAUjE,QAAQsE,UAAUK,UAAAA;AAC3E,UAAIV,UAAU;AAEV1vG,aAAKitE,UACD97D,KAAK8D,OAAO,SAASjV,KAAKghC,OAAO,OAAOhhC,KAAKihC,SAAS,KAAKjhC,KAAKitE,WAC5DkjC,OAAAA,IAAWA;AAAAA,MACtB;AACD,iBAAS;AACLnwG,aAAKitE,UAAUkjC;AACf,YAAIR,KAAKhM,OAAO3jG,KAAKitE,QAAQ,EAAA,GAAKojC,YAAYV,GAAGpiG,KAAK+iG,YAAYX,GAAG/L;AACrE,YAAIyM,WAAW;AACXrwG,eAAKitE,SAASqjC;AACdtwG,eAAK8vG,WAAWO,WAAW,OAAO5E,QAAQsE;QAC7C;AACD,aAAKlM,MAAM4H,MAAAA,KAAWzI,SAASyI,QAAQzrG,KAAKghC,WACvC6iE,MAAMkM,QAAAA,KAAa/M,SAAS+M,UAAU/vG,KAAKihC,MAC3C4iE,OAAAA,MAAMuM,aAAapN,SAASoN,UAAUpwG,KAAKitE,MAAU,IAAA;AACtD;AAAA,QACH;AAAA,MACJ;AAAA,IACT;AACI4hC,IAAAA,UAASx2F,UAAUk3F,SAAS,WAAA;AACxB,UAAIvvG,KAAKR,OAAO,IAAI;AAChB;AAAA,MACH;AACD,UAAI+wG,cAAcrL,WAAWllG,KAAKmb,MAAMnb,KAAK+gC,QAAQ,GAAG,CACxD;AAAA,UAAI/gC,KAAKR,OAAO+wG,aAAa;AACzB;AAAA,MACH;AACD,aAAOvwG,KAAKR,MAAM+wG,aAAa;AAC3BvwG,aAAKR,OAAO+wG;UACVvwG,KAAK+gC;AACP,YAAI/gC,KAAK+gC,UAAU,IAAI;AACnB/gC,eAAK+gC,QAAQ;AAAA,YACX/gC,KAAKmb;AACP,cAAInb,KAAKmb,OAAO+oF,SAAS;AACrB;AAAA,UACH;AAAA,QACJ;AACDqM,sBAAcrL,WAAWllG,KAAKmb,MAAMnb,KAAK+gC,QAAQ,GAAG,CACvD;AAAA,MAAA;AAAA,IACT;AACI8tE,IAAAA,UAASx2F,UAAUjV,MAAM,SAAUwE,SAAS8nG,UACxC;AAAA,UAAI7E,OAAOjjG,QAAQijG,MAAMpzC,WAAW7vD,QAAQ6vD,UAAU63C,OAAO1nG,QAAQ0nG,MAAM7D,SAAS7jG,QAAQ6jG,QAAQsE,WAAWnoG,QAAQmoG,UAAUK,WAAWxoG,QAAQwoG;AACpJ,cAAQvF;QACJ,KAAK0D,UAAU1C;AACX,iBAAO7rG,KAAKgvG,SAASv3C,QAAAA;AAAAA,QACzB,KAAK82C,UAAU3C;AACX,iBAAO5rG,KAAKkvG,UAAUz3C;QAC1B,KAAK82C,UAAU5C;AACX,iBAAO3rG,KAAKqvG,UAAU53C,UAAU63C;QACpC,KAAKf,UAAUnD;AACX,iBAAOprG,KAAKwvG,SAAS/3C,QAAAA;AAAAA,QACzB,KAAK82C,UAAUrD;AACX,iBAAOlrG,KAAKyvG,SAASh4C,UAAUi4C,UAAUjE,MAAAA;AAAAA,QAC7C,KAAK8C,UAAUpD;AACX,iBAAOnrG,KAAK8vG,WAAWr4C,UAAUi4C,UAAUjE,QAAQsE,QACvD;AAAA,QAAA,KAAKxB,UAAUiC;AACX,iBAAOxwG,KAAKkwG,WAAWz4C,UAAUi4C,UAAUjE,QAAQsE,UAAUK,QAE7E;AAAA,MAAA;AAAA,IAAA;AACI,WAAOvB;AAAAA,EACX,EAAEF,IAAAA;AChLK,WAAS8B,oBAAkB7oG,SAAAA;AAC9B,QAAI8qD,UAAU,CAAA;AACd,QAAI5sC,OAAO7L,OAAO6L,KAAKle,OAAAA;AAEvB,aAAS8oG,KAAK,GAAGC,SAAS7qF,MAAM4qF,KAAKC,OAAOvsG,QAAQssG,MAAM;AACtD,UAAIx7F,MAAMy7F,OAAOD;AACjB,UAAK1N,CAAAA,SAAS4N,aAAa17F,GAAAA;AACvBw9C,gBAAQ7uD,KAAKqR,GAAAA;AACjB,UAAIwD,OAAO9Q,QAAQsN,UAAUovF,YAAY18F,QAAQsN,GAAO,CAAA,GAAA;AACpDw9C,gBAAQ7uD,KAAKqR,GAAAA;AAAAA,MAChB;AAAA,IACJ;AACD,QAAIw9C,QAAQtuD,QAAQ;AAChB,YAAM,IAAI6N,MAAM,sBAAsBygD,QAAQ5iD,KAAK,IACtD,CAAA;AAAA,IAAA;AACD,WAAOo3F,SAAS,IAAIt/F,OAAAA;AAAAA,EACxB;AACO,WAASipG,aAAajpG;AACzB,QAAI4jB,OAAO07E,SAASA,SAAS,CAAA,GAAI4J,iBAAAA,GAAkBL,oBAAkB7oG,OACrE,CAAA;AAAA,QAAIi7F,UAAUr3E,KAAKulF,QAAAA;AACfvlF,WAAKq/E,OAAOE,MAAMc;AACtB,QAAA,EAAMhJ,UAAUr3E,KAAKq/E,IAAAA,KAASE,MAAMC,YAAYx/E,KAAKq/E,QAAQ;AACzD,YAAM,IAAI54F,MAAM,sBAAsB7G,OAAOogB,KAAKq/E,MAAM,GAAKz/F,EAAAA,OAAOxD,QAAQijG,IAC/E,CAAA;AAAA,IAAA;AACD,QAAKr/E,CAAAA,KAAKwlF;AACNxlF,WAAKwlF,UAAU,IAAIxsG,MAAK,oBAAIA,QAAOuoC,gBAAgB,CAAA,CAAA;AACvD,QAAK81D,CAAAA,UAAUr3E,KAAK8jF,IAAO,GAAA;AACvB9jF,WAAK8jF,OAAOvE,MAAM6C,GAAGpL;AAAAA,IACxB,WACQM,SAASt3E,KAAK8jF,IAGlB;AAAA;AAAA,SAAA;AACD9jF,WAAK8jF,OAAO9jF,KAAK8jF,KAAK9M;AAAAA,IACzB;AACD,QAAIK,UAAUr3E,KAAKylF,QAAW,GAAA;AAC1B,UAAInO,SAASt3E,KAAKylF;AACdzlF,aAAKylF,WAAW,CAACzlF,KAAKylF;AAC1B,eAAS9sG,IAAI,GAAGA,IAAIqnB,KAAKylF,SAAS7sG,QAAQD,KAAK;AAC3C,YAAIipG,IAAI5hF,KAAKylF,SAAS9sG,CACtB;AAAA,YAAIipG,MAAM,KAAOA,EAAAA,KAAAA,QAAaA,KAAK,MAAM;AACrC,gBAAM,IAAIn7F,MAAM;QACnB;AAAA,MACJ;AAAA,IACJ;AACD,QAAA,EAAM8H,QAAQyR,KAAKugF,QAAAA,KACfjI,SAASt4E,KAAKugF,QAAAA,KACdjI,SAASt4E,KAAKsgF,SAAAA,KACd/xF,QAAQyR,KAAK2+E,eACbrG,SAASt4E,KAAK2+E,eACdtH,UAAUr3E,KAAK6+E,cACfxH,UAAUr3E,KAAKulF,QAAY,IAAA;AAC3B,cAAQvlF,KAAKq/E,MAAAA;AAAAA,QACT,KAAKE,MAAMc;AACP,eAAKrgF,KAAK6/E;AACN7/E,iBAAK6/E,UAAU7/E,KAAKwlF,QAAQ1lE,YAAAA,IAAgB;AAChD9f,eAAK2+E,aAAa3+E,KAAKwlF,QAAQ3lE,WAAAA;AAC/B;AAAA,QACJ,KAAK0/D,MAAMa;AACPpgF,eAAK2+E,aAAa3+E,KAAKwlF,QAAQ3lE;AAC/B;AAAA,QACJ,KAAK0/D,MAAMY;AACPngF,eAAK6+E,YAAY,CAACpF,WAAWz5E,KAAKwlF,OAAAA,CAAAA;AAClC;AAAA;IAEX;AAED,QAAInO,UAAUr3E,KAAK6/E,aAAapzF,QAAQuT,KAAK6/E,UAAU;AACnD7/E,WAAK6/E,UAAU,CAAC7/E,KAAK6/E,OACxB;AAAA,IAAA;AAED,QAAIxI,UAAUr3E,KAAKsgF,eACd7zF,QAAQuT,KAAKsgF,cACdhJ,SAASt3E,KAAKsgF,SAAY,GAAA;AAC1BtgF,WAAKsgF,YAAY,CAACtgF,KAAKsgF,SAC1B;AAAA,IAAA;AAED,SAAKjJ,UAAUr3E,KAAK2+E,UAAa,GAAA;AAC7B3+E,WAAK2+E,aAAa,CAAA;AAClB3+E,WAAK4+E,cAAc,CAAA;AAAA,IACtB,WACQnyF,QAAQuT,KAAK2+E,UAAAA,GAAa;AAC/B,UAAIA,aAAa;AACjB,UAAIC,cAAc;AAClB,eAASjmG,IAAI,GAAGA,IAAIqnB,KAAK2+E,WAAW/lG,QAAQD,KAAK;AAC7C,YAAIipG,IAAI5hF,KAAK2+E,WAAWhmG,CAAAA;AACxB,YAAIipG,IAAI,GAAG;AACPjD,qBAAWtmG,KAAKupG;QACnB,WACQA,IAAI,GAAG;AACZhD,sBAAYvmG,KAAKupG;QACpB;AAAA,MACJ;AACD5hF,WAAK2+E,aAAaA;AAClB3+E,WAAK4+E,cAAcA;AAAAA,IACtB,WACQ5+E,KAAK2+E,aAAa,GAAG;AAC1B3+E,WAAK4+E,cAAc,CAAC5+E,KAAK2+E;AACzB3+E,WAAK2+E,aAAa;IACrB,OACI;AACD3+E,WAAK4+E,cAAc,CAAA;AACnB5+E,WAAK2+E,aAAa,CAAC3+E,KAAK2+E,UAAAA;AAAAA,IAC3B;AAED,QAAItH,UAAUr3E,KAAKugF,QAAc9zF,KAAAA,CAAAA,QAAQuT,KAAKugF,QAAAA,GAAW;AACrDvgF,WAAKugF,WAAW,CAACvgF,KAAKugF,QAAAA;AAAAA,IACzB;AAED,QAAKlJ,CAAAA,UAAUr3E,KAAK6+E,SAAAA,GAAY;AAC5B7+E,WAAK0lF,aAAa;AAAA,IACrB,WACQpO,SAASt3E,KAAK6+E,SAAAA,GAAY;AAC/B7+E,WAAK6+E,YAAY,CAAC7+E,KAAK6+E;AACvB7+E,WAAK0lF,aAAa;AAAA,IACrB,WACQnO,aAAav3E,KAAK6+E,YAAY;AACnC7+E,WAAK6+E,YAAY,CAAC9H,QAAQE,QAAQj3E,KAAK6+E,SAAAA,EAAW7H,OAClDh3E;AAAAA,WAAK0lF,aAAa;AAAA,IACrB,WACQ1lF,KAAK6+E,qBAAqB9H,SAAS;AACxC,UAAA,CAAK/2E,KAAK6+E,UAAUlyE,KAAK3M,KAAKq/E,OAAOE,MAAMa,SAAS;AAChDpgF,aAAK6+E,YAAY,CAAC7+E,KAAK6+E,UAAU7H;AACjCh3E,aAAK0lF,aAAa;AAAA,MACrB,OACI;AACD1lF,aAAK0lF,aAAa,CAAC,CAAC1lF,KAAK6+E,UAAU7H,SAASh3E,KAAK6+E,UAAUlyE,CAC3D3M,CAAAA;AAAAA,aAAK6+E,YAAY;AAAA,MACpB;AAAA,IACJ,OACI;AACD,UAAIA,YAAY,CAAA;AAChB,UAAI6G,aAAa,CAAA;AACjB,eAAS/sG,IAAI,GAAGA,IAAIqnB,KAAK6+E,UAAUjmG,QAAQD,KAAK;AAC5C,YAAIgoG,OAAO3gF,KAAK6+E,UAAUlmG,CAC1B;AAAA,YAAI2+F,SAASqJ,IAAO,GAAA;AAChB9B,oBAAUxmG,KAAKsoG,IAAAA;AACf;AAAA,QACH,WACQpJ,aAAaoJ,IAAAA,GAAO;AACzB9B,oBAAUxmG,KAAK0+F,QAAQE,QAAQ0J,IAAAA,EAAM3J;AACrC;AAAA,QACH;AACD,YAAK2J,CAAAA,KAAKh0E,KAAK3M,KAAKq/E,OAAOE,MAAMa,SAAS;AACtCvB,oBAAUxmG,KAAKsoG,KAAK3J,OACvB;AAAA,QAAA,OACI;AACD0O,qBAAWrtG,KAAK,CAACsoG,KAAK3J,SAAS2J,KAAKh0E,CACvC,CAAA;AAAA,QAAA;AAAA,MACJ;AACD3M,WAAK6+E,YAAYvG,SAASuG,SAAAA,IAAaA,YAAY;AACnD7+E,WAAK0lF,aAAapN,SAASoN,UAAAA,IAAcA,aAAa;AAAA,IACzD;AAED,QAAKrO,CAAAA,UAAUr3E,KAAKigF,MAAS,GAAA;AACzBjgF,WAAKigF,SAASjgF,KAAKq/E,OAAOE,MAAMG,SAAS,CAAC1/E,KAAKwlF,QAAQnlE,YAAiB,CAAA,IAAA;AAAA,IAC3E,WACQi3D,SAASt3E,KAAKigF,MAAAA,GAAS;AAC5BjgF,WAAKigF,SAAS,CAACjgF,KAAKigF,MAAAA;AAAAA,IACvB;AAED,QAAK5I,CAAAA,UAAUr3E,KAAKukF,QAAAA,GAAW;AAC3BvkF,WAAKukF,WACDvkF,KAAKq/E,OAAOE,MAAMI,WAAW,CAAC3/E,KAAKwlF,QAAQllE,cAAAA,CAAAA,IAAmB;AAAA,IACrE,WACQg3D,SAASt3E,KAAKukF,QAAAA,GAAW;AAC9BvkF,WAAKukF,WAAW,CAACvkF,KAAKukF;IACzB;AAED,QAAA,CAAKlN,UAAUr3E,KAAK4kF,QAAAA,GAAW;AAC3B5kF,WAAK4kF,WACD5kF,KAAKq/E,OAAOE,MAAMyF,WAAW,CAAChlF,KAAKwlF,QAAQjlE,mBAAmB;AAAA,IACrE,WACQ+2D,SAASt3E,KAAK4kF,QAAW,GAAA;AAC9B5kF,WAAK4kF,WAAW,CAAC5kF,KAAK4kF,QACzB;AAAA,IAAA;AACD,WAAO,EAAEe,eAAe3lF,KAC5B;AAAA,EAAA;AACO,WAAS4lF,aAAa5lF,MAAAA;AACzB,QAAI6lF,oBAAoB7lF,KAAKwlF,QAAQx2E,QAAAA,IAAY;AACjD,QAAKg0E,CAAAA,qBAAqBhjF,KAAKq/E,IAAO,GAAA;AAClC,aAAO,CACV;AAAA,IAAA;AACD,QAAIyG,UAAU;AACd9lF,SAAKigF,OAAO9nG,QAAQ,SAAUq9B,MAAAA;AAC1BxV,WAAKukF,SAASpsG,QAAQ,SAAUs9B,QAAAA;AAC5BzV,aAAK4kF,SAASzsG,QAAQ,SAAUspE,QAC5BqkC;AAAAA,kBAAQztG,KAAK,IAAI8qG,KAAK3tE,MAAMC,QAAQgsC,QAAQokC,iBAC5D,CAAA;AAAA,QAAA,CAAA;AAAA,MACA;IACA,CACI;AAAA,WAAOC;AAAAA,EACX;AClMO,WAASC,YAAYC,WAAAA;AACxB,QAAI5pG,UAAU4pG,UACTlsG,MAAM,IACNG,EAAAA,IAAIgsG,WACJ78D,OAAO,SAAU9tB,GAAK;AAAA,aAAOA,MAAM;AAAA,IAAK,CAAA;AAC7C,WAAOogF,SAASA,SAAS,CAAA,GAAIt/F,QAAQ,CAAKA,CAAAA,GAAAA,QAAQ;EACtD;AACO,WAAS8pG,aAAaC,MACzB;AAAA,QAAI/pG,UAAU,CAAA;AACd,QAAIgqG,kBAAkB,+CAA+CjxD,KAAKgxD,IAAAA;AAC1E,SAAKC,iBAAiB;AAClB,aAAOhqG;AAAAA,IACV;AACD,QAAIiqG,OAAOD,gBAAgB,CAAIZ,GAAAA,UAAUY,gBAAgB,CACzD;AAAA,QAAIC,MAAM;AACNjqG,cAAQiqG,OAAOA;AAAAA,IAClB;AACDjqG,YAAQopG,UAAUvL,kBAAkBuL,OACpC;AAAA,WAAOppG;AAAAA,EACX;AACA,WAAS6pG,UAAUD,WAAAA;AACfA,gBAAYA,UAAUznF,QAAQ,aAAa,EAC3C;AAAA,QAAA,CAAKynF,UAAUptG;AACX,aAAO;AACX,QAAIyf,SAAS,iBAAiB88B,KAAK6wD,UAAU9mE,YAC7C,CAAA;AAAA,QAAA,CAAK7mB,QAAQ;AACT,aAAOiuF,WAAWN,SAAAA;AAAAA,IACrB;AACD,QAAIt8F,MAAM2O,OAAO,CACjB;AAAA,YAAQ3O,IAAIw1B,YACR,GAAA;AAAA,MAAA,KAAK;AAAA,MACL,KAAK;AACD,eAAOonE,WAAWN;MACtB,KAAK;AACD,eAAOE,aAAaF,SAAAA;AAAAA,MACxB;AACI,cAAM,IAAIv/F,MAAM,wBAAwB7G,OAAO8J,KAAK,MAAA,EAAQ9J,OAAOomG,SAE/E,CAAA;AAAA,IAAA;AAAA,EAAA;AACA,WAASM,WAAWH;AAChB,QAAII,eAAeJ,KAAK5nF,QAAQ,YAAY;AAC5C,QAAIniB,UAAU8pG,aAAaK,YAAAA;AAC3B,QAAIpzE,QAAQgzE,KAAK5nF,QAAQ,uBAAuB,EAAA,EAAIzkB,MAAM,GAC1Dq5B;AAAAA,UAAMh7B,QAAQ,SAAU05B;AACpB,UAAIsyE,KAAKtyE,KAAK/3B,MAAM,GAAA,GAAM4P,MAAMy6F,GAAG,CAAA,GAAItxF,QAAQsxF,GAAG;AAClD,cAAQz6F,IAAIw1B;QACR,KAAK;AACD9iC,kBAAQijG,OAAO0D,UAAUlwF,MAAMqsB,YAAAA,CAAAA;AAC/B;AAAA,QACJ,KAAK;AACD9iC,kBAAQ0nG,OAAO0C,KAAK3zF,MAAMqsB,YAC1B,CAAA;AAAA;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACD,cAAIkD,MAAMqkE,YAAY5zF,KAAAA;AACtB,cAAI6zF,YAAYh9F,IAAIyN;AAGpB/a,kBAAQsqG,SAAAA,IAAatkE;AACrB;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AACDhmC,kBAAQyiG,YAAY8H,aAAa9zF,KACjC;AAAA;AAAA,QACJ,KAAK;AAAA,QACL,KAAK;AAED,cAAI2yF,UAAUU,aAAaC,IAAAA;AAC3B/pG,kBAAQiqG,OAAOb,QAAQa;AACvBjqG,kBAAQopG,UAAUA,QAAQA;AAC1B;AAAA,QACJ,KAAK;AACDppG,kBAAQ89F,QAAQD,kBAAkBpnF;AAClC;AAAA,QACJ,KAAK;AACDzW,kBAAQmpG,WAAWj3F,OAAOuE,KAAAA;AAC1B;AAAA,QACJ;AACI,gBAAM,IAAIpM,MAAM,6BAA6BiD,MAAM,GAAA;AAAA,MAAA;AAAA,IAEnE;AACI,WAAOtN;AAAAA,EACX;AACA,WAASqqG,YAAY5zF;AACjB,QAAIA,MAAMtM,QAAQ,GAAA,MAAA,IAAa;AAC3B,UAAIyrB,SAASnf,MAAM/Y,MAAM;AACzB,aAAOk4B,OAAO/3B,IAAI2sG,qBAAAA;AAAAA,IACrB;AACD,WAAOA,sBAAsB/zF,KACjC;AAAA,EAAA;AACA,WAAS+zF,sBAAsB/zF,OAAAA;AAC3B,QAAI,aAAaonB,KAAKpnB,KAAQ,GAAA;AAC1B,aAAOvE,OAAOuE,KAAAA;AAAAA,IACjB;AACD,WAAOA;AAAAA,EACX;AACA,WAAS8zF,aAAa9zF,OAClB;AAAA,QAAIxW,OAAOwW,MAAM/Y,MAAM;AACvB,WAAOuC,KAAKpC,IAAI,SAAUjG;AACtB,UAAIA,IAAI4E,WAAW,GAAG;AAElB,eAAO4tG,KAAKxyG,GAAAA;AAAAA,MACf;AAED,UAAI61E,QAAQ71E,IAAI4qC,MAAM;AACtB,UAAKirC,CAAAA,SAASA,MAAMjxE,SAAS,GAAG;AAC5B,cAAM,IAAIiuG,YAAY,2BAA2BjnG,OAAO5L,GAC3D,CAAA;AAAA,MAAA;AACD,UAAI24B,IAAIre,OAAOu7D,MAAM,CAAA,CAAA;AACrB,UAAIi9B,WAAWj9B,MAAM;AACrB,UAAI82B,OAAO6F,KAAKM,QAAU9P,EAAAA;AAC1B,aAAO,IAAID,QAAQ4J,MAAMh0E,CAAAA;AAAAA,IACjC;EACA;AC7HA,MAAIo6E,eAA8B,WAC9B;AAAA,aAASA,cAAapvG,MAAM0uG;AACxB,UAAI1qF,MAAMhkB,KAAKq3B,QAAY,CAAA,GAAA;AACvB,cAAM,IAAIg4E,WAAW,qCACxB;AAAA,MAAA;AACDxyG,WAAKmD,OAAOA;AACZnD,WAAK6xG,OAAOA;AAAAA,IACf;AACD53F,WAAOw4F,eAAeF,cAAal6F,WAAW,SAAS,EACnDmxB,KAAK;AACD,aAAQxpC,CAAAA,KAAK6xG,QAAQ7xG,KAAK6xG,KAAKnnE,YAAkB,MAAA;AAAA,IACpD,GACDgoE,YAAY,OACZC,cAAc,KAElBJ,CAAAA;AAAAA,IAAAA,cAAal6F,UAAUC,WAAW,WAAA;AAC9B,UAAIi2B,UAAUi3D,kBAAkBxlG,KAAKmD,KAAKq3B,WAAWx6B,KAAK4yG,KAAAA;AAC1D,WAAK5yG,KAAK4yG,OAAO;AACb,eAAO,SAASxnG,OAAOpL,KAAK6xG,MAAM,GAAKzmG,EAAAA,OAAOmjC;MACjD;AACD,aAAO,IAAInjC,OAAOmjC;IAC1B;AACIgkE,IAAAA,cAAal6F,UAAUmiB,UAAU,WAAA;AAC7B,aAAOx6B,KAAKmD,KAAKq3B,QACzB;AAAA,IAAA;AACI+3E,IAAAA,cAAal6F,UAAUw6F,cAAc;AACjC,UAAI7yG,KAAK4yG,OAAO;AACZ,eAAO5yG,KAAKmD;AAAAA,MACf;AACD,aAAO4iG,eAAe/lG,KAAKmD,MAAMnD,KAAK6xG;IAC9C;AACI,WAAOU;AAAAA,EACX;AC5BO,WAASO,gBAAgBlrG;AAC5B,QAAIkiG,QAAQ;AACZ,QAAIkH,UAAU;AACd,QAAIlrF,OAAO7L,OAAO6L,KAAKle;AACvB,QAAIgpG,eAAc32F,OAAO6L,KAAKgrF,iBAAAA;AAC9B,aAAS3sG,IAAI,GAAGA,IAAI2hB,KAAK1hB,QAAQD,KAAK;AAClC,UAAI2hB,KAAK3hB,CAAO,MAAA;AACZ;AACJ,UAAK6+F,CAAAA,SAAS4N,cAAa9qF,KAAK3hB,CAAAA,CAAAA;AAC5B;AACJ,UAAI+Q,MAAM4Q,KAAK3hB,CAAAA,EAAGumC;AAClB,UAAIrsB,QAAQzW,QAAQke,KAAK3hB,CAAAA,CAAAA;AACzB,UAAI4uG,WAAW;AACf,UAAKlQ,CAAAA,UAAUxkF,UAAWpG,QAAQoG,KAAAA,KAAAA,CAAWA,MAAMja;AAC/C;AACJ,cAAQ8Q,KACJ;AAAA,QAAA,KAAK;AACD69F,qBAAWhI,MAAMC,YAAYpjG,QAAQijG;AACrC;AAAA,QACJ,KAAK;AACD,cAAI/H,SAASzkF,KAAQ,GAAA;AACjB00F,uBAAW,IAAIxQ,QAAQlkF,OAAO/F,SACjC;AAAA,UAAA,OACI;AACDy6F,uBAAW10F,MAAM/F,SACpB;AAAA,UAAA;AACD;AAAA,QACJ,KAAK;AAYDpD,gBAAM;AACN69F,qBAAW3P,QAAQ/kF,KACd5Y,EAAAA,IAAI,SAAU0mG,MAAAA;AACf,gBAAIA,gBAAgB5J,SAAS;AACzB,qBAAO4J;AAAAA,YACV;AACD,gBAAIl0F,QAAQk0F,IAAO,GAAA;AACf,qBAAO,IAAI5J,QAAQ4J,KAAK,CAAIA,GAAAA,KAAK;YACpC;AACD,mBAAO,IAAI5J,QAAQ4J;UACvC,CACqB7zF,EAAAA,SAAAA;AACL;AAAA,QACJ,KAAK;AACD04F,oBAAUgC,aAAa30F,OAAOzW,QAAQiqG,IAAAA;AACtC;AAAA,QACJ,KAAK;AACDkB,qBAAWvN,kBAAkBnnF,OAAAA,CAAQzW,QAAQiqG,IAC7C;AAAA;AAAA,QACJ;AACI,cAAI55F,QAAQoG,KAAQ,GAAA;AAChB,gBAAI40F,YAAY,CAAA;AAChB,qBAASx/E,IAAI,GAAGA,IAAIpV,MAAMja,QAAQqvB,KAAK;AACnCw/E,wBAAUx/E,CAAAA,IAAKpuB,OAAOgZ,MAAMoV,CAAAA,CAAAA;AAAAA,YAC/B;AACDs/E,uBAAWE,UAAU36F,SACxB;AAAA,UAAA,OACI;AACDy6F,uBAAW1tG,OAAOgZ,KACrB;AAAA,UAAA;AAAA,MAAA;AAET,UAAI00F,UAAU;AACVjJ,cAAMjmG,KAAK,CAACqR,KAAK69F,QAAAA,CAAAA;AAAAA,MACpB;AAAA,IACJ;AACD,QAAIpG,QAAQ7C,MACPrkG,IAAI,SAAUkqG,IAAAA;AACf,UAAIz6F,OAAMy6F,GAAG,IAAItxF,SAAQsxF,GAAG,CAC5B;AAAA,aAAO,GAAGvkG,OAAO8J,MAAK,KAAK9J,OAAOiT,OAAM/F;IAChD,CACSxI,EAAAA,KAAK,GACV;AAAA,QAAIojG,aAAa;AACjB,QAAIvG,UAAU,IAAI;AACduG,mBAAa,SAAS9nG,OAAOuhG,KAChC;AAAA,IAAA;AACD,WAAO,CAACqE,SAASkC,YAAYt+D,OAAO,SAAU9tB;AAAK,aAASA,CAAAA,CAAAA;AAAAA,IAAE,CAAIhX,EAAAA,KAAK;EAC3E;AACA,WAASkjG,aAAahC,SAASa,MAAAA;AAC3B,SAAKb,SAAS;AACV,aAAO;AAAA,IACV;AACD,WAAO,YAAY,IAAIuB,aAAa,IAAI/tG,KAAKwsG,OAAUa,GAAAA,IAAAA,EAAMv5F,SACjE;AAAA,EAAA;AC7FA,WAAS66F,UAAU3wG,MAAMokB;AACrB,QAAI7Y,MAAMkK,QAAQzV,IAAO,GAAA;AACrB,UAAKuL,CAAAA,MAAMkK,QAAQ2O,KACf;AAAA,eAAO;AACX,UAAIpkB,KAAK4B,WAAWwiB,MAAMxiB;AACtB,eAAO;AACX,aAAO5B,KAAK0lG,MAAM,SAAU/kG,MAAMgB,GAAAA;AAAK,eAAOhB,KAAKq3B,QAAAA,MAAc5T,MAAMziB,CAAAA,EAAGq2B;MAAY,CACzF;AAAA,IAAA;AACD,QAAIh4B,gBAAgBgC,MAAM;AACtB,aAAOoiB,iBAAiBpiB,QAAQhC,KAAKg4B,cAAc5T,MAAM4T,QAAAA;AAAAA,IAC5D;AACD,WAAOh4B,SAASokB;AAAAA,EACpB;AACA,MAAIwsF,QAAuB,WAAA;AACvB,aAASA,SACLpzG;AAAAA,WAAKyzE,MAAM;AACXzzE,WAAKwsE,SAAS,CACdxsE;AAAAA,WAAKwmG,QAAQ,CAAA;AACbxmG,WAAKqzG,UAAU,CAAA;AAAA,IAClB;AAMDD,IAAAA,OAAM/6F,UAAUi7F,YAAY,SAAUC,MAAMl1F,OAAOjF,MAAAA;AAC/C,UAAIiF,OAAO;AACPA,gBAAQA,iBAAiB7Z,OAAOu5E,MAAM1/D,KAASinF,IAAAA,WAAWjnF,KAC7D;AAAA,MAAA;AACD,UAAIk1F,SAAS,OAAO;AAChBvzG,aAAKyzE,MAAMp1D;AAAAA,MACd,OACI;AACDjF,aAAKo6F,SAASn1F;AACdre,aAAKuzG,IAAAA,EAAM1vG,KAAKuV,IACnB;AAAA,MAAA;AAAA,IACT;AAQIg6F,IAAAA,OAAM/6F,UAAUo7F,YAAY,SAAUF,MAAMn6F,MACxC;AAAA,UAAIs6F,SAAS;AACb,UAAIC,WAAWv6F,OAAOa,OAAO6L,KAAK1M,IAAAA,IAAQ;AAC1C,UAAIw6F,gBAAgB,SAAUj7C,OAC1B;AAAA,iBAASx0D,KAAI,GAAGA,KAAIwvG,SAASvvG,QAAQD,MAAK;AACtC,cAAI+Q,MAAMy+F,SAASxvG;AACnB,cAAKgvG,CAAAA,UAAU/5F,KAAKlE,GAAAA,GAAMyjD,MAAKzjD,GAAO,CAAA,GAAA;AAClC,mBAAO;AAAA,UACV;AAAA,QACJ;AACD,eAAO;AAAA,MACnB;AACQ,UAAI2+F,eAAe7zG,KAAKuzG,IAAAA;AACxB,UAAIA,SAAS,OAAO;AAChBG,iBAAS1zG,KAAKyzE;AAAAA,MACjB,WACQx7D,QAAQ47F,YAAAA,GAAe;AAG5B,iBAAS1vG,IAAI,GAAGA,IAAI0vG,aAAazvG,QAAQD,KAAK;AAC1C,cAAIw0D,OAAOk7C,aAAa1vG,CAAAA;AACxB,cAAIwvG,SAASvvG,UAAUwvG,cAAcj7C,IAAAA;AACjC;AACJ+6C,mBAAS/6C,KAAK66C;AACd;AAAA,QACH;AAAA,MACJ;AACD,UAAKE,CAAAA,UAAU1zG,KAAKyzE,KAAK;AAGrB,YAAIqgC,aAAa,IAAIvN,WAAWgN,MAAMn6F;AACtC,iBAASjV,IAAI,GAAGA,IAAInE,KAAKyzE,IAAIrvE,QAAQD,KAAK;AACtC,eAAK2vG,WAAWrN,OAAOzmG,KAAKyzE,IAAItvE;AAC5B;AAAA,QACP;AACDuvG,iBAASI,WAAWxwD,SAAAA;AACpBtjD,aAAKszG,UAAUC,MAAMG,QAAQt6F,IAAAA;AAAAA,MAChC;AACD,aAAOnB,QAAQy7F,UACTpO,WAAWoO,MAAAA,IACXA,kBAAkBlvG,OACdu5E,MAAM21B,MACNA,IAAAA;AAAAA,IAClB;AACI,WAAON;AAAAA,EACX,ECtFA;AAAA,MAAIW,WAAW3M,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAIlE,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,IAAI,EAAA,GAAK,OAAOA,OAAO,IAAI,EAAK,GAAA,IAAA,GAAOA,OAAO,IAAI,EAAA,GAAK,OAAOA,OAAO,GAAG,IAAI,IACle;AAAA,MAAI8Q,WAAW5M,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAIlE,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,IAAOA,GAAAA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,GAAG,EAAA,GAAK,OAAOA,OAAO,GAAG,KAAK,IAAOA,GAAAA,OAAO,IAAI,EAAK,GAAA,IAAA,GAAOA,OAAO,IAAI,KAAK,IAAOA,GAAAA,OAAO,IAAI,EAAK,GAAA,IAAA,GAAOA,OAAO,GAAG,CAAA,GAAI,IACle;AAAA,MAAI+Q,MAAMnvD,MAAM,GAAG;AACnB,MAAIovD,MAAMpvD,MAAM,GAAG,EAAA;AACnB,MAAIqvD,MAAMrvD,MAAM,GAAG,EAAA;AACnB,MAAIsvD,MAAMtvD,MAAM,GAAG,EACnB;AAAA,MAAIuvD,cAAcjN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAIgN,GAAAA,KAAK,OAAOF,KAAK,IAAA,GAAOE,KAAK,IAAOD,GAAAA,KAAK,IAAOC,GAAAA,KAAK,OAAOD,KAAK,IAAA,GAAOC,KAAK,IAAOA,GAAAA,KAAK,OAAOD,KAAK,IAAA,GAAOC,KAAK,IAAA,GAAOD,KAAK,IAAOC,GAAAA,KAAK,OAAOA,IAAInmG,MAAM,GAAG,CAAI,GAAA,IAAA;AAC7W,MAAIqmG,cAAclN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAA,GAAIgN,KAAK,IAAOH,GAAAA,KAAK,OAAOG,KAAK,IAAA,GAAOD,KAAK,IAAA,GAAOC,KAAK,IAAOD,GAAAA,KAAK,OAAOC,KAAK,IAAA,GAAOA,KAAK,IAAOD,GAAAA,KAAK,IAAOC,GAAAA,KAAK,OAAOD,KAAK,IAAA,GAAOC,KAAK,IAAOA,GAAAA,IAAInmG,MAAM,GAAG,CAAA,GAAI,IAC7W;AAAA,MAAIsmG,OAAOzvD,MAAO,KAAI;AACtB,MAAI0vD,OAAO1vD,WAAW,CAAA;AACtB,MAAI2vD,OAAO3vD,WAAW,CAAA;AACtB,MAAI4vD,OAAO5vD,MAAAA,KAAW,CACtB;AAAA,MAAI6vD,eAAevN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAIsN,GAAAA,MAAM,OAAOF,MAAM,IAAA,GAAOE,MAAM,IAAOD,GAAAA,MAAM,IAAOC,GAAAA,MAAM,OAAOD,MAAM,IAAA,GAAOC,MAAM,IAAOA,GAAAA,MAAM,OAAOD,MAAM,IAAA,GAAOC,MAAM,IAAA,GAAOD,MAAM,IAAOC,GAAAA,MAAM,OAAOA,KAAKzmG,MAAM,GAAG,CAAI,GAAA,IAAA;AAC3X,MAAI2mG,eAAexN,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAcA,cAAc,CAAA,GAAIsN,MAAM,IAAOH,GAAAA,MAAM,OAAOG,MAAM,IAAA,GAAOD,MAAM,IAAA,GAAOC,MAAM,IAAOD,GAAAA,MAAM,OAAOC,MAAM,IAAA,GAAOA,MAAM,IAAOD,GAAAA,MAAM,IAAOC,GAAAA,MAAM,OAAOD,MAAM,IAAA,GAAOC,MAAM,IAAOA,GAAAA,KAAKzmG,MAAM,GAAG,CAAA,GAAI,IAC3X;AAAA,MAAI4mG,YAAY,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACxE;AAAA,MAAIC,YAAY,CAAC,GAAG,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GACxE;AAAA,MAAIC,WAAW,WACX;AAAA,QAAIC,WAAW,CACf;AAAA,aAAS7wG,IAAI,GAAGA,IAAI,IAAIA;AACpB6wG,iBAAWA,SAAS5pG,OAAO05C,MAAM,CAAA,CAAA;AACrC,WAAOkwD;AAAAA,EACV,ECvBM;AAAA,WAASC,YAAY95F,MAAMvT,SAAAA;AAC9B,QAAIstG,YAAYnR,SAAS5oF,MAAM,GAAG,CAAA;AAClC,QAAIg6F,UAAU9Q,WAAWlpF,IAAQ,IAAA,MAAM;AACvC,QAAIi6F,cAAc/Q,WAAWlpF,OAAO,CAAA,IAAK,MAAM;AAC/C,QAAIk6F,cAAcxQ,UAAUqQ;AAC5B,QAAII,cAAcrQ,WAAWiQ,SAC7B;AAAA,QAAIj8F,SAASiuF,SAASA,SAAS,EAAEiO,SAAkBC,aAA0BC,aAA0BC,YAA4BC,GAAAA,cAAcp6F,QAAQ,EAAEq6F,SAAS;AACpK,QAAI3R,MAAMj8F,QAAQmkG,QAAW,GAAA;AACzB,aAAO9yF;AAAAA,IACV;AACDA,WAAOu8F,UAAUtS,OAAO,GAAGiS,UAAU;AACrC,QAAIM;AACJ,QAAIC;AACJ,QAAIC,UAAWF,YAAY/R,MAAM,IAAI4R,cAAc1tG,QAAQ0nG,MAAM,CAAA;AACjE,QAAIqG,WAAW,GAAG;AACdA,gBAAU;AAGVD,iBAAWz8F,OAAOk8F,UAAUzR,MAAM4R,cAAc1tG,QAAQ0nG,MAAM;IACjE,OACI;AAGDoG,iBAAWP,UAAUQ;AAAAA,IACxB;AACD,QAAIpoG,MAAM4D,KAAK8D,MAAMygG,WAAW,CAChC;AAAA,QAAI9R,MAAMF,MAAMgS,UAAU;AAC1B,QAAIE,WAAWzkG,KAAK8D,MAAM1H,MAAMq2F,MAAM,CAAA;AACtC,aAASnwE,IAAI,GAAGA,IAAI7rB,QAAQmkG,SAAS3nG,QAAQqvB,KAAK;AAC9C,UAAI0E,IAAIvwB,QAAQmkG,SAASt4E;AACzB,UAAI0E,IAAI,GAAG;AACPA,aAAKy9E,WAAW;AAAA,MACnB;AACD,UAAMz9E,EAAAA,IAAI,KAAKA,KAAKy9E,WAAW;AAC3B;AAAA,MACH;AACD,UAAIzxG,IAAAA;AACJ,UAAIg0B,IAAI,GAAG;AACPh0B,YAAIwxG,WAAWx9E,IAAI,KAAK;AACxB,YAAIw9E,YAAYF,WAAW;AACvBtxG,eAAK,IAAIsxG;AAAAA,QACZ;AAAA,MACJ,OACI;AACDtxG,YAAIwxG;AAAAA,MACP;AACD,eAAS3mG,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBiK,eAAOu8F,QAAQrxG,KAAK;AACpBA;AACA,YAAI8U,OAAO+7F,SAAS7wG,CAAOyD,MAAAA,QAAQ0nG;AAC/B;AAAA,MACP;AAAA,IACJ;AACD,QAAItM,SAASp7F,QAAQmkG,UAAU,CAAA,GAAI;AAG/B,UAAI5nG,IAAIwxG,UAAUC,WAAW;AAC7B,UAAID,YAAYF;AACZtxG,aAAK,IAAIsxG;AACb,UAAItxG,IAAIgxG,SAAS;AAGb,iBAAS1hF,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxBxa,iBAAOu8F,QAAQrxG,CAAAA,IAAK;AACpBA,eAAK;AACL,cAAI8U,OAAO+7F,SAAS7wG,CAAOyD,MAAAA,QAAQ0nG;AAC/B;AAAA,QACP;AAAA,MACJ;AAAA,IACJ;AACD,QAAIqG,SAAS;AAOT,UAAIE,YAAiB;AACrB,WAAK7S,SAASp7F,QAAQmkG,YAAe,GAAA;AACjC,YAAI+J,eAAe7Q,WAAWlB,SAAS5oF,OAAO,GAAG,GAAG,CAAA,CAAA;AACpD,YAAI46F,WAAWrS,MAAM,IAAIoS,aAAa/wG,QAAAA,IAAY6C,QAAQ0nG,MAAM;AAChE,YAAI0G,WAAW3R,WAAWlpF,OAAO,CAAA,IAAK,MAAM;AAC5C,YAAI86F,SAAc;AAClB,YAAIF,YAAY,GAAG;AACfA,qBAAW;AACXE,mBAASD,WAAWtS,MAAMoS,eAAeluG,QAAQ0nG,MAAM,CAC1D;AAAA,QAAA,OACI;AACD2G,mBAASd,UAAUQ;AAAAA,QACtB;AACDE,oBAAY1kG,KAAK8D,MAAM,KAAKyuF,MAAMuS,QAAQ,KAAK,CAClD;AAAA,MAAA,OACI;AACDJ,oBAAa;AAAA,MAChB;AACD,UAAI7S,SAASp7F,QAAQmkG,UAAU8J,SAAY,GAAA;AACvC,iBAAS1xG,IAAI,GAAGA,IAAIwxG,SAASxxG;AACzB8U,iBAAOu8F,QAAQrxG,CAAK,IAAA;AAAA,MAC3B;AAAA,IACJ;AACD,WAAO8U;AAAAA,EACX;AACA,WAASs8F,cAAcp6F,MAAAA;AACnB,QAAIg6F,UAAU9Q,WAAWlpF,QAAQ,MAAM;AACvC,QAAI+5F,YAAYnR,SAAS5oF,MAAM,GAAG;AAClC,QAAIgxF,OAAOlH,WAAWiQ,SACtB;AAAA,QAAIC,YAAY,KAAK;AACjB,aAAO,EACHe,OAAOnC,UACPoC,UAAU7B,aACV8B,WAAWxB,cACXI,UAAUD,SAAS9mG,MAAMk+F,IACzBkK,GAAAA,QAAQvB;IAEf;AACD,WAAO,EACHoB,OAAOlC,UACPmC,UAAU9B,aACV+B,WAAWzB,cACXK,UAAUD,SAAS9mG,MAAMk+F,IAAAA,GACzBkK,QAAQxB,UAEhB;AAAA,EAAA;AC5HO,WAASyB,aAAan7F,MAAM4lB,OAAOo0E,SAASkB,QAAQrB,UAAUptG,SAAAA;AACjE,QAAIqR,SAAS,EACTs9F,UAAUp7F,MACVq7F,WAAWz1E,OACX01E,WAAW;AAEf,QAAIC,SAAS;AACb,QAAI9uG,QAAQijG,SAASE,MAAMc,QAAQ;AAC/B,UAAIhI,MAAMj8F,QAAQyjG,OAAAA,GAAU;AACxBqL,iBAAS,CAAC,CAAC,GAAGvB;MACjB,OACI;AACD,iBAAS1hF,IAAI,GAAGA,IAAI7rB,QAAQyjG,QAAQjnG,QAAQqvB,KAAK;AAC7CsN,kBAAQn5B,QAAQyjG,QAAQ53E,CAAAA;AACxBijF,iBAAO7yG,KAAKwyG,OAAOpoG,MAAM8yB,QAAQ,GAAGA,QAAQ,CAAA,CAAA;AAAA,QAC/C;AAAA,MACJ;AAAA,IACJ,WACQn5B,QAAQijG,SAASE,MAAMa,SAAS;AACrC8K,eAAS,CAACL,OAAOpoG,MAAM8yB,QAAQ,GAAGA,QAAQ,CAAA,CAAA;AAAA,IAC7C;AACD,QAAI8iE,MAAM6S,MAAS,GAAA;AACf,aAAOz9F;AAAAA,IACV;AAGDA,WAAOw9F,YAAYvT,OAAO,GAAGiS,OAAAA;AAC7B,aAAS1hF,IAAI,GAAGA,IAAIijF,OAAOtyG,QAAQqvB,KAAK;AACpC,UAAIwvE,OAAOyT,OAAOjjF,CAClB;AAAA,UAAIsV,QAAQk6D,KAAK,CAAA;AACjB,UAAIt+C,OAAOs+C,KAAK,CAAK,IAAA;AACrB,eAASj0F,IAAI,GAAGA,IAAIpH,QAAQspG,WAAW9sG,QAAQ4K,KAAK;AAChD,YAAI7K;AACJ,YAAIwrG,KAAK/nG,QAAQspG,WAAWliG,IAAIm9F,OAAOwD,GAAG,CAAIx3E,GAAAA,IAAIw3E,GAAG,CACrD;AAAA,YAAIx3E,IAAI,GAAG;AACPh0B,cAAIwgD,QAAQxsB,IAAI,KAAK;AACrBh0B,eAAKu/F,MAAMsR,SAAS7wG,KAAKgoG,MAAM,CAAA;AAAA,QAClC,OACI;AACDhoG,cAAI4kC,SAAS5Q,IAAI,KAAK;AACtBh0B,eAAKu/F,MAAM,IAAIsR,SAAS7wG,KAAKgoG,MAAM,CAAA;AAAA,QACtC;AACD,YAAIpjE,SAAS5kC,KAAKA,KAAKwgD;AACnB1rC,iBAAOw9F,UAAUtyG,KAAK;AAAA,MAC7B;AAAA,IACJ;AACD,WAAO8U;AAAAA,EACX;ACjDO,WAAS09F,OAAO5vF,GAAG5T,QAAAA;AACtB,QAAIA,WAAgB,QAAG;AAAEA,eAAS;AAAA,IAAI;AACtC,QAAIgJ,IAAI4K,IAAI;AACZ,QAAI3K,IAAIjL,KAAK8D,MAAM8R,IAAI;AACvB,QAAIrd,IAAIqd,IAAI;AACZ,QAAInT,IAAIzC,KAAK8D,MAAMmH,IAAI,CAAA;AACvB,QAAIvW,IAAIuW,IAAI;AACZ,QAAIxC,IAAIzI,KAAK8D,OAAOmH,IAAI,KAAK,EAAA;AAC7B,QAAIyyD,IAAI19D,KAAK8D,OAAOmH,IAAIxC,IAAI,KAAK,CACjC;AAAA,QAAIsG,IAAI/O,KAAK8D,MAAM,KAAKkH,IAAIC,IAAIxI,IAAIi7D,IAAI,MAAM;AAC9C,QAAI1qE,IAAIgN,KAAK8D,MAAMvL,IAAI,CAAA;AACvB,QAAIsF,IAAItF,IAAI;AACZ,QAAIu/D,IAAI93D,KAAK8D,MAAM,KAAK,IAAIpP,IAAI,IAAI1B,IAAI+b,IAAIlR,KAAK;AACjD,QAAIuvC,IAAIptC,KAAK8D,OAAOkH,IAAI,KAAK+D,IAAI,KAAK+oD,KAAK;AAC3C,QAAIloC,QAAQ5vB,KAAK8D,OAAOiL,IAAI+oD,IAAI,IAAI1qB,IAAI,OAAO;AAC/C,QAAI/+C,OAAQ0gB,IAAI+oD,IAAI,IAAI1qB,IAAI,OAAO,KAAM;AACzC,QAAIp7C,OAAOqB,KAAKgoC,IAAIzlB,GAAGga,QAAQ,GAAGvhC,MAAM2T,MAAAA;AACxC,QAAIyjG,YAAYpyG,KAAKgoC,IAAIzlB,GAAG,GAAG,CAC/B;AAAA,WAAO,CAAC5V,KAAKwb,MAAMxpB,OAAOyzG,cAAc,MAAO,KAAK,KAAK,GAAA,CAAA;AAAA,EAC7D;ACTA,MAAIC,WAA0B,WAE1B;AAAA,aAASA,UAASjvG,SACd5H;AAAAA,WAAK4H,UAAUA;AAAAA,IAClB;AACDivG,IAAAA,UAASx+F,UAAUy+F,UAAU,SAAU37F,MAAM4lB;AACzC,UAAIn5B,UAAU5H,KAAK4H;AACnB,UAAIuT,SAASnb,KAAKu2G,UAAU;AACxBv2G,aAAK+2G,WAAW9B,YAAY95F,MAAMvT;MACrC;AACD,UAAIk8F,SAASl8F,QAAQspG,gBAChBnwE,UAAU/gC,KAAKw2G,aAAar7F,SAASnb,KAAKu2G,WAAW;AACtD,YAAI5G,KAAK3vG,KAAK+2G,UAAU5B,UAAUxF,GAAGwF,SAASkB,SAAS1G,GAAG0G,QAAQrB,WAAWrF,GAAGqF;AAChFh1G,aAAKg3G,YAAYV,aAAan7F,MAAM4lB,OAAOo0E,SAASkB,QAAQrB,UAAUptG,OACzE;AAAA,MAAA;AACD,UAAIi7F,UAAUj7F,QAAQmpG,QAAW,GAAA;AAC7B/wG,aAAKi3G,aAAaN,OAAOx7F,MAAMvT,QAAQmpG,QAAAA;AAAAA,MAC1C;AAAA,IACT;AACI92F,WAAOw4F,eAAeoE,UAASx+F,WAAW,YAAY,EAClDmxB,KAAK,WACD;AAAA,aAAOxpC,KAAKg3G,YAAYh3G,KAAKg3G,UAAUT,WAAW;AAAA,IACrD,GACD7D,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,aAAa,EACnDmxB,KAAK,WAAA;AACD,aAAOxpC,KAAKg3G,YAAYh3G,KAAKg3G,UAAUR,YAAY;AAAA,IACtD,GACD9D,YAAY,OACZC,cAAc;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,WAAW,EACjDmxB,KAAK;AACD,aAAOxpC,KAAK+2G,SAAS5B;AAAAA,IACxB,GACDzC,YAAY,OACZC,cAAc,KAElB14F,CAAAA;AAAAA,WAAOw4F,eAAeoE,UAASx+F,WAAW,eAAe,EACrDmxB,KAAK,WACD;AAAA,aAAOxpC,KAAK+2G,SAAS1B;AAAAA,IACxB,GACD3C,YAAY,OACZC,cAAc,KAElB14F,CAAAA;AAAAA,WAAOw4F,eAAeoE,UAASx+F,WAAW,UAAU,EAChDmxB,KAAK,WACD;AAAA,aAAOxpC,KAAK+2G,SAASV;AAAAA,IACxB,GACD3D,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,YAAY,EAClDmxB,KAAK,WAAA;AACD,aAAOxpC,KAAK+2G,SAAS/B;AAAAA,IACxB,GACDtC,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,SAAS,EAC/CmxB,KAAK,WAAA;AACD,aAAOxpC,KAAK+2G,SAASb;AAAAA,IACxB,GACDxD,YAAY,OACZC,cAAc;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,WAAW,EACjDmxB,KAAK;AACD,aAAOxpC,KAAK+2G,SAASvB;AAAAA,IACxB,GACD9C,YAAY,OACZC,cAAc,KAElB14F,CAAAA;AAAAA,WAAOw4F,eAAeoE,UAASx+F,WAAW,aAAa,EACnDmxB,KAAK;AACD,aAAOxpC,KAAKg3G,YAAYh3G,KAAKg3G,UAAUP,YAAY,CAAA;AAAA,IACtD,GACD/D,YAAY,OACZC,cAAc,KAElB14F,CAAAA;AAAAA,WAAOw4F,eAAeoE,UAASx+F,WAAW,eAAe,EACrDmxB,KAAK,WACD;AAAA,aAAOxpC,KAAK+2G,SAAS3B;AAAAA,IACxB,GACD1C,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,YAAY,EAClDmxB,KAAK,WAAA;AACD,aAAOxpC,KAAK+2G,SAASZ;AAAAA,IACxB,GACDzD,YAAY,OACZC,cAAc,KAAA,CAAA;AAElB14F,WAAOw4F,eAAeoE,UAASx+F,WAAW,aAAa,EACnDmxB,KAAK,WAAA;AACD,aAAOxpC,KAAK+2G,SAASX;AAAAA,IACxB,GACD1D,YAAY,OACZC,cAAc;AAElBkE,IAAAA,UAASx+F,UAAU6+F,UAAU,WACzB;AAAA,aAAO,CAACpyD,MAAM9kD,KAAKm1G,OAAU,GAAA,GAAGn1G,KAAKm1G,OAC7C;AAAA,IAAA;AACI0B,IAAAA,UAASx+F,UAAU8+F,UAAU,SAAUC,GAAGr2E;AACtC,UAAIxxB,QAAQvP,KAAKq2G,OAAOt1E,QAAQ;AAChC,UAAIvxB,MAAMxP,KAAKq2G,OAAOt1E;AACtB,UAAIqL,MAAM82D,OAAO,MAAMljG,KAAKm1G;AAC5B,eAAShxG,IAAIoL,OAAOpL,IAAIqL,KAAKrL;AACzBioC,YAAIjoC,CAAKA,IAAAA;AACb,aAAO,CAACioC,KAAK78B,OAAOC,GAAAA;AAAAA,IAC5B;AACIqnG,IAAAA,UAASx+F,UAAUg/F,UAAU,SAAUl8F,MAAM4lB,OAAOvhC,KAEhD;AAAA,UAAI4sC,MAAM82D,OAAO,MAAMljG,KAAKm1G,UAAU;AACtC,UAAIhxG,IAAI0gG,UAAUd,SAAS5oF,MAAM4lB,OAAOvhC,GAAAA,CAAAA,IAAQQ,KAAKq1G;AACrD,UAAI9lG,QAAQpL;AACZ,eAASsvB,IAAI,GAAGA,IAAI,GAAGA,KAAK;AACxB2Y,YAAIjoC,KAAKA;AACPA,UAAAA;AACF,YAAInE,KAAKg1G,SAAS7wG,CAAOnE,MAAAA,KAAK4H,QAAQ0nG;AAClC;AAAA,MACP;AACD,aAAO,CAACljE,KAAK78B,OAAOpL,CAAAA;AAAAA,IAC5B;AACI0yG,IAAAA,UAASx+F,UAAUi/F,UAAU,SAAUn8F,MAAM4lB,OAAOvhC,KAAAA;AAChD,UAAI4sC,MAAM82D,OAAO,MAAMljG,KAAKm1G;AAC5B,UAAIhxG,IAAI0gG,UAAUd,SAAS5oF,MAAM4lB,OAAOvhC,GAAQQ,CAAAA,IAAAA,KAAKq1G;AACrDjpE,UAAIjoC,KAAKA;AACT,aAAO,CAACioC,KAAKjoC,GAAGA,IAAI,CAC5B;AAAA,IAAA;AACI0yG,IAAAA,UAASx+F,UAAUk/F,WAAW,SAAUv2E,MAAMo2E,GAAGnqC,QAAQ2hC,aAAAA;AACrD,UAAIjH,QAAQ3nG;AACZ,UAAIosC,MAAM;AACVpsC,WAAK4H,QAAQmoG,SAASpsG,QAAQ,SAAUs9B;AACpCmL,cAAMA,IAAIhhC,OAAOu8F,MAAM6P,SAASx2E,MAAMC,QAAQgsC,QAAQ2hC,WAClE,CAAA;AAAA,MAAA,CAAA;AACQrqE,WAAK6H,GACL;AAAA,aAAOA;AAAAA,IACf;AACIyqE,IAAAA,UAASx+F,UAAUm/F,WAAW,SAAUx2E,MAAMC,QAAQm2E,GAAGxI,aACrD;AAAA,UAAIxiE,MAAMpsC,KAAK4H,QAAQwoG,SAAS3qG,IAAI,SAAUwnE,QAAU;AAAA,eAAO,IAAI0hC,KAAK3tE,MAAMC,QAAQgsC,QAAQ2hC;MAAa,CAC3GrqE;AAAAA,WAAK6H;AACL,aAAOA;AAAAA,IACf;AACIyqE,IAAAA,UAASx+F,UAAUo/F,WAAW,SAAUz2E,MAAMC,QAAQgsC,QAAQ2hC;AAC1D,aAAO,CAAC,IAAID,KAAK3tE,MAAMC,QAAQgsC,QAAQ2hC;IAC/C;AACIiI,IAAAA,UAASx+F,UAAUq/F,YAAY,SAAU7M;AACrC,cAAQA,MAAAA;AAAAA,QACJ,KAAK0D,UAAU1C;AACX,iBAAO7rG,KAAKk3G,QAAQr0F,KAAK7iB,IAAAA;AAAAA,QAC7B,KAAKuuG,UAAU3C;AACX,iBAAO5rG,KAAKm3G,QAAQt0F,KAAK7iB,IAAAA;AAAAA,QAC7B,KAAKuuG,UAAU5C;AACX,iBAAO3rG,KAAKq3G,QAAQx0F,KAAK7iB,IAAAA;AAAAA,QAC7B,KAAKuuG,UAAUnD;AACX,iBAAOprG,KAAKs3G,QAAQz0F,KAAK7iB,IAC7B;AAAA,QAAA;AACI,iBAAOA,KAAKs3G,QAAQz0F,KAAK7iB,IAAAA;AAAAA,MAAAA;AAAAA,IAEzC;AACI62G,IAAAA,UAASx+F,UAAUs/F,aAAa,SAAU9M,MAAAA;AACtC,cAAQA,MAAAA;AAAAA,QACJ,KAAK0D,UAAUrD;AACX,iBAAOlrG,KAAKu3G,SAAS10F,KAAK7iB,IAC9B;AAAA,QAAA,KAAKuuG,UAAUpD;AACX,iBAAOnrG,KAAKw3G,SAAS30F,KAAK7iB,IAC9B;AAAA,QAAA,KAAKuuG,UAAUiC;AACX,iBAAOxwG,KAAKy3G,SAAS50F,KAAK7iB,IAE1C;AAAA,MAAA;AAAA,IAAA;AACI,WAAO62G;AAAAA,EACX;ACvLO,WAASe,aAAa3G,UAAUK,SAAS/hG,OAAOC,KAAKqoG,IAAIC;AAC5D,QAAIC,UAAU;AACd,aAAStkF,IAAI,GAAGA,IAAIw9E,SAAS7sG,QAAQqvB,KAAK;AACtC,UAAIukF;AACJ,UAAIC,UAAe;AACnB,UAAIvrF,MAAMukF,SAASx9E;AACnB,UAAI/G,MAAM,GAAG;AACTsrF,iBAAS7mG,KAAK8D,MAAMyX,MAAM4kF,QAAQltG,MAAAA;AAClC6zG,kBAAUvU,MAAMh3E,KAAK4kF,QAAQltG,MAChC;AAAA,MAAA,OACI;AACD4zG,iBAAS7mG,KAAK8D,OAAOyX,MAAM,KAAK4kF,QAAQltG,MAAAA;AACxC6zG,kBAAUvU,MAAMh3E,MAAM,GAAG4kF,QAAQltG;MACpC;AACD,UAAI8zG,MAAM,CACV;AAAA,eAASlpG,IAAIO,OAAOP,IAAIQ,KAAKR,KAAK;AAC9B,YAAIiY,MAAM6wF,OAAO9oG;AACjB,YAAK6zF,CAAAA,UAAU57E,GACX;AAAA;AACJixF,YAAIr0G,KAAKojB,GAAAA;AAAAA,MACZ;AACD,UAAI9iB,IAAAA;AACJ,UAAI6zG,SAAS,GAAG;AACZ7zG,YAAI+zG,IAAIjqG,MAAM+pG,QAAQ,CACzB;AAAA,MAAA,OACI;AACD7zG,YAAI+zG,IAAIF,MACX;AAAA,MAAA;AACD,UAAI9zD,OAAOotD,QAAQ2G;AACnB,UAAI90G,OAAO2hG,YAAY+S,GAAGxC,cAAclxG,CACxC;AAAA,UAAIoE,MAAM48F,QAAQhiG,MAAM+gD;AAGxB,UAAK8+C,CAAAA,SAAS+U,SAASxvG,GACnBwvG;AAAAA,gBAAQl0G,KAAK0E,GAAAA;AAAAA,IACpB;AACDg8B,SAAKwzE,OAAAA;AACL,WAAOA;AAAAA,EACX;AC/BO,WAASI,KAAKrE,YAAYlsG,SAC7B;AAAA,QAAIopG,UAAUppG,QAAQopG,SAASnG,OAAOjjG,QAAQijG,MAAMpzC,WAAW7vD,QAAQ6vD,UAAUiuC,QAAQ99F,QAAQ89F,OAAOuL,WAAWrpG,QAAQqpG;AAC3H,QAAIh8E,QAAQrtB,QAAQqtB;AACpB,QAAIA,UAAU,KAAKwiC,aAAa,GAAG;AAC/B,aAAO2gD,WAAWtE,UAAAA;AAAAA,IACrB;AACD,QAAIuE,cAAcxJ,SAASC,SAASkC;AACpC,QAAI6G,KAAK,IAAIhB,SAASjvG,OAAAA;AACtBiwG,OAAGf,QAAQuB,YAAYl9F,MAAMk9F,YAAYt3E;AACzC,QAAIuwE,UAAUgH,YAAYT,IAAIQ,aAAazwG;AAC3C,eAAS;AACL,UAAI+nG,KAAKkI,GAAGH,UAAU7M,IAAAA,EAAMwN,YAAYl9F,MAAMk9F,YAAYt3E,OAAOs3E,YAAY74G,GAAMs4G,GAAAA,SAASnI,GAAG,CAAIpgG,GAAAA,QAAQogG,GAAG,CAAIngG,GAAAA,MAAMmgG,GAAG,CAC3H;AAAA,UAAID,WAAW6I,mBAAmBT,QAAQvoG,OAAOC,KAAKqoG,IAAIjwG,OAC1D;AAAA,UAAIk8F,SAASmN,QAAW,GAAA;AACpB,YAAI8G,UAAUH,aAAa3G,UAAUK,SAAS/hG,OAAOC,KAAKqoG,IAAIC;AAC9D,iBAASrkF,IAAI,GAAGA,IAAIskF,QAAQ3zG,QAAQqvB,KAAK;AACrC,cAAIlrB,MAAMwvG,QAAQtkF,CAAAA;AAClB,cAAIiyE,SAASn9F,MAAMm9F,OAAO;AACtB,mBAAO0S,WAAWtE,UAAAA;AAAAA,UACrB;AACD,cAAIvrG,OAAOyoG,SAAS;AAChB,gBAAI6B,cAAc2F,eAAejwG,KAAKX,OACtC;AAAA,gBAAA,CAAKksG,WAAWrN,OAAOoM,WAAAA,GAAc;AACjC,qBAAOuF,WAAWtE,UACrB;AAAA,YAAA;AACD,gBAAI7+E,OAAO;AAAA,gBACLA;AACF,kBAAKA,CAAAA,OAAO;AACR,uBAAOmjF,WAAWtE,UACrB;AAAA,cAAA;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ,OACI;AACD,iBAASrgF,IAAIlkB,OAAOkkB,IAAIjkB,KAAKikB,KAAK;AAC9B,cAAIglF,aAAaX,OAAOrkF,CAAAA;AACxB,cAAKovE,CAAAA,UAAU4V,aAAa;AACxB;AAAA,UACH;AACD,cAAIt1G,OAAO2hG,YAAY+S,GAAGxC,cAAcoD,UACxC;AAAA,mBAASzpG,IAAI,GAAGA,IAAIsiG,QAAQltG,QAAQ4K,KAAK;AACrC,gBAAIk1C,OAAOotD,QAAQtiG;AACnB,gBAAIzG,MAAM48F,QAAQhiG,MAAM+gD,IAAAA;AACxB,gBAAIwhD,SAASn9F,MAAMm9F,OAAO;AACtB,qBAAO0S,WAAWtE,UAAAA;AAAAA,YACrB;AACD,gBAAIvrG,OAAOyoG,SAAS;AAChB,kBAAI6B,cAAc2F,eAAejwG,KAAKX,OACtC;AAAA,kBAAA,CAAKksG,WAAWrN,OAAOoM,WAAAA,GAAc;AACjC,uBAAOuF,WAAWtE,UACrB;AAAA,cAAA;AACD,kBAAI7+E,OAAO;AAAA,kBACLA;AACF,oBAAKA,CAAAA,OAAO;AACR,yBAAOmjF,WAAWtE,UACrB;AAAA,gBAAA;AAAA,cACJ;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAAA,MACJ;AACD,UAAIlsG,QAAQ6vD,aAAa,GAAG;AACxB,eAAO2gD,WAAWtE,UACrB;AAAA,MAAA;AAEDuE,kBAAYj1G,IAAIwE,SAAS8nG;AACzB,UAAI2I,YAAYl9F,OAAO+oF,SAAS;AAC5B,eAAOkU,WAAWtE;MACrB;AACD,UAAA,CAAKtF,qBAAqB3D,IAAO,GAAA;AAC7ByG,kBAAUuG,GAAGF,WAAW9M,IAAdgN,EAAoBQ,YAAYr3E,MAAMq3E,YAAYp3E,QAAQo3E,YAAYprC,QAAQ,CAC3F;AAAA,MAAA;AACD4qC,SAAGf,QAAQuB,YAAYl9F,MAAMk9F,YAAYt3E,KAAAA;AAAAA,IAC5C;AAAA,EACL;AACA,WAAS23E,WAAWb,IAAIY,YAAY7wG,SAChC;AAAA,QAAIyjG,UAAUzjG,QAAQyjG,SAASU,WAAWnkG,QAAQmkG,UAAU1B,YAAYziG,QAAQyiG,WAAW0G,WAAWnpG,QAAQmpG,UAAU5G,aAAaviG,QAAQuiG,YAAYC,cAAcxiG,QAAQwiG,aAAa0B,YAAYlkG,QAAQkkG;AAChN,WAAShI,SAASuH,OAAAA,KAAAA,CAAarI,SAASqI,SAASwM,GAAG3B,MAAMuC,UAAAA,CAAAA,KACrD3U,SAASiI,QAAc8L,KAAAA,CAAAA,GAAGrC,QAAQiD,UAClC3U,KAAAA,SAASuG,eAAerH,SAASqH,WAAWwN,GAAG7C,SAASyD,gBACxD3U,SAAS+T,GAAGpB,eAAeoB,GAAGpB,UAAUgC,eACxC1H,aAAa,QAAA,CAAS/N,SAAS6U,GAAGZ,YAAYwB,UAC7C3U,MAAAA,SAASqG,eAAerG,SAASsG,WAAAA,MAAAA,CAC9BpH,SAASmH,YAAY0N,GAAG1B,SAASsC,UAAAA,CAAAA,KAAAA,CACjCzV,SAASoH,aAAayN,GAAGzB,UAAUqC,UACvC3U,CAAAA,KAAAA,SAASgI,eACJ2M,aAAaZ,GAAG1C,WACbnS,CAAAA,SAAS8I,WAAW2M,aAAa,CAAA,KAAA,CACjCzV,SAAS8I,WAAY+L,CAAAA,GAAG1C,UAAUsD,UAClCA,KAAAA,cAAcZ,GAAG1C,WAAAA,CACbnS,SAAS8I,WAAW2M,aAAa,IAAIZ,GAAG1C,OAAAA,KAAAA,CACxCnS,SAAS8I,WAAY+L,CAAAA,GAAGzC,cAAcqD,aAAaZ,GAAG1C,OAC3E;AAAA,EAAA;AACA,WAASqD,eAAer1G,MAAMyE;AAC1B,WAAO,IAAI2qG,aAAapvG,MAAMyE,QAAQiqG,IAAMgB,EAAAA,YAAAA;AAAAA,EAChD;AACA,WAASuF,WAAWtE;AAChB,WAAOA,WAAWxwD,SACtB;AAAA,EAAA;AACA,WAASi1D,mBAAmBT,QAAQvoG,OAAOC,KAAKqoG,IAAIjwG;AAChD,QAAI8nG,WAAW;AACf,aAASiJ,aAAappG,OAAOopG,aAAanpG,KAAKmpG,cAAc;AACzD,UAAIF,aAAaX,OAAOa,UAAAA;AACxBjJ,iBAAWgJ,WAAWb,IAAIY,YAAY7wG,OACtC;AAAA,UAAI8nG;AACAoI,eAAOW,UAAAA,IAAc;AAAA,IAC5B;AACD,WAAO/I;AAAAA,EACX;AACA,WAAS4I,YAAYT,IAAIQ,aAAazwG,SAClC;AAAA,QAAIijG,OAAOjjG,QAAQijG,MAAMY,SAAS7jG,QAAQ6jG,QAAQsE,WAAWnoG,QAAQmoG,UAAUK,WAAWxoG,QAAQwoG;AAClG,QAAI5B,qBAAqB3D,IAAO,GAAA;AAC5B,aAAOuG,aAAaxpG,OAAAA;AAAAA,IACvB;AACD,QAAKijG,QAAQE,MAAMG,UACfpH,SAAS2H,MACRzI,KAAAA,CAAAA,SAASyI,QAAQ4M,YAAYr3E,IAAAA,KAC7B6pE,QAAQE,MAAMI,YACXrH,SAASiM,QAAAA,KAAAA,CACR/M,SAAS+M,UAAUsI,YAAYp3E,WACnC4pE,QAAQE,MAAMyF,YACX1M,SAASsM,QAAAA,KAAAA,CACRpN,SAASoN,UAAUiI,YAAYprC,MAAU,GAAA;AAC9C,aAAO,CACV;AAAA,IAAA;AACD,WAAO4qC,GAAGF,WAAW9M,IAAdgN,EAAoBQ,YAAYr3E,MAAMq3E,YAAYp3E,QAAQo3E,YAAYprC,QAAQorC,YAAYzJ,WACrG;AAAA,EAAA;AC1HO,MAAIoD,OAAO,EACdpE,IAAI,IAAIrL,QAAQ,CAChBsL,GAAAA,IAAI,IAAItL,QAAQ,CAAA,GAChBuL,IAAI,IAAIvL,QAAQ,CAChBwL,GAAAA,IAAI,IAAIxL,QAAQ,CAAA,GAChByL,IAAI,IAAIzL,QAAQ,CAChBqW,GAAAA,IAAI,IAAIrW,QAAQ,CAAA,GAChBsW,IAAI,IAAItW,QAAQ;AAEb,MAAIuO,oBAAkB,EACzBjG,MAAM0D,UAAU1C,QAChBmF,SAAS,MACTv5C,UAAU,GACV63C,MAAM0C,KAAKpE,IACX34E,OAAO,MACPywE,OAAO,MACPmM,MAAM,MACNZ,UAAU,MACV5F,SAAS,MACTlB,YAAY,MACZC,aAAa,MACb0B,WAAW,MACXC,UAAU,MACV1B,WAAW,MACX6G,YAAY,MACZzF,QAAQ,MACRsE,UAAU,MACVK,UAAU,MACVW,UAAU,KAAA;AAEP,MAAIH,cAAc32F,OAAO6L,KAAKgrF,iBAAAA;AAOrC,MAAI/F,QAAuB,WAAA;AACvB,aAASA,OAAMnjG,SAASkxG;AACpB,UAAIlxG,YAAAA,QAAoB;AAAEA,kBAAU,CAAE;AAAA,MAAG;AACzC,UAAIkxG,YAAAA,QAAoB;AAAEA,kBAAU;AAAA,MAAQ;AAE5C94G,WAAK+4G,SAASD,UAAU,OAAO,IAAI1F;AAEnCpzG,WAAKkqG,cAAcuG,oBAAkB7oG,OACrC;AAAA,UAAIupG,gBAAgBN,aAAajpG,OAAAA,EAASupG;AAC1CnxG,WAAK4H,UAAUupG;AAAAA,IAClB;AACDpG,IAAAA,OAAMwC,YAAY,SAAUzmG,MAAMkjG,UAC9B;AAAA,aAAOuD,UAAUzmG,MAAMkjG;IAC/B;AACIe,IAAAA,OAAM0D,WAAW,SAAU3nG,MAAMkjG,UAC7B;AAAA,aAAOyE,SAAS3nG,MAAMkjG,QAAAA;AAAAA,IAC9B;AACIe,IAAAA,OAAMiO,aAAa,SAAUliF,KAAAA;AACzB,aAAO,IAAIi0E,OAAMA,OAAMwG,YAAYz6E,GAAAA,KAAQzoB;IACnD;AACI08F,IAAAA,OAAM1yF,UAAU4gG,QAAQ,SAAUnF,YAC9B;AAAA,aAAOqE,KAAKrE,YAAY9zG,KAAK4H;IACrC;AACImjG,IAAAA,OAAM1yF,UAAUo7F,YAAY,SAAUF,MAAMn6F,MAAAA;AACxC,WAAKpZ,KAAK+4G;AACN,eAAO;AACX,aAAO/4G,KAAK+4G,OAAOtF,UAAUF,MAAMn6F,IAAAA;AAAAA,IAC3C;AACI2xF,IAAAA,OAAM1yF,UAAUi7F,YAAY,SAAUC,MAAMl1F,OAAOjF,MAAAA;AAC/C,WAAKpZ,KAAK+4G;AACN;AACJ,aAAO/4G,KAAK+4G,OAAOzF,UAAUC,MAAMl1F,OAAOjF,IAAAA;AAAAA,IAClD;AAOI2xF,IAAAA,OAAM1yF,UAAUo7D,MAAM,SAAUi0B,UAAAA;AAC5B,UAAIA,UAAU;AACV,eAAO1nG,KAAKi5G,MAAM,IAAIzR,mBAAmB,OAAO,CAAE,GAAEE;MACvD;AACD,UAAIzuF,SAASjZ,KAAKyzG,UAAU,KAC5B;AAAA,UAAIx6F,WAAW,OAAO;AAClBA,iBAASjZ,KAAKi5G,MAAM,IAAI1S,WAAW,OAAO,CAAE,CAAA,CAAA;AAC5CvmG,aAAKszG,UAAU,OAAOr6F;MACzB;AACD,aAAOA;AAAAA,IACf;AASI8xF,IAAAA,OAAM1yF,UAAUg7F,UAAU,SAAU7M,OAAOh6B,QAAQl/B,KAAKo6D,UACpD;AAAA,UAAIp6D,QAAa,QAAG;AAAEA,cAAM;AAAA,MAAQ;AACpC,UAAKg3D,CAAAA,YAAYkC,WAAWlC,YAAY93B,MAAAA,GAAS;AAC7C,cAAM,IAAIv6D,MAAM,yCAAA;AAAA,MACnB;AACD,UAAImH,OAAO,EACPozD,QACAg6B,OACAl5D,IAEJ;AAAA,UAAIo6D,UAAU;AACV,eAAO1nG,KAAKi5G,MAAM,IAAIzR,mBAAmB,WAAWpuF,MAAMsuF,QAC7D,CAAA;AAAA,MAAA;AACD,UAAIzuF,SAASjZ,KAAKyzG,UAAU,WAAWr6F,IAAAA;AACvC,UAAIH,WAAW,OAAO;AAClBA,iBAASjZ,KAAKi5G,MAAM,IAAI1S,WAAW,WAAWntF,IAAAA,CAAAA;AAC9CpZ,aAAKszG,UAAU,WAAWr6F,QAAQG,IAAAA;AAAAA,MACrC;AACD,aAAOH;AAAAA,IACf;AAQI8xF,IAAAA,OAAM1yF,UAAUm0D,SAAS,SAAU9nB,IAAIpX,KACnC;AAAA,UAAIA,gBAAgB;AAAEA,cAAM;AAAA,MAAQ;AACpC,UAAKg3D,CAAAA,YAAY5/C,KAAK;AAClB,cAAM,IAAIzyC,MAAM,wCAAA;AAAA,MACnB;AACD,UAAImH,OAAO,EAAEsrC,IAAQpX,IAAKA;AAC1B,UAAIr0B,SAASjZ,KAAKyzG,UAAU,UAAUr6F,IAAAA;AACtC,UAAIH,WAAW,OAAO;AAClBA,iBAASjZ,KAAKi5G,MAAM,IAAI1S,WAAW,UAAUntF,IAAAA,CAAAA;AAC7CpZ,aAAKszG,UAAU,UAAUr6F,QAAQG,IAAAA;AAAAA,MACpC;AACD,aAAOH;AAAAA,IACf;AAQI8xF,IAAAA,OAAM1yF,UAAUmuF,QAAQ,SAAU9hD,IAAIpX,KAClC;AAAA,UAAIA,gBAAgB;AAAEA,cAAM;AAAA,MAAQ;AACpC,UAAKg3D,CAAAA,YAAY5/C,KAAK;AAClB,cAAM,IAAIzyC,MAAM,uCAAA;AAAA,MACnB;AACD,UAAImH,OAAO,EAAEsrC,IAAQpX,IAAKA;AAC1B,UAAIr0B,SAASjZ,KAAKyzG,UAAU,SAASr6F,IAAAA;AACrC,UAAIH,WAAW,OAAO;AAClBA,iBAASjZ,KAAKi5G,MAAM,IAAI1S,WAAW,SAASntF,IAAAA,CAAAA;AAC5CpZ,aAAKszG,UAAU,SAASr6F,QAAQG,IAAAA;AAAAA,MACnC;AACD,aAAOH;AAAAA,IACf;AAKI8xF,IAAAA,OAAM1yF,UAAU4c,QAAQ,WAAA;AACpB,aAAOj1B,KAAKyzE,IAAAA,EAAMrvE;AAAAA,IAC1B;AAOI2mG,IAAAA,OAAM1yF,UAAUC,WAAW,WAAA;AACvB,aAAOw6F,gBAAgB9yG,KAAKkqG,WACpC;AAAA,IAAA;AAKIa,IAAAA,OAAM1yF,UAAUq2F,SAAS,SAAU3E,SAASC,UAAUC,eAClD;AAAA,aAAOyE,OAAO1uG,MAAM+pG,SAASC,UAAUC,aAC/C;AAAA,IAAA;AACIc,IAAAA,OAAM1yF,UAAU6gG,2BAA2B,WACvC;AAAA,aAAOvO,mBAAmB3qG,IAClC;AAAA,IAAA;AAKI+qG,IAAAA,OAAM1yF,UAAU0lE,QAAQ;AACpB,aAAO,IAAIgtB,OAAM/qG,KAAKkqG;IAC9B;AAEIa,IAAAA,OAAMC,cAAc,CAChB,UACA,WACA,UACA,SACA,UACA,YACA;AAEJD,IAAAA,OAAMc,SAAS0C,UAAU1C;AACzBd,IAAAA,OAAMa,UAAU2C,UAAU3C;AAC1Bb,IAAAA,OAAMY,SAAS4C,UAAU5C;AACzBZ,IAAAA,OAAMK,QAAQmD,UAAUnD;AACxBL,IAAAA,OAAMG,SAASqD,UAAUrD;AACzBH,IAAAA,OAAMI,WAAWoD,UAAUpD;AAC3BJ,IAAAA,OAAMyF,WAAWjC,UAAUiC;AAC3BzF,IAAAA,OAAM6C,KAAKoE,KAAKpE;AAChB7C,IAAAA,OAAM8C,KAAKmE,KAAKnE;AAChB9C,IAAAA,OAAM+C,KAAKkE,KAAKlE;AAChB/C,IAAAA,OAAMgD,KAAKiE,KAAKjE;AAChBhD,IAAAA,OAAMiD,KAAKgE,KAAKhE;AAChBjD,IAAAA,OAAM6N,KAAK5G,KAAK4G;AAChB7N,IAAAA,OAAM8N,KAAK7G,KAAK6G;AAChB9N,IAAAA,OAAMwG,cAAcA;AACpBxG,IAAAA,OAAM+H,kBAAkBA;AACxB,WAAO/H;AAAAA,EACX;AClOO,WAASoO,QAAQrF,YAAYsF,QAAQC,SAASC,QAAQC,SAAS1H,MAAAA;AAClE,QAAI2H,cAAc,CAAA;AAClB,QAAIC,UAAU3F,WAAWrN;AACzB,aAASiT,WAAWlT,OAAOh6B,QACvB6sC;AAAAA,cAAQ11G,QAAQ,SAAUmmG,OAAAA;AACtBA,cAAMuJ,QAAQ7M,OAAOh6B,QAAQ,IAAM7oE,EAAAA,QAAQ,SAAUR,MAAAA;AACjDq2G,sBAAY1/F,OAAO3W,IAAAA,CAAAA,IAAS;AAAA,QAC5C,CACA;AAAA,MAAA,CAAA;AAAA,IACK;AACDo2G,YAAQ51G,QAAQ,SAAUR,MAAAA;AACtB,UAAIw2G,aAAY,IAAIpH,aAAapvG,MAAM0uG,IAAAA,EAAMgB;AAC7C2G,kBAAY1/F,OAAO6/F,UAAc,CAAA,IAAA;AAAA,IACzC;AACI7F,eAAWrN,SAAS,SAAUtjG,MAC1B;AAAA,UAAIuhD,KAAK5qC,OAAO3W,IAAAA;AAChB,UAAIgkB,MAAMu9B;AACN,eAAO+0D,QAAQrjG,KAAKpW,MAAMmD,IAAAA;AAC9B,WAAKq2G,YAAY90D,EAAAA,GAAK;AAClBg1D,mBAAW,IAAIl1G,KAAKkgD,KAAK,IAAI,IAAIlgD,KAAKkgD,KAAK,CAC3C,CAAA;AAAA,YAAA,CAAK80D,YAAY90D,EAAAA,GAAK;AAClB80D,sBAAY90D,EAAAA,IAAM;AAClB,iBAAO+0D,QAAQrjG,KAAKpW,MAAMmD,IAAAA;AAAAA,QAC7B;AAAA,MACJ;AACD,aAAO;AAAA,IACf;AACI,QAAI2wG,WAAWx5F,WAAW,WAAW;AACjCo/F,iBAAW5F,WAAW16F,KAAKotF,OAAOsN,WAAW16F,KAAKozD;AAClDsnC,iBAAWrN,SAAS,SAAUtjG,MAC1B;AAAA,YAAIuhD,KAAK5qC,OAAO3W;AAChB,YAAKq2G,CAAAA,YAAY90D,KAAK;AAClB80D,sBAAY90D,MAAM;AAClB,iBAAO+0D,QAAQrjG,KAAKpW,MAAMmD,IAC7B;AAAA,QAAA;AACD,eAAO;AAAA,MACnB;AAAA,IACK;AACD,aAASgB,IAAI,GAAGA,IAAIm1G,OAAOl1G,QAAQD,KAAK;AACpC,UAAIw1G,YAAY,IAAIpH,aAAa+G,OAAOn1G,CAAAA,GAAI0tG,MAAMgB,YAClD;AAAA,UAAA,CAAKiB,WAAWrN,OAAO,IAAIjiG,KAAKm1G,UAAUn/E,QAAAA,CAAAA,CAAAA;AACtC;AAAA,IACP;AACD4+E,WAAOz1G,QAAQ,SAAUmmG;AACrBqO,WAAKrE,YAAYhK,MAAMliG,OAC/B;AAAA,IAAA,CAAA;AACI,QAAIW,MAAMurG,WAAWnb;AACrBp0D,SAAKh8B;AACL,YAAQurG,WAAWx5F;MACf,KAAK;AAAA,MACL,KAAK;AACD,eAAO/R;AAAAA,MACX,KAAK;AACD,eAASA,IAAInE,UAAUmE,IAAIA,IAAInE,SAAS,CAAA,KAAO;AAAA,MACnD,KAAK;AAAA,MACL;AACI,eAASmE,IAAInE,UAAUmE,IAAI,CAAA,KAAO;AAAA,IAE9C;AAAA,EAAA;ACnDA,MAAIuoG,kBAAkB,EAClBE,SAAS,MACT/2E,OAAO,OACP2/E,QAAQ,OACRC,UAAU,OACVC,YAAY,OACZjI,MAAM;AAEH,WAASkI,WAAWtwG,GAAG7B,SAC1B;AAAA,QAAIoyG,YAAY,CAAA;AAChB,QAAIC,YAAY,CAAA;AAChB,QAAIC,aAAa,CAAA;AACjB,QAAIC,aAAa,CAAA;AACjB,QAAIC,gBAAgB1I,aAAajoG,CACjC;AAAA,QAAIunG,UAAUoJ,cAAcpJ;AAC5B,QAAIa,OAAOuI,cAAcvI;AACzB,QAAIwI,QAAQC,eAAe7wG,GAAG7B,QAAQgyG,MACtCS;AAAAA,UAAM12G,QAAQ,SAAUguG,MAAAA;AACpB,UAAIhC;AACJ,WAAKgC;AACD;AACJ,UAAI4I,KAAKC,cAAc7I,OAAOv3F,OAAOmgG,GAAGngG,MAAMqgG,QAAQF,GAAGE,OAAOp8F,QAAQk8F,GAAGl8F;AAC3E,cAAQjE,KAAKswB,YAAAA,GAAAA;AAAAA,QACT,KAAK;AACD,cAAI+vE,MAAMr2G,QAAQ;AACd,kBAAM,IAAI6N,MAAM,2BAA2B7G,OAAOqvG,MAAM3qG,KAAK;UAChE;AACDkqG,oBAAUn2G,KAAK0tG,YAAYI,IAAAA,CAAAA;AAC3B;AAAA,QACJ,KAAK;AACD,cAAI+I,MAAM/K,KAAK,4BAA4BhvD,KAAKgxD,WAAW,QAAQhC,OAAAA,SAAgBA,KAAK,CAAA,GAAIgL,YAAYD,GAAG;AAC3G,cAAIC,aAAAA,CAAc9I,MAAM;AACpBA,mBAAO8I;AAAAA,UACV;AACDV,sBAAYA,UAAU7uG,OAAOwvG,WAAWv8F,OAAOo8F,KAAAA,CAAAA;AAC/C;AAAA,QACJ,KAAK;AACD,cAAIA,MAAMr2G,QAAQ;AACd,kBAAM,IAAI6N,MAAM,4BAA4B7G,OAAOqvG,MAAM3qG,KAAK;UACjE;AACDoqG,qBAAWr2G,KAAK0tG,YAAYlzF;AAC5B;AAAA,QACJ,KAAK;AACD87F,uBAAaA,WAAW/uG,OAAOwvG,WAAWv8F,OAAOo8F,KACjD,CAAA;AAAA;AAAA,QACJ,KAAK;AACD;AAAA,QACJ;AACI,gBAAM,IAAIxoG,MAAM,2BAA2BmI,IAAAA;AAAAA,MAAAA;AAAAA,IAE3D,CACI;AAAA,WAAO,EACH42F,SACAa,MACAmI,WACAC,WACAC,YACAC,WAER;AAAA,EAAA;AACA,WAASU,UAAUpxG,GAAG7B;AAClB,QAAI+nG,KAAKoK,WAAWtwG,GAAG7B,UAAUoyG,YAAYrK,GAAGqK,WAAWC,YAAYtK,GAAGsK,WAAWC,aAAavK,GAAGuK,YAAYC,aAAaxK,GAAGwK,YAAYnJ,UAAUrB,GAAGqB,SAASa,OAAOlC,GAAGkC;AAC7K,QAAIiH,UAAUlxG,QAAQqyB,UAAU;AAChC,QAAIryB,QAAQkyG,YAAY;AACpBlyG,cAAQiyG,WAAW;AACnBjyG,cAAQgyG,SAAS;AAAA,IACpB;AACD,QAAIhyG,QAAQiyG,YACRG,UAAU51G,SAAS,KACnB61G,UAAU71G,UACV81G,WAAW91G,UACX+1G,WAAW/1G,QAAQ;AACnB,UAAI02G,SAAS,IAAIC,SAASjC,OAAAA;AAC1BgC,aAAO9J,QAAQA;AACf8J,aAAOjJ,KAAKA,QAAQxjG,MACpB2rG;AAAAA,gBAAUr2G,QAAQ,SAAUsjB,MAAAA;AACxB6zF,eAAOhR,MAAM,IAAIiB,MAAMiQ,kBAAkB/zF,MAAK+pF,SAASa,IAAAA,GAAOiH;MAC1E,CACQmB;AAAAA,gBAAUt2G,QAAQ,SAAUR;AACxB23G,eAAOG,MAAM93G;MACzB,CACQ+2G;AAAAA,iBAAWv2G,QAAQ,SAAUsjB,MAAAA;AACzB6zF,eAAOI,OAAO,IAAInQ,MAAMiQ,kBAAkB/zF,MAAK+pF,SAASa,IAAAA,GAAOiH;MAC3E,CACQqB;AAAAA,iBAAWx2G,QAAQ,SAAUR;AACzB23G,eAAOK,OAAOh4G;MAC1B,CACQ;AAAA,UAAIyE,QAAQkyG,cAAclyG,QAAQopG;AAC9B8J,eAAOG,MAAMjK,OACjB;AAAA,aAAO8J;AAAAA,IACV;AACD,QAAI7zF,MAAM+yF,UAAU,CAAA,KAAM,CAAA;AAC1B,WAAO,IAAIjP,MAAMiQ,kBAAkB/zF,KAAKA,IAAI+pF,WAAWppG,QAAQopG,WAAWA,SAAS/pF,IAAI4qF,QAAQjqG,QAAQiqG,QAAQA,OAAOiH,OAC1H;AAAA,EAAA;AACO,WAASsC,SAAS3xG,GAAG7B,SACxB;AAAA,QAAIA,oBAAoB;AAAEA,gBAAU,CAAE;AAAA,IAAG;AACzC,WAAOizG,UAAUpxG,GAAGgnG,kBAAkB7oG;EAC1C;AACA,WAASozG,kBAAkB/zF,KAAK+pF,SAASa;AACrC,WAAO3K,SAASA,SAAS,CAAE,GAAEjgF,GAAM,GAAA,EAAE+pF,SAAkBa;EAC3D;AACA,WAASpB,kBAAkB7oG,SAAAA;AACvB,QAAI8qD,UAAU,CAAA;AACd,QAAI5sC,OAAO7L,OAAO6L,KAAKle,OACvB;AAAA,QAAIgpG,eAAc32F,OAAO6L,KAAKgrF,eAC9BhrF;AAAAA,SAAKniB,QAAQ,SAAUuR,KAAAA;AACnB,WAAK8tF,SAAS4N,cAAa17F,GACvBw9C;AAAAA,gBAAQ7uD,KAAKqR,GACzB;AAAA,IAAA,CAAA;AACI,QAAIw9C,QAAQtuD,QAAQ;AAChB,YAAM,IAAI6N,MAAM,sBAAsBygD,QAAQ5iD,KAAK,IAAA,CAAA;AAAA,IACtD;AACD,WAAOo3F,SAASA,SAAS,CAAA,GAAI4J,eAAkBlpG,GAAAA,OAAAA;AAAAA,EACnD;AACA,WAASyzG,YAAY1J;AACjB,QAAIA,KAAK5/F,QAAQ,GAAU,MAAA,IAAG;AAC1B,aAAO,EACHqI,MAAM,SACNiE,OAAOszF,KAAAA;AAAAA,IAEd;AACD,QAAIhC,KAAKrqG,MAAMqsG,MAAM,KAAK,CAAIv3F,GAAAA,OAAOu1F,GAAG,CAAItxF,GAAAA,QAAQsxF,GAAG,CACvD;AAAA,WAAO,EACHv1F,MACAiE,MAAOA;AAAAA,EAEf;AACA,WAASm8F,cAAc7I;AACnB,QAAIhC,KAAK0L,YAAY1J,IAAAA,GAAOv3F,OAAOu1F,GAAGv1F,MAAMiE,QAAQsxF,GAAGtxF;AACvD,QAAIo8F,QAAQrgG,KAAK9U,MAAM,GAAA;AACvB,SAAKm1G;AACD,YAAM,IAAIxoG,MAAM,qBAAA;AACpB,WAAO,EACHmI,MAAMqgG,MAAM,CAAA,EAAG/vE,eACf+vE,OAAOA,MAAMxsG,MAAM,CACnBoQ,GAAAA;EAER;AACA,WAASi8F,eAAe7wG,GAAGmwG;AACvB,QAAIA,WAAAA,QAAmB;AAAEA,eAAS;AAAA,IAAQ;AAC1CnwG,QAAIA,KAAKA,EAAEmzB;AACX,QAAKnzB,CAAAA;AACD,YAAM,IAAIwI,MAAM;AAGpB,QAAK2nG,CAAAA,QAAQ;AACT,aAAOnwG,EAAEnE,MAAM,IAAA;AAAA,IAClB;AACD,QAAI+0G,QAAQ5wG,EAAEnE,MAAM,IAAA;AACpB,QAAInB,IAAI;AACR,WAAOA,IAAIk2G,MAAMj2G,QAAQ;AAErB,UAAIutG,OAAQ0I,MAAMl2G,CAAKk2G,IAAAA,MAAMl2G,GAAG4lB,QAAQ,SAAS;AACjD,UAAK4nF,CAAAA,MAAM;AACP0I,cAAMjnG,OAAOjP,GAAG,CAAA;AAAA,MACnB,WACQA,IAAI,KAAKwtG,KAAK,CAAA,MAAO,KAAK;AAC/B0I,cAAMl2G,IAAI,CAAA,KAAMwtG,KAAK1jG,MAAM,CAAA;AAC3BosG,cAAMjnG,OAAOjP,GAAG;MACnB,OACI;AACDA,aAAK;AAAA,MACR;AAAA,IACJ;AACD,WAAOk2G;AAAAA,EACX;AACA,WAASiB,iBAAiBb,OACtBA;AAAAA,UAAM92G,QAAQ,SAAU43G;AACpB,UAAK,CAAA,+BAA+B91E,KAAK81E,IAAO,GAAA;AAC5C,cAAM,IAAItpG,MAAM,oCAAoCspG,IAAAA;AAAAA,MACvD;AAAA,IACT,CACA;AAAA,EAAA;AACA,WAASX,WAAWY,UAAUf;AAC1Ba,qBAAiBb,KAAAA;AACjB,WAAOe,SAASl2G,MAAM,GAAKG,EAAAA,IAAI,SAAU8oC,SAAW;AAAA,aAAOk3D,kBAAkBl3D,OAAW;AAAA,IAAA,CAAA;AAAA,EAC5F;ACnLA,WAASktE,mBAAmBC,WACxB;AAAA,QAAI/T,QAAQ3nG;AACZ,WAAO,SAAU27G,OACb;AAAA,UAAIA,UAAUttG,QAAW;AACrBs5F,cAAM,IAAIv8F,OAAOswG,SAAcC,CAAAA,IAAAA;AAAAA,MAClC;AACD,UAAIhU,MAAM,IAAIv8F,OAAOswG,gBAAgBrtG,QAAW;AAC5C,eAAOs5F,MAAM,IAAIv8F,OAAOswG,SAC3B,CAAA;AAAA,MAAA;AACD,eAASv3G,IAAI,GAAGA,IAAIwjG,MAAMyR,OAAOh1G,QAAQD,KAAK;AAC1C,YAAIy3G,UAAUjU,MAAMyR,OAAOj1G,CAAG+lG,EAAAA,YAAYwR;AAC1C,YAAIE,SAAS;AACT,iBAAOA;AAAAA,QACV;AAAA,MACJ;AAAA,IACT;AAAA,EACA;AACA,MAAIb,WAA0B,SAAUtT,QAAAA;AACpCV,cAAUgU,WAAUtT,MAAAA;AAOpB,aAASsT,UAASjC;AACd,UAAIA,YAAAA,QAAoB;AAAEA,kBAAU;AAAA,MAAQ;AAC5C,UAAInR,QAAQF,OAAOrxF,KAAKpW,MAAM,IAAI84G,OAAY94G,KAAAA;AAC9C2nG,YAAMqJ,UAAUyK,mBAAmBrtG,MAAMu5F,OAAO,CAAC,SACjDA,CAAAA;AAAAA,YAAMkK,OAAO4J,mBAAmBrtG,MAAMu5F,OAAO,CAAC,MAAA,CAAA;AAC9CA,YAAMyR,SAAS;AACfzR,YAAM2R,SAAS;AACf3R,YAAM0R,UAAU;AAChB1R,YAAM4R,UAAU,CAChB;AAAA,aAAO5R;AAAAA,IACV;AACDoT,IAAAA,UAAS1iG,UAAU4gG,QAAQ,SAAUnF;AACjC,aAAOqF,QAAQrF,YAAY9zG,KAAKo5G,QAAQp5G,KAAKq5G,SAASr5G,KAAKs5G,QAAQt5G,KAAKu5G,SAASv5G,KAAK6xG,KAAAA,CAAAA;AAAAA,IAC9F;AAMIkJ,IAAAA,UAAS1iG,UAAUyxF,QAAQ,SAAUA;AACjC+R,eAAS/R,OAAO9pG,KAAKo5G,MAC7B;AAAA,IAAA;AAMI2B,IAAAA,UAAS1iG,UAAU6iG,SAAS,SAAUpR,OAAAA;AAClC+R,eAAS/R,OAAO9pG,KAAKq5G;IAC7B;AAMI0B,IAAAA,UAAS1iG,UAAU4iG,QAAQ,SAAU93G,MACjC24G;AAAAA,eAAS34G,MAAMnD,KAAKs5G,MAAAA;AAAAA,IAC5B;AAMIyB,IAAAA,UAAS1iG,UAAU8iG,SAAS,SAAUh4G;AAClC24G,eAAS34G,MAAMnD,KAAKu5G,OAAAA;AAAAA,IAC5B;AAMIwB,IAAAA,UAAS1iG,UAAU0jG,SAAS,WAAA;AACxB,aAAO/7G,KAAKo5G,OAAO3zG,IAAI,SAAUI,GAAAA;AAAK,eAAOu1G,SAASv1G,EAAEyS,SAAc,CAAA;AAAA,MAAA,CAAA;AAAA,IAC9E;AAMIyiG,IAAAA,UAAS1iG,UAAU2jG,UAAU,WACzB;AAAA,aAAOh8G,KAAKq5G,QAAQ5zG,IAAI,SAAUI,GAAAA;AAAK,eAAOu1G,SAASv1G,EAAEyS;MAAc,CAC/E;AAAA,IAAA;AAMIyiG,IAAAA,UAAS1iG,UAAU4jG,SAAS,WACxB;AAAA,aAAOj8G,KAAKs5G,OAAO7zG,IAAI,SAAUI,GAAK;AAAA,eAAO,IAAIrB,KAAKqB,EAAE20B,QAAa,CAAA;AAAA,MAAA,CAAA;AAAA,IAC7E;AAMIugF,IAAAA,UAAS1iG,UAAU6jG,UAAU,WACzB;AAAA,aAAOl8G,KAAKu5G,QAAQ9zG,IAAI,SAAUI,GAAAA;AAAK,eAAO,IAAIrB,KAAKqB,EAAE20B,QAAa,CAAA;AAAA,MAAA,CAAA;AAAA,IAC9E;AACIugF,IAAAA,UAAS1iG,UAAUtT,UAAU,WAAA;AACzB,UAAIkU,SAAS,CAAA;AACb,WAAKjZ,KAAKo5G,OAAOh1G,UAAUpE,KAAKm8G,UAAU;AACtCljG,iBAASA,OAAO7N,OAAO0nG,gBAAgB,EAAE9B,SAAShxG,KAAKm8G;MAC1D;AACDn8G,WAAKo5G,OAAOz1G,QAAQ,SAAUmmG,OAC1B7wF;AAAAA,iBAASA,OAAO7N,OAAO0+F,MAAMxxF,WAAWhT,MAAM,IAAA,CAAA;AAAA,MAC1D,CACQtF;AAAAA,WAAKq5G,QAAQ11G,QAAQ,SAAUu3G;AAC3BjiG,iBAASA,OAAO7N,OAAO8vG,OAClB5iG,SAAAA,EACAhT,MAAM,IAAA,EACNG,IAAI,SAAUksG,MAAAA;AAAQ,iBAAOA,KAAK5nF,QAAQ,WAAW;WACrD6qB,OAAO,SAAU+8D;AAAQ,iBAAQ,CAAA,WAAWlsE,KAAKksE,IAAQ;AAAA,QAAA,CAAA,CAAA;AAAA,MAC1E;AACQ,UAAI3xG,KAAKs5G,OAAOl1G,QAAQ;AACpB6U,eAAOpV,KAAKu4G,eAAe,SAASp8G,KAAKs5G,QAAQt5G,KAAK6xG,KAAAA,CAAAA,CAAAA;AAAAA,MACzD;AACD,UAAI7xG,KAAKu5G,QAAQn1G,QAAQ;AACrB6U,eAAOpV,KAAKu4G,eAAe,UAAUp8G,KAAKu5G,SAASv5G,KAAK6xG;MAC3D;AACD,aAAO54F;AAAAA,IACf;AAOI8hG,IAAAA,UAAS1iG,UAAUC,WAAW,WAAA;AAC1B,aAAOtY,KAAK+E,UAAU+K,KAAK,IAAA;AAAA,IACnC;AAIIirG,IAAAA,UAAS1iG,UAAU0lE,QAAQ,WACvB;AAAA,UAAIs+B,MAAM,IAAItB,YAAW/6G,KAAK+4G,MAAAA;AAC9B/4G,WAAKo5G,OAAOz1G,QAAQ,SAAUupG,MAAQ;AAAA,eAAOmP,IAAIvS,MAAMoD,KAAKnvB,MAAW,CAAA;AAAA,MAAA,CAAA;AACvE/9E,WAAKq5G,QAAQ11G,QAAQ,SAAUupG,MAAQ;AAAA,eAAOmP,IAAInB,OAAOhO,KAAKnvB,MAAW,CAAA;AAAA,MAAA,CAAA;AACzE/9E,WAAKs5G,OAAO31G,QAAQ,SAAUR,MAAQ;AAAA,eAAOk5G,IAAIpB,MAAM,IAAIz2G,KAAKrB,KAAKq3B;MAAc,CACnFx6B;AAAAA,WAAKu5G,QAAQ51G,QAAQ,SAAUR,MAAQ;AAAA,eAAOk5G,IAAIlB,OAAO,IAAI32G,KAAKrB,KAAKq3B,QAAAA,CAAAA,CAAAA;AAAAA,MAAc;AACrF,aAAO6hF;AAAAA,IACf;AACI,WAAOtB;AAAAA,EACX,EAAEhQ;AAEF,WAAS8Q,SAAS/R,OAAOjwE,YACrB;AAAA,QAAA,EAAMiwE,iBAAiBiB,QAAQ;AAC3B,YAAM,IAAI/D,UAAU3hG,OAAOykG,KAAAA,IAAS;IACvC;AACD,QAAA,CAAK9G,SAASnpE,WAAWp0B,IAAIJ,MAASA,GAAAA,OAAOykG,SAAS;AAClDjwE,iBAAWh2B,KAAKimG,KACnB;AAAA,IAAA;AAAA,EACL;AACA,WAASgS,SAAS34G,MAAM02B,YAAAA;AACpB,UAAM12B,gBAAgBqB,OAAO;AACzB,YAAM,IAAIwiG,UAAU3hG,OAAOlC,QAAQ,uBACtC;AAAA,IAAA;AACD,SAAK6/F,SAASnpE,WAAWp0B,IAAIqU,MAASA,GAAAA,OAAO3W,IAAQ,CAAA,GAAA;AACjD02B,iBAAWh2B,KAAKV,IAAAA;AAChBohC,WAAK1K,UACR;AAAA,IAAA;AAAA,EACL;AACA,WAASuiF,eAAex7D,OAAOq7D,QAAQpK;AACnC,QAAIe,QAAAA,CAASf,QAAQA,KAAKnnE,YAAAA,MAAkB;AAC5C,QAAI7mB,SAAS+uF,QAAQ,GAAGxnG,OAAOw1C,OAAO,GAAA,IAAO,GAAGx1C,OAAOw1C,OAAO,UAAUx1C,OAAOymG,MAAM,GACrF;AAAA,QAAIj0E,aAAaq+E,OACZx2G,IAAI,SAAUw1G,OAAS;AAAA,aAAOzV,kBAAkByV,MAAMl2G,QAAAA,GAAW6tG;OACjE9iG,KAAK,GACV;AAAA,WAAO,GAAG1E,OAAOyY,MAAAA,EAAQzY,OAAOwyB,UACpC;AAAA,EAAA;AClLe,WAAQ+qB,UAAEhpD;AAExB,aAAS28G,kBAAkBn5G;AAC1B,aAAO,IAAIqB,KACVrB,KAAKwV,YAAAA,GACLxV,KAAKyV,SAAAA,GACLzV,KAAKiG,QACLjG,GAAAA,KAAKkJ,YACLlJ,KAAKwK,WAAAA,GACLxK,KAAK6oC,WACL,GAAA,CAAA;AAAA,IAED;AAED,aAASuwE,oBAAoB/6G,QAC5B;AAAA,aAAA,CAAA,CAASA,OAAMixD;AAAAA,IACf;AAED,aAAS+pD,SAASh7G,QAAAA;AACjB,aAASA,CAAAA,CAAAA,OAAMsoG,UAAUtoG,OAAMi7G;AAAAA,IAC/B;AAED,aAASC,yBAAyBl7G;AACjCA,MAAAA,OAAMsoG,QAAQ;AACdtoG,MAAAA,OAAMm7G,iBAAiB;AACvBn7G,MAAAA,OAAMi7G,qBAAqB;AAC3Bj7G,MAAAA,OAAMqqB,WAAW;AACjBrqB,MAAAA,OAAMixD,UAAU;AAAA,IAChB;AAED,aAASmqD,gBAAgBp2G;AACxB,UAAIzG,MAAKyG,GAAGzG,GAAGuF,MAAM,GAErB;AAAA,UAAIu3G,MAAMl9G,WAAU+O,IAAAA;AACpB/O,MAAAA,WAAUq1C,cAAc;AACxB,UAAI8nE,MAAMn9G,WAAUk5C,YAAYryC,EAAAA;AAChCs2G,UAAI/8G,KAAK88G;AACTC,UAAIL,qBAAqB18G,IAAG;AAE5B,UAAIouB,YAAYpuB,IAAG,CAAA;AAEnB+8G,UAAIH,iBAAiB,IAAIn4G,KAAKsV,OAAOqU,SAAAA,CAAAA;AAErCxuB,MAAAA,WAAU0xD,gBAAgByrD,KAAK3uF,SAC/BxuB;AAAAA,MAAAA,WAAUwH,SAAS21G,GACnBn9G;AAAAA,MAAAA,WAAUq1C,cAAc;AAAA,IACxB;AAEDr1C,IAAAA,WAAUo9G,YAAY,CAAA;AACtBp9G,IAAAA,WAAUq9G,oBAAoB;AAC9Br9G,IAAAA,WAAUs9G,eAAe;AACzBt9G,IAAAA,WAAU0xD,kBAAkB,SAAU7qD,IAAI09C,MAAAA;AACzC19C,SAAG02G,YAAYh5D;AACflkD,WAAKi9G,aAAaz2G,GAAGzG,MAAMyG;AAC3B,UAAA,CAAKxG,KAAKg9G,kBAAkBx2G,GAAG0kE,SAAYlrE;AAAAA,aAAKg9G,kBAAkBx2G,GAAG0kE,SAAAA,IAAa,CAAA;AAClFlrE,WAAKg9G,kBAAkBx2G,GAAG0kE,WAAWhnB,IAAQ19C,IAAAA;AAAAA,IAC/C;AACC7G,IAAAA,WAAUw9G,kBAAkB,SAAUj5D,MAAMnkD,KAAAA;AAC3C,UAAIq9G,KAAKp9G,KAAKg9G,kBAAkBj9G,GAAAA;AAChC,UAAIq9G;AAAI,eAAOA,GAAGl5D,IAClB;AAAA,aAAO;AAAA,IACT;AACCvkD,IAAAA,WAAU09G,mBAAmB,SAAUt9G;AACtC,aAAQC,KAAKg9G,kBAAkBj9G,GAAO,KAAA,CAAA;AAAA,IACxC;AAEC,KAAA,WAAA;AACC,UAAIu9G,gBAAgB39G,WAAUwH;AAC9BxH,MAAAA,WAAUwH,WAAW,SAAUpE,YAAYC,UAAU8D,MAAM/G,KAAIszC;AAC9D,YAAIkqE,QAAQD,cAAclvG,MAAMpO,MAAMiU;AAEtC,YAAIspG,SAAS59G,WAAUmG,SAASy3G,QAAQ;AACvC,cAAI/2G,KAAK7G,WAAUmG,SAASy3G;AAE5B,cAAI/2G,GAAGzD,YAAY;AAClByD,eAAGzD,aAAau5G,kBAAkB91G,GAAGzD,UACrC;AAAA,UAAA;AACD,cAAIyD,GAAGxD,UAAU;AAChBwD,eAAGxD,WAAWs5G,kBAAkB91G,GAAGxD;UACnC;AAAA,QACD;AACD,eAAOu6G;AAAAA,MACV;AAAA,IACE,GAjBD;AAmBA59G,IAAAA,WAAUiG,YAAY,kBAAkB,SAAUpE,QAEjD;AAAA,UAAIA,OAAMm7G,gBAAgB;AACzBn7G,QAAAA,OAAMm7G,iBAAiBh9G,WAAU0zB,UAAUmG,WAAWh4B,OAAMm7G,cAC5D;AAAA,MAAA;AACD,aAAO;AAAA,IACT,CAAA;AAECh9G,IAAAA,WAAUiG,YAAY,mBAAmB,SAAU7F,KAAI6zC;AACtD,UAAI5zC,KAAKw9G;AAAc;AACvBx9G,WAAKw9G,eAAe;AAEpB,UAAI79G,WAAUs9G,aAAal9G,MAAK;AAE/BJ,QAAAA,WAAUs9G,aAAarpE,MAAUj0C,IAAAA,WAAUs9G,aAAal9G,GAAAA;AAAAA,eACjDJ,WAAUs9G,aAAal9G,GAAAA;AAAAA,MAC9B;AAED,UAAIJ,WAAUq9G,kBAAkBj9G,GAAK,GAAA;AACpCJ,QAAAA,WAAUq9G,kBAAkBppE,UAAUj0C,WAAUq9G,kBAAkBj9G;eAC3DJ,WAAUq9G,kBAAkBj9G;MACnC;AAED,eAASoE,IAAI,GAAGA,IAAInE,KAAK+8G,UAAU34G,QAAQD,KAAK;AAC/C,YAAIs5G,MAAMz9G,KAAK+8G,UAAU54G;AACzB,YAAIs5G,IAAIhB,sBAAsB18G,KAAI;AACjC09G,cAAIhB,qBAAqB7oE;AACzB5zC,eAAK2zC,cAAc8pE,IAAI19G,IAAI6zC,SAAS,MAAM6pE,IAAI19G,GAAGuF,MAAM,GAAK,EAAA,CAAA,CAAA;AAAA,QAC5D;AAAA,MACD;AAED,eAASnB,KAAKnE,KAAKi9G,cAAc;AAChC,YAAIQ,MAAMz9G,KAAKi9G,aAAa94G,CAAAA;AAC5B,YAAIs5G,IAAIhB,sBAAsB18G,KAAI;AACjC09G,cAAIhB,qBAAqB7oE;AACzB6pE,cAAIC,eAAe;AAAA,QACnB;AAAA,MACD;AAED,UAAIl6F,MAAK7jB,WAAUs9G,aAAarpE,MAChC;AAAA,UAAIpwB,OAAMA,IAAGk6F,cAAc;AACnBl6F,eAAAA,IAAGk6F;AACVrkG,mBAAW,WAAA;AACV,cAAI1Z,WAAU8gB,YAAY;AACzB,mBAAO;AAAA,UACP;AACD9gB,UAAAA,WAAUiL,UAAU,kBAAkB,CAACgpC,QAAQj0C,WAAUmG,SAAS8tC,MAClE,CAAA,CAAA;AAAA,QAAA,GAAE;MACH;AAEM5zC,aAAAA,KAAKw9G;AAAAA,IACd,CAEC;AAAA,aAASG,sBAAsBC,aAAap3G,IAAAA;AAC3C,UAAIzG,MAAK69G;AACTA,oBAAc79G,IAAGuF,MAAM,GACvB;AAAA,UAAIu3G,MAAMl9G,WAAU+O,IAAAA;AACpB,UAAIwmD,MAAO0oD,YAAY,CAAMA,IAAAA,YAAY,KAAMp3G,GAAY;AAC3D,UAAIs2G,MAAMn9G,WAAUk5C,YAAYryC,EAAAA;AAChCs2G,UAAI/8G,KAAK88G;AACTC,UAAIL,qBAAqBj2G,GAAGi2G,sBAAsBmB,YAAY,CAAA;AAC9Dd,UAAIH,iBAAiB,IAAIn4G,KAAKsV,OAAOo7C;AACrC4nD,UAAIrqD,UAAU;AACd9yD,MAAAA,WAAUwH,SAAS21G,GACnB;AAAA,IAAA;AAEDn9G,IAAAA,WAAUiG,YAAY,gCAAgC,SAAU7F,KAC/D;AAAA,UAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,UAAIC,KAAKuxD,kBAAkBxxD,GAAAA,KAAQC,KAAK69G,uBAAuBr3G,EAAAA,KAAAA,CAAQ+1G,oBAAoB/1G,EAAM,GAAA;AAChGm3G,8BAAsB59G,KAAIyG;MAC7B,OAAS;AACN,YAAIg2G,SAASh2G,EAAAA,KAAOxG,KAAKmpB;AACxBnpB,eAAK+sE,iBAAiBvmE,EAAAA;AAGvB,YAAIs3G,MAAM99G,KAAKq9G,iBAAiBt9G,GAChC;AAAA,iBAASoE,KAAK25G,KAAK;AAClB,cAAIA,IAAIlvG,eAAezK,CAAAA,GAAI;AAC1BpE,YAAAA,MAAK+9G,IAAI35G,GAAGpE;AACZ,gBAAIC,KAAK8F,SAAS/F;AACjBC,mBAAK+qB,YAAYhrB,KAAI,IACtB;AAAA,UAAA;AAAA,QACD;AAAA,MACD;AACD,aAAO;AAAA,IACT,CAAA;AACCJ,IAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAIyG,IAAAA;AACrD,WAAKxG,KAAKuxD,kBAAkBxxD,GAAOC,KAAAA,KAAK69G,uBAAuBr3G,EAAK,GAAA;AACnE,aAAK7G,WAAUuzC,QAAQnzC,MAAK;AAC3ByG,aAAGisD,UAAU;AACbzyD,eAAKwzC,SAASzzC,KAAIyG;QAClB;AAAA,MACD;AAAA,IACH;AACC7G,IAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAIyB,QACrD;AAAA,UAAIxB,KAAKksB;AAAU,eAAO;AAE1B,UAAI1lB,KAAKxG,KAAK8F,SAAS/F;AAEvB,UAAIC,KAAKuxD,kBAAkBxxD,GAAK,GAAA;AAC/B68G,wBAAgBp2G,EAEnB;AAAA,MAAA,OAAS;AACN,YAAIA,GAAGzD,YAAY;AAClByD,aAAGzD,aAAau5G,kBAAkB91G,GAAGzD,UACrC;AAAA,QAAA;AACD,YAAIyD,GAAGxD,UAAU;AAChBwD,aAAGxD,WAAWs5G,kBAAkB91G,GAAGxD;QACnC;AAED,YAAIw5G,SAASh2G,EAAAA,KAAOxG,KAAKmpB,cAAc;AACtCnpB,eAAK+sE,iBAAiBvmE,EAAAA;AAAAA,QAEtB;AAED,YAAIs3G,MAAM99G,KAAKq9G,iBAAiBt9G;AAChC,iBAASoE,KAAK25G,KAAK;AAClB,cAAIA,IAAIlvG,eAAezK,CAAI,GAAA;AAAA,mBACnBnE,KAAKi9G,aAAaa,IAAI35G,GAAGpE,EAChCC;AAAAA,iBAAK+qB,YAAY+yF,IAAI35G,CAAAA,EAAGpE,IAAI,IAAA;AAAA,UAC5B;AAAA,QACD;AACMC,eAAAA,KAAKg9G,kBAAkBj9G,GAG9B;AAAA,YAAIg+G,eAAe;AACnB,iBAAS/uG,IAAI,GAAGA,IAAIhP,KAAK0zC,UAAUtvC,QAAQ4K,KAAK;AAC/C,cAAIhP,KAAK0zC,UAAU1kC,CAAAA,EAAGvK,aAAazE,KAAK0B,OAAOwC,oBAAoBnE;AAClEg+G,2BAAe;AAAA,QAChB;AACD,YAAA,CAAKA;AACJ/9G,eAAK4oB,aAAa;AAAA,MACnB;AACD,aAAO;AAAA,IACT,CAAA;AACCjpB,IAAAA,WAAUiG,YAAY,gBAAgB,SAAU7F,KAAAA;AAC/C,WAAKC,KAAKksB,UAAU;AACnB,YAAI1lB,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,YAAIy8G,SAASh2G,KAAK;AACjBxG,eAAK+sE,iBAAiBvmE,EACtB;AAAA,QAAA;AAAA,MACD;AACD,aAAO;AAAA,IACT,CACC7G;AAAAA,IAAAA,WAAUiG,YAAY,eAAe,SAAU7F,KAAI0R,MAAM63E,cAAAA;AACxD,UAAI9iF,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,UAAIy8G,SAASh2G,EAAAA;AACZxG,aAAK4oB,aAAa;AACnB,aAAO;AAAA,IACT,CAAA;AACCjpB,IAAAA,WAAUiG,YAAY,kBAAkB,SAAU7F,KAAAA;AACjD,UAAIyG,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,UAAKy8G,CAAAA,SAASh2G,KAAK;AAClBk2G,iCAAyBl2G;MACzB;AACD,aAAO;AAAA,IACT,CACC7G;AAAAA,IAAAA,WAAUiG,YAAY,iBAAiB,SAAU7F,KAChD;AAAA,UAAIyG,KAAKxG,KAAK8F,SAAS/F;AACvB,UAAIy8G,SAASh2G,EAAK,GAAA;AACjBxG,aAAK+sE,iBAAiBvmE,EAAAA;AAEtBxG,aAAK2X,iBACL;AAAA,MAAA;AAAA,IACH;AACChY,IAAAA,WAAUotE,mBAAmB,SAAUvmE,IAAAA;AAEtC,UAAIA,GAAGzD,YAAY;AAClByD,WAAGzD,aAAau5G,kBAAkB91G,GAAGzD,UAAAA;AAAAA,MACrC;AACD,UAAIyD,GAAGxD,UAAU;AAChBwD,WAAGxD,WAAWs5G,kBAAkB91G,GAAGxD,QACnC;AAAA,MAAA;AAEDwD,SAAGqlB,WAAW1a,KAAKI,OAAO/K,GAAGxD,SAAS+B,QAAYyB,IAAAA,GAAGzD,WAAWgC,QAAa,KAAA,GAAA;AAC7EyB,SAAGxD,WAAWwD,GAAGqD;AACjB,UAAIrD,GAAGw3G,aAAa;AACnBx3G,WAAGzD,WAAWqqC,SAAS,CACvB5mC;AAAAA,WAAGzD,WAAWmqC,QAAQ1mC,GAAGw3G,YAAY50G,QACrC5C,CAAAA;AAAAA,WAAGzD,WAAWqqC,SAAS5mC,GAAGw3G,YAAYplG,SAAAA,CAAAA;AACtCpS,WAAGzD,WAAWy+D,YAAYh7D,GAAGw3G,YAAYrlG,YAAAA,CAAAA;AAAAA,MAEzC;AAAA,IACH;AAEChZ,IAAAA,WAAU4xD,oBAAoB,SAAUxxD;AACvC,aAAOA,IAAGuY,WAAWvG,QAAQ,GAAA,KAAA;AAAA,IAC/B;AACCpS,IAAAA,WAAUk+G,yBAAyB,SAAUr3G;AAC5C,aAAQA,GAAGi2G,sBAAsBj2G,GAAGi2G,sBAAsB;AAAA,IAC5D;AAEC98G,IAAAA,WAAUs+G,mBAAmBt+G,WAAU0rB;AACvC1rB,IAAAA,WAAU0rB,eAAe,SAAUtrB,KAClC;AAAA,UAAI0nB,SAASznB,KAAKynB;AAClB,UAAI/d,IAAI/J,WAAU+B,OAAOw8G;AACzB,UAAI13G,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,UAAIo+G,MAAM33G,GAAGi2G;AACb,UAAI2B,YAAYp+G,KAAKuxD,kBAAkBxxD,GAAAA;AACvC,UAAIq+G;AACHD,cAAMp+G,IAAGuF,MAAM,KAAK,CAGrB;AAAA,UAAI+4G,aAAa,SAAUt+G,KAAAA;AAC1B,YAAIyB,SAAQ7B,WAAUmG,SAAS/F,GAAAA;AAC/ByB,QAAAA,OAAMqI,YAAYrI,OAAMwB;AACxBxB,QAAAA,OAAMwB,WAAW,IAAIwB,KAAKhD,OAAMuB,WAAWgC,QAAAA,IAAYvD,OAAMqqB,WAAW,GAAA;AACxE,eAAOlsB,WAAUs+G,iBAAiBl+G;MACrC;AAEE,WAAKo+G,OAAOA,MAAM,MAAM,MAAM3B,SAASh2G,KAAK;AAE3C,eAAO63G,WAAWt+G,GAClB;AAAA,MAAA;AACD,UAAKo+G,CAAAA,OAAOA,QAAQ,QAAU12F,CAAAA,OAAOC,OAAOq0C,qBAAqBryD,KAAK,cAAgBA,KAAK,YAAA,CAAa00G,YAAa;AAEpH,eAAOp+G,KAAKi+G,iBAAiBl+G;MAC7B;AACD,UAAI2J,KAAK,OAAO;AACf,YAAIqtD,OAAO/2D;AACXL,QAAAA,WAAU27D,SAAS,EAClBx0D,MAAM2gB,OAAOC,OAAOq0C,mBACpBlxC,OAAOpD,OAAOC,OAAO42F,yBACrBvtG,OAAO,SACP9D,UAAU,UACV6c,SAAS,CAACrC,OAAOC,OAAOy0C,oBAAoB10C,OAAOC,OAAO00C,wBAAwB30C,OAAOC,OAAOk0C,WAChG30D,GAAAA,UAAU,SAAUqI,OACnB;AAAA,kBAAA,CAASA,OACR;AAAA,YAAA,KAAK;AACJ,qBAAO+uG,WAAWF;YACnB,KAAK;AACJ,qBAAOpnD,KAAKknD,iBAAiBl+G,GAC9B;AAAA,YAAA,KAAK;AACJ;AAAA,UAEF;AAAA,QAAA,EAAA,CAAA;AAAA,MAEL,OAAS;AACNs+G,mBAAWF;MACX;AAAA,IACH;AAEC,aAASI,kBAAAA;AACR,YAAMC,aAAa,CAAA;AACnB,iBAAWr6G,KAAKxE,WAAUuzC,SAAS;AAClC,cAAM1sC,KAAK7G,WAAUuzC,QAAQ/uC;AAC7B,YAAIqC,GAAGi2G,oBAAoB;AAC1B,cAAA,CAAK+B,WAAWh4G,GAAGi2G,qBAAqB;AACvC+B,uBAAWh4G,GAAGi2G,kBAAsB,IAAA;UACpC;AACD+B,qBAAWh4G,GAAGi2G,kBAAAA,EAAoBj2G,GAAGm2G,eAAe53G,QAAAA,CAAAA,IAAayB;AAAAA,QACjE;AAAA,MACD;AACD,aAAOg4G;AAAAA,IACP;AAED7+G,IAAAA,WAAU8+G,yBAAyB9+G,WAAU60C;AAC7C70C,IAAAA,WAAU60C,qBAAqB,SAAUC,YAAAA;AACxC,eAAStwC,IAAI,GAAGA,IAAInE,KAAK+8G,UAAU34G,QAAQD;eACnCnE,KAAKkzC,QAAQlzC,KAAK+8G,UAAU54G,CAAAA,EAAGpE,EACvCC;AAAAA,WAAK+8G,YAAY,CAEjB;AAAA,YAAMyB,aAAaD,gBAAAA;AACnB,UAAI7pE,QAAQ10C,KAAKy+G,uBAAuBhqE,UAAAA;AACxC,UAAI6E,MAAM,CAAA;AACV,eAASn1C,IAAI,GAAGA,IAAIuwC,MAAMtwC,QAAQD,KAAK;AACtC,YAAIuwC,MAAMvwC,GAAGsuD,WAAW/d,MAAMvwC,GAAGs4G,oBAAoB;AACpD;AAAA,QACA;AAED,YAAID,SAAS9nE,MAAMvwC,KAAK;AACvBnE,eAAK0+G,YAAYhqE,MAAMvwC,CAAAA,GAAIm1C,KAAKjrC,QAAWA,QAAWA,QAAWA,QAAWmwG;QAChF,OAAU;AACNllE,cAAIz1C,KAAK6wC,MAAMvwC,CACf,CAAA;AAAA,QAAA;AAAA,MACD;AACD,aAAOm1C;AAAAA,IACT;KAEC,WACC;AAAA,UAAIzM,MAAMltC,WAAU0K;AACpB1K,MAAAA,WAAU0K,gBAAgB,SAAU7D,IACnC;AAAA,YAAIg2G,SAASh2G,EAAK;AAAA,iBAAO;AACzB,eAAOqmC,IAAIz2B,KAAKpW,MAAMwG;MACzB;AACE,UAAIm4G,mBAAmBh/G,WAAUiY;AACjCjY,MAAAA,WAAUiY,cAAc,SAAU7X,KACjC;AAAA,YAAIyG,KAAK7G,WAAUmG,SAAS/F;AAE5B,YAAIyG,MAAMg2G,SAASh2G,EAAQxG,KAAAA,CAAAA,KAAKuxD,kBAAkBxxD,GAAAA,GAAK;AACtDJ,UAAAA,WAAUgyB,YAAAA;AAAAA,QACd,OAAU;AACNgtF,2BAAiBvoG,KAAKpW,MAAMD,GAAAA;AAAAA,QAC5B;AAAA,MACJ;AAAA,IACE,GAED;AAAA,UAAM6+G,eAAej/G,WAAUwD,KAAK0qC,YAAY,eAEhDluC;AAAAA,IAAAA,WAAU++G,cAAc,SAAUl4G,IAAIkuC,OAAOmqE,YAAY9pF,MAAMC,IAAI8pF,UAAUN;AAC5E,UAAKh4G,CAAAA,GAAGsjG,OAAO;AACd;AAAA,MACA;AAED,UAAIiV,mBAAmBP,aAAaA,WAAWh4G,GAAGzG,EAAMw+G,IAAAA,gBAAAA,EAAkB/3G,GAAGzG,EAAAA;AAC7E,WAAKg/G,kBAAkB;AACtBA,2BAAmB,CAAA;AAAA,MACnB;AAED,UAAKhqF,CAAAA,MAAM;AACVA,eAAOp1B,WAAUyM;AAAAA,MACjB;AACD,WAAK4oB,IAAI;AACRA,aAAKr1B,WAAUwM;AAAAA,MACf;AAED,YAAM6yG,WAAW,IAAIx6G,KAAKA,KAAKgoC,IAAIhmC,GAAGzD,WAAW4V,YAAenS,GAAAA,GAAGzD,WAAW6V,SAAAA,GAAYpS,GAAGzD,WAAWqG,QAAAA,GAAW5C,GAAGzD,WAAWsJ,SAAAA,GAAY7F,GAAGzD,WAAW4K,WAAAA,GAAcnH,GAAGzD,WAAWipC;AACvL,YAAMizE,cAAc7D,SAAS,SAAS50G,GAAGsjG,eAAe8U,aAAap4G,GAAGxD,QAAa,CAAA,IAAA,EAAEguG,SAASgO,SAEhG,CAAA;AAAA,YAAME,gBAAgBD,YAAY5L,QAAQt+E,MAAMC,EAAIvvB,EAAAA,IAAItC,UACvD;AAAA,cAAMg8G,eAAe,IAAI36G,KAAKrB;AAC9Bg8G,qBAAa10G,SAASjE,GAAGzD,WAAWsJ,SAAAA,CAAAA;AACpC8yG,qBAAaz0G,WAAWlE,GAAGzD,WAAW4K,WAAAA,CAAAA;AACtCwxG,qBAAaryE,WAAWtmC,GAAGzD,WAAWipC,WACtC,CAAA;AAAA,eAAOmzE;AAAAA,MAAY,CAAA;AAEpB,UAAIC,eAAe;AAEnB,YAAMC,gBAAgB74G,GAAGqlB;AAEzB,eAAS1nB,IAAI,GAAGA,IAAI+6G,cAAc96G,QAAQD,KAAK;AAC9C,YAAI26G,YAAYM,gBAAgBN,UAAU;AACzC;AAAA,QACA;AACD,cAAM37G,OAAO+7G,cAAc/6G,CAE3B;AAAA,YAAIm7G,YAAYP,iBAAiB57G,KAAK4B,QACtC,CAAA;AAAA,YAAIu6G,WAAW;AACd,cAAIA,UAAU7sD,SAAS;AACtB;AAAA,UACL,OAAW;AACN2sD;AACA1qE,kBAAM7wC,KAAKy7G,SACX;AAAA,UAAA;AAAA,QACL,OAAU;AACN,gBAAM54G,OAAO/G,WAAUk5C,YAAYryC,EAEnCE;AAAAA,eAAKI,OAAON,GAAGM;AACfJ,eAAK3D,aAAaI;AAClBuD,eAAK3G,KAAKyG,GAAGzG,KAAK,MAAMoR,KAAKwb,KAAKxpB,KAAK4B;AACvC2B,eAAK1D,WAAW,IAAIwB,KAAKrB,KAAK4B,QAAYs6G,IAAAA,gBAAgB;AAC1D34G,eAAK1D,WAAWrD,WAAU4/G,0BAA0B74G,KAAK3D,YAAY2D,KAAK1D,UAAUwD,IAAIrD,MAAMuD,KAAK1D,QACnG0D;AAAAA,eAAK0D,SAASzK,WAAU0K,cAAc3D;AAItC,cAAKA,CAAAA,KAAK0D,UAAWzK,CAAAA,WAAUgN,gBAAgBhN,WAAU+B,OAAO41B;AAAW;AAC3Eod,gBAAM7wC,KAAK6C,IAEX;AAAA,cAAA,CAAKm4G,YAAY;AAChBl/G,YAAAA,WAAUuzC,QAAQxsC,KAAK3G,MAAM2G;AAC7B/G,YAAAA,WAAUo9G,UAAUl5G,KAAK6C,IAAAA;AAAAA,UACzB;AACD04G;AAAAA,QACA;AAAA,MACD;AAAA,IACH;AAECz/G,IAAAA,WAAU4/G,4BAA4B,SAAUx8G,YAAYC,UAAUwD,IAAI6oD,SAAShgB;AAClF,UAAIpe,QAAQluB,WAAW4rB,kBAAsB3rB,IAAAA,SAAS2rB;AACtD,UAAIsC,OAAO;AACV,YAAIA,QAAQ,GAAG;AAEd,iBAAO,IAAIzsB,KAAK6qD,QAAQtqD,QAAYyB,IAAAA,GAAGqlB,WAAW,MAAOoF,QAAQ,KAAK,GAAA;AAAA,QACtE,OACI;AAEJ,iBAAO,IAAIzsB,KAAKxB,SAAS+B,QAAYksB,IAAAA,QAAQ,KAAK,GAClD;AAAA,QAAA;AAAA,MACD;AACD,aAAO,IAAIzsB,KAAK6qC,aAAatqC,QAAAA,CAAAA;AAAAA,IAC/B;AACCpF,IAAAA,WAAUwtE,cAAc,SAAUptE,KAAIwO;AACrC,UAAI/H,KAAAA,OAAYzG,OAAM,WAAWA,MAAKJ,WAAUmG,SAAS/F;AACzD,UAAIy/G,aAAa;AACjBjxG,YAAMA,OAAO;AAEb,UAAKiuG,CAAAA,SAASh2G,EAAK,GAAA;AAClB,eAAO,CACN,EAAEzD,YAAYyD,GAAGzD,YAAYC,UAAUwD,GAAGxD,SAAAA,CAAAA;AAAAA,MAE3C;AACD,UAAIwD,GAAGisD,SAAS;AACf,eAAO,CACP;AAAA,MAAA;AAED9yD,MAAAA,WAAU++G,YAAYl4G,IAAIg5G,YAAY,MAAMh5G,GAAGzD,YAAYyD,GAAGxD,UAAUuL,GAExE;AAAA,UAAI0K,SAAS,CACb;AAAA,eAAS9U,IAAI,GAAGA,IAAIq7G,WAAWp7G,QAAQD,KAAK;AAC3C,aAAKq7G,WAAWr7G,CAAAA,EAAGsuD,SAAS;AAC3Bx5C,iBAAOpV,KAAK,EAAEd,YAAYy8G,WAAWr7G,CAAAA,EAAGpB,YAAYC,UAAUw8G,WAAWr7G,CAAGnB,EAAAA,SAAAA,CAAAA;AAAAA,QAC5E;AAAA,MACD;AAED,aAAOiW;AAAAA,IACT;AACCtZ,IAAAA,WAAUm2C,YAAY,SAAU/gB,MAAMC,IACrC;AAAA,UAAI/b,SAAS,CACb;AAAA,YAAMulG,aAAaD,gBACnB;AAAA,eAASpiG,KAAKnc,KAAKkzC,SAAS;AAC3B,YAAI1sC,KAAKxG,KAAKkzC,QAAQ/2B,CACtB;AAAA,YAAI3V,GAAGi2G,oBAAoB;AAC1B;AAAA,QACA;AAED,YAAID,SAASh2G,EAAAA,GAAK;AACjB,cAAIuuB,QAAQC,MAAMxuB,GAAGzD,aAAaiyB,MAAMxuB,GAAGxD,WAAW+xB,MAAM;AAC3D,gBAAI0qF,MAAM,CAAA;AACVz/G,iBAAK0+G,YAAYl4G,IAAIi5G,KAAK,MAAM1qF,MAAMC,IAAI3mB,QAAWmwG;AACrDiB,gBAAI97G,QAAQ,SAAS+7G,WACpB;AAAA,kBAAIA,UAAU38G,aAAaiyB,MAAM0qF,UAAU18G,WAAW+xB,MAAM;AAC3D9b,uBAAOpV,KAAK67G,SACZ;AAAA,cAAA;AAAA,YACP,CACA;AAAA,UAAA,YAAc3qF,QAASC,CAAAA,IAAG;AACrB/b,mBAAOpV,KAAK2C;UACZ;AAAA,QACD,WAAWxG,CAAAA,KAAKuxD,kBAAkB/qD,GAAGzG,EAAAA,GAAK;AAC1CkZ,iBAAOpV,KAAK2C;QACZ;AAAA,MAED;AACD,aAAOyS;AAAAA,IACT;AAGCtZ,IAAAA,WAAUu6C,cAAc,SAAU1zC,IACjC;AAAA,UAAIzD,aAAa,IAAIyB,KAAKxE,KAAK+C,UAAAA;AAC/B,UAAIC,WAAW,IAAIwB,KAAKxE,KAAKgD,QAAAA;AAC7BhD,WAAK+C,aAAaA;AAClB/C,WAAKgD,WAAWA;AAChBhD,WAAK6rB,WAAW7rB,KAAK8pG,QAAQ;AAAA,IAC/B;AAECnqG,IAAAA,WAAU+B,OAAOi+G,iBAAiB;AAClChgH,IAAAA,WAAU+B,OAAOw8G,qBAAqB;AACtCv+G,IAAAA,WAAU+B,OAAOk+G,qBAAqB,CAAC7U,MAAM6C,GAAGpL,SAAQuI,MAAM8C,GAAGrL,SAAQuI,MAAM+C,GAAGtL,SAAQuI,MAAMgD,GAAGvL,SAAQuI,MAAMiD,GAAGxL;AACpH7iG,IAAAA,WAAU+B,OAAOg9G,cAAc;AAC/B/+G,IAAAA,WAAU+B,OAAOg4B,SAAS72B,WAAW,CACpC,EAAEuX,MAAM,eAAehY,QAAQ,QAAQ4E,MAAM,YAAYqzB,OAAO,KAChE,GAAA,EAAEjgB,MAAM,aAAapT,MAAM,aAAa5E,QAAQ,cAChD,EAAEgY,MAAM,QAAQtJ,QAAQ,IAAI9J,MAAM,QAAQ5E,QAAQ,OAGnDzC,CAAAA;AAAAA,IAAAA,WAAUiG,YAAY,cAAc,WAAA;AACnCjG,MAAAA,WAAUs9G,eAAe;AACzBt9G,MAAAA,WAAUq9G,oBAAoB;AAC9Br9G,MAAAA,WAAUo9G,YAAY,CAAA;AAAA,IACxB;AAGC,aAAS8C,kBAAkBC,UAAUC,WAAAA;AACpC,YAAMn4G,UAAUk4G,SAASl4G;AACzB,YAAM89F,QAAQ99F,QAAQ89F,SAASqa;AAE/B,YAAMC,kBAAkBp4G,QAAQqtB,SAAUywE,SAASA,MAAM/sF,YAAAA,MAAkB;AAE3E,UAAIqnG,iBAAiB;AACpB,eAAO;AAAA,MACP;AAED,UAAIp4G,QAAQijG,SAASE,MAAMK,SAASxjG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQyiG,WAAW;AACjF,eAAO;AAAA,MACP,WAAUziG,QAAQijG,SAASE,MAAMY,UAAU/jG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQyiG,WAAW;AACzF,eAAO;AAAA,MACP,WAAUziG,QAAQijG,SAASE,MAAMa,WAAWhkG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQqpG,UAAU;AACzF,eAAO;AAAA,MACP,WAAUrpG,QAAQijG,SAASE,MAAMc,UAAUjkG,QAAQ6vD,aAAa,KAAM7vD,CAAAA,QAAQqpG,UAAU;AACxF,eAAO;AAAA,MACP,WAAUrpG,QAAQijG,SAASE,MAAMK,SAASxjG,QAAQyiG,aAAaziG,QAAQyiG,UAAUjmG,WAAWzE,WAAU+B,OAAOk+G,mBAAmBx7G,UAChIwD,QAAQyiG,UAAUrH,SAAS+H,MAAM6C,EAAAA,KACjChmG,QAAQyiG,UAAUrH,SAAS+H,MAAM8C,EACjCjmG,KAAAA,QAAQyiG,UAAUrH,SAAS+H,MAAM+C,EACjClmG,KAAAA,QAAQyiG,UAAUrH,SAAS+H,MAAMgD,OACjCnmG,QAAQyiG,UAAUrH,SAAS+H,MAAMiD,EAAAA,GAAK;AACtC,eAAO;AAAA,MACV,OAAS;AACN,eAAO;AAAA,MACP;AAAA,IACD;AAED,aAASiS,kBAAkB98G,MAC1B;AAAA,YAAM+8G,YAAY/8G,KAAK4F,OAAAA;AACvB,YAAMo3G,aAAah9G,KAAKiG;AACxB,YAAMg3G,YAAYjvG,KAAKwb,KAAKwzF,aAAa,CACzC;AAAA,aAAO,EAAED,WAAWE,UAAAA;AAAAA,IACpB;AAGD,UAAMC,oBAAoB,EACzB,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,MACH,GAAG,KAEJ;AAAA,UAAMC,mBAAmB,EACxB,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,EAGJ;AAAA,aAASC,gBAAgB15F,MAAMqmF;AAC9BrmF,WAAK7H,cAAc,kCAAkCX,SAAS6uF,OAAOA,KAAKz1C,WAAW,MAAM;AAAA,IAC3F;AAED,aAAS+oD,iBAAiB35F,MAAMqmF,MAAM1rG,QACrCqlB;AAAAA,WAAK7H,cAAc,gCAAkCX,EAAAA,SAAS6uF,OAAOA,KAAKz1C,WAAW,MAAM;AAE3F,YAAMgpD,gBAAgB55F,KAAK5iB,iBAAiB,oCAC5Cw8G;AAAAA,oBAAc98G,QAASy5G,QAAOA,GAAG73D,UAAU,KAAA;AAC3C,UAAI2nD,QAAQA,KAAK7C,WAAW;AAC3B6C,aAAK7C,UAAU1mG,QAASnE;AACvB,gBAAMkhH,SAASJ,iBAAiB9gH,IAAIgjG,OAAAA;AACpC,gBAAMme,WAAWN,kBAAkBK,MACnC75F;AAAAA,eAAK7H,cAAc,6CAA6C2hG,QAAAA,IAAAA,EAAcp7D,UAAU;AAAA,QAAI,CAAA;AAAA,MAEhG,OAAS;AACN,cAAMo7D,WAAWN,kBAAkB7+G,OAAMuB,WAAWgG,OAAAA,CAAAA;AACpD8d,aAAK7H,cAAc,6CAA6C2hG,cAAcp7D,UAAU;AAAA,MACxF;AAAA,IAED;AAED,aAASq7D,kBAAkB/5F,MAAMqmF,MAAM1rG,QACtCqlB;AAAAA,WAAK7H,cAAc,gCAAkCX,EAAAA,SAAS6uF,OAAOA,KAAKz1C,WAAW,MAAM;AAE3F,YAAMopD,cAAch6F,KAAK7H,cAAc,oDACvC;AAAA,YAAM8hG,oBAAoBj6F,KAAK7H,cAAc,2DAC7C6hG;AAAAA,kBAAYh/C,YAAYliE,WAAU0zB,UAAU0tF,oBAAoBv/G,OAAMuB,YAAYvB,MAClFs/G;AAAAA,wBAAkBj/C,YAAYliE,WAAU0zB,UAAU2tF,uBAAuBx/G,OAAMuB,YAAYvB;AAE3F,UAAK0rG,CAAAA,QAASA,KAAK+D,YAAAA,EAAc/D,KAAK7C,aAAa6C,KAAK7C,UAAUjmG,SAAU;AAC3EyiB,aAAK7H,cAAc,kCAAA,EAAoCX,QAAQ;AAAA,MAClE,OAAS;AACNwI,aAAK7H,cAAc,kCAAoCX,EAAAA,QAAQ;AAAA,MAC/D;AAAA,IACD;AAED,aAAS4iG,gBAAgB99G;AACxB,cAAQA,MAAAA;AAAAA,QACP,KAAK;AAAA,QACL,KAAK;AACJ,iBAAO,GAAGA,IACX;AAAA,QAAA,KAAK;AACJ,iBAAO,GAAGA;QACX,KAAK;AACJ,iBAAO,GAAGA,IAAAA;AAAAA,QACX;AACC,iBAAO,GAAGA,IAEZ;AAAA,MAAA;AAAA,IAAA;AAEDxD,IAAAA,WAAU0zB,UAAU0tF,sBAAsB,SAASx8G,WAAW/C,QAAAA;AAC7D,YAAM2B,OAAOoB,UAAU6E,QACvB;AAAA,aAAO,SAAS63G,gBAAgB99G;IAClC;AACCxD,IAAAA,WAAU0zB,UAAU2tF,yBAAyB,SAASz8G,WAAW/C,QAAAA;AAChE,YAAM0/G,gBAAgBjB,kBAAkB17G;AACxC,aAAO,SAAS08G,gBAAgBC,cAAcd,cAAczgH,WAAU8nB,OAAOtkB,KAAKuoC,SAASw1E,cAAchB;IAC3G;AAECvgH,IAAAA,WAAU0zB,UAAU8tF,2BAA2B,SAAS58G,WAAW/C,QAAAA;AAClE,YAAM2B,OAAOoB,UAAU6E;AACvB,YAAMw4D,aAAajiE,WAAU8nB,OAAOtkB,KAAKyoC,WAAWrnC,UAAUqU;AAC9D,aAAO,SAASqoG,gBAAgB99G,IAAgBy+D,CAAAA,WAAAA,UAAAA;AAAAA,IAClD;AACCjiE,IAAAA,WAAU0zB,UAAU+tF,8BAA8B,SAAS78G,WAAW/C,QACrE;AAAA,YAAM0/G,gBAAgBjB,kBAAkB17G,SAAAA;AACxC,YAAMq9D,aAAajiE,WAAU8nB,OAAOtkB,KAAKyoC,WAAWrnC,UAAUqU,SAAAA,CAAAA;AAC9D,aAAO,SAASqoG,gBAAgBC,cAAcd,SAAAA,CAAAA,IAAczgH,WAAU8nB,OAAOtkB,KAAKuoC,SAASw1E,cAAchB,SAAAA,CAAAA,OAAiBt+C;IAC5H;AAEC,aAASy/C,iBAAiBx6F,MAAMqmF,MAAM1rG,QACrC;AAAA,YAAM8/G,aAAaz6F,KAAK7H,cAAc;AACtC,YAAMuiG,mBAAmB16F,KAAK7H,cAAc;AAC5CsiG,iBAAWz/C,YAAYliE,WAAU0zB,UAAU8tF,yBAAyB3/G,OAAMuB,YAAYvB,MAAAA;AACtF+/G,uBAAiB1/C,YAAYliE,WAAU0zB,UAAU+tF,4BAA4B5/G,OAAMuB,YAAYvB,MAAAA;AAE/F,WAAK0rG,QAASA,KAAK+D,YAAc/D,EAAAA,KAAK7C,aAAa6C,KAAK7C,UAAUjmG,SAAU;AAC3EyiB,aAAK7H,cAAc,iCAAmCX,EAAAA,QAAQ;AAAA,MACjE,OAAS;AACNwI,aAAK7H,cAAc,mCAAmCX,QAAQ;AAAA,MAC9D;AAAA,IACD;AAED,aAASmjG,YAAY36F,MAAMqmF,MAAM1rG,QAChC;AAAA,YAAMigH,aAAa56F,KAAK7H,cAAc;AACtC,YAAM0iG,cAAc76F,KAAK7H,cAAc;AACvC,YAAM2iG,kBAAkB96F,KAAK7H,cAAc,iCAAA;AAC3CyiG,iBAAWpjG,QAAQ;AAEnB,UAAIujG,YAAYjiH,WAAUwD,KAAK0qC,YAAY;AAC3C,UAAKluC,CAAAA,WAAU+B,OAAOmgH,oBAAoB;AACzCliH,QAAAA,WAAU+B,OAAOmgH,qBAAqBD,UAAUjiH,WAAUwD,KAAKC,IAAIzD,WAAUsM,gBAAgB,IAAI,KAAA,CAAA;AAAA,MACjG;AACDy1G,kBAAYrjG,QAAQ1e,WAAU+B,OAAOmgH;AAErC,UAAI3U,QAAQA,KAAKj4E,OAAO;AACvB0sF,wBAAgBtjG,QAAQ;AACxBojG,mBAAWpjG,QAAQ6uF,KAAKj4E;AAAAA,MAC3B,WAAazzB,OAAMqI,aAAarI,OAAMqI,UAAU8O,kBAAkB,MAAM;AACrEgpG,wBAAgBtjG,QAAQ;AACxBqjG,oBAAYrjG,QAAQujG,UAAUpgH,OAAMqI,SAAAA;AAAAA,MACvC,OAAS;AACN83G,wBAAgBtjG,QAAQ;AAAA,MACxB;AACDsjG,sBAAgBG,cAAc,IAAI5mC,MAAM,QAAA,CAAA;AAAA,IACxC;AAED,UAAM6mC,cAAc,EACnBnW,SAAS,SAAUjnG;AAClB,YAAMmlG,QAAQ,EACbe,MAAME,MAAMa,SACZn0C,UAAU,GACV0yC,YAAYxlG,MAAM4K,MAAMnG,QAEzB,EAAA;AAAA,YAAMs8F,QAAQ,IAAIlhG,KAAK,MAAM,GAAG;AAChC,aAAO,EAACslG,OAAOpE,MACf;AAAA,IAAA,GACDiG,QAAQ,SAAUhnG;AACjB,UAAInF,MAAMmF,MAAM4K,MAAMxG,OAAAA,IAAW;AACjC,UAAIvJ,OAAAA;AAAWA,cAAM;AACrB,YAAMsqG,QAAQ,EACbe,MAAME,MAAMY,QACZl0C,UAAU,GACV4yC,WAAW,CAAC7qG;AAEb,YAAMkmG,QAAQ,IAAIlhG,KAAK,MAAM,GAAG,CAChC;AAAA,aAAO,EAACslG,OAAOpE;IACf,GACD0F,OAAO,SAAUzmG,OAChB;AAAA,YAAMmlG,QAAQ,EACbe,MAAME,MAAMK,OACZ3zC,UAAU,EAEX;AAAA,YAAMiuC,QAAQ,IAAIlhG,KAAK,MAAM,GAAG,CAAA;AAChC,aAAO,EAACslG,OAAOpE,MACf;AAAA,IAAA,GACDmG,QAAQ,SAAUlnG,OAAAA;AACjB,YAAMmlG,QAAQ,EACbe,MAAME,MAAMc,QACZR,SAAS1mG,MAAM4K,MAAMqJ,SAAa,IAAA,GAClC6+C,UAAU,GACV0yC,YAAYxlG,MAAM4K,MAAMnG;AAEzB,YAAMs8F,QAAQ,IAAIlhG,KAAK,MAAM,GAAG,CAChC;AAAA,aAAO,EAACslG,OAAOpE;IACf,GACDsc,UAAU,SAAUr9G,OAAAA;AACnB,YAAMmlG,QAAQ,EACbe,MAAME,MAAMY,QACZl0C,UAAU,GACV4yC,WAAW1qG,WAAU+B,OAAOk+G;AAE7B,YAAMla,QAAQ,IAAIlhG,KAAK,MAAM,GAAG,CAAA;AAChC,aAAO,EAACslG,OAAOpE;IACf,GACDuc,QAAQ,SAAUt9G,OAAOkiB;AACxB,YAAMijF,QAAQ,CAAA;AACd,YAAMe,OAAOhkF,KAAK7H,cAAc,+BAAiCX,EAAAA;AACjE,YAAMo5C,WAAWtmD,KAAK5C,IAAI,GAAGsY,KAAK7H,cAAc,gCAAkCX,EAAAA,KAAAA;AAClF,YAAM6jG,cAAcr7F,KAAK7H,cAAc,kCAAA,EAAoCX;AAC3E,YAAM8jG,aAAat7F,KAAK7H,cAAc,iCAAA,EAAmCX;AAEzEyrF,YAAMryC,WAAWA;AACjB,UAAI5vD;AACJ,UAAIrI;AAEJ,cAAQqrG,MACP;AAAA,QAAA,KAAK;AACJf,gBAAMe,OAAOE,MAAMK;AACnB;AAAA,QACD,KAAK;AACJtB,gBAAMe,OAAOE,MAAMY;AACnB9jG,iBAAO;AACPgf,eAAK5iB,iBAAiB,kDAAkDN,QAASy5G,QAAAA;AAChF,gBAAGA,GAAG73D,SAAQ;AACb19C,mBAAKhE,KAAKu5G,GAAG/+F,KAAAA;AAAAA,YACb;AAAA;AAGFyrF,gBAAMO,YAAYxiG,KAAKpC,IAAKjG,CAAAA,SAAAA;AAC3B,oBAAQA,MAAAA;AAAAA,cACP,KAAK;AACJ,uBAAOurG,MAAM6C,GAAGpL;AAAAA,cACjB,KAAK;AACJ,uBAAOuI,MAAM8C,GAAGrL;AAAAA,cACjB,KAAK;AACJ,uBAAOuI,MAAM+C,GAAGtL;AAAAA,cACjB,KAAK;AACJ,uBAAOuI,MAAMgD,GAAGvL;AAAAA,cACjB,KAAK;AACJ,uBAAOuI,MAAMiD,GAAGxL;AAAAA,cACjB,KAAK;AACJ,uBAAOuI,MAAM6N,GAAGpW;AAAAA,cACjB,KAAK;AACJ,uBAAOuI,MAAM8N,GAAGrW;AAAAA,YAAAA;AAAAA,UAGjB,CAEF;AAAA;AAAA,QACD,KAAK;AACJsH,gBAAMe,OAAOE,MAAMa;AAEnB,cAAIsW,gBAAgB,cAAc;AACjCpY,kBAAMK,aAAaxlG,MAAM4K,MAAMnG;UACrC,OAAY;AACN5J,kBAAMmF,MAAM4K,MAAMxG,OAAW,IAAA;AAC7B,gBAAIvJ,OAAQ;AAAGA,oBAAM;AACrBsqG,kBAAMO,YAAY,CAAC7qG,GAAAA;AACnBsqG,kBAAMmH,WAAWgP,kBAAkBt7G,MAAM4K,KAAAA,EAAO6wG;AAAAA,UAChD;AACD;AAAA,QACD,KAAK;AACJtW,gBAAMe,OAAOE,MAAMc;AACnB/B,gBAAMuB,UAAU1mG,MAAM4K,MAAMqJ,SAAAA,IAAa;AAEzC,cAAIupG,cAAc,cAAc;AAC/BrY,kBAAMK,aAAaxlG,MAAM4K,MAAMnG,QACrC;AAAA,UAAA,OAAY;AACN5J,kBAAMmF,MAAM4K,MAAMxG,OAAAA,IAAW;AAC7B,gBAAIvJ,OAAAA;AAAWA,oBAAM;AACrBsqG,kBAAMO,YAAY,CAAC7qG,GACnBsqG;AAAAA,kBAAMmH,WAAWgP,kBAAkBt7G,MAAM4K,OAAO6wG;AAAAA,UAChD;AACD;AAAA;AAGF,UAAI1a,QAAQ,IAAIlhG,KAAK,MAAM,GAAG,CAAA;AAC9B,YAAM49G,UAAUv7F,KAAK7H,cAAc,iCACnC;AAAA,UAAGojG,YAAY,MAAK;AACnB1c,gBAAQ7+E,KAAK7H,cAAc,sCAAwCX,EAAAA;AAAAA,MACvE,WAAa+jG,YAAY,SAAS;AAC9BtY,cAAM70E,QAAQ9jB,KAAK5C,IAAI,GAAGsY,KAAK7H,cAAc,qCAAuCX,EAAAA,KAAAA;AAAAA,MACpF;AAED,aAAO,EAACyrF,OAAOpE,MAAAA;AAAAA,IACf,GACD2c,OAAO,WAAA;AAAA,IACN;AAGF,aAASC,eAAez7F,MAAMqmF,MAAM1rG;AACnC++G,sBAAgB15F,MAAMqmF;AACtBsT,uBAAiB35F,MAAMqmF,MAAM1rG,MAC7Bo/G;AAAAA,wBAAkB/5F,MAAMqmF,MAAM1rG;AAC9B6/G,uBAAiBx6F,MAAMqmF,MAAM1rG,MAC7BggH;AAAAA,kBAAY36F,MAAMqmF,MAAM1rG,MAAAA;AAAAA,IACxB;AACD7B,IAAAA,WAAU4jD,YAAY,WAAe,IAAA,EACpCn8C,QAAQ,SAAU+8C,KAAAA;AACjB,UAAIA,IAAI74B,MAAM;AACb,YAAIi3F,MAAM5iH,WAAU4jD,YAAY;AAChC,YAAIj4B,OAAOi3F,IAAIC,UAAUr+D,IAAI74B,IAC7B;AAAA,YAAIpoB,OAAOq/G,IAAIE,YAAYn3F;AAC3BA,aAAKhpB,MAAMod,UAAU;AACrB,eAAOxc;AAAAA,MACP;AACD,UAAIw/G,MAAM/iH,WAAU8nB,OAAOC;AAE3B,aAAO;AAAA;AAAA;AAAA,4BAGkBg7F,IAAI7kD,YAAAA;AAAAA,4BACJ6kD,IAAI5kD,YAAAA;AAAAA,6BACH4kD,IAAI1kD,aACH0kD;AAAAA,8BAAAA,IAAIzkD;6BACLykD,IAAIxkD,aAAAA;AAAAA,+BACFwkD,IAAI3kD,eACN2kD;AAAAA,6BAAAA,IAAIvkD,aAOJukD;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,6BAAAA,IAAItkD;8BACHskD,IAAIrkD,gBAAAA;AAAAA,+BACHqkD,IAAIpkD,iBACLokD;AAAAA,8BAAAA,IAAInkD;;;;;;8FAM4DmkD,IAAI/jD,kBAAkB,CACtB+jD,CAAAA;AAAAA,8FAAAA,IAAI/jD,kBAAkB,CACtB+jD,CAAAA;AAAAA,8FAAAA,IAAI/jD,kBAAkB,CACtB+jD,CAAAA;AAAAA,8FAAAA,IAAI/jD,kBAAkB,CACtB+jD,CAAAA;AAAAA,8FAAAA,IAAI/jD,kBAAkB,CAAA,CAAA;AAAA,8FACtB+jD,IAAI/jD,kBAAkB,CAAA,CAAA;AAAA,8FACtB+jD,IAAI/jD,kBAAkB,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAmBzG+jD,IAAIjkD,WAGeikD;AAAAA;AAAAA;AAAAA,8BAAAA,IAAI7kD,YACJ6kD;AAAAA,8BAAAA,IAAI/kD;2BACP+kD,IAAIlkD,cAAAA;AAAAA;AAAAA;AAAAA;AAAAA,+EAIgDkkD,IAAIhlD,4BAWhF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,GAGDilD,iBAAiB,SAAU97F,MAAMxI,OAAO7c,QAAAA;AACvC7B,MAAAA,WAAU4jD,YAAY,WAAA,EAAaq/D,MAAM,EAAErzG,OAAO/N,OAAMuB,YAAYyM,KAAKhO,OAAMwB,SAAAA;AAC/E,eAAS6I,KAAKgb,OAAAA;AACbA,QAAAA,MAAKnK,UAAUtZ,IAAI;MACnB;AACD,eAASy/G,KAAKh8F,OAAAA;AACbA,QAAAA,MAAKnK,UAAU6X,OAAO;MACtB;AACD,eAASuuF,qBAAqBzkG,QAC7B;AAAA,cAAM6kF,UAASr8E,KAAK7H,cAAc,yBAClC;AAAA,YAAIX,WAAU,UAAU;AACvBwkG,eAAK3f,OACV;AAAA,QAAA,OAAW;AACNr3F,eAAKq3F;QACL;AAAA,MACD;AAED,eAAS6f,6BAA6B1kG,QAAAA;AACrC,cAAM+lB,QAAQ,EACb4+E,QAAQn8F,KAAK7H,cAAc,8BAC3BikG,GAAAA,SAASp8F,KAAK7H,cAAc,+BAAA,GAC5BkkG,QAAQr8F,KAAK7H,cAAc,8BAE5B,EAAA;AAAA,gBAAQX;UACP,KAAK;AACJxS,iBAAKu4B,MAAM4+E,MAAAA;AACXn3G,iBAAKu4B,MAAM6+E,OAAAA;AACXp3G,iBAAKu4B,MAAM8+E;AACX;AAAA,UACD,KAAK;AACJL,iBAAKz+E,MAAM4+E;AACXn3G,iBAAKu4B,MAAM6+E,OACXp3G;AAAAA,iBAAKu4B,MAAM8+E,MACX;AAAA;AAAA,UACD,KAAK;AACJr3G,iBAAKu4B,MAAM4+E,MACXH;AAAAA,iBAAKz+E,MAAM6+E,OAAAA;AACXp3G,iBAAKu4B,MAAM8+E,MAAAA;AACX;AAAA,UACD,KAAK;AACJr3G,iBAAKu4B,MAAM4+E,MAAAA;AACXn3G,iBAAKu4B,MAAM6+E;AACXJ,iBAAKz+E,MAAM8+E;AACX;AAAA,QAGF;AAAA,MAAA;AAED,eAASC,sBAAsB9kG,QAAAA;AAC9B,cAAM+lB,QAAQ,EACboiE,OAAO3/E,KAAK7H,cAAc,yDAC1B8uE,GAAAA,IAAIjnE,KAAK7H,cAAc,sDAAA,EAAA;AAExB,gBAAQX,QAAAA;AAAAA,UACP,KAAK;AACJxS,iBAAKu4B,MAAMoiE,KACX36F;AAAAA,iBAAKu4B,MAAM0pD,EACX;AAAA;AAAA,UACD,KAAK;AACJ+0B,iBAAKz+E,MAAMoiE,KAAAA;AACX36F,iBAAKu4B,MAAM0pD,EAAAA;AACX;AAAA,UACD,KAAK;AACJjiF,iBAAKu4B,MAAMoiE;AACXqc,iBAAKz+E,MAAM0pD;AACX;AAAA,QAEF;AAAA,MAAA;AAGDjnE,WAAK7H,cAAc,iCAAA,EAAmCid,iBAAiB,UAAU;AAChF6mF,6BAAqB9iH,KAAKqe;MAC9B,CAGGwI;AAAAA,WAAK7H,cAAc,gEAAkEid,EAAAA,iBAAiB,UAAU,WAAA;AAC/G8mF,qCAA6B/iH,KAAKqe,KAAAA;AAAAA,MACtC;AAGGwI,WAAK7H,cAAc,yDAAyDid,iBAAiB,UAAU,WACtGknF;AAAAA,8BAAsBnjH,KAAKqe,KAC/B;AAAA,MAAA,CAAA;AAEG1e,MAAAA,WAAU8mB,UAAU28F,iBAAiB;AAAA,IACrC,GACDn7D,cAAc,WAAY;AAAA,IAAA,GAC1BvE,WAAW,SAAU78B,MAAMxI,OAAO7X,IACjC;AAAA,UAAI68G,KAAK1jH,WAAU4jD,YAAY,WAC/B;AAAA,UAAA,CAAK5jD,WAAU8mB,UAAU28F;AACxBC,WAAGV,gBAAgB97F,MAAMxI,OAAO7X,EACjCqgB;AAAAA,WAAK2jB,OAAQhkC,CAAAA,GAAGsjG;AAEhBjjF,WAAKy8F,UAAUtjH,KAAK69G,uBAAuBr3G,EAAAA;AAE3C,UAAIsiD,KAAKu6D,GAAGT;AACZ95D,SAAGv5C,QAAQ/I,GAAGzD;AACd+lD,SAAGt5C,MAAMhJ,GAAGqD;AAEZ,UAAIrD,GAAGsjG,OAAO;AACb,cAAMyZ,WAAWnI,SAAS50G,GAAGsjG,KAC7BwY;AAAAA,uBAAez7F,MAAM08F,SAASrZ,aAAa1jG,EAC3C;AAAA,cAAMg9G,YAAY3D,kBAAkB0D,UAAU/8G,GAAGqD,SACjDgd;AAAAA,aAAK7H,cAAc,iCAAmCX,EAAAA,QAAQmlG;AAC9D,YAAGA,cAAc,UAAS;AACzB,cAAIC;AACJ,kBAAQF,SAASrZ,YAAYW,MAAAA;AAAAA,YAC5B,KAAKE,MAAMK;AACVqY,2BAAa;AACb;AAAA,YACD,KAAK1Y,MAAMY;AACV8X,2BAAa;AACb;AAAA,YACD,KAAK1Y,MAAMa;AACV6X,2BAAa;AACb;AAAA,YACD,KAAK1Y,MAAMc;AACV4X,2BAAa;AACb;AAAA,UAAA;AAEF,cAAGA,YAAW;AACb58F,iBAAK7H,cAAc,iCAAiCX,QAAQolG;AAC5D58F,iBAAK7H,cAAc,iCAAiC8iG,cAAc,IAAI5mC,MAAM,QAC5E,CAAA;AAAA,UAAA;AAAA,QAED;AAAA,MAEL,OAAQ;AACJonC,uBAAez7F,MAAM,MAAMrgB,EAC3BqgB;AAAAA,aAAK7H,cAAc,iCAAmCX,EAAAA,QAAQ;AAAA,MAC9D;AACDwI,WAAK7H,cAAc,iCAAA,EAAmC8iG,cAAc,IAAI5mC,MAAM;IAE9E,GACD13B,WAAW,SAAU38B,MAAMrgB,IAAAA;AAE1B,UAAIqgB,CAAAA,KAAKy8F,WAAWz8F,KAAK7H,cAAc,mCAAmCX,UAAU,SAAS;AAC5F,YAAIyqC,KAAKnpD,WAAU4jD,YAAY,aAAaq/D;AAC5C,YAAIc,eAAe,CAAA;AAEnB,YAAIC,cAAcC,eAAAA;AAElBD,oBAAYrgE,SAASogE;AACrB56D,WAAGv5C,QAAQm0G,aAAa3gH;AACxB,cAAMqzD,UAAUvvC,KAAK7H,cAAc,iCAAmCX,EAAAA;AACtE,cAAMwlG,aAAa9B,YAAY3rD,SAAStN,IAAIjiC,IAAAA;AAC5CrgB,WAAGsjG,QAAQ,IAAIiB,MAAM8Y,WAAW/Z,OAAOxxF,SAAWyR,EAAAA,QAAQ,UAAU,EACpE++B;AAAAA,WAAGt5C,MAAMq0G,WAAWne;AAEpBl/F,WAAGqlB,WAAW1a,KAAK8D,OAAOyuG,aAAa1gH,WAAW0gH,aAAa3gH,cAAc;AAE7E,YAAI+lD,GAAGg7D,QAAQ;AACdt9G,aAAGzD,aAAa,IAAIyB,KAAKskD,GAAGv5C,KAAAA;AAC5B/I,aAAGw3G,cAAc,IAAIx5G,KAAKskD,GAAGv5C;AAC7Bu5C,aAAGg7D,SAAS;AAAA,QACZ;AACAt9G,aAAGw3G,cAAc;AAElBx3G,WAAGqD,YAAYi/C,GAAGt5C;AAAAA,MACtB,OAAQ;AACJhJ,WAAGsjG,QAAQtjG,GAAGsjG,QAAQ;AACtBtjG,WAAGqD,YAAYrD,GAAGxD;AAAAA,MAClB;AAED,aAAOwD,GAAGsjG;AAAAA,IACV,GAEDzvE,OAAO,SAAUxT,MAAAA;AAAAA,IAChB,EAGF;AAAA,aAAS+8F;AACR,UAAID,cAAchkH,WAAUyjD,YAAY,MAAA;AACxC,WAAKugE,aAAa;AACjBA,sBAAcI,sBAAsB;MACpC;AACD,UAAA,CAAKJ,aAAa;AACjBA,sBAAcI,sBAAsB,eACpC;AAAA,MAAA;AAGD,UAAKJ,CAAAA,aAAa;AACjB,cAAM,IAAI1xG,MAAM,CAAC,iLAChB,yLACA,8DACA,IACA,0CACA,gEAAA,EACCnC,KAAK,IACP,CAAA;AAAA,MAAA;AAED,aAAO6zG;AAAAA,IACP;AAED,aAASI,sBAAsB/8G,MAAAA;AAC9B,eAAS7C,IAAI,GAAGA,IAAIxE,WAAU+B,OAAOg4B,SAAS72B,SAASuB,QAAQD,KAAK;AACnE,YAAIkC,UAAU1G,WAAU+B,OAAOg4B,SAAS72B,SAASsB,CAAAA;AACjD,YAAIkC,QAAQW,SAASA,MAAM;AAC1B,iBAAOrH,WAAUyjD,YAAY/8C,QAAQ+T,IACrC;AAAA,QAAA;AAAA,MACD;AACD,aAAO;AAAA,IACP;AAAA,EAEF;ACvnCe,WAAQ4pG,iBAACrkH,YAAAA;AAExBA,IAAAA,WAAU+B,OAAOuiH,8BAA8B;AAC/CtkH,IAAAA,WAAU+B,OAAOk+G,qBAAqB,CAAC,GAAE,GAAE,GAAE,GAAE,CAC/CjgH;AAAAA,IAAAA,WAAU4jD,YAAY,WAAe,IAAA,EACpCi/D,WAAY,SAAS37F;AACpB,UAAWA,OAAAA,QAAQ,UAAS;AAC3B,YAAInhB,UAAU/F,WAAU8mB,UAAUzH,cAAc,IAAI6H;AACpD,YAAInhB,CAAAA,SAAQ;AAGXA,oBAAU7F,SAAS0kB,eAAesC,IAClC;AAAA,QAAA;AACDA,eAAOnhB;AAAAA,MACP;AACD,UAAImhB,KAAKvkB,MAAMod,WAAW;AACzBmH,aAAKvkB,MAAMod,UAAU;AACtB,aAAOmH;AAAAA,IACP,GACD47F,aAAa,SAAS57F,MACrB;AAAA,aAAOA,KAAKq9F,aAAaC,aAAat9F,IAGtC;AAAA,eAASs9F,aAAahsF,GACrB;AAAA,YAAI5qB,MAAM1N,SAASC,cAAc,QAAQogB;AACzC3S,YAAInN,YAAa+3B,EAAE7zB,UAAU,IAC7B4b,CAAAA;AAAAA,YAAI3S,IAAIrN;AACRqN,cAAM;AACN,eAAO2S;AAAAA,MACP;AAAA,IACD,GACD9Y,QAAO,SAAS+8C,KAAAA;AACf,UAAGA,IAAI74B,MAAK;AACX,YAAIi3F,MAAM5iH,WAAU4jD,YAAY;AAChC,YAAIj4B,OAAOi3F,IAAIC,UAAUr+D,IAAI74B;AAC7B,YAAIpoB,OAAOq/G,IAAIE,YAAYn3F;AAC3BA,aAAKhpB,MAAMod,UAAU;AACrB,eAAOxc;AAAAA,MACP;AACD,UAAIw/G,MAAM/iH,WAAU8nB,OAAOC;AAC3B,aAAO,6JAGsFg7F,IAAIpmD,mBAAiB,yGACrBomD,IAAInmD,oBAAkB,mHACZmmD,IAAIlmD,qBAAmB,0GAChCkmD,IAAIjmD,oBAAkB,sOAMvBimD,IAAIhmD,wBAAsB,4FAC/BgmD,IAAI/lD,wBAAsB,gHACb+lD,IAAI9lD,yBAAuB,uFAG3G8lD,IAAI7lD,cAAY,4FACtB6lD,IAAI5lD,yBAAuB,wJAGgE4lD,IAAI/jD,kBAAkB,KAAG,+GAC7B+jD,IAAI/jD,kBAAkB,CAAA,IAAG,wHACrB+jD,IAAI/jD,kBAAkB,CAAA,IAAG,+GAC7B+jD,IAAI/jD,kBAAkB,CAAG,IAAA,wHACrB+jD,IAAI/jD,kBAAkB,CAAG,IAAA,+GAC7B+jD,IAAI/jD,kBAAkB,KAAG,wHACrB+jD,IAAI/jD,kBAAkB,CAAA,IAAG,mMAKH+jD,IAAI3lD,0BAAwB,4FACnE2lD,IAAIzlD,wBAAsB,8FACxBylD,IAAIxlD,0BAAwB,mJACkBwlD,IAAI1lD,2BAAyB,qJAI9Hr9D,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CAAA,IAC9D,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,KACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,KACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CACpD,IAAA,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CACpD,IAAA,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CAAA,IACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CAAA,IACrD,cACAg3E,IAAIvlD,kCACL,+FACqFulD,IAAItlD,iCAA+B,iMAGDslD,IAAIhmD,wBAAsB,2FACjEgmD,IAAInlD,uBAAqB,0EAGzEmlD,IAAIhkD,oBAAoB,CAAA,IACvD,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,wBAAsBgkD,IAAIhkD,oBAAoB,MAC9C,wBAAsBgkD,IAAIhkD,oBAAoB,EAAA,IAC/C,cACAgkD,IAAIllD,oBACL,iJACgIklD,IAAIrlD,oBAAkB,2IAGtH19D,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CAC9D,IAAA,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CAAA,IACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CAAA,IACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,KACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,KACpD,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CACpD,IAAA,uBAAqB/rC,WAAU8nB,OAAOtkB,KAAKuoC,SAAS,CACrD,IAAA,cACAg3E,IAAIplD,mBACJ,4DACgColD,IAAIhkD,oBAAoB,CACvD,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAAA,IAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,KAC7C,uBAAqBgkD,IAAIhkD,oBAAoB,CAC7C,IAAA,wBAAsBgkD,IAAIhkD,oBAAoB,MAC9C,wBAAsBgkD,IAAIhkD,oBAAoB,EAC/C,IAAA,sLAM+EgkD,IAAIjlD,mBAAiB,0FAC5BilD,IAAI/kD,oBAAkB,4FACb+kD,IAAIhlD,+BAA6B,kFAC1CglD,IAAI9kD,oBAAkB,kFACvBj+D,WAAU+B,OAAOmgH,qBAAmB;AAAA,IAKjH,GACDe,KAAK,CAAE,GACPwB,gBAAgB,SAAS92G,KAAK8M,MAAMiE,OACnC;AAAA,UAAI2qB,MAAM17B,IAAI8M,IAAAA;AACd,WAAI4uB;AAAK,eAAO;AAChB,UAAGA,IAAInF;AAAU,eAAOmF;AAExB,UAAGA,IAAI5kC,QAAO;AACb,iBAAQD,IAAE,GAAGA,IAAI6kC,IAAI5kC,QAAQD,KAAI;AAChC,cAAG6kC,IAAI7kC,CAAAA,EAAGka,SAASA;AAClB,mBAAO2qB,IAAI7kC,CAAAA;AAAAA,QACZ;AAAA,MACD;AAAA,IACD,GACDkgH,iBAAiB,SAAS/2G,KAAK8M,MAAMo+E,cAAAA;AACpC,UAAIxvD,MAAM17B,IAAI8M;AACd,UAAI4uB,CAAAA;AAAK,eAAO;AAChB,UAAGA,IAAI5kC,QAAO;AACb,YAAGo0F,cAAY;AACd,cAAIjwF,MAAM;AACV,mBAASpE,IAAI,GAAGA,IAAI6kC,IAAI5kC,QAAQD;AAC/B,gBAAI6kC,IAAI7kC,GAAGohD;AAASh9C,kBAAI1E,KAAKmlC,IAAI7kC,GAAGka,KAErC;AAAA,iBAAO9V;AAAAA,QACX,OAAQ;AACJ,mBAASpE,IAAI,GAAGA,IAAI6kC,IAAI5kC,QAAQD;AAC/B,gBAAI6kC,IAAI7kC,CAAAA,EAAGohD;AAAS,qBAAOvc,IAAI7kC,CAAGka,EAAAA;AAAAA,QACnC;AAAA,MACD;AAED,UAAG2qB,IAAI3qB;AACN,eAAA,CAAQm6E,eAAcxvD,IAAI3qB,QAAQ,CAAC2qB,IAAI3qB;IACxC,GAEDimG,yBAAyB,SAASh3G,KAAK8M,MAAAA;AACtC,UAAIiE,QAAQ1e,WAAU4jD,YAAY,WAAA,EAAa8gE,gBAAgB/2G,KAAK8M,IAAAA;AACpE,aAASiE,QAAQ,KAAM;AAAA,IACvB,GAEDkmG,iBAAiB,SAASj3G,KAAK8M,MAAMiE,OACpC;AAAA,UAAI2qB,MAAM17B,IAAI8M,IAAAA;AACd,WAAI4uB;AAAK;AAET,UAAGA,IAAI5uB,QAAQA,MAAK;AACnB4uB,YAAI3qB,QAAQA;AAAAA,MACf,WAAW2qB,IAAI5kC,QAAO;AACnB,YAAIogH,aAAoBnmG,OAAAA,SAAS;AACjC,iBAASla,IAAI,GAAGA,IAAI6kC,IAAI5kC,QAAQD;AAC/B,cAAIqgH,cAAcx7E,IAAI7kC,CAAGka,EAAAA,SAASA,OAAM;AACvC2qB,gBAAI7kC,CAAGohD,EAAAA,UAAUi/D,eAAenmG,MAAM2qB,IAAI7kC,GAAGka,KAAWA,IAAAA,CAAAA,CAAAA;AAAAA,UACxD;AAAA,MACF;AAAA,IACD,GAEDskG,iBAAgB,SAAS97F,MAAMxI,OAAO7X,IAAAA;AACrC,UAAIwJ,QAAQrQ,WAAU4jD,YAAY,WAClC;AAAA,UAAIC,YAAYxzC,MAAMq0G;AACtB,UAAI3gE,YAAY1zC,MAAMu0G;AACtB5kH,MAAAA,WAAU4jD,YAAY,WAAaq/D,EAAAA,MAAM,EAACrzG,OAAM/I,GAAGzD,YAAYyM,KAAIhJ,GAAGqD,UAEtE;AAAA,UAAI46G,kBAAkB9kH,WAAUwD,KAAK2qC,YAAYnuC,WAAU+B,OAAOg9G,aAAa,OAAO;AACtF,UAAIgG,WAAW,SAASA,WACvB;AAAA,YAAIvhH,OAAOshH,gBAAgBC;AAC3B,YAAI/kH,WAAU+B,OAAOi+G;AACpBx8G,iBAAOxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG;AACpC,eAAOA;AAAAA,MACV;AAEE,UAAIwhH,WAAWhlH,WAAUwD,KAAK0qC,YAAYluC,WAAU+B,OAAOg9G;AAE3D,UAAIn8G,MAAMskB,KAAKQ,qBAAqB,MAAA,EAAQ;AAC5C,UAAI/Z,MAAM,CAAA;AAEV,eAASs3G,aAAaC,MAAAA;AACrB,iBAAS1gH,KAAI,GAAGA,KAAI0gH,KAAKzgH,QAAQD,MAAK;AACrC,cAAIszF,MAAMotB,KAAK1gH,EAEf;AAAA,cAAGszF,IAAIr9E,MAAK;AACX,gBAAI9M,CAAAA,IAAImqF,IAAIr9E,IAAM,GAAA;AACjB9M,kBAAImqF,IAAIr9E,IAAAA,IAAQq9E;AAAAA,YAChB,WAAQnqF,IAAImqF,IAAIr9E,MAAMssB,UAAS;AAC/B,kBAAI7f,QAAOvZ,IAAImqF,IAAIr9E,IACnB9M;AAAAA,kBAAImqF,IAAIr9E,IAAAA,IAAQ,CAACyM,OAAM4wE,GAAAA;AAAAA,YAE7B,OAAU;AACJnqF,kBAAImqF,IAAIr9E,IAAMvW,EAAAA,KAAK4zF,GACnB;AAAA,YAAA;AAAA,UAED;AAAA,QACD;AAAA,MACD;AAEDmtB,mBAAariH,IAAI8kB,qBAAqB;AACtCu9F,mBAAariH,IAAI8kB,qBAAqB,QAAA,CAAA;AAEtC,WAAK1nB,WAAU+B,OAAOmgH,oBAAoB;AACzC,YAAID,YAAYjiH,WAAUwD,KAAK0qC,YAAYluC,WAAU+B,OAAOg9G,WAC5D/+G;AAAAA,QAAAA,WAAU+B,OAAOmgH,qBAAqBD,UAAUjiH,WAAUwD,KAAKC,IAAIzD,WAAUsM,aAAAA,GAAgB,IAAI,KACjG,CAAA;AAAA,MAAA;AACDy3C,gBAAUp2C,KAAK,eAAe3N,WAAU+B,OAAOmgH,kBAAAA;AAE/C,UAAIzyD,IAAI,SAASjzC,GAChB;AAAA,eAAOxc,WAAU8mB,UAAUzH,cAAc,IAAI7C,CAAQ,EAAA,KAAA,EAAE7Z,OAAM,CAAA;MAChE;AAEE,eAASwiH;AACR11D,UAAE,gBAAA,EAAkB9sD,MAAMod,UAAU;AACpC0vC,UAAE,iBAAA,EAAmB9sD,MAAMod,UAAU;AACrC0vC,UAAE,kBAAoB9sD,EAAAA,MAAMod,UAAU;AACtC0vC,UAAE,iBAAmB9sD,EAAAA,MAAMod,UAAU;AACrC0vC,UAAE,gBAAgBpvD,KAAKqe,KAAAA,EAAO/b,MAAMod,UAAU;AAC9C/f,QAAAA,WAAUyoD,gBAAAA;AAAAA,MACV;AAED,eAAS28D,gBAAgBpgH;AACxB,YAAIumC,OAAO,CAACsY,UAAUl2C,KAAK,QAC3B03G,CAAAA;AAAAA,kBAAU95E,KAAK,CAAIA,CAAAA,EAAAA,MAAMvmC;AAEzB,eAAOumC,KAAK9mC,SAAS;AAAG8mC,eAAKrnC,KAAK,EAAA;AAClC,YAAIq/F,UAAS;AAEb,YAAI1zF,MAAMy1G,aAAa33G;AAEvB,YAAIkC,OAAO,MAAM;AAChB7K,gBAAM6K,MAAM,IAAIhL,KAAK,MAAM,GAAG;AAC9B0+F,UAAAA,UAAS;AAAA,QACT,WACQ1zF,OAAO,eAAe;AAC9B7K,gBAAM6K,MAAMk1G,SAASlhE,UAAUl2C,KAAK,aAAA,CAAA;AAAA,QACpC,OACI;AACJ3N,UAAAA,WAAUulH,eAAeh6E,KAAKp7B,KAAK,GACnCozF,CAAAA;AAAAA,UAAAA,UAAS/xF,KAAK5C,IAAI,GAAGi1C,UAAUl2C,KAAK;AAEpC,cAAI63G,SAAS;AAmBbxgH,gBAAM6K,MAAM7P,WAAUwD,KAAK,SAAS+nC,KAAKp7B,KAAK,MAAM,IAAItL,KAAKG,MAAM4K,KAAQ2zF,GAAAA,UAASiiB,QAAQ,EAACpiH,YAAY4B,MAAM4K,MAAAA,CAAAA,KAAW5K,MAAM4K;AAAAA,QAChI;AAED,eAAO27B,KAAKp7B,KAAK,OAAO,MAAMozF;AAAAA,MAC9B;AACD,eAAS+hB,aAAa33G,MACrB;AAAA,YAAIkC,MAAMlC,KAAI,KAAA;AACd,YAAGkC,IAAIpL,QAAO;AACb,mBAAQD,KAAG,GAAGA,KAAIqL,IAAIpL,QAAQD,MAAI;AACjC,gBAAGqL,IAAIrL,EAAAA,EAAGohD,SAAQ;AACjB,kBAAG/1C,IAAIrL,EAAGka,EAAAA,SAAS7O,IAAIrL,EAAGka,EAAAA,SAAS,MAAK;AACvC,uBAAO7O,IAAIrL,EAAAA,EAAGka;AAAAA,cACrB,OAAW;AACJ,qBAAIla,IAAE;AACL,yBAAO;AAAA,gBACf,WAAgBA,MAAK,GAAE;AACf,yBAAO;AAAA,gBACf,OAAY;AACJ,yBAAO;AAAA,gBACP;AAAA,cACD;AAAA,YACD;AAAA,UACD;AAAA,QACL,OAAQ;AACJ,cAAGqL,IAAI6O;AACN,mBAAO7O,IAAI6O;AAAAA,QACZ;AACD,eAAO;AAAA,MACP;AACD,eAAS+mG,aAAa93G,MAAK+Q,QAAAA;AAC1B,YAAI7O,MAAMlC,KAAI,KAEd;AAAA,YAAGkC,IAAIpL,QAAO;AACb,cAAIihH,aAAe71G,CAAAA,CAAAA,IAAI,CAAG6O,EAAAA,SAAS7O,IAAI,CAAG6O,EAAAA,SAAS;AACnD,cAAGgnG,YAAW;AACb,qBAAQlhH,KAAG,GAAGA,KAAIqL,IAAIpL,QAAQD,MAAI;AACjC,kBAAGqL,IAAIrL,EAAGka,EAAAA,SAASA;AAClB7O,oBAAIrL,IAAGohD,UAAU;AAAA,YAClB;AAAA,UACN,OAAS;AACJ,gBAAIniB,MAAM;AACV,oBAAO/kB,QAAAA;AAAAA,cACN,KAAK;AACJ+kB,sBAAM;AACN;AAAA,cACD,KAAK;AACJA,sBAAM;AACN;AAAA,cACD;AACCA,sBAAM;AACN;AAAA,YAAA;AAEF5zB,gBAAI4zB,GAAKmiB,EAAAA,UAAU;AAAA,UACnB;AAAA,QACL,OAAQ;AACJ/1C,cAAI6O,QAAQA;AAAAA,QACZ;AAAA,MACD;AAGD1e,MAAAA,WAAU4jD,YAAY,aAAa+hE,mBAAmBP;AACtD,UAAIC,YAAY,EACfjkF,OAAM,SAASmK,MAAMvmC,OACpB;AAAA,YAAI6+C,aAAY7jD,WAAU4jD,YAAY,WAAa8gE,EAAAA;AACnD,YAAIkB,oBAAoB5lH,WAAU4jD,YAAY,WAAa+gE,EAAAA;AAE3D,YAAI9gE,WAAUl2C,KAAK,YAAiB,KAAA,KAAK;AACxC49B,eAAKrnC,KAAKsN,KAAK5C,IAAI,GAAGg3G,kBAAkBj4G,KAAK,aAAA,CAAA,CAAA;AAC7C3I,gBAAM4K,MAAM29B,QAAQsW,WAAUl2C,KAAK,WACxC,CAAA;AAAA,QAAA,OAAW;AACN49B,eAAKrnC,KAAKsN,KAAK5C,IAAI,GAAGg3G,kBAAkBj4G,KAAK;AAC7C49B,eAAKrnC,KAAM2/C,WAAUl2C,KAAK,YAAA,CAAA;AAC1B49B,eAAKrnC,KAAKsN,KAAK5C,IAAI,GAAGg3G,kBAAkBj4G,KAAK,aAAA,CAAA,CAAA;AAC7C,eAAK3N,WAAU+B,OAAO8jH,gBAAe;AACpC7gH,kBAAM4K,MAAM29B,QAAQ;UACpB;AAAA,QACD;AACDvoC,cAAMm/G,SAAS;AAAA,MACf,GACDzlB,MAAK,SAASnzD,MAAMvmC,OAAAA;AACnB,YAAI6+C,aAAY7jD,WAAU4jD,YAAY,WAAa8gE,EAAAA;AACnD,YAAIkB,oBAAoB5lH,WAAU4jD,YAAY,WAAA,EAAa+gE;AAE3Dp5E,aAAKrnC,KAAKsN,KAAK5C,IAAI,GAAGg3G,kBAAkBj4G,KAAK;AAC7C49B,aAAKrnC,KAAK;AACVqnC,aAAKrnC,KAAK;AACV,YAAIsQ,IAAI,CAER;AAAA,YAAI60B,MAAMwa,WAAUl2C,KAAK,YAAY,IAErC;AAAA,YAAI9N,MAAMmF,MAAM4K,MAAMxG,OACtB;AAAA,YAAI08G,eAAe;AAEnB,iBAASthH,KAAI,GAAGA,KAAI6kC,IAAI5kC,QAAQD,MAAI;AACnCgQ,YAAEtQ,KAAKmlC,IAAI7kC;AACXshH,yBAAeA,gBAAgBz8E,IAAI7kC,EAAM3E,KAAAA;AAAAA,QACzC;AACD,YAAA,CAAK2U,EAAE/P,QAAO;AACb+P,YAAEtQ,KAAKrE,GAAAA;AACPimH,yBAAe;AAAA,QACf;AACDtxG,UAAEowB,KAAAA;AAGF,aAAK5kC,WAAU+B,OAAO8jH,gBAAe;AACpC7gH,gBAAM4K,QAAQ5P,WAAUwD,KAAK6B,WAAWL,MAAM4K;AAC9C5K,gBAAMm/G,SAAS;AAAA,QACpB,WAAW,CAAK2B,cAAa;AACxB9lH,UAAAA,WAAU+lH,mBAAmB/gH,MAAM4K,OAAO4E,GAAG,GAAG;AAChDxP,gBAAMm/G,SAAS;AAAA,QACf;AAED54E,aAAKrnC,KAAKsQ,EAAErE,KAAK,GACjB,CAAA;AAAA,MAAA,GACDtQ,KAAI,SAAS0rC,MAAAA;AACZ,YAAIsY,aAAY7jD,WAAU4jD,YAAY,WAAA,EAAa8gE;AACnD,YAAIkB,oBAAoB5lH,WAAU4jD,YAAY,WAAA,EAAa+gE;AAE3D,YAAI9gE,WAAUl2C,KAAK,UAAA,KAAe,KAAK;AACtC49B,eAAKrnC,KAAKsN,KAAK5C,IAAI,GAAGg3G,kBAAkBj4G,KAAK,WAC7C,CAAA,CAAA;AAAA,QAAA,OACI;AACJ49B,eAAKrnC,KAAK;AACVqnC,eAAKrnC,KAAK;AACVqnC,eAAKrnC,KAAK,EACVqnC;AAAAA,eAAKrnC,KAAK,EACVqnC;AAAAA,eAAKrnC,KAAKlE,WAAU+B,OAAOk+G,mBAAmB9vG,KAAK,GAAA,CAAA;AACnDo7B,eAAK93B,OAAO,GAAG,CACf;AAAA,QAAA;AAAA,MACD,GACD+H,MAAK,SAAS+vB,MAAMvmC,OACnB;AAAA,YAAI6+C,aAAY7jD,WAAU4jD,YAAY,WAAa8gE,EAAAA;AAEnD,YAAI7gE,WAAUl2C,KAAK,gBAAgB,KAAK;AACvC49B,eAAKrnC,KAAK;AACVc,gBAAM4K,MAAM69B,SAAS,CACrBzoC;AAAAA,gBAAM4K,MAAM29B,QAAQsW,WAAUl2C,KAAK,UAAA,CAAA;AACnC3I,gBAAM4K,MAAM69B,SAASoW,WAAUl2C,KAAK,YAAA,CAAA;AAAA,QAEzC,OAAW;AACN49B,eAAKrnC,KAAK,GAAA;AACVqnC,eAAKrnC,KAAK2/C,WAAUl2C,KAAK,WACzB49B,CAAAA;AAAAA,eAAKrnC,KAAK2/C,WAAUl2C,KAAK,YACzB3I,CAAAA;AAAAA,gBAAM4K,MAAM29B,QAAQ,CAAA;AACpBvoC,gBAAM4K,MAAM69B,SAASoW,WAAUl2C,KAAK,aAAA,CAAA;AAAA,QACpC;AACD3I,cAAMm/G,SAAS;AAAA,MACf,EAAA;AAEF,UAAI6B,YAAY,EACftnB,MAAK,SAASnzD,MAAMvmC,OACnB;AAAA,YAAI++C,aAAY/jD,WAAU4jD,YAAY,aAAaghE;AACnD7gE,QAAAA,WAAUp2C,KAAK,cAAc49B,KAAK,CAElC,CAAA;AAAA,YAAI/2B,IAAI+2B,KAAK,CAAA,EAAG5lC,MAAM,GACtB;AAAA,YAAIsO,IAAI,CAAA;AACR,iBAASzP,KAAI,GAAGA,KAAIgQ,EAAE/P,QAAQD;AAAKyP,YAAEO,EAAEhQ,EAAAA,CAAAA,IAAM;AAE7Cu/C,QAAAA,WAAUp2C,KAAK,YAAYsG,CAAAA;AAAAA,MAI3B,GACDmtB,OAAM,SAASmK,MAAMvmC,OACpB;AAAA,YAAI++C,aAAY/jD,WAAU4jD,YAAY,WAAaghE,EAAAA;AAEnD,YAAIr5E,KAAK,CAAA,MAAO,IAAI;AACnBwY,UAAAA,WAAUp2C,KAAK,cAAc;AAC7Bo2C,UAAAA,WAAUp2C,KAAK,eAAe49B,KAAK,CAAA,CAAA;AACnCwY,UAAAA,WAAUp2C,KAAK,aAAa3I,MAAM4K,MAAMnG;QAC7C,OAAW;AACNs6C,UAAAA,WAAUp2C,KAAK,cAAc,GAC7Bo2C;AAAAA,UAAAA,WAAUp2C,KAAK,gBAAgB49B,KAAK,CACpCwY,CAAAA;AAAAA,UAAAA,WAAUp2C,KAAK,eAAgB49B,KAAK;AACpCwY,UAAAA,WAAUp2C,KAAK,cAAc49B,KAAK;QAClC;AAAA,MACD,GACD1rC,KAAI,SAAS0rC,MAAMvmC;AAClB,YAAI++C,aAAY/jD,WAAU4jD,YAAY,aAAaghE;AACnD7gE,QAAAA,WAAUp2C,KAAK,YAAY,GAAA;AAC3Bo2C,QAAAA,WAAUp2C,KAAK,aAAa49B,KAAK,CAAA,CAAA;AAAA,MACjC,GACD/vB,MAAK,SAAS+vB,MAAMvmC,OACnB;AAAA,YAAI++C,aAAY/jD,WAAU4jD,YAAY,WAAaghE,EAAAA;AAEnD,YAAIr5E,KAAK,CAAA,MAAO,IAAI;AACnBwY,UAAAA,WAAUp2C,KAAK,aAAa,GAAA;AAC5Bo2C,UAAAA,WAAUp2C,KAAK,YAAY3I,MAAM4K,MAAMnG;AACvCs6C,UAAAA,WAAUp2C,KAAK,cAAc3I,MAAM4K,MAAMqJ,SAE9C,CAAA;AAAA,QAAA,OAAW;AACN8qC,UAAAA,WAAUp2C,KAAK,aAAa,GAC5Bo2C;AAAAA,UAAAA,WAAUp2C,KAAK,cAAc49B,KAAK,CAClCwY,CAAAA;AAAAA,UAAAA,WAAUp2C,KAAK,aAAa49B,KAAK;AACjCwY,UAAAA,WAAUp2C,KAAK,eAAe3I,MAAM4K,MAAMqJ,SAC1C,CAAA;AAAA,QAAA;AAAA,MACD;AAGF,eAASgtG,gBAAgB16E,MAAMvmC,OAC9B;AAAA,YAAI++C,aAAY/jD,WAAU4jD,YAAY,WAAaghE,EAAAA;AACnD,YAAI9yG,OAAOy5B,KAAK5lC,MAAM,GACtB4lC;AAAAA,eAAOz5B,KAAK,CAAGnM,EAAAA,MAAM,GACrBqgH;AAAAA,kBAAUz6E,KAAK,CAAIA,CAAAA,EAAAA,MAAMvmC;AAEzB,gBAAQ8M,KAAK;UACZ,KAAK;AACJ2zG,yBAAa93G,KAAK;AAClB;AAAA,UACD,KAAK;AACJ83G,yBAAa93G,KAAK;AAElB,gBAAItK,WAAW2B,MAAM6K;AACrB,gBAAI7P,WAAU+B,OAAOi+G,gBAAe;AACnC38G,yBAAWrD,WAAUwD,KAAKC,IAAIJ,UAAW,IAAG;YAC5C;AACD0gD,YAAAA,WAAUp2C,KAAK,eAAeq3G,SAAS3hH;AAEvC;AAAA,UACD;AACCoiH,yBAAa93G,KAAK;AAClBo2C,YAAAA,WAAUp2C,KAAK,oBAAoBmE,KAAK,CAAA,CAAA;AAExC;AAAA;AAGFiyC,QAAAA,WAAUp2C,KAAK,UAAU49B,KAAK;AAG9B,YAAIrkB,QAAOlnB,WAAU4jD,YAAY,WAAA,EAAa6gE,eAAe92G,KAAK,UAAU49B,KAAK,CAAA,CAAA;AACjF,YAAGrkB,MAAKgd,YAAY,UAA8B;AAEjDhd,UAAAA,MAAKi7F,cAAc,IAAI5mC,MAAM,QAC7Br0D,CAAAA;AAAAA,UAAAA,MAAKi7F,cAAc,IAAI+D,WAAW;QACtC,OAAQ;AACJh/F,UAAAA,MAAKi7F,cAAc,IAAI+D,WAAW,OAAA,CAAA;AAAA,QAClC;AAAA,MACD;AAEDlmH,MAAAA,WAAU4jD,YAAY,WAAauiE,EAAAA,mBAAmBF;AAEtD,eAASzhH,IAAI,GAAGA,IAAI5B,IAAIwjH,SAAS3hH,QAAQD,KAAK;AAC7C,YAAIqf,MAAKjhB,IAAIwjH,SAAS5hH,CAAAA;AACtB,gBAAQqf,IAAGpJ,MAAAA;AAAAA,UACV,KAAK;AACJ,gBAAIoJ,IAAGqgB,YAAY,YAAA,CAAargB,IAAG/F,iBAAiB;AACnD+F,cAAAA,IAAG/F,kBAAkB;AACrB+F,cAAAA,IAAGyY,iBAAiB,UAAU6oF,mBACpC;AAAA,YAAA,WAAgBthG,CAAAA,IAAG/F,iBAAgB;AAC7B+F,cAAAA,IAAG/F,kBAAkB;AACrB+F,cAAAA,IAAGyY,iBAAiB,SAAS6oF,mBAAAA;AAAAA,YAC7B;AACD;AAAA,QAAA;AAAA,MAEF;AACDnlH,MAAAA,WAAU8mB,UAAU28F,iBAAiB;AAAA,IACrC,GACD1/D,WAAU,SAAS78B,MAAMxI,OAAO7X,IAAAA;AAC/B,UAAI68G,KAAK1jH,WAAU4jD,YAAY,WAC/B;AAAA,UAAA,CAAK5jD,WAAU8mB,UAAU28F;AACxBC,WAAGV,gBAAgB97F,MAAMxI,OAAO7X,EAAAA;AACjCqgB,WAAK2jB,OAAQhkC,CAAAA,GAAGoD;AAEhBid,WAAKy8F,UAAUtjH,KAAK69G,uBAAuBr3G;AAE3C,UAAIsiD,KAAKu6D,GAAGT;AACZ95D,SAAGv5C,QAAQ/I,GAAGzD;AACd+lD,SAAGt5C,MAAMhJ,GAAGqD;AAEZw5G,SAAG2C;AAEH,UAAI3nG;AACHglG,WAAGyC,iBAAiBznG,OAAOyqC,EAC5B;AAAA,IAAA,GACDtF,WAAU,SAAS38B,MAAMrgB;AACxB,UAAIqgB,KAAK2jB,MAAM;AACd,YAAIse,KAAKnpD,WAAU4jD,YAAY,WAAaq/D,EAAAA;AAC5C,YAAIc,eAAe,CAAA;AAEnB,YAAIC,cAAcC,eAElBD;AAAAA,oBAAYrgE,SAASogE,YACrB56D;AAAAA,WAAGv5C,QAAQm0G,aAAa3gH;AACxByD,WAAGoD,WAAWjK,WAAU4jD,YAAY,WAAA,EAAa+hE,iBAAiBx8D,EAClE;AAAA,YAAIA,GAAGg7D,QAAQ;AACdt9G,aAAGzD,aAAa,IAAIyB,KAAKskD,GAAGv5C,KAC5B/I;AAAAA,aAAGw3G,cAAc,IAAIx5G,KAAKskD,GAAGv5C,KAC7Bu5C;AAAAA,aAAGg7D,SAAS;AAAA,QACZ;AACAt9G,aAAGw3G,cAAc;AAElBx3G,WAAGqD,YAAYi/C,GAAGt5C;AAClBhJ,WAAGkrD,cAAclrD,GAAGoD,SAAStE,MAAM,GAAA,EAAK;MAC3C,OAAS;AACNkB,WAAGoD,WAAWpD,GAAGkrD,cAAc;AAC/BlrD,WAAGqD,YAAYrD,GAAGxD;AAAAA,MAClB;AACD,aAAOwD,GAAGoD;AAAAA,IACV,GACDq8G,aAAa,WAAA;AACZ,UAAIp/F,OAAOq/F,oBAAAA,EAAsBriG;AACjC,aAAOgD,KAAKxmB,WAAWA;AAAAA,IACvB,GACD8lH,WAAW,WAAA;AACV,aAAOD,oBAAsBr/F,EAAAA;AAAAA,IAC7B,GACD2jB,MAAK,WAAA;AACJ,UAAIx6B,QAAQrQ,WAAU4jD,YAAYoF;AAElC,UAAIgsC,OAAO3kF,MAAMm2G;AACjB,UAAIxxB,CAAAA,KAAKnqD;AACRx6B,cAAMg2G,cAAAA;AAAAA,IACP,GACD15B,OAAO;AACN,UAAIt8E,QAAQrQ,WAAU4jD,YAAYoF;AAElC,UAAIgsC,OAAO3kF,MAAMm2G,UAEjB;AAAA,UAAGxxB,KAAKnqD;AACPx6B,cAAMg2G;IACP,GACDA,eAAe;AACd,UAAIh2G,QAAQrQ,WAAU4jD,YAAYoF;AAElC,UAAIgsC,OAAO3kF,MAAMm2G,UAChB3iG,GAAAA,MAAKxT,MAAMi2G,YACZ;AAAA,UAAA,CAAKtxB,KAAKnqD,QAAAA,CAASmqD,KAAK2uB,SAAS;AAChC3uB,aAAKryF,MAAMwO,SAAS;AACpB,YAAG0S,KAAG;AACLA,UAAAA,IAAGlhB,MAAM8jH,qBAAqB;AAC9B5iG,UAAAA,IAAGyiB,YAAY/lC,YAAYP,WAAU8nB,OAAOC,OAAOw0C;AAAAA,QACnD;AAAA,MACJ,OAAS;AACNy4B,aAAKryF,MAAMwO,SAAS;AACpB,YAAG0S,KAAG;AACLA,UAAAA,IAAGlhB,MAAM8jH,qBAAqB;AAC9B5iG,UAAAA,IAAGyiB,YAAY/lC,YAAYP,WAAU8nB,OAAOC,OAAOu0C;AAAAA,QACnD;AAAA,MACD;AACD04B,WAAKnqD,OAAQmqD,CAAAA,KAAKnqD;AAElB7qC,MAAAA,WAAUyoD,gBAAAA;AAAAA,IACV,GACD/tB,OAAM,SAASxT,MACd;AAAA,IAAA,GACDohC,cAAa,SAASphC,MAAM1J,QAAQ3b,QACnC;AAAA,UAAIwO,QAAQrQ,WAAU4jD,YAAYoF;AAClC,UAAIgsC,OAAO3kF,MAAMm2G,UAAAA;AACjB,WAAKxxB,KAAK2uB;AACT3jH,QAAAA,WAAU4jD,YAAYoF,UAAUq9D,cACjC;AAAA,IAAA,EAAA;AAGF,aAASpC,iBACR;AAAA,UAAID,cAAchkH,WAAUyjD,YAAY;AACxC,UAAIugE,CAAAA,aAAY;AACfA,sBAAcI,sBAAsB,MACpC;AAAA,MAAA;AACD,WAAIJ,aAAY;AACfA,sBAAcI,sBAAsB,eAAA;AAAA,MACpC;AAGD,UAAA,CAAKJ,aAAa;AACjB,cAAM,IAAI1xG,MAAM,CAAC,iLACnB,yLACA,8DACA,IACA,0CACA,kEACCnC,KAAK,IAAA,CAAA;AAAA,MACJ;AAED,aAAO6zG;AAAAA,IACR;AAEA,aAASuC,sBAAAA;AACR,UAAIziF,mBAAmB9jC,WAAUyjD,YAAY,WAAA;AAC7C,WAAI3f,kBAAiB;AACpBA,2BAAmBsgF,sBAAsB,WAAA;AAAA,MACzC;AAED,UAAA,CAAKtgF,kBAAkB;AACtB,cAAM,IAAIxxB,MAAM,CAAC,4CACjB,0JACA,wDACF,IACA,0CACA,6BACA,IAAMnC,EAAAA,KAAK;MAET;AAED,aAAO2zB;AAAAA,IACR;AAEA,aAASsgF,sBAAsB/8G,MAAAA;AAC9B,eAAQ7C,IAAI,GAAGA,IAAIxE,WAAU+B,OAAOg4B,SAAS72B,SAASuB,QAAQD,KAAI;AACjE,YAAIkC,UAAU1G,WAAU+B,OAAOg4B,SAAS72B,SAASsB,CACjD;AAAA,YAAGkC,QAAQW,SAASA,MAAK;AACxB,iBAAOrH,WAAUyjD,YAAY/8C,QAAQ+T;QACrC;AAAA,MACD;AACD,aAAO;AAAA,IACR;AAGAza,IAAAA,WAAUs9G,eAAe,CAAA;AACzBt9G,IAAAA,WAAUq9G,oBAAoB,CAAA;AAC9Br9G,IAAAA,WAAU0xD,kBAAkB,SAAS7qD,IAAI09C,MAAAA;AACxC19C,SAAG02G,YAAYh5D;AACflkD,WAAKi9G,aAAaz2G,GAAGzG,EAAMyG,IAAAA;AAC3B,WAAKxG,KAAKg9G,kBAAkBx2G,GAAG0kE,SAAYlrE;AAAAA,aAAKg9G,kBAAkBx2G,GAAG0kE,SAAAA,IAAa,CAAA;AAClFlrE,WAAKg9G,kBAAkBx2G,GAAG0kE,WAAWhnB,IAAQ19C,IAAAA;AAAAA,IAC9C;AACA7G,IAAAA,WAAUw9G,kBAAkB,SAASj5D,MAAMnkD;AAC1C,UAAIq9G,KAAKp9G,KAAKg9G,kBAAkBj9G,GAAAA;AAChC,UAAIq9G;AAAI,eAAOA,GAAGl5D,IAAAA;AAClB,aAAO;AAAA,IACR;AACAvkD,IAAAA,WAAU09G,mBAAmB,SAASt9G;AACrC,aAAQC,KAAKg9G,kBAAkBj9G,GAAAA,KAAO;IACvC;AAEA,aAASu8G,kBAAkBn5G,MAE1B;AAAA,aAAO,IAAIqB,KACVrB,KAAKwV,YACLxV,GAAAA,KAAKyV,YACLzV,KAAKiG,QAAAA,GACLjG,KAAKkJ,SACLlJ,GAAAA,KAAKwK,cACLxK,KAAK6oC,WAAAA,GACL,CAEF;AAAA,IAAA;AAEArsC,IAAAA,WAAUo9G,YAAY,CAAA;AAAA,KACtB;AACC,UAAIO,gBAAgB39G,WAAUwH;AAC9BxH,MAAAA,WAAUwH,WAAW,SAASpE,YAAYC,UAAU8D,MAAM/G,KAAIszC,YAC7D;AAAA,YAAIkqE,QAAQD,cAAclvG,MAAMpO,MAAMiU,SAAAA;AAEtC,YAAIspG,SAAS59G,WAAUmG,SAASy3G,KAAQ,GAAA;AACvC,cAAI/2G,KAAK7G,WAAUmG,SAASy3G,KAAAA;AAE5B,cAAG/2G,GAAGzD,YAAW;AAChByD,eAAGzD,aAAau5G,kBAAkB91G,GAAGzD,UAAAA;AAAAA,UACrC;AACD,cAAGyD,GAAGxD,UAAS;AACdwD,eAAGxD,WAAWs5G,kBAAkB91G,GAAGxD,QACnC;AAAA,UAAA;AACD,cAAIhD,KAAK69G,uBAAuBr3G,EAC/B7G;AAAAA,YAAAA,WAAU0xD,gBAAgB7qD,IAAIA,GAAG4kE,eAAe,GACjD;AAAA,cAAI5kE,GAAGoD;AACNpD,eAAGkrD,cAAclrD,GAAGoD,SAAStE,MAAM,GAAA,EAAK;QACzC;AACD,eAAOi4G;AAAAA,MACT;AAAA,IACC,GAED59G;AAAAA,IAAAA,WAAUiG,YAAY,mBAAmB,SAAS7F,KAAI6zC,QACrD;AAAA,UAAI5zC,KAAKw9G;AAAc;AACvBx9G,WAAKw9G,eAAe;AAEpB,UAAG79G,WAAUs9G,aAAal9G,GAAI,GAAA;AAE7BJ,QAAAA,WAAUs9G,aAAarpE,UAAUj0C,WAAUs9G,aAAal9G;eACjDJ,WAAUs9G,aAAal9G;MAC9B;AAED,UAAGJ,WAAUq9G,kBAAkBj9G,MAAI;AAClCJ,QAAAA,WAAUq9G,kBAAkBppE,MAAUj0C,IAAAA,WAAUq9G,kBAAkBj9G,GAC3DJ;AAAAA,eAAAA,WAAUq9G,kBAAkBj9G,GAAAA;AAAAA,MACnC;AAED,eAASoE,IAAI,GAAGA,IAAInE,KAAK+8G,UAAU34G,QAAQD,KAAK;AAC/C,YAAIs5G,MAAMz9G,KAAK+8G,UAAU54G,CACzB;AAAA,YAAIs5G,IAAIvyC,aAAanrE,KAAI;AACxB09G,cAAIvyC,YAAYt3B;AAChB5zC,eAAK2zC,cAAc8pE,IAAI19G,IAAI6zC,SAAS,MAAM6pE,IAAI19G,GAAGuF,MAAM,KAAK,CAC5D,CAAA;AAAA,QAAA;AAAA,MACD;AAED,eAAQnB,KAAKnE,KAAKi9G,cAAa;AAC9B,YAAIQ,MAAMz9G,KAAKi9G,aAAa94G;AAC5B,YAAGs5G,IAAIvyC,aAAanrE,KAAG;AACtB09G,cAAIvyC,YAAYt3B;AAChB6pE,cAAIC,eAAe;AAAA,QACnB;AAAA,MACD;AAED,UAAIl6F,MAAK7jB,WAAUs9G,aAAarpE,MAAAA;AAChC,UAAGpwB,OAAMA,IAAGk6F,cAAc;AAClBl6F,eAAAA,IAAGk6F;AACVrkG,mBAAW,WAAA;AACV,cAAG1Z,WAAU8gB,YAAW;AACvB,mBAAO;AAAA,UACP;AACD9gB,UAAAA,WAAUiL,UAAU,kBAAkB,CAACgpC,QAAQj0C,WAAUmG,SAAS8tC,MAClE,CAAA,CAAA;AAAA,QAAA,GAAE;MACH;AAEM5zC,aAAAA,KAAKw9G;AAAAA,IACb,CACA79G;AAAAA,IAAAA,WAAUiG,YAAY,gCAAgC,SAAS7F,KAC9D;AAAA,UAAIyG,KAAKxG,KAAK8F,SAAS/F;AACvB,UAAIC,KAAKuxD,kBAAkBxxD,GAAAA,KAAQC,KAAK69G,uBAAuBr3G,EAAAA,KAAOA,GAAGoD,YAAYpD,GAAGoD,YAAY,QAAS;AAC5G7J,QAAAA,MAAKA,IAAGuF,MAAM,GACd;AAAA,YAAIu3G,MAAM78G,KAAK0O,IAAAA;AACf,YAAIwmD,MAAOn1D,IAAG,CAAMA,IAAAA,IAAG,KAAKoR,KAAKI,MAAM/K,GAAG02G,YAAY,GAAA;AAEtD,YAAIJ,MAAM98G,KAAK64C,YAAYryC,EAAAA;AAC3Bs2G,YAAI/8G,KAAK88G;AACTC,YAAI5xC,YAAY1kE,GAAG0kE,aAAanrE,IAAG,CAAA;AACnC,YAAIouB,YAAY+mC;AAChB4nD,YAAI1xC,eAAej9C;AACnB2uF,YAAIlzG,WAAWkzG,IAAIprD,cAAc;AACjC1xD,aAAKmH,SAAS21G;AAEd98G,aAAKqxD,gBAAgByrD,KAAK3uF,YAAY,GAAA;AAAA,MACxC,OAAQ;AACN,YAAI3nB,GAAGoD,YAAY5J,KAAKmpB;AACvBnpB,eAAK+sE,iBAAiBvmE,EACvB;AAAA,YAAIs3G,MAAM99G,KAAKq9G,iBAAiBt9G,GAChC;AAAA,iBAASoE,KAAK25G,KAAK;AAClB,cAAIA,IAAIlvG,eAAezK,CAAAA,GAAI;AAC1BpE,YAAAA,MAAK+9G,IAAI35G,CAAGpE,EAAAA;AACZ,gBAAIC,KAAK8F,SAAS/F;AACjBC,mBAAK+qB,YAAYhrB,KAAI,IAAA;AAAA,UACtB;AAAA,QACD;AAAA,MACD;AACD,aAAO;AAAA,IACR,CAAA;AACAJ,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAIyG;AACpD,UAAIxG,CAAAA,KAAKuxD,kBAAkBxxD,GAAOC,KAAAA,KAAK69G,uBAAuBr3G,EAAI,GAAA;AACjE,YAAI7G,CAAAA,WAAUuzC,QAAQnzC,GAAI,GAAA;AACzByG,aAAGoD,WAAWpD,GAAGkrD,cAAc;AAC/B1xD,eAAKwzC,SAASzzC,KAAIyG;QAClB;AAAA,MACD;AAAA,IACF;AACA7G,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAAIyB,QACpD;AAAA,UAAIxB,KAAKksB;AAAU,eAAO;AAE1B,UAAI1lB,KAAKxG,KAAK8F,SAAS/F,GAAAA;AAEvB,UAAIC,KAAKuxD,kBAAkBxxD,GAAK,GAAA;AAC/B,YAAIA,MAAKA,IAAGuF,MAAM,GAClB;AAAA,YAAIu3G,MAAM78G,KAAK0O;AACf1O,aAAKg1C,cAAc;AAEnB,YAAI8nE,MAAM98G,KAAK64C,YAAYr3C,MAAAA;AAC3Bs7G,YAAI/8G,KAAK88G;AACTC,YAAI5xC,YAAYnrE,IAAG,CACnB;AAAA,YAAIouB,YAAYpuB,IAAG,CAAA;AACnB+8G,YAAI1xC,eAAej9C;AACnB2uF,YAAIlzG,WAAWkzG,IAAIprD,cAAc;AAEjC1xD,aAAKqxD,gBAAgByrD,KAAK3uF,YAAY,GAAA;AACtCnuB,aAAKmH,SAAS21G,GAAAA;AAEd98G,aAAKg1C,cAAc;AAAA,MAErB,OAAQ;AACN,YAAGxuC,GAAGzD,YAAW;AAChByD,aAAGzD,aAAau5G,kBAAkB91G,GAAGzD,UAAAA;AAAAA,QACrC;AACD,YAAGyD,GAAGxD,UAAS;AACdwD,aAAGxD,WAAWs5G,kBAAkB91G,GAAGxD,QACnC;AAAA,QAAA;AAED,YAAIwD,GAAGoD,YAAY5J,KAAKmpB,cAAa;AACpCnpB,eAAK+sE,iBAAiBvmE;QACtB;AACD,YAAIs3G,MAAM99G,KAAKq9G,iBAAiBt9G,GAChC;AAAA,iBAASoE,KAAK25G,KAAK;AAClB,cAAIA,IAAIlvG,eAAezK,CAAI,GAAA;AAAA,mBACnBnE,KAAKi9G,aAAaa,IAAI35G,CAAGpE,EAAAA,EAAAA;AAChCC,iBAAK+qB,YAAY+yF,IAAI35G,GAAGpE,IAAI,IAAA;AAAA,UAC5B;AAAA,QACD;AAAA,eACMC,KAAKg9G,kBAAkBj9G,GAAAA;AAG9B,YAAIg+G,eAAe;AACnB,iBAAS/uG,IAAI,GAAGA,IAAIhP,KAAK0zC,UAAUtvC,QAAQ4K,KAAK;AAC/C,cAAIhP,KAAK0zC,UAAU1kC,CAAAA,EAAGvK,aAAazE,KAAK0B,OAAOwC,eAAoBnE,KAAAA;AAClEg+G,2BAAe;AAAA,QAChB;AACD,aAAKA;AACJ/9G,eAAK4oB,aAAa;AAAA,MACnB;AACD,aAAO;AAAA,IACR;AACAjpB,IAAAA,WAAUiG,YAAY,gBAAgB,SAAS7F,KAAAA;AAC9C,UAAKC,CAAAA,KAAKksB,UAAU;AACnB,YAAI1lB,KAAKxG,KAAK8F,SAAS/F;AACvB,YAAIyG,GAAGoD,YAAapD,CAAAA,GAAG4kE,cAAa;AACnCprE,eAAK+sE,iBAAiBvmE,EACtB;AAAA,QAAA;AAAA,MACD;AACD,aAAO;AAAA,IACR,CACA7G;AAAAA,IAAAA,WAAUiG,YAAY,eAAe,SAAS7F,KAAI0R,MAAM63E,cAAAA;AACvD,UAAI9iF,KAAKxG,KAAK8F,SAAS/F,GAAAA;AACvB,WAAKyG,GAAGoD,YAAY6H,KAAK7H,YAAa5J,CAAAA,KAAKuxD,kBAAkBxxD,GAC5DC;AAAAA,aAAK4oB,aAAa;AACnB,aAAO;AAAA,IACR,CAAA;AACAjpB,IAAAA,WAAUiG,YAAY,kBAAkB,SAAS7F,KAChD;AAAA,UAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,UAAA,CAAKyG,GAAGoD;AACPpD,WAAGoD,WAAWpD,GAAGkrD,cAAclrD,GAAG4kE,eAAe5kE,GAAG0kE,YAAY;AACjE,aAAO;AAAA,IACR,CAAA;AACAvrE,IAAAA,WAAUiG,YAAY,iBAAiB,SAAS7F,KAAAA;AAC/C,UAAIyG,KAAKxG,KAAK8F,SAAS/F,GACvB;AAAA,UAAIyG,GAAGoD,UAAU;AAChB5J,aAAK+sE,iBAAiBvmE;AAEtBxG,aAAK2X,iBAAAA;AAAAA,MACL;AAAA,IACF,CACAhY;AAAAA,IAAAA,WAAUotE,mBAAmB,SAASvmE,IAAAA;AACrC,UAAGA,GAAGzD,YAAW;AAChByD,WAAGzD,aAAau5G,kBAAkB91G,GAAGzD;MACrC;AACD,UAAGyD,GAAGxD,UAAS;AACdwD,WAAGxD,WAAWs5G,kBAAkB91G,GAAGxD,QAAAA;AAAAA,MACnC;AACDwD,SAAG4kE,eAAej6D,KAAKI,OAAO/K,GAAGxD,SAAS+B,QAAAA,IAAYyB,GAAGzD,WAAWgC,aAAa,GACjFyB;AAAAA,SAAGxD,WAAWwD,GAAGqD;AACjB,UAAIrD,GAAGw3G,aAAa;AACnBx3G,WAAGzD,WAAWqqC,SAAS,CAAA;AACvB5mC,WAAGzD,WAAWmqC,QAAQ1mC,GAAGw3G,YAAY50G;AACrC5C,WAAGzD,WAAWqqC,SAAS5mC,GAAGw3G,YAAYplG,SACtCpS,CAAAA;AAAAA,WAAGzD,WAAWy+D,YAAYh7D,GAAGw3G,YAAYrlG,YAEzC,CAAA;AAAA,MAAA;AAAA,IACF;AAEAhZ,IAAAA,WAAU4xD,oBAAoB,SAASxxD,KAAAA;AACtC,aAAOA,IAAGuY,SAAAA,EAAWvG,QAAQ,GAAS,KAAA;AAAA,IACvC;AACApS,IAAAA,WAAUk+G,yBAAyB,SAASr3G,IAAAA;AAC3C,aAAQA,GAAG0kE,aAAa1kE,GAAG0kE,aAAa;AAAA,IACzC;AAEAvrE,IAAAA,WAAUs+G,mBAAmBt+G,WAAU0rB;AACvC1rB,IAAAA,WAAU0rB,eAAe,SAAStrB;AACjC,UAAI0nB,SAASznB,KAAKynB;AAClB,UAAI/d,IAAI/J,WAAU+B,OAAOw8G;AACzB,UAAI13G,KAAKxG,KAAK8F,SAAS/F;AACvB,UAAIo+G,MAAM33G,GAAG0kE;AACb,UAAIkzC,YAAYp+G,KAAKuxD,kBAAkBxxD,GACvC;AAAA,UAAIq+G;AACHD,cAAMp+G,IAAGuF,MAAM,GAAA,EAAK;AAGrB,UAAI+4G,aAAa,SAASt+G,KACzB;AAAA,YAAIyB,SAAQ7B,WAAUmG,SAAS/F,GAC/ByB;AAAAA,QAAAA,OAAMqI,YAAYrI,OAAMwB;AACxBxB,QAAAA,OAAMwB,WAAW,IAAIwB,KAAKhD,OAAMuB,WAAWgC,QAAYvD,IAAAA,OAAM4pE,eAAe,GAC5E;AAAA,eAAOzrE,WAAUs+G,iBAAiBl+G,GAAAA;AAAAA,MACpC;AAEC,WAAMo+G,OAAOA,MAAI,MAAM,MAAM33G,GAAGoD,UAAU;AAEzC,eAAOy0G,WAAWt+G;MAClB;AACD,UAAA,CAAMo+G,OAAOA,QAAQ,SAAW12F,OAAOC,OAAOq0C,qBAAqBryD,KAAK,cAAgBA,KAAK,YAAa00G,CAAAA,YAAc;AAEvH,eAAOp+G,KAAKi+G,iBAAiBl+G,GAAAA;AAAAA,MAC7B;AACD,UAAI2J,KAAK,OAAO;AACf,YAAIqtD,OAAO/2D;AACXL,QAAAA,WAAU27D,SAAS,EAClBx0D,MAAM2gB,OAAOC,OAAOq0C,mBACpBlxC,OAAOpD,OAAOC,OAAO42F,yBACrBvtG,OAAO,SACP9D,UAAU,UACV6c,SAAQ,CAACrC,OAAOC,OAAOy0C,oBAAoB10C,OAAOC,OAAO00C,wBAAwB30C,OAAOC,OAAOk0C,cAC/F30D,UAAU,SAASqI;AAClB,kBAAQA,CAAAA,OAAAA;AAAAA,YACP,KAAK;AACJ,qBAAO+uG,WAAWF,GAAAA;AAAAA,YACnB,KAAK;AACJ,qBAAOpnD,KAAKknD,iBAAiBl+G,GAAAA;AAAAA,YAC9B,KAAK;AACJ;AAAA;QAEF,EAEJ,CAAA;AAAA,MAAA,OAAQ;AACNs+G,mBAAWF,GAAAA;AAAAA,MACX;AAAA,IACF;AAGAx+G,IAAAA,WAAU8+G,yBAAyB9+G,WAAU60C;AAC7C70C,IAAAA,WAAU60C,qBAAqB,SAASC,YACvC;AAAA,eAAStwC,IAAI,GAAGA,IAAInE,KAAK+8G,UAAU34G,QAAQD;AAAAA,eACnCnE,KAAKkzC,QAAQlzC,KAAK+8G,UAAU54G,CAAGpE,EAAAA,EAAAA;AACvCC,WAAK+8G,YAAY;AAEjB,UAAIroE,QAAQ10C,KAAKy+G,uBAAuBhqE,UAAAA;AACxC,UAAI6E,MAAM,CAAA;AACV,eAASn1C,IAAI,GAAGA,IAAIuwC,MAAMtwC,QAAQD,KAAK;AACtC,YAAIuwC,MAAMvwC,CAAGyF,EAAAA,UAAU;AAEtB,cAAI8qC,MAAMvwC,GAAGutD,eAAe;AAC3B1xD,iBAAK0+G,YAAYhqE,MAAMvwC,CAAIm1C,GAAAA,GAAAA;AAAAA,QAC5B;AACIA,cAAIz1C,KAAK6wC,MAAMvwC,CACpB,CAAA;AAAA,MAAA;AACD,aAAOm1C;AAAAA,IACR;AAAA,KAGA,WACC;AAAA,UAAIzM,MAAMltC,WAAU0K;AACpB1K,MAAAA,WAAU0K,gBAAgB,SAAS7D;AAClC,YAAIA,GAAGoD;AAAU,iBAAO;AACxB,eAAOijC,IAAIz2B,KAAKpW,MAAMwG,EAAAA;AAAAA,MACxB;AACC,UAAIm4G,mBAAmBh/G,WAAUiY;AACjCjY,MAAAA,WAAUiY,cAAc,SAAS7X;AAChC,YAAIyG,KAAK7G,WAAUmG,SAAS/F,GAAAA;AAC5B,YAAGyG,MAAMA,GAAGoD,UAAS;AAGpBpD,aAAGkrD,eAAelrD,GAAGoD,YAAY,IAAItE,MAAM,GAAK,EAAA,CAAA;AAAA,QAChD;AACD,YAAIkB,MAAMA,GAAGoD,YAAa5J,CAAAA,KAAKuxD,kBAAkBxxD,GAAK,GAAA;AACrDJ,UAAAA,WAAUgyB,YAAAA;AAAAA,QACb,OAAS;AACNgtF,2BAAiBvoG,KAAKpW,MAAMD,GAAAA;AAAAA,QAC5B;AAAA,MACH;AAAA,IACC,GAEDJ;AAAAA,IAAAA,WAAU0mH,kBAAkB,EAC3B7mH,KAAI,GAAG6+F,MAAK,GAAGt9D,OAAM,GAAG5lB,MAAK,GAAA;AAE9Bxb,IAAAA,WAAUwD,KAAKmjH,WAAW,SAASxwF,IAAIt2B,KAAK6+F;AAC3CvoE,SAAGoX,QAAQ,CACX;AAAA,UAAIq5E,gBAAgB5mH,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKsxB;AACxDuoE,cAAQA,OAAO,KAAK;AACpB,UAAImoB,OAAO1wF,GAAG/sB;AACd,UAAIgmC,OAAOvvC,MAAM,IAAI6+F,OAAOmoB,OAAO;AACnC1wF,SAAGoX,QAAQ6B,QAAQsvD,OAAQtvD,OAAO,IAAKA;AACvC,UAAI03E,WAAW9mH,WAAUwD,KAAK8pC,YAAY,IAAIzoC,KAAKsxB;AACnD,UAAGywF,cAAcxhH,cAAc0hH,SAAS1hH,QAAAA,GAAU;AACjD,eAAO;AAAA,MACP;AACD,aAAO;AAAA,IACR;AACApF,IAAAA,WAAU+lH,qBAAqB,SAAS5vF,IAAI3S,MAAMujG,KAAK15G,MAAM25G,MAC5D;AAAA,UAAIH,QAAQ1wF,GAAG/sB,OAAAA,MAAapJ,WAAU+B,OAAOsrC,kBAAkB,IAAI,MAAM05E;AACzE,eAASviH,IAAI,GAAGA,IAAIgf,KAAK/e,QAAQD,KAAK;AACrC,YAAIgf,KAAKhf,CAAKqiH,IAAAA;AACb,iBAAO1wF,GAAGoX,QAAQpX,GAAG1sB,QAAY+Z,IAAAA,KAAKhf,CAAK,IAAA,IAAIqiH,QAAQx5G,OAAO05G,MAAMC;MACrE;AACD3mH,WAAK0lH,mBAAmB5vF,IAAI3S,MAAMujG,MAAM15G,MAAM,MAAM05G,GACrD;AAAA,IAAA;AACA/mH,IAAAA,WAAUulH,iBAAiB,SAASl+G;AACnC,UAAI4/G,qBAAqB,eAAe5/G;AACxC,WAAKhH,KAAKmD,KAAKyjH,qBAAqB;AACnC,YAAIC,iBAAiB7/G,KAAK1B,MAAM,GAChC;AAAA,YAAIwhH,gBAAgB,KAAK,KAAK,KAAK;AACnC,YAAIC,eAAe,SAAS//G;AAC5B,YAAIggH,oBAAoBhnH,KAAKqmH,gBAAgBQ,eAAe,MAAMA,eAAe,CAAA;AAEjF,YAAIA,eAAe,CAAA,KAAM,SAASA,eAAe,MAAM,QAAQ;AAC9D,cAAII,WAAW;AACf,cAAIJ,eAAe,CAAA,GAAI;AACtBI,uBAAWJ,eAAe,CAAGvhH,EAAAA,MAAM;AACnC,gBAAI3F,WAAU+B,OAAOsrC,iBAAiB;AACrC,uBAAS7oC,IAAI,GAAGA,IAAI8iH,SAAS7iH,QAAQD;AACpC8iH,yBAAS9iH,CAAM8iH,IAAAA,SAAS9iH,CAAK,IAAA,KAAM;AACpC8iH,uBAAS1iF,KAAAA;AAAAA,YACT;AAAA,UACD;AAEDvkC,eAAKmD,KAAKyjH,kBAAsB,IAAA,SAAS19B,IAAIxD,IAAAA;AAC5C,gBAAIh2E,QAAQyB,KAAK8D,OAAOywE,GAAG3gF,QAAAA,IAAYmkF,GAAGnkF,QAAc+hH,MAAAA,gBAAgBE,kBACxE;AAAA,gBAAIt3G,QAAQ;AACXw5E,iBAAGh8C,QAAQg8C,GAAG9/E,QAAAA,IAAYsG,QAAQs3G,iBACnC;AAAA,gBAAIC;AACHtnH,cAAAA,WAAU+lH,mBAAmBx8B,IAAI+9B,UAAU,GAAGD,iBAE/C;AAAA,mBAAO99B;AAAAA,UACX;AACGlpF,eAAKmD,KAAK4jH,YAAAA,IAAgB,SAASjxF,IAAIwX,KAAAA;AACtC,gBAAI47C,KAAK,IAAI1kF,KAAKsxB,GAAG/wB,QAAAA,CAAAA;AACrB,gBAAIkiH,UAAU;AACb,uBAAShyF,QAAQ,GAAGA,QAAQqY,KAAKrY;AAChCt1B,gBAAAA,WAAU+lH,mBAAmBx8B,IAAI+9B,UAAU,GAAGD,iBAAAA;AAAAA,YAC/C;AACA99B,iBAAGh8C,QAAQg8C,GAAG9/E,QAAYkkC,IAAAA,MAAM05E,iBAEjC;AAAA,mBAAO99B;AAAAA,UACX;AAAA,QACG,WACQ29B,eAAe,CAAA,KAAM,WAAWA,eAAe,CAAA,KAAM,QAAQ;AACrE7mH,eAAKmD,KAAKyjH,kBAAAA,IAAsB,SAAS19B,IAAIxD,IAAIwhC;AAChD,gBAAIx3G,QAAQyB,KAAKwb,MAAO+4D,GAAG/sE,YAAgB,IAAA,KAAK+sE,GAAG9sE,SAAa,IAAA,IAAI,KAAMswE,GAAGvwE,YAAAA,IAAgB,KAAKuwE,GAAGtwE,aAAa,IAAI,MAAE,oBAA0B,CAElJ;AAAA,gBAAIlJ,SAAS,GAAE;AACdw5E,iBAAGh8C,QAAQ;AACXg8C,iBAAG97C,SAAS87C,GAAGtwE,SAAalJ,IAAAA,QAAQs3G;YACpC;AAED,mBAAOrnH,WAAUwD,KAAK4jH,cAAc79B,IAAI,GAAGg+B;UAI/C;AACGlnH,eAAKmD,KAAK4jH,YAAgB,IAAA,SAASjxF,IAAIwX,KAAK45E,gBAAgBC,cAC3D;AAAA,gBAAA,CAAIA,cAAa;AAChBA,6BAAe;AAAA,YACpB,OAAS;AACJA;AAAAA,YACA;AACD,gBAAIrI,WAAW;AACf,gBAAGqI,eAAerI,UAAS;AAC1B,qBAAO;AAAA,YACP;AAED,gBAAI51B,KAAK,IAAI1kF,KAAKsxB,GAAG/wB,QAAAA,CAAAA;AACrBmkF,eAAGh8C,QAAQ,CAAA;AAGXg8C,eAAG97C,SAAS87C,GAAGtwE,SAAa00B,IAAAA,MAAM05E;AAClC,gBAAII,YAAYl+B,GAAGtwE,SACnB;AAAA,gBAAIyuG,WAAWn+B,GAAGvwE;AAClBuwE,eAAGh8C,QAAQg6E,eAAenkH,WAAWqG,QAAAA,CAAAA;AACrC,gBAAIy9G,eAAe,CAAA,GAAG;AACrBlnH,cAAAA,WAAUwD,KAAKmjH,SAASp9B,IAAI29B,eAAe,CAAIA,GAAAA,eAAe;YAC9D;AAED,gBAAIS,2BAA2B3nH,WAAU+B,OAAO6lH;AAChD,gBAAGr+B,GAAGtwE,SAAcwuG,KAAAA,aAAaE,4BAA4B,QAAO;AAEnE,kBAAGA,6BAA6B,WAAU;AAEzCp+B,qBAAK,IAAI1kF,KAAK6iH,UAAUD,YAAY,GAAG,GAAGl+B,GAAG78E,SAAAA,GAAY68E,GAAGv7E,WAAcu7E,GAAAA,GAAGl9C,cAAck9C,GAAGkc,gBAAAA,CAAAA;AAAAA,cACpG,OAAU;AAEJlc,qBAAKvpF,WAAUwD,KAAK4jH,cAAc,IAAIviH,KAAK6iH,UAAUD,YAAY,GAAG,IAAI95E,OAAK,GAAG45E,gBAAgBC,YAAAA;AAAAA,cAEhG;AAAA,YACD;AACD,mBAAOj+B;AAAAA,UACX;AAAA,QACG;AAAA,MACD;AAAA,IACF;AACAvpF,IAAAA,WAAU++G,cAAc,SAASl4G,IAAIkuC,OAAOmqE,YAAY9pF,MAAMC,IAAI8pF,UAAAA;AAEjE/pF,aAAOA,QAAQ/0B,KAAKoM;AACpB4oB,WAAKA,MAAMh1B,KAAKmM;AAChB,UAAIoC,MAAMuwG,YAAAA;AACV,UAAIp5B,KAAK,IAAIlhF,KAAKgC,GAAGzD,WAAWgC,QAAAA,CAAAA;AAEhC,UAAIyiH,YAAY9hC,GAAGr5E;AAEnB,UAAI+yG,eAAe;AAEnB,UAAA,CAAK54G,GAAGkrD,eAAelrD,GAAGoD;AACzBpD,WAAGkrD,cAAclrD,GAAGoD,SAAStE,MAAM,GAAK,EAAA,CAAA;AAEzCtF,WAAKklH,eAAe1+G,GAAGkrD;AACvBg0B,WAAK/lF,WAAUwD,KAAK,eAAeqD,GAAGkrD,WAAag0B,EAAAA,IAAI3wD,MAAMvuB,EAC7D;AAAA,aAAQk/E,OACPA,KAAKl/E,GAAGzD,cACRpD,WAAU4/G,0BAA0B75B,IAAG3wD,MAAKvuB,IAAGk/E,IAAG,IAAIlhF,KAAKkhF,GAAG3gF,QAAAA,IAAYyB,GAAG4kE,eAAe,GAAA,CAAA,EAAOrmE,QAAagwB,KAAAA,KAAKhwB,aACrH2gF,GAAG3gF,QAAAA,IAAYyB,GAAG4kE,eAAe,OAAQr2C,KAAKhwB,QAAW,IAAA;AACxD2gF,aAAK1lF,KAAKmD,KAAK,SAASqD,GAAGkrD,aAAag0B,IAAI,GAAGl/E;MAEhD;AACD,aAAOk/E,OAAOA,KAAK1wD,MAAM0wD,KAAKl/E,GAAGxD,aAAauL,MAAM,KAAK6wG,eAAe7wG,OAAO;AAC9Em3E,WAAGj7E,SAAS+8G;AAEZ,YAAIr5F,YAAaxuB,WAAU+B,OAAkC,8BAAI8C,KAAKgoC,IAAIk5C,GAAG/sE,YAAe+sE,GAAAA,GAAG9sE,YAAY8sE,GAAGt8E,QAAAA,GAAWs8E,GAAGr5E,SAAYq5E,GAAAA,GAAG/3E,cAAc+3E,GAAG15C,WAAAA,CAAAA,IAAgB05C,GAAG3gF,QAAAA;AAC/K,YAAIq4G,KAAKp9G,KAAKm9G,gBAAgBhvF,WAAW3nB,GAAGzG;AAC5C,YAAKq9G,CAAAA,IAAI;AACR,cAAIqK,MAAM,IAAIjjH,KAAKkhF,GAAG3gF,QAAYyB,IAAAA,GAAG4kE,eAAe,GACpD;AAAA,cAAI1kE,OAAO1G,KAAK64C,YAAYryC,EAE5BE;AAAAA,eAAKI,OAAON,GAAGM;AACfJ,eAAK3D,aAAa2iF;AAClBh/E,eAAKwkE,YAAY1kE,GAAGzG;AACpB2G,eAAK3G,KAAKyG,GAAGzG,KAAK,MAAMoR,KAAKI,MAAM4c,YAAY,GAAA;AAC/CznB,eAAK1D,WAAWykH;AAEhB/gH,eAAK1D,WAAWrD,WAAU4/G,0BAA0B74G,KAAK3D,YAAY2D,KAAK1D,UAAUwD,IAAIk/E,IAAIh/E,KAAK1D;AAEjG0D,eAAK0D,SAASpK,KAAKqK,cAAc3D,IAAAA;AAEjC,cAAKA,CAAAA,KAAK0D,WAAWpK,KAAK2M,eAAAA,CAAgB3M,KAAK0B,OAAO41B;AAAW;AACjEod,gBAAM7wC,KAAK6C,IAEX;AAAA,cAAA,CAAKm4G,YAAY;AAChB7+G,iBAAKkzC,QAAQxsC,KAAK3G,EAAAA,IAAM2G;AACxB1G,iBAAK+8G,UAAUl5G,KAAK6C,IAAAA;AAAAA,UACpB;AAED04G;AAAAA,QAEA,WACGP,YAAW;AACd,cAAGzB,GAAGxzG,YAAY,QAAO;AACxBw1G;AAAAA,UACA;AACD1qE,gBAAM7wC,KAAKu5G,EACX;AAAA,QAAA;AAED13B,aAAK1lF,KAAKmD,KAAK,SAASqD,GAAGkrD,aAAag0B,IAAI,GAAGl/E,EAI/C;AAAA,MAAA;AAAA,IACF;AACA7G,IAAAA,WAAU4/G,4BAA4B,SAASx8G,YAAYC,UAAUwD,IAAI6oD,SAAShgB;AACjF,UAAIpe,QAAQluB,WAAW4rB,kBAAsB3rB,IAAAA,SAAS2rB,kBACtD;AAAA,UAAIsC,OAAO;AACV,YAAIA,QAAQ,GAAG;AAEd,iBAAO,IAAIzsB,KAAK6qD,QAAQtqD,QAAAA,IAAYyB,GAAG4kE,eAAe,MAAOn6C,QAAQ,KAAK,GAAA;AAAA,QAC1E,OACI;AAEJ,iBAAO,IAAIzsB,KAAKxB,SAAS+B,QAAYksB,IAAAA,QAAQ,KAAK,GAClD;AAAA,QAAA;AAAA,MACD;AACD,aAAO,IAAIzsB,KAAK6qC,aAAatqC;IAC9B;AACApF,IAAAA,WAAUwtE,cAAc,SAASptE,KAAIwO;AACpC,UAAI/H,KAAAA,OAAYzG,OAAM,WAAWA,MAAKJ,WAAUmG,SAAS/F;AACzD,UAAIy/G,aAAa;AACjBjxG,YAAMA,OAAO;AAEb,UAAA,CAAK/H,GAAGoD,UAAU;AACjB,eAAO,CACN,EAAE7G,YAAYyD,GAAGzD,YAAYC,UAAUwD,GAAGxD;MAE3C;AACD,UAAIwD,GAAGoD,YAAY,QAAQ;AAC1B,eAAO,CAAA;AAAA,MACP;AAEDjK,MAAAA,WAAU++G,YAAYl4G,IAAIg5G,YAAY,MAAMh5G,GAAGzD,YAAYyD,GAAGxD,UAAUuL,GAAAA;AAExE,UAAI0K,SAAS;AACb,eAAQ9U,IAAI,GAAGA,IAAIq7G,WAAWp7G,QAAQD,KAAI;AACzC,YAAGq7G,WAAWr7G,CAAGyF,EAAAA,YAAY,QAAO;AACnCqP,iBAAOpV,KAAK,EAACd,YAAYy8G,WAAWr7G,CAAAA,EAAGpB,YAAYC,UAAUw8G,WAAWr7G,GAAGnB,SAC3E,CAAA;AAAA,QAAA;AAAA,MACD;AAED,aAAOiW;AAAAA,IACR;AACAtZ,IAAAA,WAAUm2C,YAAY,SAAS/gB,MAAMC;AACpC,UAAI/b,SAAS;AACb,eAASkD,KAAKnc,KAAKkzC,SAAS;AAC3B,YAAI1sC,KAAKxG,KAAKkzC,QAAQ/2B;AACtB,YAAI3V,MAAMA,GAAGzD,aAAaiyB,MAAMxuB,GAAGxD,WAAW+xB,MAAM;AACnD,cAAIvuB,GAAGkrD,aAAa;AACnB,gBAAIlrD,GAAGkrD,eAAe;AAAQ;AAC9B,gBAAI+tD,MAAM,CAAA;AACVz/G,iBAAK0+G,YAAYl4G,IAAIi5G,KAAK,MAAM1qF,MAAMC,EACtC;AAAA,qBAAS7wB,IAAI,GAAGA,IAAIs7G,IAAIr7G,QAAQD,KAAK;AAEpC,mBAAKs7G,IAAIt7G,CAAAA,EAAGutD,eAAe+tD,IAAIt7G,CAAAA,EAAGpB,aAAaiyB,MAAMyqF,IAAIt7G,CAAGnB,EAAAA,WAAW+xB,SAAS/0B,KAAKi9G,aAAawC,IAAIt7G,CAAGpE,EAAAA,EAAAA,GAAK;AAC7GkZ,uBAAOpV,KAAK47G,IAAIt7G,CAAAA,CAAAA;AAAAA,cAChB;AAAA,YACD;AAAA,UACD,YAAWnE,KAAKuxD,kBAAkB/qD,GAAGzG,EAAK,GAAA;AAC1CkZ,mBAAOpV,KAAK2C;UACZ;AAAA,QACD;AAAA,MACD;AACD,aAAOyS;AAAAA,IACR;AAEAtZ,IAAAA,WAAU+B,OAAOg9G,cAAc;AAC/B/+G,IAAAA,WAAU+B,OAAOg4B,SAAS72B,WAAW,CACpC,EAACuX,MAAK,eAAehY,QAAO,QAAQ4E,MAAK,YAAaqzB,OAAM,KAAA,GAC5D,EAACjgB,MAAK,aAAapT,MAAK,aAAa5E,QAAO,YAAY+a,QAAO,eAC/D,EAAC/C,MAAK,QAAQtJ,QAAO,IAAI9J,MAAK,QAAQ5E,QAAO,OAK9CzC,CAAAA;AAAAA,IAAAA,WAAUu6C,cAAc,SAAS1zC,IAAAA;AAChC,UAAIzD,aAAa,IAAIyB,KAAKxE,KAAK+C,UAAAA;AAC/B,UAAIC,WAAW,IAAIwB,KAAKxE,KAAKgD;AAC7BhD,WAAK+C,aAAaA;AAClB/C,WAAKgD,WAAWA;AAChBhD,WAAKorE,eAAeprE,KAAKkrE,YAAYlrE,KAAK0xD,cAAc1xD,KAAK4J,WAAW;AAAA,IACzE;AAEAjK,IAAAA,WAAU+B,OAAOi+G,iBAAiB;AAClChgH,IAAAA,WAAU+B,OAAOw8G,qBAAqB;AAEtCv+G,IAAAA,WAAUiG,YAAY,cAAc,WACnCjG;AAAAA,MAAAA,WAAUs9G,eAAe;AACzBt9G,MAAAA,WAAUq9G,oBAAoB;AAC9Br9G,MAAAA,WAAUo9G,YAAY,CACvB;AAAA,IAAA,CAAA;AAAA,EAEA;ACryCe,WAAQl1E,UAACloC;AAGxB,UAAM4iD,sBAAsBnB,gBAAgBzhD,UAG5CA;AAAAA,IAAAA,WAAU+nH,kBAAgB,WAAA;AACzB,UAAI/oF,QAAQ,CAAA;AACZ,UAAIoM,SAASprC,WAAU6xC,SAASG;AAChC,UAAIg2E,aAAaplE,oBAAAA;AACjB,eAASpmC,KAAKwrG,YAAW;AACxB,YAAInhH,KAAKmhH,WAAWxrG,CACpB;AAAA,iBAAS/B,QAAQ5T;AAChB,cAAI4T,KAAK2mC,OAAO,GAAE,CAAK,KAAA;AACtBpiB,kBAAM96B,KAAK,CAACuW,MAAOA,QAAQ,gBAAgBA,QAAQ,aAAY2wB,SAAO,IACxE,CAAA;AAAA;AAAA,MACA;AACD,aAAOpM;AAAAA,IACR;AAEAh/B,IAAAA,WAAU4+F,QAAQ,SAAS16E,QAAAA;AAC1B,UAAI4kB,MAAM,CAAA;AACV,UAAI9J,QAAQ3+B,KAAK0nH,gBACjB;AAAA,UAAIC,aAAaplE,oBACjB;AAAA,eAASpmC,KAAKwrG,YAAW;AACxB,YAAInhH,KAAKmhH,WAAWxrG,CAAAA;AAEpBssB,YAAI5kC,KAAK,SAAA;AACT,iBAASM,IAAE,GAAGA,IAAIw6B,MAAMv6B,QAAQD;AAC/BskC,cAAI5kC,KAAK,MAAI86B,MAAMx6B,CAAG,EAAA,CAAA,IAAG,gBAAcw6B,MAAMx6B,GAAG,CAAGw6B,IAAAA,MAAMx6B,GAAG,CAAGqC,EAAAA,GAAGm4B,MAAMx6B,CAAG,EAAA,CAAA,CAAA,CAAA,IAAKqC,GAAGm4B,MAAMx6B,GAAG,CAAK,CAAA,KAAA,UAAQw6B,MAAMx6B,CAAG,EAAA,CAAA,IAAG;AAEtHskC,YAAI5kC,KAAK,UACT;AAAA,MAAA;AACD,cAAQggB,UAAQ,MAAI,WAAS4kB,IAAI34B,KAAK,QAAM;AAAA,IAC7C;AAEAnQ,IAAAA,WAAUioH,wBAAwB,SAASvpG,OAC1C;AAAA,UAAGA,UAAU,QAAeA,OAAAA,UAAU,WAAU;AAC/CA,gBAAQ,KAAKA;AAAAA,MACf,OAAM;AACJ,YAAA,CAAIA,SAASA,UAAU,GAAE;AACxBA,kBAAQ;AAAA,QACR;AACDA,gBAAQ,MAAMA,MAAM/F,SAAAA,EACnByR,QAAQ,OAAM,EAAA,EACdA,QAAQ,OAAM,MAAA,EACdA,QAAQ,MAAM,SAAS;AAAA,MACxB;AACD,aAAO1L;AAAAA,IACR;AAIA1e,IAAAA,WAAUm6F,SAAS,WAAA;AAClB,aAAOr1E,KAAKC,UAAU1kB,KAAK6nC,UAAAA,CAAAA;AAAAA,IAC5B;AAGAloC,IAAAA,WAAUkoH,SAAS,SAAShkG,QAC3B;AAAA,UAAItU,QAAQ;AACZ,UAAIC,MAAM;AACV,UAAIu7B,SAASprC,WAAUwD,KAAK0qC,YAAY,eAAA;AACxC,UAAIi6E,kBAAkBnoH,WAAUwD,KAAK0qC,YAAY;AAEjD,UAAIuS,OAAO;AACX,UAAIunE,aAAaplE,oBACjB;AAAA,eAASpmC,KAAKwrG,YAAW;AACxB,YAAInhH,KAAKmhH,WAAWxrG,CAGpBikC;AAAAA,aAAKv8C,KAAK,cAAA;AACV,aAAK2C,GAAG4D,UAAAA,CAAY5D,GAAGzD,WAAWsJ,SAAAA,KAAAA,CAAe7F,GAAGzD,WAAW4K,WAAAA;AAC9DyyC,eAAKv8C,KAAK,aAAWikH,gBAAgBthH,GAAGzD;;AAExCq9C,eAAKv8C,KAAK,aAAWknC,OAAOvkC,GAAGzD,UAChC,CAAA;AAAA,YAAA,CAAKyD,GAAG4D,UAAY5D,CAAAA,GAAGxD,SAASqJ,SAAe7F,KAAAA,CAAAA,GAAGxD,SAAS2K,WAC1DyyC;AAAAA,eAAKv8C,KAAK,WAASikH,gBAAgBthH,GAAGxD,QAAAA,CAAAA;AAAAA;AAEtCo9C,eAAKv8C,KAAK,WAASknC,OAAOvkC,GAAGxD,QAAAA,CAAAA;AAC9Bo9C,aAAKv8C,KAAK,aAAW2C,GAAGM,IAAAA;AACxBs5C,aAAKv8C,KAAK,YAAA;AAAA,MACV;AACD,aAAO0L,SAAOsU,UAAQ,MAAI,OAAKu8B,KAAKtwC,KAAK,QAAM,OAAKN;AAAAA,IACrD;AAAA,EAEA;ACpFe,WAAQu4G,oBAACpoH,YAAAA;AACvB2wE,mBAAe/zD,MAAM,YAAY5c,WAAU8a,MAC5C;AAAA,EAAA;AAAA,ECQO,MAAMutG,QAKZ;AAAA,IAAA,YAAYroH,YAAAA;AACXK,WAAKioH,aAAatoH;AAAAA,IACnB;AAAA,IAEA,UAAAw7E;AACC,YAAMx7E,aAAYK,KAAKioH;AACnB,UAAA,CAACjoH,KAAKkoH,cAAa;AACjBloH,aAAAkoH,eAAeroH,SAASC,cAAc,KAC3CE;AAAAA,aAAKkoH,aAAar3G,YAAY;AAEpBlR,QAAAA,WAAAgoB,SAAS+Z,YAAY1hC,KAAKkoH,YAAAA;AAAAA,MACrC;AACG,UAAAvoH,WAAU+B,OAAOijB,KAAI;AAClB3kB,aAAAkoH,aAAaxrG,UAAUtZ,IAAI,mBAAA;AAAA,MAAmB,OAC9C;AACApD,aAAAkoH,aAAaxrG,UAAU6X,OAAO,mBACpC;AAAA,MAAA;AACA,aAAOv0B,KAAKkoH;AAAAA,IACb;AAAA,IAEA,YAAYrhG,MACX7mB;AAAAA,WAAKmoH,QAAQthG;AACN,aAAA7mB;AAAAA,IACR;AAAA,IAIA,KAAKwC,MAA2BD,KAAAA;AAC/B,YAAM5C,aAAYK,KAAKioH;AACvB,YAAMzuD,aAAa75D,WAAU6tB;AAC7B,YAAMhiB,YAAY3L,SAASM;AACrB,YAAA0mB,OAAO7mB,KAAKm7E,QAAAA;AAElB,UAAI3hB,CAAAA,WAAWtzB,UAAUrf,MAAMrb,SAAAA,GAAW;AACzCxL,aAAK6L;AACLL,kBAAUpL,YAAYymB;MACvB;AAEI,UAAA7mB,KAAKooH,kBAAkB5lH,IAAAA,GAAO;AAC3B,cAAAyK,WAAWjN,KAAKqoH,0BAA0B7lH;AAChDD,cAAM0K,SAAS1K;AACfC,eAAOyK,SAASzK;AAAAA,MACjB;AAEKqkB,WAAAvkB,MAAMC,MAAMA,MAAM;AAClBskB,WAAAvkB,MAAME,OAAOA,OAAO;AAEf7C,MAAAA,WAAAgoB,SAASga,mBAAmB9a,IAAAA;AAC/B,aAAA7mB;AAAAA,IACR;AAAA,IACA,OACC;AAAA,YAAML,aAAYK,KAAKioH;AACjB,YAAAphG,OAAO7mB,KAAKm7E,QACf;AAAA,UAAAt0D,QAAQA,KAAKpZ,YAAW;AACrBoZ,aAAApZ,WAAWC,YAAYmZ,IAAAA;AAAAA,MAC7B;AACUlnB,MAAAA,WAAAgoB,SAASia,kBAAkB/a,IAC9B;AAAA,aAAA7mB;AAAAA,IACR;AAAA,IAEA,WAAWkD,MAAAA;AACJ,YAAA2jB,OAAO7mB,KAAKm7E;AAClBt0D,WAAK3mB,YAAYgD;AACV,aAAAlD;AAAAA,IACR;AAAA,IAGQ,kBAAkBwB,QACzB;AAAA,UAAA,CAAKA,iBAAgBA,WAAU,UAAU;AACjC,eAAA;AAAA,MACR;AACO,aAAA,aAAaA,UAAS,aAAaA;AAAAA,IAC3C;AAAA,IAEQ,eACA;AAAA,aAAAxB,KAAKmoH,SAAStoH,SAASM;AAAAA,IAC/B;AAAA,IAGQ,0BAA0BqB,QACjC;AAAA,YAAM7B,aAAYK,KAAKioH;AACvB,YAAMzuD,aAAa75D,WAAU6tB;AAEvB,YAAA86F,WAAYtoH,KAAKuoH,iBAAAA;AACjB,YAAAC,cAAcxoH,KAAKm7E,QACzB;AAAA,YAAMwT,WAAoB,EACzBpsF,KAAI,GACJC,MAAM,GACNuO,OAAOy3G,YAAYxnG,aACnBlQ,QAAQ03G,YAAY1nG,cACpBmhB,QAAQ,GACRrb,OAAO,EAGF;AAAA,YAAA6hG,UAAU9oH,WAAU+B,OAAOgnH;AAC3B,YAAAC,UAAUhpH,WAAU+B,OAAOknH;AAEjC,YAAMp9G,YAAY3L,SAASM;AAC3B,YAAM0oH,QAAQrvD,WAAW/2B,yBAAyBjhC,QAAOgK,SAAAA;AACnD,YAAAs9G,eAAetvD,WAAW92B,gBAAgBl3B,SAAAA;AAChDq9G,YAAM9hG,KAAK+hG,aAAa/hG;AAExB4nE,MAAAA,SAAQpsF,MAAMsmH,MAAM9hG;AACpB4nE,MAAAA,SAAQnsF,OAAOqmH,MAAM/hG;AACrB6nE,MAAAA,SAAQpsF,OAAOomH;AACfh6B,MAAAA,SAAQnsF,QAAQimH;AACR95B,MAAAA,SAAA1sD,SAAS0sD,SAAQpsF,MAAMosF,SAAQ79E;AAC/B69E,MAAAA,SAAA/nE,QAAQ+nE,SAAQnsF,OAAOmsF,SAAQ59E;AAEjC,YAAAsc,YAAYpsB,OAAO8nH,UAAUv9G,UAAU6hB;AAE7C,UAAGshE,SAAQpsF,MAAM+lH,SAAS/lH,MAAM8qB,WAAU;AACzCshE,QAAAA,SAAQpsF,MAAM+lH,SAAS/lH;AACfosF,QAAAA,SAAA1sD,SAAS0sD,SAAQpsF,MAAMosF,SAAQ79E;AAAAA,MAC/B,WAAA69E,SAAQ1sD,SAASqmF,SAASrmF,QAAO;AACzC0sD,QAAAA,SAAQ1sD,SAASqmF,SAASrmF;AAClB0sD,QAAAA,SAAApsF,MAAMosF,SAAQ1sD,SAAS0sD,SAAQ79E;AAAAA,MACxC;AAEG,UAAA69E,SAAQnsF,OAAO8lH,SAAS9lH,MAAK;AAC/BmsF,QAAAA,SAAQnsF,OAAO8lH,SAAS9lH;AAChBmsF,QAAAA,SAAA/nE,QAAQ0hG,SAAS9lH,OAAOmsF,SAAQ59E;AAAAA,MAChC,WAAA49E,SAAQ/nE,QAAQ0hG,SAAS1hG,OAAM;AACvC+nE,QAAAA,SAAQ/nE,QAAQ0hG,SAAS1hG;AACjB+nE,QAAAA,SAAAnsF,OAAOmsF,SAAQ/nE,QAAQ+nE,SAAQ59E;AAAAA,MACxC;AAEA,UAAG83G,MAAM/hG,KAAK6nE,SAAQnsF,QAAQqmH,MAAM/hG,KAAK6nE,SAAQ/nE,OAAO;AACvD+nE,QAAAA,SAAQnsF,OAAOqmH,MAAM/hG,IAAI6nE,SAAQ59E,QAAQ03G;AACjC95B,QAAAA,SAAA/nE,QAAQ+nE,SAAQnsF,OAAOmsF,SAAQ59E;AAAAA,MACxC;AAEA,UAAG83G,MAAM9hG,KAAK4nE,SAAQpsF,OAAOsmH,MAAM9hG,KAAK4nE,SAAQ1sD,QAAQ;AACvD0sD,QAAAA,SAAQpsF,MAAMsmH,MAAM9hG,IAAI4nE,SAAQ79E,SAAS63G;AACjCh6B,QAAAA,SAAA1sD,SAAS0sD,SAAQpsF,MAAMosF,SAAQ79E;AAAAA,MACxC;AAEO,aAAA69E;AAAAA,IACR;AAAA,IAEQ;AACP,YAAMhvF,aAAYK,KAAKioH;AACvB,YAAMzuD,aAAa75D,WAAU6tB;AACvB,YAAAhiB,YAAYxL,KAAKgpH,aACvB;AAAA,UAAIV,WAAW98G;AACf,UAAI6hB,YAAYpsB,OAAO8nH,UAAUlpH,SAASM,KAAKktB;AAC/C,UAAIH,aAAajsB,OAAOgoH,UAAUppH,SAASM,KAAK+sB;AAC5C,UAAAR;AAED,UAAAlhB,cAAc7L,WAAUupH,aAAY;AACtCZ,mBAAW3oH,WAAUwpH;AACT97F,oBAAA;AACCH,qBAAA;AACPR,cAAA8sC,WAAW92B,gBAAgB/iC,WAAUwpH,MAAM;AAAA,MAAA,OAC7C;AACEz8F,cAAA8sC,WAAW92B,gBAAgB4lF,QAAAA;AAAAA,MAClC;AACO,aAAA,EACN9lH,MAAKkqB,IAAI5F,IAAIoG,YACb3qB,KAAKmqB,IAAI3F,IAAIsG,WACbtc,OAAO2b,IAAI3b,OACXD,QAAQ4b,IAAI5b,QACZmxB,QAAQvV,IAAI3F,IAAI2F,IAAI5b,SAASuc,WAC7BzG,OAAO8F,IAAI5F,IAAI4F,IAAI3b,QAAQmc,WAE7B;AAAA,IAAA;AAAA,EAAA;AAAA,ECrKM,MAAMk8F,eAQZ;AAAA,IAAA,YAAYzpH,YALZK;AAAAA,WAAQqpH,aAAqB;AAMvBrpH,WAAA2uF,UAAU,IAAIq5B,QAAQroH,UAAAA;AAC3BK,WAAKioH,aAAatoH;AACbK,WAAAkhE,aAAavhE,WAAUmoB,qBAC5B9nB;AAAAA,WAAKspH;IACN;AAAA,IAEA;AACCtpH,WAAK2uF,QAAQ9iF;AACb7L,WAAKkhE,WAAWn5C,UACjB;AAAA,IAAA;AAAA,IACA,cACC/nB;AAAAA,WAAKupH;IACN;AAAA,IACA,OAAO7nH,QACN;AAAA,UAAIke,OAAO/f,SAASM;AACpB,YAAMR,aAAYK,KAAKioH;AACvB,YAAMzuD,aAAa75D,WAAU6tB;AAC1B,UAAC9rB,CAAAA,OAAOR,QAAO;AACjB0e,eAAOjgB,WAAUihB;AAAAA,MAClB;AAEA,UAAI4oG,kBAAkB;AAChB,YAAA3rG,UAAWrc,CAAAA;AACV,cAAAioH,cAAcjwD,WAAW32B,cAAcrhC,MAAAA;AAC7C,cAAMkoH,aAAalwD,WAAWxzD,QAAQyjH,aAAa/nH,OAAOmkC,QAC1D;AAAA,YAAG2zB,WAAWtzB,UAAUujF,aAAazpH,KAAK2uF,QAAQxT,QAAAA,CAAAA,GAAW;AAC5D;AAAA,QACD;AAEA,cAAMwuC,iBAAiB;AACJH,4BAAAE;AACXhoH,iBAAAkoH,aAAapoH,QAAOkoH,UAAU;AAAA,QAAA;AAGtC,YAAGF,iBAAgB;AACf,cAAAE,cAAcA,eAAeF,iBAAgB;AACxC9nH,mBAAAmoH,YAAYroH,QAAOkoH;UAAU,OAChC;AACGhoH,mBAAAooH,aAAatoH,QAAOgoH;AACTA,8BAAA;AAEf,gBAAAE,cAAcA,eAAeF,iBAAgB;AAChCG;YAChB;AAAA,UACD;AAAA,QAAA,OACI;AACJ,cAAGD,YAAW;AACEC;UAChB;AAAA,QACD;AAAA,MAAA;AAGI3pH,WAAAu8B,OAAO76B,OAAOmkC;AACnB7lC,WAAKkhE,WAAWj5C,OAAOrI,MAAM,aAAa/B,OACrC7d;AAAAA,WAAAqpH,WAAW3nH,OAAOmkC,QAAAA,IAAY,EAClChf,MAAMjH,MACN/B,QAEF;AAAA,IAAA;AAAA,IAEA,OAAOgoB,UAAAA;AACA,YAAAkkF,WAAW/pH,KAAKqpH,WAAWxjF,QACjC;AAAA,UAAGkkF,UAAS;AACX/pH,aAAKkhE,WAAW3kC,OAAOwtF,SAASljG,MAAM,aAAakjG,SAASlsG,OAC7D;AAAA,MAAA;AAAA,IACD;AAAA,IAEA,WAAWnc,QACJ;AAAA,YAAAsoH,gBAAiBxoH,CAAAA,WACtB;AAAA,YAAIu8E,SAAQv8E;AAGZ,YAAG3B,SAAS,mBAAA,KAAA,CAAyBA,SAAS8pD,aAAY;AAEjDo0B,UAAAA,SAAAl+E,SAAS,mBAAA,EAAqB2B;QACvC;AACO,eAAAu8E;AAAAA,MAAA;AAER/9E,WAAKspH,sBACLtpH;AAAAA,WAAKioB,OAAO,EACX4d,UAAUnkC,OAAOmkC,UACjB3kC,QAAQQ,OAAOR,QACf0oH,cAAa,CAACpoH,QAAmBqlB;AAChC,cAAM3jB,OAAOxB,OAAOwB,KAAK1B,QAAOqlB,IAChC;AAAA,YAAG3jB,MAAK;AACPlD,eAAKiqH,UAAUD,cAAcxoH,MAAAA,GAAQ0B;QACtC;AAAA,MAED2mH,GAAAA,aAAY,CAACroH,QAAmBqlB;AAC/B,cAAM3jB,OAAOxB,OAAOwB,KAAK1B,QAAOqlB;AAChC,YAAG3jB,MAAK;AACPlD,eAAKiqH,UAAUD,cAAcxoH,MAAAA,GAAQ0B;QAAI,OACrC;AACJlD,eAAKiqH,UAAU/wG,eAAAA;AACflZ,eAAKupH,UAAAA;AAAAA,QACN;AAAA,SAEDO,cAAa,MAAA;AACZ9pH,aAAKiqH,UAAU/wG,eAAAA;AACflZ,aAAKupH,UAAU;AAAA,MAAA,EAAA,CAAA;AAAA,IAGlB;AAAA,IAEQ;AACP,YAAM5pH,aAAYK,KAAKioH;AAEvB,UAAGjoH,KAAKiqH,WAAU;AACjBjqH,aAAKiqH,UAAU/wG;MAChB;AACA,UAAGlZ,KAAKupH,WAAU;AACjBvpH,aAAKupH,UAAUrwG,eAAAA;AAAAA,MAChB;AACAlZ,WAAK2uF,QAAQ9iF,KAEb7L;AAAAA,WAAKiqH,YAAaC,MAAsBpxG,MAAM,CAACtX,QAAmB0B,SACjE;AAAA,YAAGvD,WAAUiL,UAAU,mBAAmB,CAACpJ,MAAY,CAAA,MAAA,OAAO;AAC7DxB,eAAK2uF,QAAQ9iF,KAAK;AAAA,QAAA,OACZ;AACD7L,eAAA2uF,QAAQjC,WAAWxpF,IACnBlD;AAAAA,eAAA2uF,QAAQk0B,KAAKrhH,MAAAA;AAAAA,QACnB;AAAA,MACE7B,GAAAA,WAAU+B,OAAOyoH,mBAAmB,CAAA;AAEvCnqH,WAAKupH,YAAaW,MAAsBpxG,MAAM,MAC7C9Y;AAAAA,aAAKiqH,UAAU/wG,eAAAA;AACflZ,aAAK2uF,QAAQ9iF,KAAAA;AAAAA,MAAK,GAChBlM,WAAU+B,OAAO0oH,wBAAwB,CAC7C;AAAA,IAAA;AAAA,EAAA;ACxJD,WAAAz7B,QAAyBhvF;AAExBA,IAAAA,WAAU+B,OAAOyoH,kBAAkB;AACnCxqH,IAAAA,WAAU+B,OAAOknH,mBAAmB;AACpCjpH,IAAAA,WAAU+B,OAAOgnH,mBAAmB;AACpC/oH,IAAAA,WAAU+B,OAAO0oH,uBAAuB;AAElC,UAAAC,iBAAiB,IAAIjB,eAAezpH,UAAAA;AAE1CA,IAAAA,WAAUkmE,IAAIykD,WAAWD;AAEf1qH,IAAAA,WAAAiG,YAAY,oBAAoB,WAEzCykH;AAAAA,qBAAeE,WAAW,EACzB1kF,UAAU,MAAMlmC,WAAU+B,OAAOwC,kBAAkB,KACnDhB,MAAO1B,CAAAA,WACN;AAAA,YAAI7B,WAAU6yB,WAAAA,CAAY7yB,WAAU+B,OAAO8oH,eAAe;AACzD;AAAA,QACD;AAEA,cAAMC,gBAAgB9qH,WAAU+oB,cAAclnB,OAAMuE;AAChD,YAAApG,WAAUmG,SAAS2kH,aAAgB,GAAA;AAChCjpH,gBAAAA,UAAQ7B,WAAUmG,SAAS2kH,aAAAA;AACjC,iBAAO9qH,WAAU0zB,UAAUwf,aAAarxC,QAAMuB,YAAYvB,QAAMwB,UAAUxB,OAAAA;AAAAA,QAC3E;AACO,eAAA;AAAA,MAAA,GAERN,QAAQ;IACR,CAGQvB;AAAAA,IAAAA,WAAAiG,YAAY,aAAa,WAAA;AAClCykH,qBAAexpH,WAAAA;AAAAA,IAAW;AAGjBlB,IAAAA,WAAAiG,YAAY,cAAc,WACnCykH;AAAAA,qBAAeK;IAAY,CAGlB/qH;AAAAA,IAAAA,WAAAiG,YAAY,gBAAgB;AACrCykH,qBAAeK,YAAAA;AACR,aAAA;AAAA,IAAA,CAAA;AAEE/qH,IAAAA,WAAAiG,YAAY,kBAAkB,WACvCykH;AAAAA,qBAAeK;AACR,aAAA;AAAA,IAAA;EAGT;AChDe,WAAQC,wBAAChrH,YACvB2wE;AAAAA,mBAAe/zD,MAAM,iBAAiB5c,WAAU8a,MACjD;AAAA,EAAA;ACFe,WAAQmwG,iBAACjrH,YAAAA;AACvB2wE,mBAAe/zD,MAAM,SAAS5c,WAAU8a,MAAAA;AAAAA,EACzC;ACJe,WAAQitB,IAAC/nC;AAExBA,IAAAA,WAAUqwE,eAAe;AACxB,UAAI7lE,IAAI,CAAA;AACR,UAAIsH,QAAQ5R,SAAS+rF,SAASn4C,QAAQ,IAAI1pB,QAAQ,KAAK,EAAA,EAAIzkB,MAAM,GAAA;AACjE,eAASnB,IAAI,GAAGA,IAAIsN,KAAKrN,QAAQD,KAAK;AACrC,YAAIsF,IAAIgI,KAAKtN,CAAGmB,EAAAA,MAAM;AACtB,YAAImE,EAAErF,UAAU;AACf+F,YAAEV,EAAE,CAAA,CAAA,IAAMA,EAAE,CACb;AAAA,MAAA;AACD,aAAOU;AAAAA,IACR;AAEAxK,IAAAA,WAAUiG,YAAY,oBAAoB,WACzC;AAAA,UAAImjC,QAAQ;AACZ,UAAI8hF,MAAMlrH,WAAUwD,KAAK2qC,YAAY,UACrC;AAAA,UAAIg9E,MAAMnrH,WAAUwD,KAAK0qC,YAAY,UAAA;AACrC,UAAIk9E,eAAgBprH,WAAUqwE,eAAexuE,SAAS;AAEtD7B,MAAAA,WAAUiG,YAAY,uBAAuB,SAASY,IAAAA;AACrDukH,uBAAe;AACf,eAAO;AAAA,MACT,CAECprH;AAAAA,MAAAA,WAAUiG,YAAY,sBAAsB,SAAUmjF,IAAIC,IAAIzqC,GAAG3qC,GAChE;AAAA,YAAIm1B,OAAO;AACVA,kBAAQ;AACR,cAAI5+B,IAAIxK,WAAUqwE,aAAAA;AAElB,cAAI7lE,EAAE3I,OAAM;AACX,gBACC;AAAA,kBAAG7B,WAAUmG,SAASqE,EAAE3I,KAAO,GAAA;AAC9B6X,2BAAW,WACVykC;AAAAA,4BAAU3zC,EAAE3I,KACnB;AAAA,gBAAA,CAAA;AACM,uBAAO;AAAA,cACb,OAAU;AACJ,oBAAIqc,UAAUle,WAAUiG,YAAY,SAAS,WAC5CyT;AAAAA,6BAAW,WACVykC;AAAAA,8BAAU3zC,EAAE3I,KACpB;AAAA,kBAAA,CAAA;AACO7B,kBAAAA,WAAUujB,YAAYrF,OAAAA;AAAAA,gBAC7B;cACM;AAAA,YACN,SAAahY,GAAAA;AAAAA,YAAI;AAAA,UACb;AAED,cAAIsE,EAAEhH,QAAQgH,EAAE1K,MAAM;AACrB,gBAAA;AACCO,mBAAKyX,eAAgBtN,EAAEhH,OAAO0nH,IAAI1gH,EAAEhH,IAAQ,IAAA,MAAQgH,EAAE1K,QAAQ,IAAA;AAAA,YAC9D,SAAQoG;AAER7F,mBAAKyX,eAAgBtN,EAAEhH,OAAO0nH,IAAI1gH,EAAEhH,IAAAA,IAAQ,MAAOo7C,CAAAA;AAAAA,YACnD;AACD,mBAAO;AAAA,UACP;AAAA,QACD;AAED,YAAI/gB,SAAS,CACZ,UAAUstF,IAAIl3G,KAAKo1E,KACnB,WAAWzqC,KAAKwqC;AAGjB,YAAGgiC,cAAa;AACfvtF,iBAAO35B,KAAK,WAAWknH,YAAAA;AAAAA,QACvB;AAED,YAAIjkH,OAAO,MAAM02B,OAAO1tB,KAAK;AAC7BjQ,iBAAS+rF,SAASn4C,OAAO3sC;AACzB,eAAO;AAAA,MACT,CAAA;AAEC,eAASg3C,UAAUj4C,GAAAA;AAClB,YAAGlG,WAAU8gB,YAAW;AACvB,iBAAO;AAAA,QACP;AACDsqG,uBAAellH;AACf,YAAGlG,WAAUmG,SAASD,CAAG,GAAA;AACxBlG,UAAAA,WAAUm+C,UAAUj4C;QACpB;AAAA,MACD;AAAA,IACF;EACA;AChFe,WAAQmlH,uBAACrrH,YACvB2wE;AAAAA,mBAAe/zD,MAAM,eAAe5c,WAAU8a,MAC/C;AAAA,EAAA;ACJe,WAAQwwG,GAACtrH,YAAAA;AACxBA,IAAAA,WAAUiG,YAAY,cAAa,WAClC;AAAA,UAAI5F,KAAKwmD,QAAO;AACf;AACCxmD,eAAKwmD,OAAOlkD,MAAMwO,SAAS9Q,KAAKspB,WAAW,UAAWzpB,SAASM,KAAKsN,cAAY5N,SAASM,MAAM+2C,eAAa;AAAA,QAC5G,SAAOrxC,GAEP;AAAA,QAAA;AAAA,MACD;AAAA,IACF,CAEAlG;AAAAA,IAAAA,WAAU4jD,YAAY56B,OAAO+6B,YAAU,SAAS78B,MAAKxI,OAAM7X,IAC1D;AAAA,UAAA,OAAW6X,SAAS,eAAeA,UAAU;AAC5CA,iBAASwI,KAAKxmB,WAAWuH,QAAQ,CAAA,KAAI,CAAE,GAAEyW;AAC1CwI,WAAKxmB,WAAWge,QAAMA,SAAO;AAAA,IAC9B;AAAA,EAEA;ACjBe,WAAQ6sG,UAACvrH,YAAAA;AAMvBA,IAAAA,WAAU0zB,UAAU83F,YAAY,SAAShoH,MACxC;AAAA,aAAOxD,WAAUwD,KAAK0qC,YAAYluC,WAAU8nB,OAAOC,OAAOq3C,WAAW,KAAA,EAAO57D,IAC9E;AAAA,IAAA;AACCxD,IAAAA,WAAU0zB,UAAU+3F,aAAazrH,WAAUwD,KAAK0qC,YAAY,IAC5DluC;AAAAA,IAAAA,WAAU0zB,UAAUg4F,kBAAkB1rH,WAAUwD,KAAK0qC,YAAY,IAAA;AACjEluC,IAAAA,WAAU0zB,UAAUi4F,eAAe,SAAS7hH,GAAG5D,GAAGW,IACjD;AAAA,aAAOA,GAAGM;AAAAA,IACZ;AAEC,UAAMykH,aAAa;AAClB,aAAO5rH,WAAUiN,SAAS;AAAA,IAC5B;AAEC,UAAM4+G,cAAc,SAAS3kG,MAC5B;AAAA,UAAIrnB,MAAMG,WAAU6tB,YAAYxnB,QAAQ6gB,MAAM,kBAAA;AAC9C,WAAIrnB,OAAQA,CAAAA,IAAI0kC,aAAa,gBAAA;AAAmB,eAAO;AACvD,aAAOvkC,WAAU0zB,UAAUmG,WAAWh6B,IAAIiF,aAAa,gBAAA,CAAA;AAAA,IACzD;AAGC9E,IAAAA,WAAU8rH,yBAAwB,SAAS5lH,GAAAA;AAC1C,UAAI0lH,WAAc,GAAA;AACjB,cAAMxlH,SAASF,EAAEE;AACjB,YAAGpG,WAAU6tB,YAAYxnB,QAAQD,QAAQ,aAAkBpG,KAAAA,WAAU6tB,YAAYxnB,QAAQD,QAAQ,YAAc,GAAA;AAC9G,iBAAO;AAAA,QACP;AAED,cAAM5C,OAAOqoH,YAAYzlH;AAEzB,YAAG5C,MAAK;AACP,gBAAMoM,QAAQpM;AACd,gBAAMqM,MAAMxP,KAAKmD,KAAKC,IAAImM,OAAO,GAAG,KACpC;AAAA,cAAA,CAAKvP,KAAK0B,OAAOioB,YAAY3pB,KAAK0B,OAAO+T,iBAAgB;AACxDzV,iBAAK0V,YAAYnG,MAAMxK,QAAAA,GAAWyK,IAAIzK,QAAWc,GAAAA,CAAAA;AAAAA,UACjD;AAAA,QACD;AAAA,MACD;AAAA,IACH;AAEClG,IAAAA,WAAUiG,YAAY,mBAAmB,WAAA;AACxC,UAAI2lH,WACHvrH;AAAAA,aAAKkrH,UAAU,IAClB;AAAA,IAAA,CAAA;AAGC,QAAIr+E,MAAMltC,WAAU+X;AACpB/X,IAAAA,WAAU+X,cAAc,SAAS/N,KAAAA;AAChC,WAAK4hH,WAAc;AAAA,eAAO1+E,IAAIz+B,MAAMpO,MAAMiU,SAC1C;AAAA,eAAS9P,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD;AAC/BnE,aAAK0rH,mBAAmB/hH,IAAIxF,CAAAA,CAAAA;AAAAA,IAC/B;AAEC,QAAIoe,QAAQ5iB,WAAUyzC;AACtBzzC,IAAAA,WAAUyzC,aAAa,WACtB;AAAA,UAAA,CAAKm4E,WAAc;AAAA,eAAOhpG,MAAMnU,MAAMpO,MAAMiU;AAC5C,UAAItP,QAAQhF,WAAUgsH,oBACrBp+G,MAAM;AACP,eAASpK,QAAQwB,OAAO;AACvB,YAAIA,MAAMiK,eAAezL,IAAO,GAAA;AAC/BoK,gBAAM5I,MAAMxB;AACZoK,cAAImP,UAAU6X,OAAO,kBAAkB;QAIvC;AAAA,MACD;AACD50B,MAAAA,WAAUgsH,qBAAqB;IACjC;AAEChsH,IAAAA,WAAUisH,eAAe,WAAA;AACxB,UAAI5rH,KAAK6rH,UAAU;AAClB7rH,aAAK6rH,SAASvpH,MAAMod,UAAU;AAC9B1f,aAAK6rH,SAAS1oH,OAAO,IAAIqB,KAAK,MAAM,GAAG;MACvC;AAAA,IACH;AAEC7E,IAAAA,WAAUmsH,eAAe,SAAS3oH,MAAMupB,KAAK7mB,GAAG2P,KAC/C;AAAA,UAAIxV,KAAK6rH,UAAU;AAClB,YAAI7rH,KAAK6rH,SAAS1oH,KAAK4B,QAAa5B,KAAAA,KAAK4B,QAAW;AAAA;AACpD/E,aAAK6rH,SAAS3rH,YAAY;AAAA,MAC7B,OAAS;AACN,YAAIiU,IAAInU,KAAK6rH,WAAWhsH,SAASC,cAAc,KAC/CqU;AAAAA,UAAEtD,YAAY;AACd,YAAI7Q,KAAK0B,OAAOijB;AAAKxQ,YAAEtD,aAAa;AACpChR,iBAASM,KAAKC,YAAY+T,CAC1BA;AAAAA,UAAE8nB,iBAAiB,SAASt8B,WAAUqoB,OAAOyB,YAAAA;AAC7CtV,UAAE8nB,iBAAiB,SAAS,SAASp2B,IACpC;AAAA,cAAGA,GAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,eAAoB,GAAA,GAAA;AAC5D,kBAAMnE,MAAK8F,GAAEE,OAAOC,QAAQ,IAAIrG,WAAU+B,OAAOwC,oBAAoBO,aAAa9E,WAAU+B,OAAOwC,eACnGvE;AAAAA,YAAAA,WAAU0rB,aAAatrB,GACvB;AAAA,UAAA;AAAA,QACL,CACG;AAAA,MAAA;AACD,UAAI4J,MAAM3J,KAAK81C,UAAU3yC,MAAMnD,KAAKmD,KAAKC,IAAID,MAAM,GAAG,KAAA,CAAA;AACtD,UAAID,OAAO;AAEX,eAASiB,IAAI,GAAGA,IAAIwF,IAAIvF,QAAQD,KAAK;AACpC,YAAIqC,KAAKmD,IAAIxF,CACb;AAAA,YAAA,CAAInE,KAAK20C,aAAanuC,GAAGzG,IAAIyG,EAAAA;AAC5B;AAED,YAAIg3C,WAAYh3C,GAAG20C,QAAS,sCAAsC30C,GAAG20C,QAAQ,MAAO;AACpF,YAAIA,QAAS30C,GAAGs1C,YAAa,iCAAiCt1C,GAAGs1C,YAAY,MAAO;AAEpF54C,gBAAQ,0CAA0Cs6C,WAAgBrC,QAAQ,iBAAiBxxC,IAAIxF,CAAGpE,EAAAA,KAAK,OAAKC,KAAK0B,OAAOwC,kBAAgB,OAAKyF,IAAIxF,CAAGpE,EAAAA,KAAG;AACvJmD,gBAAQ,0CAA0Cs6C,WAAgBrC,QAAQ,QAAQxxC,IAAIxF,GAAGiG,SAASpK,KAAKqzB,UAAU8e,WAAWxoC,IAAIxF,GAAGpB,UAAc,IAAA,MAAM;AACvJG,gBAAQ;AACRA,gBAAQlD,KAAKqzB,UAAUi4F,aAAa3hH,IAAIxF,GAAGpB,YAAY4G,IAAIxF,CAAGnB,EAAAA,UAAU2G,IAAIxF,CAAM,CAAA,IAAA;AAAA,MAClF;AAEDnE,WAAK6rH,SAASvpH,MAAMod,UAAU;AAC9B1f,WAAK6rH,SAASvpH,MAAMC,MAAM;AAG1B,UAAI1C,SAASM,KAAK6gB,cAAc0L,IAAIlqB,OAAOxC,KAAK6rH,SAAS7qG,cAAc;AACtEhhB,aAAK6rH,SAASvpH,MAAME,OAAOkqB,IAAIlqB,OAAOxC,KAAK6rH,SAAS7qG,cAAc;AAAA;AAElEhhB,aAAK6rH,SAASvpH,MAAME,OAAOkqB,IAAIlqB,OAAOgT,IAAIwL,cAAc;AAEzDhhB,WAAK6rH,SAAS1oH,OAAOA;AACrBnD,WAAK6rH,SAAS3rH,YAAYgD;AAE1B,UAAIrD,SAASM,KAAK2gB,eAAe4L,IAAInqB,MAAMvC,KAAK6rH,SAAS/qG,eAAe;AACvE9gB,aAAK6rH,SAASvpH,MAAMC,MAAMmqB,IAAInqB,MAAMvC,KAAK6rH,SAAS/qG,eAAetL,IAAIsL,eAAe;AAAA;AAEpF9gB,aAAK6rH,SAASvpH,MAAMC,MAAMmqB,IAAInqB,MAAM;AAAA,IACvC;AAEC5C,IAAAA,WAAUosH,6BAA6B,SAASlmH,GAC/C;AAAA,UAAA,CAAK0lH,WAAc;AAAA;AAEnB,UAAI/1G,MAAM3P,EAAEE,UAAUF,EAAEisB;AACxB,UAAItc,IAAIutB,QAAQpgB,YAAiB,KAAA;AAChCnN,cAAMA,IAAI/H;AACX,UAAI9N,WAAUmS,cAAc0D,KAAKzD,QAAQ,gBAAA,KAAA;AACxCpS,QAAAA,WAAUmsH,aAAansH,WAAU0zB,UAAUmG,WAAWhkB,IAAI/Q,aAAa,oBAAoB9E,WAAU6tB,YAAY8X,UAAU9vB,GAAAA,GAAM3P,GAAG2P,GAEpI7V;AAAAA;AAAAA,QAAAA,WAAUisH;IACb;AACCjsH,IAAAA,WAAUqsH,qBAAqB,WAC9BrsH;AAAAA,MAAAA,WAAU4jB,gBAAgB5jB,WAAUoM,KAAK,cAAgB,EAAA,CAAA,GAAI,aAAapM,WAAUosH,0BAAAA;AACpFpsH,MAAAA,WAAU6B,MAAM7B,WAAUoM,KAAK,cAAA,EAAgB,IAAI,aAAapM,WAAUosH;IAC5E;AAECpsH,IAAAA,WAAUw5E,iBAAiB,SAASvlE,GAAAA;AACnC,UAAIgqB,aAAaj+B,WAAU0zB,UAAUgD,YAAYziB;AACjD,UAAI3O,QAAQjF,KAAK4gB,MAAM3c,iBAAiB,0DAA0D25B,UAAAA,IAAAA;AAClG,eAAQz5B,IAAI,GAAGA,IAAIc,MAAMb,QAAQD,KAAI;AACpC,YAAIxE,CAAAA,WAAU6tB,YAAYxnB,QAAQf,MAAMd,IAAI,yBAA2B,GAAA;AACtE,iBAAOc,MAAMd,CAAAA;AAAAA,QACb;AAAA,MACD;AACD,aAAO;AAAA,IACT;AAECxE,IAAAA,WAAUgsH,qBAAqB;AAC/BhsH,IAAAA,WAAUssH,kBAAkB,SAAS9oH,MAAM3B;AAC1C,UAAIo8B,aAAaj+B,WAAU0zB,UAAUgD,YAAYlzB;AACjD,UAAI41B,OAAO/4B,KAAKm5E,eAAeh2E;AAC/B,UAAK41B,CAAAA,MAAM;AACV;AAAA,MACA;AACD,UAAIuwC,WAAWtpE,KAAKqzB,UAAUif,YAAY9wC,OAAMuB,YAAYvB,OAAMwB,UAAUxB,MAC5E;AAAA,UAAA,CAAK7B,WAAUgsH,mBAAmB/tF,UAAAA,GAAa;AAC9C7E,aAAKrc,UAAUtZ,IAAI,kBAAkB;AACrC21B,aAAKjc,aAAa,kBAAkB8gB,UACpC7E;AAAAA,aAAKjc,aAAa,QAAQ8gB;AAC1Bj+B,QAAAA,WAAUgsH,mBAAmB/tF,cAAc7E;AAAAA,MAC3C;AACD,UAAGuwC,UAAS;AACXvwC,aAAKrc,UAAUtZ,IAAIkmE,QACnB;AAAA,MAAA;AAAA,IACH;AACC3pE,IAAAA,WAAUusH,oBAAoB,SAAS/oH,MACtC;AAAA,UAAI41B,OAAO/4B,KAAKm5E,eAAeh2E,IAC/B;AAAA,UAAA,CAAK41B,MAAM;AACV;AAAA,MACA;AACDA,WAAKrc,UAAU6X,OAAO,kBAAkB;IAE1C;AACC50B,IAAAA,WAAU+rH,qBAAqB,SAASlqH,QAAAA;AACvC,UAAI2B,OAAO3B,OAAMuB;AACjB,UAAII,KAAK4B,QAAY/E,IAAAA,KAAKoM,UAAUrH,QAAU,GAAA;AAC7C5B,eAAOnD,KAAKoM;AAAAA,MACf,OAAS;AACNjJ,eAAOnD,KAAKmD,KAAKyF,UAAU,IAAIpE,KAAKrB;MACpC;AAED,aAAOA,OAAO3B,OAAMwB,UAAU;AAC7BhD,aAAKisH,gBAAgB9oH,MAAM3B,MAAAA;AAC3B2B,eAAOnD,KAAKmD,KAAKC,IAAID,MAAM,GAAG,KAC9B;AAAA,YAAIA,KAAK4B,QAAa/E,KAAAA,KAAKmM,UAAUpH,QACpC;AAAA;AAAA,MACD;AAAA,IACH;AAECpF,IAAAA,WAAUurH,YAAY,SAASzrH;AAE9BE,MAAAA,WAAUqlB,UAAAA;AAEVrlB,MAAAA,WAAUgN,cAAclN;AAExB,UAAIO,KAAK+yB,cAAc/yB,KAAKgzB,MAAAA;AAAS;AAErC,UAAIvzB,MAAM;AACTE,QAAAA,WAAUqsH,mBAAAA;AACVrsH,QAAAA,WAAUwsH,kBAAAA;AACV,YAAIxsH,WAAUozB,cAAcpzB,WAAUqzB,MAAQ,GAAA;AAC7CrzB,UAAAA,WAAUszB,eAAe;AACzB;AAAA,QACA;AACDtzB,QAAAA,WAAUgY,iBACb;AAAA,MAAA,OAAS;AACNhY,QAAAA,WAAUisH,aAAAA;AAAAA,MACV;AAAA,IACH;AACCjsH,IAAAA,WAAUwsH,oBAAoB,WAAA;AAC7BnsH,WAAK0Q,QAAQ,CAAA;AACb1Q,WAAKutB,SAAS;AACd,UAAIowE,cAAc,CAClB;AAAA,UAAI75E,WAAW9jB,KAAK+L,KAAK,gBAAgB,CAEzC;AAAA,UAAIrC,IAAI1J,KAAK0B;AACboiB,eAASuJ,YAAY;AACrBvJ,eAAS5jB,YAAY;AAEZiR,WAAK8D,OAAO+gB,SAASlS,SAASxhB,MAAMwO,MAAUnR,IAAAA,WAAU2f,GAAG8sG,YAAY1iH,EAAE+kE;AAKlF,UAAIynB,gBAAgBr2F,SAASC,cAAc,KAAA;AAC3C,UAAIq2F,aAAan2F,KAAKmD,KAAK6B,WAAWrF,WAAUsM,aAEhDjM,CAAAA;AAAAA,WAAKy1B,iBAAiB0gE,YAAY,GAAG,OAAO,CAAA;AAE5C,eAAShyF,IAAI,GAAGA,IAAI,GAAGA,KAAK;AAC3B,YAAA,EAAKnE,KAAK2Q,YAAY3Q,KAAK2Q,SAASxM,CAAAA,IAAK;AACxCnE,eAAK0Q,MAAMvM,KAAK;AAChBnE,eAAKw0B,iBAAiBrwB,GAAG,GAAGgyF,YAAYD,aAAAA;AAAAA,QAExC;AACDC,qBAAan2F,KAAKmD,KAAKC,IAAI+yF,YAAY,GAAG,KAAA;AAAA,MAC1C;AACDD,oBAAcx3C,UAAU7tC,aAAa;AAErC,eAAQ1M,IAAI,GAAGA,IAAI+xF,cAAcrkF,WAAWzN,QAAQD,KAAI;AACvDnE,aAAK2nB,SAASwY,aAAa+1D,cAAcrkF,WAAW1N,CACpD,CAAA;AAAA,MAAA;AAED,UAAI2xB,KAAK91B,KAAKmD,KAAKnD,KAAK4M,QAAQ,QAAU5M,EAAAA,KAAKmD,KAAKuD,KAAK1G,KAAK6U,KAC9D,CAAA;AAAA,UAAIw3G,MAAMv2F;AACV,UAAIw2F,UAAU;AACd,YAAM1oD,UAAU/jE,SAASC,cAAc,KACvC8jE;AAAAA,cAAQlnD,UAAUtZ,IAAI,kBAAA;AACtB,eAASe,IAAI,GAAGA,IAAIuF,EAAE+kE,QAAQtqE,KAAI;AACjC,iBAASsvB,IAAI,GAAGA,IAAI/pB,EAAE6iH,QAAQ94F,KAAK;AAClC64F,oBAAUzsH,SAASC,cAAc,KAAA;AACjCwsH,kBAAQz7G,YAAY;AAEpBy7G,kBAAQxvG,aAAa,QAAQ9c,KAAKwxC,SAASG,WAAW7b,EACtDw2F,CAAAA;AAAAA,kBAAQxvG,aAAa,mBAAmB9c,KAAKwxC,SAASG,WAAW7b;AACjEw2F,kBAAQpsH,YAAY,6FAA6Fg2F,cAAch2F,YAAY;AAE3I,cAAI2jB,SAASyoG,QAAQttG,cAAc;AACnC,cAAIhE,OAAOsxG,QAAQttG,cAAc,gBAAA;AACjC,cAAI7e,OAAOmsH,QAAQttG,cAAc,gBAAA;AAEjC,cAAIqgB,WAAW1/B,WAAU+O;AACzB1O,eAAK2nB,SAASsY,WAAWpc,QAAQwb,QAAAA;AACjCr/B,eAAK2nB,SAASuY,SAASllB,MAAMqkB,QAAAA;AAG7Bxb,iBAAO3jB,YAAYF,KAAKqzB,UAAU+3F,WAAWt1F,EAAAA;AAI7C,cAAIT,KAAKr1B,KAAKmD,KAAK6B,WAAW8wB;AAC9B91B,eAAKo3B,mBAAmBj3B,MAAM21B,IAAIT,IAAI,CAEtC;AAAA,cAAIxtB,OAAO1H,KAAK8D,iBAAiB;AACjC,mBAAQzE,MAAM,GAAGA,MAAMqI,KAAKzD,QAAQ5E,OAAM;AACzCQ,iBAAK2nB,SAAS0Y,YAAYx4B,KAAKrI;UAC/B;AAEDokE,kBAAQxjE,YAAYksH,OAAAA;AAEpB3uB,sBAAYx5F,IAAIuF,EAAE6iH,SAAS94F,CAAMqC,KAAAA,GAAG/sB,YAAY/I,KAAK0B,OAAOsrC,kBAAkB,IAAI,KAAK,KAAK;AAC5FlX,eAAK91B,KAAKmD,KAAKC,IAAI0yB,IAAI,GAAG,OAE1B;AAAA,QAAA;AAAA,MACD;AAEDhS,eAAS1jB,YAAYwjE;AAErB,UAAIgG,cAAc5pE,KAAK62B,mBACvB;AAAA,UAAG+yC,aAAY;AACdA,oBAAY1pE,YAAYF,KAAKqzB,UAAUrzB,KAAK4M,QAAQ,SAASy/G,KAAKv2F,IAAI91B,KAAK4M,KAAAA;AAAAA,MAC3E;AAED5M,WAAK29F,cAAcA;AACnBA,kBAAYC,SAASyuB,IAAIzzG,SACzB5Y;AAAAA,WAAKoM,YAAYigH;AACjBrsH,WAAKmM,YAAY2pB;AAAAA,IACnB;AAECn2B,IAAAA,WAAUwsH,oBAAoB;AAE7B,UAAIroG,WAAW9jB,KAAK+L,KAAK,gBAAgB,CAEzC+X;AAAAA,eAASuJ,YAAY;AACrBvJ,eAAS5jB,YAAY;AAErB,UAAI02G,YAAY52G,KAAKmD,KAAKgqC,WAAW,IAAI3oC,KAAKxE,KAAK6U,KAAAA,CAAAA;AAEnD7U,WAAKoM,YAAYpM,KAAKmD,KAAK6B,WAAW,IAAIR,KAAKoyG,SAAAA,CAAAA;AAE/C,YAAMhzC,UAAU/jE,SAASC,cAAc,KACvC8jE;AAAAA,cAAQlnD,UAAUtZ,IAAI;AAEtB,UAAIq/D,cAAcm0C;AAClB,eAAQzyG,IAAI,GAAGA,IAAI,IAAIA,KAAI;AAC1B,YAAImoH,UAAUzsH,SAASC,cAAc,KAAA;AACrCwsH,gBAAQz7G,YAAY;AAEpBy7G,gBAAQxvG,aAAa,QAAQ9c,KAAKwxC,SAASG,WAAW8wB,WACtD6pD,CAAAA;AAAAA,gBAAQxvG,aAAa,mBAAmB9c,KAAKwxC,SAASG,WAAW8wB;AACjE6pD,gBAAQpsH,YAAY,+BAA+BF,KAAKqzB,UAAU+3F,WAAW3oD,WAG7E,CAAA;AAAA;AAAA,cAAMviC,WAAWosF,QAAQttG,cAAc,gBACvC;AAAA,cAAMwtG,aAAa7sH,WAAU+kE,kBAAkB,MAAM,EACpDvhE,MAAMs/D,aACNI,UAAU;AAEX2pD,mBAAWnqD,eAAeniC;AAC1BssF,mBAAW3rH,WAAAA;AAEX+iE,gBAAQxjE,YAAYksH,OAAAA;AAEpB7pD,sBAAcziE,KAAKmD,KAAKC,IAAIq/D,aAAa,GAAG,OAE5C;AAAA,MAAA;AACD3+C,eAAS1jB,YAAYwjE,OAAAA;AAErB,UAAIL,WAAWvjE,KAAKmD,KAAKC,IAAIwzG,WAAW,GAAG,MAAA;AAC3C,UAAGrzC,SAASx+D,QAAAA,KAAa/E,KAAKmD,KAAK6B,WAAW,IAAIR,KAAK++D,WAAWx+D,QAAU,GAAA;AAC3Ew+D,mBAAWvjE,KAAKmD,KAAK6B,WAAW,IAAIR,KAAK++D,QACzCA,CAAAA;AAAAA,mBAAWvjE,KAAKmD,KAAKC,IAAImgE,UAAU,GAAG,MAAA;AAAA,MACtC;AACDvjE,WAAKmM,YAAYo3D;AACjB,UAAIqG,cAAc5pE,KAAK62B;AACvB,UAAG+yC,aAAY;AACdA,oBAAY1pE,YAAYF,KAAKqzB,UAAUrzB,KAAK4M,QAAQ,OAAA,EAASgqG,WAAWrzC,UAAUvjE,KAAK4M,KACvF;AAAA,MAAA;AAAA,IACH;AAEC,QAAIxG,gBAAgBzG,WAAUyG;AAC9BzG,IAAAA,WAAUyG,gBAAgB,SAAS+zB,MAAAA;AAClC,UAAIoxF,CAAAA,WAAAA,GAAa;AAChB,eAAOnlH,cAAcgI,MAAMzO,YAAWsU,SAAAA;AAAAA,MACtC;AAED,UAAI9Q,OAAOqoH,YAAYrxF,KAAKp0B;AAC5B,aAAO,EACN5C,MACAkD,SAAQ;IAEX;AAEC,QAAIomH,cAAc9sH,WAAU+oB;AAC5B/oB,IAAAA,WAAU+oB,gBAAgB,SAAS7B,MAClC;AAAA,UAAI9mB,MAAK0sH,YAAYr+G,MAAMzO,YAAWsU,SAAAA;AACtC,WAAIlU,KAAG;AAEN,YAAIoD,OAAOqoH,YAAY3kG;AACvB,YAAI1jB,CAAAA;AAAM,iBAAO;AACjB,YAAIwG,MAAMhK,WAAUm2C,UAAU3yC,MAAMxD,WAAUwD,KAAKC,IAAID,MAAM,GAAG,KAAA,CAAA;AAChE,aAAIwG,IAAIvF;AAAQ,iBAAO;AAGvBrE,QAAAA,MAAK4J,IAAI,CAAG5J,EAAAA;AAAAA,MACZ;AACD,aAAOA;AAAAA,IACT;AAECJ,IAAAA,WAAUiG,YAAY,aAAa,WAAA;AAClCjG,MAAAA,WAAUisH,aACZ;AAAA,IAAA,CAAA;AAAA,EACA;AC5Ye,WAAQc,WAAC/sH,YAGxB;AAAA,KAAA,WAAA;AAEA,eAASqkD,SAASpkD,KAAK+sH;AACtB,iBAASz3G,OAAOy3G;AACf,eAAK/sH,IAAIsV,GAAAA;AACRtV,gBAAIsV,GAAOy3G,IAAAA,IAAIz3G;AACjB,eAAOtV;AAAAA,MACR;AAEA,eAASgtH,gBAAgBlnH,SAAS/F,YAAAA;AACjC,YAAIktH,QAAQ,CAAA;AACZnnH,kBAAU/F,WAAUoM,KAAKrG,OAAAA;AACzB,YAAIA,WAAWA,QAAQ,IAAI;AAC1BmnH,gBAAM/lG,IAAIphB,QAAQ,CAAA,EAAGupE;AACrB49C,gBAAM9lG,IAAIrhB,QAAQ,CAAA,EAAGwxC;AAAAA,QACvB,OAAQ;AACN21E,gBAAM/lG,IAAI;AACV+lG,gBAAM9lG,IAAI;AAAA,QACV;AACD,eAAO8lG;AAAAA,MACR;AAGA,UAAA,CAAI5rH,OAAO6rH,YAAW;AACrB7rH,eAAO6rH,aAAa,EACnBhjF,MAAM,SAASpC,MAAKj2B,MAAMxK,UAAAA;AACzB,iBAAOhG,OAAO8rH,KAAKjlF,KAAKgC,KAAKpC,MAAKj2B,MAAMxK,QAAAA;AAAAA,QACxC,GACDuiC,KAAK,SAAS9B,MAAKzgC,UAClB;AAAA,iBAAOhG,OAAO6mC,KAAK0B,IAAI9B,MAAKzgC,QAAAA;AAAAA,QAC5B;MAEH;AAEA,eAAS+lH,mBAAmBrtH,YAE3BA;AAAAA,QAAAA,WAAUqc,cAAc,SAASta;AAChCA,mBAASsiD,SAAUtiD,UAAU,IAAK,EACjC0Y,MAAK,gBACL2wB,QAAO,MACPkiF,aAAY,aACZC,KAAI,IACJtjC,MAAK,GACLjlE,KAAKhlB,WAAU+B,OAAOijB,IAEvBjjB,CAAAA;AAAAA,iBAAOwB,OAAOlD,KAAKmtH,aAAazrH;AAChCA,iBAAOjC,OAAOO,KAAKiG,SAAWxG,EAAAA;AAC9BO,eAAKotH,gBAAgB1rH,QAAQ,KAC/B;AAAA,QAAA;AAEC/B,QAAAA,WAAUoc,cAAc,SAASra;AAChCA,mBAASsiD,SAAUtiD,UAAU,IAAK,EACjC0Y,MAAK,gBACL2wB,QAAO,MACPkiF,aAAY,aACZC,KAAI,IACJtjC,MAAK,GACLjlE,KAAKhlB,WAAU+B,OAAOijB,IAEvBjjB,CAAAA;AAAAA,iBAAOwB,OAAOlD,KAAKmtH,aAAazrH,MAChCA;AAAAA,iBAAOjC,OAAOO,KAAKiG,SAAAA,EAAWxG;AAC9BO,eAAKotH,gBAAgB1rH,QAAQ,KAC/B;AAAA,QAAA;AAEC/B,QAAAA,WAAU0tH,eAAe,SAAS3rH,QACjCA;AAAAA,mBAASsiD,SAAUtiD,UAAU,IAAK,EACjC0Y,MAAK,iBACL3I,MAAKzR,KAAKstH,iBAAiB,MAAM5rH;AAElC1B,eAAKotH,gBAAgB1rH,QAAQ,MAC/B;AAAA,QAAA;AAEC/B,QAAAA,WAAU4tH,gBAAgB,SAAS7rH,QAClCA;AAAAA,mBAASsiD,SAAUtiD,UAAU,IAAK,EACjC0Y,MAAK,iBACLyQ,OAAM,UACNpZ,MAAKzR,KAAKstH,iBAAkBttH,KAAKqzB,UAAUue,YAAYlwC,MACvDq7C,GAAAA,SAAQ/8C,KAAKwtH,mBAAAA,EAAAA,CAAAA;AAEdxtH,eAAKotH,gBAAgB1rH,QAAQ;QAC/B;AAEC/B,QAAAA,WAAU8tH,kBAAkB,SAASh8G,MAAMzK,MAAMC,UAAAA;AAAAA,iBACzCwK,KAAKxK;AACZ,cAAIygC,OAAMj2B,KAAKi8G,UAAU;AAEzBzsH,iBAAO6rH,WAAWhjF,KAAKpC,MACtB,UAAQ1gC,OAAK,mBAAiBugC,mBAAmB9iB,KAAKC,UAAUjT,IAChE,CAAA,GAAA,SAASutC,QACR;AAAA,gBAAI2uE,OAAO3uE,OAAO1U,OAAO9B,SAAS;AAClC,gBAAIsxB,OAAO;AAEX,gBAAA,CAAK6zD,MAAK;AACT;AACC7zD,uBAAOr1C,KAAKujB,MAAMgX,OAAO1U,OAAOjuB;cAChC,SAAMxW,GAAI;AAAA,cAAA;AAAA,YACX;AACDoB,qBAAS6yD,IAAAA;AAAAA,UACT;QAEJ;AAECn6D,QAAAA,WAAUiuH,qBAAqB,SAASl0G,QAAQqxB,QAC/C;AAAA,cAAIhlC,SAAS,CAAA;AACb,mBAASmP,OAAOwE;AACf3T,mBAAOmP,GAAAA,IAAOwE,OAAOxE,GAAAA;AAEtBnP,iBAAOhD,aAAagoC,OAAOhlC,OAAOhD,UAClCgD;AAAAA,iBAAO/C,WAAW+nC,OAAOhlC,OAAO/C,QAChC+C;AAAAA,iBAAO8nH,QAAQ7tH,KAAKqzB,UAAU0K,WAAWrkB,OAAO3W,YAAY2W,OAAO1W,UAAU0W,MAAAA;AAE7E,iBAAO3T;AAAAA,QACT;AAECpG,QAAAA,WAAU2tH,mBAAmB,SAASviF,QAAQrpC,QAAAA;AAC7CqpC,mBAASA,UAAUprC,WAAUwD,KAAK0qC,YAAY,iBAAiB,IAE/D;AAAA,cAAIiS;AACJ,cAAIp+C,UAAUA,OAAO6N,SAAS7N,OAAO8N;AACpCswC,qBAASngD,WAAUm2C,UAAUp0C,OAAO6N,OAAO7N,OAAO8N,GAAAA;AAAAA;AAElDswC,qBAASngD,WAAUm2C,UAAAA;AAEpB,cAAIrkC,OAAO;AACX,mBAAStN,IAAI,GAAGA,IAAG27C,OAAO17C,QAAQD;AACjCsN,iBAAKtN,CAAAA,IAAKnE,KAAK4tH,mBAAmB9tE,OAAO37C,IAAI4mC,MAE9C;AAAA,iBAAOt5B;AAAAA,QACT;AAEC9R,QAAAA,WAAU6tH,qBAAqB,WAAA;AAC9B,iBAAO,CACN,EAAEztH,IAAG,cAAc8jB,QAAO,cAAc9S,OAAM,GAAA,GAC9C,EAAEhR,IAAG,YAAY8jB,QAAO,YAAY9S,OAAM,GAC1C,GAAA,EAAEhR,IAAG,SAAS8jB,QAAO,QAAQ9S,OAAM;QAEtC;AAECpR,QAAAA,WAAUytH,kBAAkB,SAAS37G,MAAMzK;AAC1C,cAAIyK,CAAAA,KAAK2mD,SAAQ;AAChB3mD,iBAAK2mD,UAAUz4D,WAAUy4D;AAAAA,UACzB;AAED,cAAA,CAAI3mD,KAAK86C,MAAK;AACb96C,iBAAK86C,OAAO5sD,WAAU4sD;AAAAA,UACtB;AAED,cAAI96C,KAAKxK;AACP,mBAAOtH,WAAU8tH,gBAAgBh8G,MAAMzK,MAAMyK,KAAKxK,QAEpD;AAAA,cAAIqkB,OAAOtrB,KAAK8tH,oBAAAA;AAEhBxiG,eAAKjrB,WAAW6nD,SAASz2C,KAAKi8G,UAAU;AACxCpiG,eAAKjrB,WAAWwR,WAAW,CAAGwM,EAAAA,QAAQoG,KAAKC,UAAUjT,IAAAA;AACrD6Z,eAAKjrB,WAAWwR,WAAW,CAAGwM,EAAAA,QAAQrX;AACtCskB,eAAKjrB,WAAWw+F;QAClB;AAECl/F,QAAAA,WAAUmuH,sBAAsB,WAAA;AAC/B,eAAK9tH,KAAK+tH,qBAAoB;AAC7B,gBAAI55G,IAAInU,KAAK+tH,sBAAsBluH,SAASC,cAAc,KAAA;AAC1DqU,cAAE7R,MAAMod,UAAU;AAClBvL,cAAEjU,YAAY;AACdL,qBAASM,KAAKC,YAAY+T,CAAAA;AAAAA,UAC1B;AACD,iBAAOnU,KAAK+tH;AAAAA,QACd;AAECpuH,QAAAA,WAAUquH,mBAAmB,SAASjjF,QAAQkiF,aAAarjC,MAAMsjC,KAAKrpG,QAAQi5E,QAAQ7mE;AAErFi3F,gBAAMl3F,SAASk3F,OAAK,QAAQ;AAE5B,cAAIL,QAAQ,EACXoB,IAAK,EAAEnnG,GAAE,KAAKC,GAAE,OAChBmnG,IAAK,EAAEpnG,GAAE,KAAKC,GAAE,IAChBonG,GAAAA,IAAK,EAAErnG,GAAE,KAAKC,GAAE,IAChBqnG,GAAAA,IAAK,EAAEtnG,GAAE,KAAKC,GAAE,IAAA,GAChBsnG,IAAK,EAAEvnG,GAAE,KAAKC,GAAE,IAAA,GAChBunG,IAAK,EAAExnG,GAAE,KAAKC,GAAE;AAGjB,cAAIwnG,QAAQ3B,gBAAgB,gBAAgB5sH,IAAAA,EAAM8mB;AAClD,cAAI0nG,QAAQ5B,gBAAgB,gBAAgB5sH,MAAM+mB;AAClD,cAAI0nG,QAAQ7B,gBAAgB,kBAAkB5sH,IAAM+mB,EAAAA;AACpD,cAAI2nG,QAAQ9B,gBAAgB,iBAAiB5sH,IAAM+mB,EAAAA;AAEnD,cAAI4nG,QAAQ,EACX5nG,GAAGynG,QAAQC,QAAQC,MAGpB;AAAA,cAAI3jF,WAAW,QAAQ;AACtB4jF,kBAAM7nG,IAAIynG;AAAAA,UACb,OAAS;AACNI,kBAAM7nG,IAAI3V,KAAK8D,OAAQg4G,gBAAgB,cAAcJ,MAAM9hF,MAAQhkB,EAAAA,IAAI8lG,MAAM9hF,MAAAA,EAAQjkB,KAAKomG,GAC1F;AAAA,UAAA;AAED,cAAIj3F,QAAQ;AACX04F,kBAAM7nG,KAAMm1E,WAAWhmE,OAAOnP,CAAAA,KAAM;AACpC6nG,kBAAM5nG,KAAMk1E,WAAWhmE,OAAOlP,CAAAA,KAAM;AAAA,UACpC;AAED,iBAAO4nG;AAAAA,QACT;AAEC,iBAASC,cACR;AAAA,cAAInvH,OAAOE,WAAUsG,SAAAA,EAAWxG;AAChC,cAAIE,WAAU4L,UAAU5L,WAAU4L,OAAO9L,IAAO,GAAA;AAC/C,mBAAOE,WAAU4L,OAAO9L;UACxB;AACD,iBAAO;AAAA,QACP;AAED,iBAASovH,kBACR;AAAA,cAAIC,iBAAiBzgH,QACpBy8C,aAAaz8C;AAEd,cAAI4M,WAAW2zG,YACf;AAAA,cAAI3zG,UAAU;AACb6vC,yBAAa7vC,SAAS6vC;AACtBgkE,6BAAiB7zG,SAASqjE;AAAAA,UAC1B;AAED,iBAAO,EACN/+D,YAAY5f,WAAU2f,GAAGC,YACzB8F,cAAc1lB,WAAU2f,GAAG+F,cAC3B0pG,aAAapvH,WAAU2kB,KAAKhiB,MAAMyO,OAClCi+G,cAAcrvH,WAAU2kB,KAAKhiB,MAAMwO,QACnCm+G,qBAAqBnkE,YACrBokE,0BAA0BJ,eAAAA;AAAAA,QAE3B;AAED,iBAASK,eAAeniH,MAAMoiH,cAC7BzvH;AAAAA,UAAAA,WAAU2kB,KAAKhiB,MAAMyO,QAAS/D,KAAK8Z,IAAI;AACvCnnB,UAAAA,WAAU2kB,KAAKhiB,MAAMwO,SAAS9D,KAAK+Z,IAAI;AAEvCpnB,UAAAA,WAAU2f,GAAGC,aAAa;AAC1B5f,UAAAA,WAAU2f,GAAG+F,eAAe;AAE5B,cAAIpK,WAAW2zG,YACf;AAAA,cAAIQ,aAAaH,uBAAuBG,aAAaF,0BAA0B;AAE9Ej0G,qBAAS6vC,aAAa;AACtB7vC,qBAASqjE,kBAAkB;AAAA,UAC3B;AAAA,QACD;AAED,iBAAS+wC,gBAAgBD,cAAAA;AACxBzvH,UAAAA,WAAU2f,GAAG+F,eAAe+pG,aAAa/pG;AACzC1lB,UAAAA,WAAU2f,GAAGC,aAAa6vG,aAAa7vG;AACvC5f,UAAAA,WAAU2kB,KAAKhiB,MAAMyO,QAASq+G,aAAaL;AAC3CpvH,UAAAA,WAAU2kB,KAAKhiB,MAAMwO,SAASs+G,aAAaJ;AAE3C,cAAI/zG,WAAW2zG,YAAAA;AACf,cAAIQ,aAAaH,uBAAuBG,aAAaF,0BAA0B;AAC9Ej0G,qBAAS6vC,aAAaskE,aAAaH;AACnCh0G,qBAASqjE,kBAAkB8wC,aAAaF;AAAAA,UACxC;AAAA,QACD;AAEDvvH,QAAAA,WAAUwtH,eAAe,SAAUvtH;AAClC,cAAIwvH,eAAeP;AACnB,cAAI7hH,OAAOrN,WAAUquH,iBAAiBpuH,IAAImrC,QAAQnrC,IAAIqtH,aAAartH,IAAIgqF,MAAMhqF,IAAIstH,KAAKttH,IAAIikB,QAAQjkB,IAAIk9F,QAAQl9F,IAAIq2B,MAAAA;AAElH,cAAI/yB,OAAO;AACX;AACCisH,2BAAeniH,MAAMoiH,YACrBzvH;AAAAA,YAAAA,WAAU8X;AACVvU,mBAAOvD,WAAU2kB,KAAKpkB;AAAAA,UACtB,SAAQ2F,GAGR0Q;AAAAA,oBAAQC,MAAM3Q,CAAAA;AAAAA,UACjB,UAAY;AACTwpH,4BAAgBD;AAChBzvH,YAAAA,WAAU8X,eAAAA;AAAAA,UACV;AAED,iBAAOvU;AAAAA,QACT;AAAA,MAEA;AAEA8pH,yBAAmBrtH,UAGlB;AAAA,IAAA;EAED;AC3Pe,QAAA2vH,gBAAA,EACdznD,cACAQ,eACA4B,aACA54C,WACAi7C,WACAiB,sBACAoC,QACAxJ,aAAaoK,wBACbg/C,cAAc/+C,yBACdC,SACAkC,QACA+5C,YACAn5C,WACAC,gBACAyP,SACA8D,OACAhvE,OACAo4E,UACAiE,SACAiE,aACAjzF,cAAcmzF,yBACdC,aACAU,aACAE,KACAhzB,WACAw1B,KACAuD,YACAx1E,UACAg/B,WACAq7D,kBACAn8E,WACA5sB,UAAU8sG,qBACVp5B,SACAzoB,cAAcykD,yBACdj2G,OAAOk2G,kBACPljF,KACAxsB,aAAa8vG,wBACbC,IACAC,UC5ED;AAAA,QAAMsE,UAAU,IAAIvoD,iBAAiBqoD;AAEhC,QAAC3vH,YAAY6vH,QAAQ9/D,qBACrB;AAAA,QAACD,cAAY,EACjB6W,QAAQ3mE,UAAUkjB,KAAK2sG,QAAQlpD,QAAQkpD,OAAAA,EAAAA;AAGxCvuH,SAAOtB,YAAYA;AACnBsB,SAAOwuD,YAAYA;AAEnB,MAAIxuD,CAAAA,OAAOwuH,MAAM;AAChBxuH,WAAOwuH,OAAO;EACf;AAEAxuH,SAAOwuH,KAAK9vH,YAAYA;AACxBsB,SAAOwuH,KAAKhgE,YAAYA;;;;;;","x_google_ignoreList":[126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153]} \ No newline at end of file +{"version":3,"file":"dhtmlxscheduler.js","sources":["../../sources/dhtmlx_hook.js","../../sources/global.js","../../sources/plugins/drag_highlight_pos.js","../../sources/plugins/undo_delete.js","../../sources/plugins/limit.js","../../sources/plugins/batch_update.js","../../sources/plugins/index.js","../../sources/core/utils/utils.js","../../sources/core/state.js","../../sources/core/common/assert.js","../../sources/core/common_errors.js","../../sources/core/connector.js","../../sources/core/nav_bar.js","../../sources/core/scheduler_resize_listener.js","../../sources/utils/eventable.js","../../sources/core/scheduler.js","../../sources/core/utils/event.js","../../sources/core/utils/scoped_event.js","../../sources/core/common.js","../../sources/core/wai_aria.js","../../sources/core/utils/dom_helpers.js","../../sources/utils/env.js","../../sources/core/destructor.js","../../sources/core/common/url_serialize.js","../../sources/core/utils/ajax.js","../../sources/core/base.js","../../sources/core/config.js","../../sources/core/event.js","../../sources/core/event_highlight.js","../../sources/core/loaders/xml.js","../../sources/core/loaders/json.js","../../sources/core/loaders/ical.js","../../sources/core/common/get_serializable_events.js","../../sources/core/load.js","../../sources/core/lightbox.js","../../sources/core/touch.js","../../sources/core/dhtmlx/dhtmlx_suite_hooks.js","../../sources/core/skins.js","../../sources/core/jquery.js","../../sources/core/delay_render.js","../../sources/core/dataprocessor/dataprocessor_hooks.js","../../sources/core/dataprocessor/dataprocessor.js","../../sources/core/message.js","../../sources/locale/locale_ar.js","../../sources/locale/locale_be.js","../../sources/locale/locale_ca.js","../../sources/locale/locale_cn.js","../../sources/locale/locale_cs.js","../../sources/locale/locale_da.js","../../sources/locale/locale_de.js","../../sources/locale/locale_el.js","../../sources/locale/locale_en.js","../../sources/locale/locale_es.js","../../sources/locale/locale_fi.js","../../sources/locale/locale_fr.js","../../sources/locale/locale_he.js","../../sources/locale/locale_hu.js","../../sources/locale/locale_id.js","../../sources/locale/locale_it.js","../../sources/locale/locale_jp.js","../../sources/locale/locale_manager.js","../../sources/locale/locale_nb.js","../../sources/locale/locale_nl.js","../../sources/locale/locale_no.js","../../sources/locale/locale_pl.js","../../sources/locale/locale_pt.js","../../sources/locale/locale_ro.js","../../sources/locale/locale_ru.js","../../sources/locale/locale_si.js","../../sources/locale/locale_sk.js","../../sources/locale/locale_sv.js","../../sources/locale/locale_tr.js","../../sources/locale/locale_ua.js","../../sources/locale/index.js","../../sources/core/datepicker.js","../../sources/scheduler_factory_method.js","../../sources/ext/extension_manager.js","../../sources/scheduler_factory.js","../../sources/ext/active_links.js","../../sources/ext/agenda_legacy_view.js","../../sources/ext/agenda.js","../../sources/ext/all_timed.js","../../sources/ext/collision.js","../../sources/ext/container_autoresize.js","../../sources/ext/cookie.js","../../sources/ext/restricted_extensions/not_implemented_extension.js","../../sources/ext/restricted_extensions/daytimeline.js","../../sources/ext/restricted_extensions/drag_between.js","../../sources/ext/editors.js","../../sources/ext/expand.js","../../sources/ext/restricted_extensions/grid_view.js","../../sources/ext/html_templates.js","../../sources/ext/keyboard_navigation/common/keyboard_shortcuts.js","../../sources/ext/keyboard_navigation/common/eventhandler.js","../../sources/ext/keyboard_navigation/common/trap_modal_focus.js","../../sources/ext/keyboard_navigation/marker.js","../../sources/ext/keyboard_navigation/elements/scheduler_node.js","../../sources/ext/keyboard_navigation/elements/nav_node.js","../../sources/ext/keyboard_navigation/elements/header_cell.js","../../sources/ext/keyboard_navigation/elements/event.js","../../sources/ext/keyboard_navigation/elements/time_slot.js","../../sources/ext/keyboard_navigation/elements/minical_button.js","../../sources/ext/keyboard_navigation/elements/minical_cell.js","../../sources/ext/keyboard_navigation/elements/data_area.js","../../sources/ext/keyboard_navigation/modals.js","../../sources/ext/keyboard_navigation/core.js","../../sources/ext/keyboard_navigation/key_nav_legacy.js","../../sources/ext/keyboard_navigation/scheduler_handlers.js","../../sources/ext/keyboard_navigation/minical_handlers.js","../../sources/ext/key_nav.js","../../sources/ext/layer.js","../../sources/ext/limit.js","../../sources/ext/map_view/gMapAdapter.ts","../../sources/ext/map_view/osmMapAdapter.ts","../../sources/ext/map_view/mapboxAdapter.ts","../../sources/ext/map_view/index.ts","../../sources/ext/minical.js","../../sources/ext/monthheight.js","../../sources/ext/restricted_extensions/multisection.js","../../sources/ext/multiselect.js","../../sources/ext/multisource.js","../../sources/ext/mvc.js","../../sources/ext/outerdrag.js","../../sources/ext/pdf.js","../../sources/ext/quick_info.js","../../sources/ext/readonly.js","../../node_modules/rrule/dist/esm/weekday.js","../../node_modules/rrule/dist/esm/helpers.js","../../node_modules/rrule/dist/esm/dateutil.js","../../node_modules/rrule/dist/esm/iterresult.js","../../node_modules/rrule/node_modules/tslib/tslib.es6.mjs","../../node_modules/rrule/dist/esm/callbackiterresult.js","../../node_modules/rrule/dist/esm/nlp/i18n.js","../../node_modules/rrule/dist/esm/nlp/totext.js","../../node_modules/rrule/dist/esm/nlp/parsetext.js","../../node_modules/rrule/dist/esm/types.js","../../node_modules/rrule/dist/esm/nlp/index.js","../../node_modules/rrule/dist/esm/datetime.js","../../node_modules/rrule/dist/esm/parseoptions.js","../../node_modules/rrule/dist/esm/parsestring.js","../../node_modules/rrule/dist/esm/datewithzone.js","../../node_modules/rrule/dist/esm/optionstostring.js","../../node_modules/rrule/dist/esm/cache.js","../../node_modules/rrule/dist/esm/masks.js","../../node_modules/rrule/dist/esm/iterinfo/yearinfo.js","../../node_modules/rrule/dist/esm/iterinfo/monthinfo.js","../../node_modules/rrule/dist/esm/iterinfo/easter.js","../../node_modules/rrule/dist/esm/iterinfo/index.js","../../node_modules/rrule/dist/esm/iter/poslist.js","../../node_modules/rrule/dist/esm/iter/index.js","../../node_modules/rrule/dist/esm/rrule.js","../../node_modules/rrule/dist/esm/iterset.js","../../node_modules/rrule/dist/esm/rrulestr.js","../../node_modules/rrule/dist/esm/rruleset.js","../../sources/ext/recurring.js","../../sources/ext/recurring_legacy.js","../../sources/ext/serialize.js","../../sources/ext/restricted_extensions/timeline.js","../../sources/ext/tooltip/tooltip.ts","../../sources/ext/tooltip/tooltipManager.ts","../../sources/ext/tooltip/index.ts","../../sources/ext/restricted_extensions/treetimeline.js","../../sources/ext/restricted_extensions/units.js","../../sources/ext/url.js","../../sources/ext/restricted_extensions/week_agenda.js","../../sources/ext/wp.js","../../sources/ext/year_view.js","../../sources/ext/export_api/index.js","../../sources/ext/extensions_gpl.js","../../sources/dhtmlxscheduler.gpl.js"],"sourcesContent":["\r\nexport default function(){\r\n/* global dhtmlx */\r\nif (typeof dhtmlx != \"undefined\" && dhtmlx.attaches) {\r\n\tdhtmlx.attaches.attachScheduler = function (day, mode, tabs, scheduler) {\r\n\t\tvar tabs = tabs || '
';\r\n\t\tvar obj = document.createElement(\"DIV\");\r\n\t\tobj.id = \"dhxSchedObj_\" + this._genStr(12);\r\n\t\tobj.innerHTML = '
' + tabs + '
';\r\n\t\tdocument.body.appendChild(obj.firstChild);\r\n\r\n\t\tthis.attachObject(obj.id, false, true);\r\n\r\n\t\tthis.vs[this.av].sched = scheduler;\r\n\t\tthis.vs[this.av].schedId = obj.id;\r\n\t\tscheduler.setSizes = scheduler.updateView;\r\n\t\tscheduler.destructor = function () { };\r\n\t\tscheduler.init(obj.id, day, mode);\r\n\r\n\t\treturn this.vs[this._viewRestore()].sched;\r\n\t};\r\n}\r\n\r\n}","\r\n/* eslint-disable no-restricted-globals */\r\nvar globalScope;\r\nif(typeof window !== \"undefined\"){\r\n\tglobalScope = window;\r\n}else{\r\n\tglobalScope = global;\r\n}\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default globalScope;","export default function dragHighlightPos(scheduler){\r\n let dndMarkers = [];\r\n let dragStarted = false;\r\n let eventNode = null;\r\n let event = null;\r\n\r\n function isEnabled() { \r\n return scheduler.config.drag_highlight && scheduler.markTimespan;\r\n }\r\n\r\n function checkViewName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj){\r\n return viewObj.layout;\r\n }\r\n return viewName;\r\n }\r\n\r\n function checkSectionPropertyName(viewName){\r\n const viewObj = scheduler.getView(viewName);\r\n if(viewObj.y_property){\r\n return viewObj.y_property;\r\n }\r\n if(viewObj.map_to){\r\n return viewObj.map_to;\r\n }\r\n }\r\n\r\n function setRequiredStylesToMarker(eventNode, layout){\r\n switch (layout) {\r\n case \"month\":\r\n eventNode.style.top = \"\";\r\n eventNode.style.left = \"\";\r\n break;\r\n case \"timeline\":\r\n eventNode.style.left = \"\";\r\n eventNode.style.marginLeft = \"1px\";\r\n break;\r\n default:\r\n eventNode.style.top = \"\";\r\n break;\r\n }\r\n }\r\n \r\n function createMarkerConfig(configSettings){\r\n const { event, layout, viewName, sectionId, eventNode } = configSettings;\r\n setRequiredStylesToMarker(eventNode, layout);\r\n const sections = {};\r\n let markerObject = {\r\n start_date: event.start_date,\r\n end_date: event.end_date,\r\n css: \"dhx_scheduler_dnd_marker\",\r\n html: eventNode\r\n };\r\n if (layout == \"timeline\" || layout == \"month\" ){\r\n // we need to set end date less than 24 hours of the views to avoid receiving multiple marktimespans\r\n markerObject = {...markerObject, end_date: scheduler.date.add(event.start_date, 1, 'minute')};\r\n }\r\n if (sectionId){\r\n sections[viewName] = sectionId;\r\n markerObject.sections = sections;\r\n }\r\n return markerObject;\r\n }\r\n\r\n function createViewMarker(settings){\r\n const { layout } = settings;\r\n let markerConfigs;\r\n switch (layout) {\r\n case \"month\": \r\n markerConfigs = getMonthViewMarkers(settings);\r\n break;\r\n case 'timeline':\r\n case 'units':\r\n markerConfigs = getTimelineAndUnitsViewMarkers(settings);\r\n break;\r\n default: \r\n markerConfigs = getColumnViewMarkers(settings);\r\n break;\r\n }\r\n markerConfigs.forEach((cfg) => {\r\n dndMarkers.push(scheduler.markTimespan(cfg));\r\n });\r\n }\r\n\r\n function getColumnViewMarkers(settings){\r\n const {event, layout, viewName, sectionId} = settings;\r\n let columnViewMarkersArray = [];\r\n let eventNodes = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']:not(.dhx_cal_select_menu):not(.dhx_drag_marker)`);\r\n if(eventNodes){\r\n for (let i = 0; i < eventNodes.length; i++) {\r\n let eventNodeClone = eventNodes[i].cloneNode(true);\r\n let startDate = new Date(+eventNodeClone.getAttribute(\"data-bar-start\"));\r\n let endDate = new Date(+eventNodeClone.getAttribute(\"data-bar-end\"));\r\n let dates = {start_date: startDate, end_date: endDate};\r\n const configSettings = {\r\n event: dates, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode:eventNodeClone\r\n };\r\n columnViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\t\r\n }\r\n return columnViewMarkersArray;\r\n }\r\n\r\n function getMonthViewMarkers(settings){\r\n let monthViewMarkersArray = [];\r\n const {event, layout, viewName, sectionId} = settings;\r\n const weekDates = [];\r\n let currDate = new Date(event.start_date);\r\n while(currDate.valueOf() < event.end_date.valueOf()){\r\n let obj = {start_date: currDate};\r\n weekDates.push(obj);\r\n currDate = scheduler.date.week_start(scheduler.date.add(currDate, 1, \"week\"));\r\n }\r\n let cells = scheduler.$container.querySelectorAll(`[${scheduler.config.event_attribute}='${event.id}']`);\r\n for (let i = 0; i < cells.length; i++) {\r\n const configSettings = {\r\n event: weekDates[i], \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode: cells[i].cloneNode(true)\r\n };\r\n monthViewMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n return monthViewMarkersArray;\r\n }\r\n\r\n function getTimelineAndUnitsViewMarkers(settings){\r\n let unitMarkersArray = [];\r\n const {event, layout, viewName, eventNode} = settings;\r\n let sectionPropertyName = checkSectionPropertyName(viewName);\r\n if (scheduler.config.multisection && sectionPropertyName){\r\n const sections = String(event[sectionPropertyName]).split(scheduler.config.section_delimiter);\r\n const formatedSections = sections.map(element => String(element));\r\n const elems = [];\r\n for (let i = 0; i < formatedSections.length; i++) {\r\n elems[i] = eventNode.cloneNode(true);\r\n const configSettings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId: formatedSections[i],\r\n eventNode: elems[i]\r\n };\r\n unitMarkersArray.push(createMarkerConfig(configSettings));\r\n }\r\n }\r\n return unitMarkersArray;\r\n }\r\n \r\n scheduler.attachEvent(\"onBeforeDrag\", function (id, mode, e){\r\n if (isEnabled()) {\r\n dragStarted = true;\r\n event = scheduler.getEvent(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n // to avoid incorrect eventNode and marker creation when scheduler.config.cascade_event_display included\r\n if (layout == \"units\" && scheduler.config.cascade_event_display ) {\r\n scheduler.unselect(id);\r\n eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n }\r\n }\r\n return true;\r\n });\r\n\r\n scheduler.attachEvent(\"onEventDrag\", function (id, mode, e){\r\n if(dragStarted && isEnabled()){\r\n dragStarted = false;// insert element only once after dnd start\r\n const viewName = scheduler.getState().mode;\r\n const layout = checkViewName(viewName);\r\n const sectionId = scheduler.getActionData(e).section;\r\n if (event) {\r\n const settings = {\r\n event, \r\n layout, \r\n viewName, \r\n sectionId, \r\n eventNode\r\n };\r\n createViewMarker(settings);\r\n }\r\n }\r\n });\r\n\r\n scheduler.attachEvent(\"onDragEnd\", function(id, mode, e){\r\n for (let i = 0; i < dndMarkers.length; i++) {\r\n scheduler.unmarkTimespan(dndMarkers[i]);\r\n }\r\n dndMarkers = [];\r\n eventNode = null;\r\n event = null;\r\n });\r\n}","export default function undoDelete(scheduler) {\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tlet deletedEvent = scheduler.copy(ev);\r\n\t\tif (scheduler.config.undo_deleted && !scheduler.getState().new_event) {\r\n\t\t\tscheduler.message({\r\n\t\t\t\ttext: `
\r\n Event deleted\r\n \r\n
`,\r\n\t\t\t\texpire: 10000,\r\n\t\t\t\ttype: \"popup_after_delete\",\r\n\t\t\t\tcallback: function (e) {\r\n\t\t\t\t\tlet undoBtn = e.target.closest(\r\n\t\t\t\t\t\t`[data-deleted-event-id=\"${ev.id}\"]`\r\n\t\t\t\t\t);\r\n\t\t\t\t\tif (undoBtn) {\r\n\t\t\t\t\t\tscheduler.addEvent(deletedEvent);\r\n\t\t\t\t\t\tscheduler.render();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n}\r\n","export default function limitPlugin(scheduler){\r\n\r\n\r\n\tscheduler.config.mark_now = true;\r\n\tscheduler.config.display_marked_timespans = true;\r\n\tscheduler.config.overwrite_marked_timespans = true;\r\n\r\n\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\tvar default_timespan_type = \"default\";\r\n\tvar fix_options = function(options, days, zones) {\r\n\t\tif (days instanceof Date && zones instanceof Date) {\r\n\t\t\toptions.start_date = days;\r\n\t\t\toptions.end_date = zones;\r\n\t\t} else {\r\n\t\t\toptions.days = days;\r\n\t\t\toptions.zones = zones;\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tvar get_resulting_options = function(days, zones, sections) {\r\n\t\tvar options = (typeof days == \"object\") ? days : { days: days };\r\n\t\toptions.type = dhx_time_block;\r\n\t\toptions.css = \"\";\r\n\t\tif (zones) {\r\n\t\t\tif (sections)\r\n\t\t\t\toptions.sections = sections;\r\n\t\t\toptions = fix_options(options, days, zones);\r\n\t\t}\r\n\t\treturn options;\r\n\t};\r\n\tscheduler.blockTime = function(days, zones, sections){\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.addMarkedTimespan(options);\r\n\t};\r\n\tscheduler.unblockTime = function(days, zones, sections) {\r\n\t\tzones = zones || \"fullday\";\r\n\t\tvar options = get_resulting_options(days, zones, sections);\r\n\t\treturn scheduler.deleteMarkedTimespan(options);\r\n\t};\r\n\r\n\tscheduler.checkInMarkedTimespan = function(ev, timespan_type, on_overlap){\r\n\t\ttimespan_type = timespan_type || default_timespan_type;\r\n\r\n\t\tvar res = true;\r\n\t\tvar temp_start_date = new Date(ev.start_date.valueOf());\r\n\t\tvar temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\");\r\n\t\tvar timespans = scheduler._marked_timespans;\r\n\t\tfor (; temp_start_date < ev.end_date; temp_start_date = scheduler.date.date_part(temp_end_date), temp_end_date = scheduler.date.add(temp_start_date, 1, \"day\") ) {\r\n\t\t\tvar day_value = +scheduler.date.date_part( new Date(temp_start_date) ); // the first part of event not necessarily contains only date part\r\n\t\t\tvar day_index = temp_start_date.getDay();\r\n\r\n\t\t\tvar zones = getZones(ev, timespans, day_index, day_value, timespan_type);\r\n\t\t\tif (zones){\r\n\t\t\t\tfor (var i = 0; i < zones.length; i+=2) {\r\n\r\n\t\t\t\t\t// they may change for new event if it passes limit zone\r\n\t\t\t\t\tvar eventStart = scheduler._get_zone_minutes(temp_start_date);\r\n\t\t\t\t\tvar eventEnd = ( ev.end_date>temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ) ? 1440 : scheduler._get_zone_minutes(ev.end_date);\r\n\r\n\t\t\t\t\tvar markerStart = zones[i];\r\n\t\t\t\t\tvar markerEnd = zones[i+1];\r\n\t\t\t\t\tif (markerStarteventStart) {\r\n\t\t\t\t\t\tif(typeof on_overlap == \"function\"){\r\n\t\t\t\t\t\t\t//handler allows to cancel overlapping\r\n\t\t\t\t\t\t\t//actually needed only to keep default behavior of limits\r\n\t\t\t\t\t\t\tres = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);//event object, event start/end minutes in 'zones' format, zone start/end minutes\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tres = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif(!res)\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn !res;\r\n\t};\r\n\tscheduler.checkLimitViolation = function(event){\r\n\t\tif(!event)\r\n\t\t\treturn true;\r\n\t\tif (!scheduler.config.check_limits)\r\n\t\t\treturn true;\r\n\t\tvar s = scheduler;\r\n\t\tvar c = s.config;\r\n\t\tvar evs = [];\r\n\t\tif ((event.rec_type && event._end_date) || (event.rrule)) {\r\n\t\t\tconst seriesEnd = event._end_date || event.end_date;\r\n\t\t\t// GS-2482 need to take into account that a part of recurring events might be outside the limits\r\n\t\t\tif ((c.limit_start && c.limit_end)) {\r\n\t\t\t\tvar recEventInLimits = seriesEnd.valueOf() >= c.limit_start.valueOf() && event.start_date.valueOf() <= c.limit_end.valueOf();\r\n\t\t\t\treturn recEventInLimits;\r\n\t\t\t} else return true;\r\n\t\t} else {\r\n\t\t\tevs = [event];\r\n\t\t}\r\n\r\n\t\tvar complete_res = true;\r\n\t\tfor (var p=0; p= c.limit_start.valueOf() && ev.end_date.valueOf() <= c.limit_end.valueOf()) : true;\r\n\t\t\tif (res){\r\n\t\t\t\tres = !scheduler.checkInMarkedTimespan(ev, dhx_time_block, function(event, eventStart, eventEnd, markerStart, markerEnd){\r\n\t\t\t\t\t//try crop event to allow placing\r\n\t\t\t\t\tvar allow = true;\r\n\t\t\t\t\tif (eventStart<=markerEnd && eventStart >= markerStart){\r\n\t\t\t\t\t\tif (markerEnd == 24*60 || eventEnd <= markerEnd){\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.start_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.start_date.setMinutes(markerEnd);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ((eventEnd >= markerStart && eventEnd <= markerEnd) || (eventStart < markerStart && eventEnd > markerEnd)){\r\n\t\t\t\t\t\tif(event._timed && s._drag_id && s._drag_mode == \"new-size\"){\r\n\t\t\t\t\t\t\tevent.end_date.setHours(0);\r\n\t\t\t\t\t\t\tevent.end_date.setMinutes(markerStart);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tallow = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn allow;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif (!res) {\r\n\t\t\t\tres = (s.checkEvent(\"onLimitViolation\")) ? s.callEvent(\"onLimitViolation\",[ev.id, ev]) : res;\r\n\t\t\t}\r\n\t\t\tcomplete_res = complete_res && res;\r\n\t\t}\r\n\t\tif(!complete_res){\r\n\t\t\ts._drag_id = null;\r\n\t\t\ts._drag_mode = null;\r\n\t\t}\r\n\t\treturn complete_res;\r\n\r\n\r\n\t};\r\n\tscheduler._get_blocked_zones = function(timespans, property, day_index, day_value, timespan_type){\r\n\t\tvar zones =[];\r\n\t\tif (timespans && timespans[property]) {\r\n\t\t\tvar timeline_zones = timespans[property];\r\n\t\t\tvar blocked_timeline_zones = this._get_relevant_blocked_zones(day_index, day_value, timeline_zones, timespan_type);\r\n\t\t\tfor (var i=0; i this._min_date && now.getHours() >= cfg.first_hour && now.getHours() 1) {\r\n\t\t\t\t\tif(view.size && view.options.length){\r\n\t\t\t\t\t\tday_index = ((view.position+ day_index) / view.options.length) * view.size;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_index = day_index;\r\n\t\t\t\t\tend_index = day_index + units_l;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tstart_index = 0;\r\n\t\t\t\t\tend_index = start_index + units_l;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar r_divs = [];\r\n\r\n\t\t\t\tfor (var i = start_index; i < end_index; i++) {\r\n\t\t\t\t\tvar t_day = i; // as each unit is actually considered +1 day\r\n\t\t\t\t\toptions.days = t_day;\r\n\t\t\t\t\tvar t_div = scheduler._render_marked_timespan(options, null, t_day)[0];\r\n\t\t\t\t\tr_divs.push(t_div);\r\n\t\t\t\t}\r\n\t\t\t\treturn r_divs;\r\n\t\t\t} else { // day/week views\r\n\t\t\t\toptions.days = day_index;\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, day_index);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\toptions.days = +scheduler.date.date_part(now);\r\n\t\t\t\treturn scheduler._render_marked_timespan(options, null, null);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tscheduler._remove_mark_now = function() {\r\n\t\tvar dhx_now_time = 'dhx_now_time';\r\n\t\tvar els = this._els[dhx_now_time];\r\n\t\tfor (var i=0; i config.start_date) || (config.days !== undefined && config.zones)) && !config.type )\r\n\t\t\treturn r_configs; // incorrect config was provided\r\n\r\n\t\tvar min = 0;\r\n\t\tvar max = 24*60;\r\n\t\tif (config.zones == \"fullday\")\r\n\t\t\tconfig.zones = [min, max];\r\n\t\tif (config.zones && config.invert_zones) {\r\n\t\t\tconfig.zones = scheduler.invertZones(config.zones);\r\n\t\t}\r\n\r\n\t\tconfig.id = scheduler.uid();\r\n\t\tconfig.css = config.css||\"\";\r\n\t\tconfig.type = config.type||default_timespan_type;\r\n\r\n\t\tvar sections = config.sections;\r\n\t\tif (sections) {\r\n\t\t\tfor (var view_key in sections) {\r\n\t\t\t\tif (sections.hasOwnProperty(view_key)) {\r\n\t\t\t\t\tvar ids = sections[view_key];\r\n\t\t\t\t\tif (!(ids instanceof Array))\r\n\t\t\t\t\t\tids = [ids];\r\n\t\t\t\t\tfor (var i=0; i t_sd) ? scheduler._get_zone_minutes(start_date) : min;\r\n\t\t\t\t\tvar zone_end = ( end_date > t_ed || end_date.getDate() != t_sd.getDate() ) ? max : scheduler._get_zone_minutes(end_date);\r\n\t\t\t\t\tt_config.zones = [zone_start, zone_end];\r\n\t\t\t\t\tr_configs.push(t_config);\r\n\r\n\t\t\t\t\tt_sd = t_ed;\r\n\t\t\t\t\tt_ed = scheduler.date.add(t_ed, 1, \"day\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (c_config.days instanceof Date)\r\n\t\t\t\t\tc_config.days = (scheduler.date.date_part(c_config.days)).valueOf();\r\n\t\t\t\tc_config.zones = config.zones.slice();\r\n\t\t\t\tr_configs.push(c_config);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn r_configs;\r\n\t};\r\n\tscheduler._get_dates_by_index = function(index, start, end) {\r\n\t\tvar dates = [];\r\n\t\tstart = scheduler.date.date_part(new Date(start||scheduler._min_date));\r\n\t\tend = new Date(end||scheduler._max_date);\r\n\t\tvar start_day = start.getDay();\r\n\t\tvar delta = (index-start_day >= 0) ? (index-start_day) : (7-start.getDay()+index);\r\n\t\tvar t_date = scheduler.date.add(start, delta, \"day\");\r\n\t\tfor (; t_date < end; t_date = scheduler.date.add(t_date, 1, \"week\")) {\r\n\t\t\tdates.push(t_date);\r\n\t\t}\r\n\t\treturn dates;\r\n\t};\r\n\tscheduler._get_css_classes_by_config = function(config) {\r\n\t\tvar css_classes = [];\r\n\t\tif (config.type == dhx_time_block) {\r\n\t\t\tcss_classes.push(dhx_time_block);\r\n\t\t\tif (config.css)\r\n\t\t\t\tcss_classes.push(dhx_time_block+\"_reset\");\r\n\t\t}\r\n\t\tcss_classes.push(\"dhx_marked_timespan\", config.css);\r\n\t\treturn css_classes.join(\" \");\r\n\t};\r\n\tscheduler._get_block_by_config = function(config) {\r\n\t\tvar block = document.createElement(\"div\");\r\n\t\tif (config.html) {\r\n\t\t\tif (typeof config.html == \"string\")\r\n\t\t\t\tblock.innerHTML = config.html;\r\n\t\t\telse\r\n\t\t\t\tblock.appendChild(config.html);\r\n\t\t}\r\n\t\treturn block;\r\n\t};\r\n\tscheduler._render_marked_timespan = function(options, area, day) {\r\n\t\tvar blocks = []; // resulting block which will be rendered and returned\r\n\t\tvar c = scheduler.config;\r\n\t\tvar min_date = this._min_date;\r\n\t\tvar max_date = this._max_date;\r\n\t\tvar day_value = false; // if timespan for specific date should be displayed\r\n\r\n\t\tif (!c.display_marked_timespans)\r\n\t\t\treturn blocks;\r\n\r\n\t\t// in case of markTimespan\r\n\t\tif (!day && day !== 0) {\r\n\t\t\tif (options.days < 7)\r\n\t\t\t\tday = options.days;\r\n\t\t\telse {\r\n\t\t\t\tvar date_to_display = new Date(options.days);\r\n\t\t\t\tday_value = +date_to_display;\r\n\r\n\t\t\t\t// in case of markTimespan date could be not in the viewing range, need to return\r\n\t\t\t\tif ( !(+max_date > +date_to_display && +min_date <= +date_to_display) )\r\n\t\t\t\t\treturn blocks;\r\n\r\n\t\t\t\tday = date_to_display.getDay();\r\n\t\t\t}\r\n\r\n\t\t\t// convert day default index (Sun - 0, Sat - 6) to index of hourscales (depends on week_start and config.start_on_monday)\r\n\t\t\tvar min_day = min_date.getDay();\r\n\t\t\tif (min_day > day) {\r\n\t\t\t\tday = 7 - (min_day-day);\r\n\t\t\t} else {\r\n\t\t\t\tday = day - min_day;\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar zones = options.zones;\r\n\t\tvar css_classes = scheduler._get_css_classes_by_config(options);\r\n\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\") {\r\n\t\t\tvar areas = [];\r\n\t\t\tvar days = [];\r\n\r\n\r\n\t\t\tif (!area) {\r\n\t\t\t\tdays = (day_value) ? [day_value] : scheduler._get_dates_by_index(day);\r\n\t\t\t\tfor (var i=0; i < days.length; i++) {\r\n\t\t\t\t\tareas.push( this._scales[days[i]] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tareas.push(area);\r\n\t\t\t\tdays.push(day);\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i=0; i < areas.length; i++) {\r\n\t\t\t\tarea = areas[i];\r\n\t\t\t\tday = days[i];\r\n\r\n\t\t\t\tvar sday = this.locate_holder_day(day, false) % this._cols.length;\r\n\r\n\t\t\t\tif(this._ignores[sday]) continue;\r\n\r\n\t\t\t\tvar block_proto = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock_proto.className = css_classes;\r\n\t\t\t\tblock_proto.style.top = \"0px\";\r\n\t\t\t\tblock_proto.style.height = \"100%\";\r\n\t\t\t\t\r\n\t\t\t\tfor (var k=0; k < zones.length; k+=2) {\r\n\t\t\t\t\tvar start = zones[i];\r\n\t\t\t\t\tvar end = zones[i+1];\r\n\t\t\t\t\tif (end <= start)\r\n\t\t\t\t\t\treturn [];\r\n\r\n\t\t\t\t\tvar block = block_proto.cloneNode(true);\r\n\r\n\t\t\t\t\tblock.style.left = \"0px\";\r\n\t\t\t\t\tblock.style.width = \"100%\";\r\n\r\n\t\t\t\t\tarea.appendChild(block);\r\n\t\t\t\t\tblocks.push(block);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar index = day;\r\n\r\n\t\t\tif(this._ignores[this.locate_holder_day(day, false)]) return blocks;\r\n\r\n\t\t\tif (this._props && this._props[this._mode] && options.sections && options.sections[this._mode]) {\r\n\t\t\t\tvar view = this._props[this._mode];\r\n\t\t\t\tindex = view.order[options.sections[this._mode]];\r\n\r\n\t\t\t\tvar inner_index = view.order[options.sections[this._mode]];\r\n\t\t\t\tif(!(view.days > 1)){\r\n\t\t\t\t\tindex = inner_index;\r\n\t\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\t\tindex = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar units_l = view.size || view.options.length;\r\n\t\t\t\t\tindex = index*units_l + inner_index;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tarea = area ? area : scheduler.locate_holder(index);\r\n\r\n\t\t\tfor (var i = 0; i < zones.length; i+=2){\r\n\t\t\t\tvar start = Math.max(zones[i], c.first_hour*60);\r\n\t\t\t\tvar end = Math.min(zones[i+1], c.last_hour*60);\r\n\t\t\t\tif (end <= start) {\r\n\t\t\t\t\tif (i+2 < zones.length)\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\treturn [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar block = scheduler._get_block_by_config(options);\r\n\t\t\t\tblock.className = css_classes;\r\n\r\n\t\t\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\t\t\tvar all_hours_height = this.config.hour_size_px*24 + 1;\r\n\t\t\t\tvar hour_ms = 60*60*1000;\r\n\t\t\t\tblock.style.top = (Math.round((start*60*1000-this.config.first_hour*hour_ms)*this.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\t\t\tblock.style.height = Math.max((Math.round(((end-start)*60*1000)*this.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\r\n\t\t\t\tarea.appendChild(block);\r\n\t\t\t\tblocks.push(block);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn blocks;\r\n\t};\r\n\r\n\tscheduler._mark_timespans = function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tvar divs = [];\r\n\t\tif (scheduler._table_view && scheduler._mode == \"month\"){\r\n\t\t\tfor (var day in this._scales) {\r\n\t\t\t\tvar date = new Date(+day);\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(this._scales[day],date));\r\n\t\t\t}\r\n\t\t}else {\r\n\t\t\t//manually trigger rendering of configs for each column\r\n\t\t\tvar date = new Date(scheduler._min_date);\r\n\t\t\tfor (var i = 0, len = data.childNodes.length; i < len; i++) {\r\n\t\t\t\tvar area = data.childNodes[i];\r\n\t\t\t\tif (area.firstChild && scheduler._getClassName(area.firstChild).indexOf(\"dhx_scale_hour\") > -1) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdivs.push.apply(divs, scheduler._on_scale_add_marker(area, date));\r\n\t\t\t\tdate = scheduler.date.add(date, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn divs;\r\n\t};\r\n\r\n\t// just marks timespan, will be cleaned after refresh\r\n\tscheduler.markTimespan = function(configuration) {\r\n\t\tif(!this._els){\r\n\t\t\tthrow new Error(\"`scheduler.markTimespan` can't be used before scheduler initialization. Place `scheduler.markTimespan` call after `scheduler.init`.\");\r\n\t\t}\r\n\r\n\r\n\t\tvar rebuild_els = false;\r\n\t\tif(!this._els[\"dhx_cal_data\"]){\r\n\t\t\tscheduler.get_elements();\r\n\t\t\trebuild_els = true;\r\n\t\t}\r\n\r\n\r\n\t\t// backup regular marked timespans\r\n\t\tvar timespans_ids = scheduler._marked_timespans_ids,\r\n\t\t\ttimespan_types = scheduler._marked_timespans_types,\r\n\t\t\ttimespans = scheduler._marked_timespans;\r\n\r\n\t\tscheduler.deleteMarkedTimespan();\r\n\r\n\t\t//add block to configs\r\n\t\tscheduler.addMarkedTimespan(configuration);\r\n\r\n\t\tvar divs = scheduler._mark_timespans();\r\n\r\n\t\tif(rebuild_els)\r\n\t\t\tscheduler._els = [];\r\n\r\n\t\t// restore timespan config\r\n\t\tscheduler._marked_timespans_ids = timespans_ids;\r\n\t\tscheduler._marked_timespans_types = timespan_types;\r\n\t\tscheduler._marked_timespans = timespans;\r\n\r\n\t\treturn divs;\r\n\t};\r\n\tscheduler.unmarkTimespan = function(divs) {\r\n\t\tif (!divs)\r\n\t\t\treturn;\r\n\t\tfor (var i=0; i c_zone_end && zone_start <= c_zone_end) || (zone_start < c_zone_start && zone_end >= c_zone_start)) {\r\n\t\t\t\t\tresulting_zones[i] = Math.min(c_zone_start, zone_start);\r\n\t\t\t\t\tresulting_zones[i+1] = Math.max(c_zone_end, zone_end);\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!isLast) // do nothing, maybe next current zone will match or will be last\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t\tvar offset = (c_zone_start > zone_start)?0:2;\r\n\t\t\t\t\tresulting_zones.splice(i+offset, 0, zone_start, zone_end); // last current zone, need to add another\r\n\t\t\t\t}\r\n\t\t\t\tzones.splice(k--,2); // zone was merged or added, need to exclude it\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler._subtract_timespan_zones = function(current_zones, zones) {\r\n\t\tvar resulting_zones = current_zones.slice();\r\n\t\tfor (var i=0; i c_zone_start && zone_start < c_zone_end) {\r\n\t\t\t\t\tvar is_modified = false;\r\n\t\t\t\t\tif (c_zone_start >= zone_start && c_zone_end <= zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_start < zone_start) {\r\n\t\t\t\t\t\tresulting_zones.splice(i, 2, c_zone_start, zone_start);\r\n\t\t\t\t\t\tis_modified = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (c_zone_end > zone_end) {\r\n\t\t\t\t\t\tresulting_zones.splice( (is_modified)?(i+2):i, (is_modified)?0:2, zone_end, c_zone_end);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ti -= 2;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn resulting_zones;\r\n\t};\r\n\tscheduler.invertZones = function(zones) {\r\n\t\treturn scheduler._subtract_timespan_zones([0, 1440], zones.slice());\r\n\t};\r\n\tscheduler._delete_marked_timespan_by_id = function(id) {\r\n\t\tvar configs = scheduler._marked_timespans_ids[id];\r\n\t\tif (configs) {\r\n\t\t\tfor (var i=0; i 1)){\r\n\t\t\t\tday = scheduler.date.date_part(new Date(this._date)); // for units view actually only 1 day is displayed yet the day variable will change, need to use this._date for all calls\r\n\t\t\t}else{\r\n\t\t\t\tvar dx = 24*60*60*1000;\r\n\t\t\t\tvar day_ind = Math.round((day - scheduler._min_date)/dx);\r\n\t\t\t\tvar unitsPerDay = view.size || units.length;\r\n\t\t\t\tday = scheduler.date.add(scheduler._min_date, Math.floor(day_ind/unitsPerDay), \"day\"); // to the \"same\" day for all sections\r\n\t\t\t\tday = scheduler.date.date_part(day);\r\n\t\t\t}\r\n\t\t\tday_index = day.getDay();\r\n\t\t\tday_value = day.valueOf();\r\n\r\n\t\t\tif (timespans[mode] && timespans[mode][unit.key]) {\r\n\t\t\t\tvar unit_zones = timespans[mode][unit.key];\r\n\t\t\t\tvar unit_types = scheduler._get_types_to_render(unit_zones[day_index], unit_zones[day_value]);\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(unit_types));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar global_data = timespans[\"global\"];\r\n\r\n\t\tif(scheduler.config.overwrite_marked_timespans){\r\n\t\t\tvar day_types = global_data[day_value]||global_data[day_index];\r\n\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(day_types));\r\n\t\t} else {\r\n\t\t\tif(global_data[day_value]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_value]));\r\n\t\t\t}\r\n\t\t\tif(global_data[day_index]){\r\n\t\t\t\tr_configs.push.apply(r_configs, scheduler._get_configs_to_render(global_data[day_index]));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i=0; i {\r\n\t\t\tif(date){\r\n\t\t\t\tcalls.setModeDate.date = date;\r\n\t\t\t}\r\n\t\t\tif(mode){\r\n\t\t\t\tcalls.setModeDate.mode = mode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar methods = {\r\n\t\t\trender:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tsetCurrentView:(date, mode) => {calls.needRender = true; rememberModeDate(date, mode);},\r\n\t\t\tupdateView:(date, mode) => {calls.needUpdateView = true; rememberModeDate(date, mode);},\r\n\t\t\trender_data:() => calls.needRender = true,\r\n\t\t\trender_view_data:(evs) => { \r\n\t\t\t\tif(evs && evs.length){\r\n\t\t\t\t\tevs.forEach((e) => calls.repaintEvents[e.id] = true);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcalls.needRender = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdisableMethods.call(this, methods);\r\n\r\n\t\tisActive = true;\r\n\t\tthis.callEvent(\"onBeforeBatchUpdate\", []);\r\n\r\n\t\tbatchUpdatePayload(callback);\r\n\r\n\t\tthis.callEvent(\"onAfterBatchUpdate\", []);\r\n\r\n\t\trestoreMethods.call(this);\r\n\r\n\t\tisActive = false;\r\n\t\tif(!noRedraw){\r\n\t\t\tif(calls.needRender){\r\n\t\t\t\tscheduler.render(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else if(calls.needUpdateView){\r\n\t\t\t\tscheduler.updateView(calls.setModeDate.date, calls.setModeDate.mode);\r\n\t\t\t}else{\r\n\t\t\t\tfor(const i in calls.repaintEvents){\r\n\t\t\t\t\tscheduler.updateEvent(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (call_dp) {\r\n\t\t\tthis._dp.setUpdateMode(dp_mode);\r\n\t\t\tthis._dp.sendData();\r\n\t\t}\r\n\t};\r\n}\r\n\r\nexport default function(scheduler){\r\n\tscheduler.batchUpdate = createMethod(scheduler);\r\n}","import dragHighlightPos from \"./drag_highlight_pos\";\r\nimport undoDelete from \"./undo_delete\";\r\nimport limit from \"./limit\";\r\nimport batchUpdate from \"./batch_update\";\r\n\r\nexport default function initPlugins(scheduler){\r\n undoDelete(scheduler);\r\n dragHighlightPos(scheduler);\r\n limit(scheduler);\r\n batchUpdate(scheduler);\r\n}","var uidSeed = Date.now();\r\nfunction uid () {\r\n\treturn uidSeed++;\r\n}\r\n\r\n// iframe-safe array type check instead of using instanceof\r\nfunction isArray(obj){\r\n\tif(Array.isArray){\r\n\t\treturn Array.isArray(obj);\r\n\t}else{\r\n\t\t// close enough\r\n\t\treturn (obj && obj.length !== undefined && obj.pop && obj.push);\r\n\t}\r\n}\r\n\r\n// non-primitive string object, e.g. new String(\"abc\")\r\nfunction isStringObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function String() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Number(5)\r\nfunction isNumberObject(obj){\r\n\treturn obj && typeof obj === \"object\" && \r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Number() { [native code] }\";\r\n}\r\n\r\n// non-primitive number object, e.g. new Boolean(true)\r\nfunction isBooleanObject(obj){\r\n\treturn obj && typeof obj === \"object\" &&\r\n\t\tFunction.prototype.toString.call(obj.constructor) === \"function Boolean() { [native code] }\";\r\n}\r\n\r\nfunction isDate(obj) {\r\n\tif (obj && typeof obj === \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nfunction defined(obj) {\r\n\treturn typeof(obj) != \"undefined\";\r\n}\r\n\r\nfunction delay (callback, timeout){\r\n\tvar timer;\r\n\r\n\tvar result = function() {\r\n\t\tresult.$cancelTimeout();\r\n\t\tresult.$pending = true;\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tcallback.apply(this, args);\r\n\t\t\tresult.$pending = false;\r\n\t\t}, timeout);\r\n\t};\r\n\r\n\tresult.$pending = false;\r\n\tresult.$cancelTimeout = function(){\r\n\t\tclearTimeout(timer);\r\n\t\tresult.$pending = false;\r\n\t};\r\n\tresult.$execute = function(){\r\n\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\tcallback.apply(this, args);\r\n\t\tresult.$cancelTimeout();\r\n\t};\r\n\r\n\treturn result;\r\n}\r\n\r\nexport default {\r\n\tuid: uid,\r\n\tmixin: function mixin (target, source, force){\r\n\t\tfor (var f in source)\r\n\t\t\tif (((target[f] === undefined) || force)) target[f]=source[f];\r\n\t\treturn target;\r\n\t},\r\n\tcopy: function copy(object) {\r\n\t\tvar i, result; // iterator, types array, result\r\n\t\r\n\t\tif (object && typeof object == \"object\") {\r\n\t\r\n\t\t\tswitch (true){\r\n\t\t\t\tcase (isDate(object)):\r\n\t\t\t\t\tresult = new Date(object);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isArray(object)):\r\n\t\t\t\t\tresult = new Array(object.length);\r\n\t\t\t\t\tfor(i = 0; i < object.length; i++){\r\n\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isStringObject(object)):\r\n\t\t\t\t\tresult = new String(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isNumberObject(object)):\r\n\t\t\t\t\tresult = new Number(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase (isBooleanObject(object)):\r\n\t\t\t\t\tresult = new Boolean(object);// jshint ignore:line\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tresult = {};\r\n\t\t\t\t\tfor (i in object) {\r\n\t\t\t\t\t\tconst varType = typeof object[i];\r\n\r\n\t\t\t\t\t\tif (varType === \"string\" || varType === \"number\" || varType === \"boolean\" ) {\r\n\t\t\t\t\t\t\tresult[i] = object[i];\r\n\t\t\t\t\t\t} else if(isDate(object[i])){\r\n\t\t\t\t\t\t\tresult[i] = new Date(object[i]);\r\n\t\t\t\t\t\t}else if (Object.prototype.hasOwnProperty.apply(object, [i]))\r\n\t\t\t\t\t\t\tresult[i] = copy(object[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result || object;\r\n\t},\r\n\tdefined,\r\n\tisDate,\r\n\tdelay\r\n};\r\n","import utils from \"./utils/utils\";\r\n\r\nconst StateService = (function(){\r\n\tconst stateProviders = {};\r\n\r\n\tfunction getState(name){\r\n\t\tconst provider = stateProviders[name];\r\n\t\tif(provider){\r\n\t\t\treturn stateProviders[name].method();\r\n\t\t}else{\r\n\t\t\tconst res = {};\r\n\t\t\tfor(const i in stateProviders){\r\n\t\t\t\tif(!stateProviders[i].internal)\r\n\t\t\t\t\tutils.mixin(res, stateProviders[i].method(), true);\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction registerProvider(name, provider, internal){\r\n\t\tstateProviders[name] = { method: provider, internal: internal};\r\n\t}\r\n\r\n\tfunction unregisterProvider(name){\r\n\t\tdelete stateProviders[name];\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetState: getState,\r\n\t\tregisterProvider: registerProvider,\r\n\t\tunregisterProvider: unregisterProvider\r\n\t};\r\n});\r\n\r\nexport default StateService;\r\n\r\n","export default function(scheduler){\r\n\treturn function assert(check, message){\r\n\t\tif (!check){\r\n\t\t\tif(scheduler.config.show_errors && scheduler.callEvent(\"onError\",[message]) !== false) {\r\n\t\t\t\tif (scheduler.message) {\r\n\t\t\t\t\tscheduler.message({type: \"error\", text: message, expire: -1});\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// eslint-disable-next-line\r\n\t\t\t\t\tconsole.log(message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// eslint-disable-next-line no-debugger\r\n\t\t\t\tdebugger;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}","export default function extend(scheduler) {\r\n\r\nvar commonViews = {\r\n\tagenda: \"https://docs.dhtmlx.com/scheduler/agenda_view.html\",\r\n\tgrid: \"https://docs.dhtmlx.com/scheduler/grid_view.html\",\r\n\tmap: \"https://docs.dhtmlx.com/scheduler/map_view.html\",\r\n\tunit: \"https://docs.dhtmlx.com/scheduler/units_view.html\",\r\n\ttimeline: \"https://docs.dhtmlx.com/scheduler/timeline_view.html\",\r\n\tweek_agenda: \"https://docs.dhtmlx.com/scheduler/weekagenda_view.html\",\r\n\tyear: \"https://docs.dhtmlx.com/scheduler/year_view.html\",\r\n\tanythingElse: \"https://docs.dhtmlx.com/scheduler/views.html\"\r\n};\r\n\r\nvar requiredExtensions = {\r\n\tagenda: \"ext/dhtmlxscheduler_agenda_view.js\",\r\n\tgrid: \"ext/dhtmlxscheduler_grid_view.js\",\r\n\tmap: \"ext/dhtmlxscheduler_map_view.js\",\r\n\tunit: \"ext/dhtmlxscheduler_units.js\",\r\n\ttimeline: \"ext/dhtmlxscheduler_timeline.js, ext/dhtmlxscheduler_treetimeline.js, ext/dhtmlxscheduler_daytimeline.js\",\r\n\tweek_agenda: \"ext/dhtmlxscheduler_week_agenda.js\",\r\n\tyear: \"ext/dhtmlxscheduler_year_view.js\",\r\n\tlimit: \"ext/dhtmlxscheduler_limit.js\"\r\n};\r\n\r\nscheduler._commonErrorMessages = {\r\n\tunknownView: function(view){\r\n\t\tvar relatedDoc = \"Related docs: \" + (commonViews[view] || commonViews.anythingElse); \r\n\t\tvar relatedExtension = requiredExtensions[view] ? (\"You're probably missing \" + requiredExtensions[view] + \".\") : \"\";\r\n\t\treturn (\r\n\t\t\t\"`\"+view+\"` view is not defined. \\n\" +\r\n\t\t\t\"Please check parameters you pass to `scheduler.init` or `scheduler.setCurrentView` in your code and ensure you've imported appropriate extensions. \\n\" + \r\n\t\t\trelatedDoc + \"\\n\" + (relatedExtension ? (relatedExtension + \"\\n\") : \"\"));\r\n\t},\r\n\tcollapsedContainer: function(div){\r\n\t\treturn \"Scheduler container height is set to *100%* but the rendered height is zero and the scheduler is not visible. \\n\"+\r\n\t\t\"Make sure that the container has some initial height or use different units. For example:\\n\" +\r\n\t\t\"
\\n\";\r\n\t}\r\n};\r\n\r\nscheduler.createTimelineView = function() {\r\n\tthrow new Error(\"scheduler.createTimelineView is not implemented. Be sure to add the required extension: \" + requiredExtensions.timeline + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.timeline);\r\n};\r\n\r\nscheduler.createUnitsView = function() {\r\n\tthrow new Error(\"scheduler.createUnitsView is not implemented. Be sure to add the required extension: \" + requiredExtensions.unit + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.unit);\r\n};\r\n\r\nscheduler.createGridView = function() {\r\n\tthrow new Error(\"scheduler.createGridView is not implemented. Be sure to add the required extension: \" + requiredExtensions.grid + \r\n\t\"\\n\" +\r\n\t\"Related docs: \" + commonViews.grid);\r\n};\r\n\r\nscheduler.addMarkedTimespan = function() {\r\n\tthrow new Error(\"scheduler.addMarkedTimespan is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_limit.js\" + \r\n\t\"\\n\" +\r\n\t\"Related docs: https://docs.dhtmlx.com/scheduler/limits.html\");\r\n};\r\n\r\nscheduler.renderCalendar = function() {\r\n\tthrow new Error(\"scheduler.renderCalendar is not implemented. Be sure to add the required extension: ext/dhtmlxscheduler_minical.js\" + \r\n\t\"\\n\" +\r\n\t\"https://docs.dhtmlx.com/scheduler/minicalendar.html\");\r\n};\r\n\r\nscheduler.exportToPNG = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPNG is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/png.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\nscheduler.exportToPDF = function() {\r\n\tthrow new Error([\r\n\t\t\"scheduler.exportToPDF is not implemented.\",\r\n\t\t\"This feature requires an additional module, be sure to check the related doc here https://docs.dhtmlx.com/scheduler/pdf.html\",\r\n\t\t\"Licensing info: https://dhtmlx.com/docs/products/dhtmlxScheduler/export.shtml\"\r\n\t].join(\"\\n\"));\r\n};\r\n\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n/*\r\nif (global.dataProcessor && !dataProcessor.prototype.init_original){\r\n\tdataProcessor.prototype.init_original=dataProcessor.prototype.init;\r\n\tdataProcessor.prototype.init=function(obj){\r\n\t\tthis.init_original(obj);\r\n\t\tobj._dataprocessor=this;\r\n\r\n\t\tthis.setTransactionMode(\"POST\",true);\r\n\t\tthis.serverProcessor+=(this.serverProcessor.indexOf(\"?\")!=-1?\"&\":\"?\")+\"editing=true\";\r\n\t};\r\n}*/\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tif(typeof dhtmlxError !== \"undefined\") {\r\n\t\twindow.dhtmlxError.catchError(\"LoadXML\", function(a, b, c){\r\n\t\t\tvar message = c[0].responseText;\r\n\r\n\t\t\tswitch (scheduler.config.ajax_error){\r\n\t\t\t\tcase \"alert\":\r\n\t\t\t\t\tglobal.alert(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"console\":\r\n\t\t\t\t\tglobal.console.log(message);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nfunction div(className){\r\n\tvar element = document.createElement(\"div\");\r\n\tvar classes = (className || \"\").split(\" \");\r\n\tclasses.forEach(function(cssClass){\r\n\t\telement.classList.add(cssClass);\r\n\t});\r\n\treturn element;\r\n}\r\nvar itemTypes = {\r\n\trows_container: function(){\r\n\t\treturn div(\"dhx_cal_navbar_rows_container\");\r\n\t},\r\n\trow: function(){\r\n\t\treturn div(\"dhx_cal_navbar_row\");\r\n\t},\r\n\tview: function (config) {\r\n\t\tvar element = div(\"dhx_cal_tab\");\r\n\t\telement.setAttribute(\"name\", config.view + \"_tab\");\r\n\t\telement.setAttribute(\"data-tab\", config.view);\r\n\t\t// element.setAttribute(\"data-viewname\", config.view); // FIXME: need to remove? not used anywhere\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tif(config.$firstTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t}else if(config.$lastTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t} else if(config.view !== \"week\") {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t}\r\n\r\n\t\t\tif(config.$segmentedTab) {\r\n\t\t\t\telement.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn element;\r\n\t},\r\n\tdate: function () {\r\n\t\treturn div(\"dhx_cal_date\");\r\n\t},\r\n\tbutton: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_button dhx_cal_nav_button_custom dhx_cal_tab\");\r\n\t},\r\n\tbuiltInButton: function (config){\r\n\t\treturn div(\"dhx_cal_\" + config.view + \"_button dhx_cal_nav_button\");\r\n\t},\r\n\tspacer: function () {\r\n\t\treturn div(\"dhx_cal_line_spacer\");\r\n\t},\r\n\tminicalendarButton: function(config){\r\n\t\tvar minicalendarDiv = div('dhx_minical_icon');\r\n\t\tif(!config.click && !minicalendarDiv.$_eventAttached){\r\n\t\t\t\r\n\t\t\tscheduler.event(minicalendarDiv, \"click\", function () {\r\n\t\t\t\tif (scheduler.isCalendarVisible()) {\r\n\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\t\tposition: this,\r\n\t\t\t\t\t\tdate: scheduler.getState().date,\r\n\t\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\t\thandler: function (date, calendar) {\r\n\t\t\t\t\t\t\tscheduler.setCurrentView(date);\r\n\t\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn minicalendarDiv;\r\n\t},\r\n\thtml_element: function (config) {\r\n\t\treturn div(\"dhx_cal_nav_content\");\r\n\t}\r\n};\r\n\r\nfunction findRenderer(config) {\r\n\tvar renderer;\r\n\tif (config.view) {\r\n\t\tswitch (config.view){\r\n\t\t\tcase \"today\":\r\n\t\t\tcase \"next\":\r\n\t\t\tcase \"prev\":\r\n\t\t\t\trenderer = itemTypes.builtInButton;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"date\":\r\n\t\t\t\trenderer = itemTypes.date;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"spacer\":\r\n\t\t\t\trenderer = itemTypes.spacer;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"button\":\r\n\t\t\t\trenderer = itemTypes.button;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minicalendar\":\r\n\t\t\t\trenderer = itemTypes.minicalendarButton;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\trenderer = itemTypes.view;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t} else if(config.rows) {\r\n\t\trenderer = itemTypes.rows_container;\r\n\t} else if(config.cols) {\r\n\t\trenderer = itemTypes.row;\r\n\t}\r\n\treturn renderer;\r\n}\r\n\r\nfunction renderElement(config){\r\n\tvar renderer = findRenderer(config);\r\n\tif(!renderer){\r\n\t\treturn;\r\n\t}\r\n\tvar element = renderer(config);\r\n\tif(config.css){\r\n\t\telement.classList.add(config.css);\r\n\t}\r\n\tif(config.width){\r\n\t\tvar value = config.width;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.width = value;\r\n\t}\r\n\tif(config.height){\r\n\t\tvar value = config.height;\r\n\t\tif(value === value * 1){\r\n\t\t\tvalue += \"px\";\r\n\t\t}\r\n\t\telement.style.height = value;\r\n\t}\r\n\tif (config.click) {\r\n\t\tscheduler.event(element, \"click\", config.click);\r\n\t}\r\n\tif (config.html) {\r\n\t\telement.innerHTML = config.html;\r\n\t}\r\n\r\n\tif (config.align) {\r\n\t\tvar value = \"\";\r\n\t\tif (config.align == \"right\") {\r\n\t\t\tvalue = \"flex-end\";\r\n\t\t} else if(config.align == \"left\") {\r\n\t\t\tvalue = \"flex-start\";\r\n\t\t}\r\n\t\telement.style.justifyContent = value;\r\n\t}\r\n\treturn element;\r\n}\r\n\r\nfunction prepareConfig(config) {\r\n\tif (typeof config === \"string\") {\r\n\t\tconfig = {\r\n\t\t\tview: config\r\n\t\t};\r\n\t}\r\n\tif (!config.view && !config.rows && !config.cols) {\r\n\t\tconfig.view = \"button\";\r\n\t}\r\n\treturn config;\r\n}\r\n\r\nfunction renderLayout(config) {\r\n\tvar fragment = document.createDocumentFragment();\r\n\tvar items;\r\n\tif(Array.isArray(config)){\r\n\t\titems = config;\r\n\t}else{\r\n\t\titems = [config];\r\n\t}\r\n\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tvar view = prepareConfig(items[i]);\r\n\r\n\t\tif(view.view === \"day\" && items[i + 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$firstTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"week\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i + 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"month\"){\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(view.view === \"month\" && items[i - 1]){\r\n\t\t\tvar next = prepareConfig(items[i - 1]);\r\n\t\t\tif(next.view === \"week\" || next.view === \"day\"){\r\n\t\t\t\tview.$lastTab = true;\r\n\t\t\t\tview.$segmentedTab = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar element = renderElement(view);\r\n\r\n\t\tfragment.appendChild(element);\r\n\t\tif(view.cols || view.rows){\r\n\t\t\telement.appendChild(renderLayout(view.cols || view.rows));\r\n\t\t}\r\n\t}\r\n\treturn fragment;\r\n}\r\n\r\nscheduler._init_nav_bar = function (items) {\r\n\tvar navBar = this.$container.querySelector(\".dhx_cal_navline\");\r\n\tif (!navBar){\r\n\t\tnavBar = document.createElement(\"div\");\r\n\t\tnavBar.className = \"dhx_cal_navline dhx_cal_navline_flex\";\r\n\t\tscheduler._update_nav_bar(items, navBar);\r\n\t\treturn navBar;\r\n\t}\r\n\treturn navBar;\r\n};\r\n\r\nvar previousNavbar = null;\r\nvar previousHeight = null;\r\nscheduler._update_nav_bar = function (config, container) {\r\n\r\n\tif(!config){\r\n\t\treturn;\r\n\t}\r\n\tvar heightChanged = false;\r\n\tvar configChanged = false;\r\n\r\n\tvar newHeight = config.height || scheduler.xy.nav_height;\r\n\r\n\tif(previousHeight === null ||\r\n\t\t\t(previousHeight !== newHeight)){\r\n\t\theightChanged = true;\r\n\t}\r\n\tif(!previousNavbar || JSON.stringify(config) !== previousNavbar){\r\n\t\tconfigChanged = true;\r\n\t}\r\n\r\n\tif(heightChanged){\r\n\t\tscheduler.xy.nav_height = newHeight;\r\n\t}\r\n\tif(configChanged){\r\n\t\tcontainer.innerHTML = \"\";\r\n\t\tcontainer.appendChild(renderLayout(config));\r\n\t}\r\n\r\n\tif(heightChanged || configChanged){\r\n\t\tscheduler.unset_actions();\r\n\t\tscheduler._els = [];\r\n\t\tscheduler.get_elements();\r\n\t\tscheduler.set_actions();\r\n\t}\r\n\r\n\tif(newHeight === 0){\r\n\t\tcontainer.style.display = \"none\";\r\n\t}else{\r\n\t\tcontainer.style.display = \"\";\r\n\t}\r\n\r\n\tpreviousHeight = newHeight;\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\tfunction isAttachedNode(container){\r\n\t\tvar root = document.body;\r\n\t\r\n\t\twhile(container && container != root){\r\n\t\t\tcontainer = container.parentNode;\r\n\t\t}\r\n\t\r\n\t\treturn !!(root == container);\r\n\t}\r\n\t\r\n\tfunction getWindowSize(window){\r\n\t\treturn {\r\n\t\t\tw : window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\th : window.innerHeight || document.documentElement.clientHeight\r\n\t\t};\r\n\t}\r\n\tfunction equals(a,b){\r\n\t\treturn a.w == b.w && a.h == b.h;\r\n\t}\r\n\t\r\n\tfunction listenWindowResize(scheduler, window){\r\n\t\tvar oldSize = getWindowSize(window);\r\n\t\tvar resizeDelay;\r\n\t\tscheduler.event(window, \"resize\", function(){\r\n\t\t\tclearTimeout(resizeDelay);\r\n\t\t\tresizeDelay = setTimeout(function(){\r\n\r\n\t\t\t\tif (!isAttachedNode(scheduler.$container) || scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tvar newSize = getWindowSize(window);\r\n\t\t\t\t// element may be resized by container-autoresize exteinsion\r\n\t\t\t\t// check if the size is actually changed in order to not to get endless loop\r\n\t\t\t\tif (!equals(oldSize, newSize)) {\r\n\t\t\t\t\toldSize = newSize;\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\t\t}, 150);\r\n\t\t});\r\n\t}\r\n\t\r\n\tfunction triggerSchedulerResize(scheduler){\r\n\t\tif(scheduler.$destroyed || !scheduler.$root || !isAttachedNode(scheduler.$root)){\r\n\t\t\treturn;\t\r\n\t\t}\r\n\t\tif (scheduler.callEvent(\"onSchedulerResize\", [])) {\r\n\t\t\tscheduler.updateView();\r\n\t\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction watchNodeResize(scheduler){\r\n\t\tvar previousHeight = scheduler.$root.offsetHeight;\r\n\t\tvar previousWidth = scheduler.$root.offsetWidth;\r\n\t\t\r\n\t\tfunction lowlevelResizeWatcher(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\t\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(scheduler.$root){\r\n\t\t\t\tif (scheduler.$root.offsetHeight != previousHeight ||\r\n\t\t\t\t\tscheduler.$root.offsetWidth != previousWidth){\r\n\t\t\t\t\ttriggerSchedulerResize(scheduler);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tpreviousHeight = scheduler.$root.offsetHeight;\r\n\t\t\t\tpreviousWidth = scheduler.$root.offsetWidth;\r\n\t\t\t}\r\n\t\r\n\t\t\tsetTimeout(lowlevelResizeWatcher, 200);\r\n\t\t}\r\n\t\t\r\n\t\tlowlevelResizeWatcher();\r\n\t}\r\n\t\r\n\tfunction addResizeListener(scheduler){\r\n\t\tvar root = scheduler.$container;\r\n\t\tvar containerStyles = window.getComputedStyle(root);\r\n\t\tif(containerStyles.getPropertyValue(\"position\") == \"static\"){\r\n\t\t\troot.style.position = \"relative\";\r\n\t\t}\r\n\t\r\n\t\tvar resizeWatcher = document.createElement('iframe');\r\n\t\tresizeWatcher.className = \"scheduler_container_resize_watcher\";\r\n\t\tresizeWatcher.tabIndex = -1;\r\n\t\tif(scheduler.config.wai_aria_attributes){\r\n\t\t\tresizeWatcher.setAttribute(\"role\", \"none\");\r\n\t\t\tresizeWatcher.setAttribute(\"aria-hidden\", true);\r\n\t\t}\r\n\t\r\n\t\t// in some environments (namely, in SalesForce) iframe.contentWindow is not available\r\n\t\tvar salesforce_environment = !!window[\"Sfdc\"] || !!window[\"$A\"] || window[\"Aura\"];\r\n\t\tif(salesforce_environment){\r\n\t\t\twatchNodeResize(scheduler);\r\n\t\t} else {\r\n\t\t\troot.appendChild(resizeWatcher);\r\n\t\t\tif (resizeWatcher.contentWindow) {\r\n\t\t\t\tlistenWindowResize(scheduler, resizeWatcher.contentWindow);\r\n\t\t\t} else {\r\n\t\t\t\t// if so - ditch the iframe and fallback to listening the main window resize\r\n\t\t\t\troot.removeChild(resizeWatcher);\r\n\t\t\t\tlistenWindowResize(scheduler, window);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\taddResizeListener(scheduler);\r\n\r\n}","class EventHost {\r\n\tconstructor(){\r\n\t\tthis._silent_mode = false;\r\n\t\tthis.listeners = {};\r\n\t}\r\n\t_silentStart(){\r\n\t\tthis._silent_mode = true;\r\n\t}\r\n\t_silentEnd() {\r\n\t\tthis._silent_mode = false;\r\n\t}\r\n}\r\n\r\nconst createEventStorage = function(obj) {\r\n\tlet handlers = {};\r\n\tlet index = 0;\r\n\tconst eventStorage = function(){\r\n\t\tlet combinedResult = true;\r\n\t\tfor(const i in handlers){\r\n\t\t\tconst handlerResult = handlers[i].apply(obj, arguments);\r\n\t\t\tcombinedResult=combinedResult && handlerResult;\r\n\t\t}\r\n\t\treturn combinedResult;\r\n\t};\r\n\teventStorage.addEvent=function(handler, settings){\r\n\t\tif (typeof (handler) == \"function\"){\r\n\t\t\tlet handlerId;\r\n\t\t\tif(settings && settings.id){\r\n\t\t\t\thandlerId = settings.id;\r\n\t\t\t}else{\r\n\t\t\t\thandlerId = index;\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(settings && settings.once){\r\n\t\t\t\tconst originalHandler = handler;\r\n\t\t\t\thandler = function(){\r\n\t\t\t\t\toriginalHandler();\r\n\t\t\t\t\teventStorage.removeEvent(handlerId);\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\thandlers[handlerId] = handler;\r\n\t\t\treturn handlerId;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\teventStorage.removeEvent=function(id){\r\n\t\tdelete handlers[id];\r\n\t};\r\n\r\n\teventStorage.clear = function(){\r\n\t\thandlers = {};\r\n\t};\r\n\r\n\treturn eventStorage;\r\n};\r\n\r\nfunction makeEventable(obj){\r\n\r\n\tconst eventHost = new EventHost();\r\n\tobj.attachEvent=function(eventName, handler, settings){\r\n\t\teventName = 'ev_'+eventName.toLowerCase();\r\n\t\tif (!eventHost.listeners[eventName]){\r\n\t\t\teventHost.listeners[eventName] = createEventStorage(this);\r\n\t\t}\r\n\r\n\t\tif(settings && settings.thisObject){\r\n\t\t\thandler = handler.bind(settings.thisObject);\r\n\t\t}\r\n\r\n\t\tconst innerId = eventHost.listeners[eventName].addEvent(handler, settings);\r\n\r\n\t\tlet handlerId = (eventName+':'+innerId); //return ID (ev_eventname:1)\r\n\t\tif(settings && settings.id){\r\n\t\t\thandlerId = settings.id;\r\n\t\t}\r\n\t\treturn handlerId;\r\n\t};\r\n\r\n\tobj.attachAll = function(callback){\r\n\t\tthis.attachEvent('listen_all', callback);\r\n\t};\r\n\r\n\tobj.callEvent=function(name, eventArguments){\r\n\t\tif (eventHost._silent_mode) return true;\r\n\r\n\t\tconst handlerName = 'ev_'+name.toLowerCase();\r\n\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\tif (listeners['ev_listen_all']){\r\n\t\t\tlisteners['ev_listen_all'].apply(this, [name].concat(eventArguments));\r\n\t\t}\r\n\r\n\t\tif (listeners[handlerName])\r\n\t\t\treturn listeners[handlerName].apply(this, eventArguments);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tobj.checkEvent=function(name){\r\n\t\tconst listeners = eventHost.listeners;\r\n\t\treturn (!!listeners['ev_'+name.toLowerCase()]);\r\n\t};\r\n\r\n\tobj.detachEvent=function(id){\r\n\t\tif (id){\r\n\t\t\tlet listeners = eventHost.listeners;\r\n\t\t\tfor(const i in listeners){\r\n\t\t\t\tlisteners[i].removeEvent(id); //remove event\r\n\t\t\t}\r\n\r\n\t\t\tconst list = id.split(':');//get EventName and ID\r\n\t\t\tlisteners = eventHost.listeners;\r\n\t\t\tif(list.length === 2){\r\n\t\t\t\tconst eventName = list[0];\r\n\t\t\t\tconst eventId = list[1];\r\n\t\t\t\tif(listeners[eventName]){\r\n\t\t\t\t\tlisteners[eventName].removeEvent(eventId); //remove event\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tobj.detachAllEvents = function(){\r\n\t\tfor (const name in eventHost.listeners) {\r\n\t\t\teventHost.listeners[name].clear();\r\n\t\t}\r\n\t};\r\n\r\n}\r\n\r\nexport default makeEventable;","\r\nimport nav_bar from \"./nav_bar\";\r\nimport scheduler_resize_listener from \"./scheduler_resize_listener\";\r\nimport eventable from \"../utils/eventable\";\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\neventable(scheduler);\r\n\r\nnav_bar(scheduler);\r\n\r\nscheduler._detachDomEvent = function(el, event, handler){\r\n\tif (el.removeEventListener){\r\n\t\tel.removeEventListener(event, handler, false);\r\n\r\n\t}else if (el.detachEvent){\r\n\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._init_once = function(){\r\n\tscheduler_resize_listener(scheduler);\r\n\r\n\tscheduler._init_once = function(){};\r\n};\r\n\r\nconst layout = {\r\n\t\"navbar\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn scheduler._init_nav_bar(config);\r\n\t\t}\r\n\t},\r\n\t\"header\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_header\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"dataArea\": {\r\n\t\trender: function (config) {\r\n\t\t\tconst element = document.createElement(\"div\");\r\n\t\t\telement.className = \"dhx_cal_data\";\r\n\t\t\treturn element;\r\n\t\t}\r\n\t},\r\n\t\"html_element\": {\r\n\t\trender: function (config) {\r\n\t\t\treturn config.html;\r\n\t\t}\r\n\t}\r\n};\r\n\r\nfunction hasSchedulerMarkup(element){\r\n\treturn !!(\r\n\t\telement.querySelector(\".dhx_cal_header\") &&\r\n\t\telement.querySelector(\".dhx_cal_data\") &&\r\n\t\telement.querySelector(\".dhx_cal_navline\")\r\n\t\t);\r\n}\r\n\r\nfunction createDefaultHeader(scheduler){\r\n\tconst views = [\r\n\t\t\"day\",\r\n\t\t\"week\",\r\n\t\t\"month\"\r\n\t];\r\n\tconst date = [\r\n\t\t\"date\"\r\n\t];\r\n\tconst nav = [\r\n\t\t\"prev\",\r\n\t\t\"today\",\r\n\t\t\"next\"\r\n\t];\r\n\r\n\tif(scheduler.matrix){\r\n\t\tfor(const i in scheduler.matrix){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\tif(scheduler._props){\r\n\t\tfor(const i in scheduler._props){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tif(scheduler._grid && scheduler._grid.names){\r\n\t\tfor(const i in scheduler._grid.names){\r\n\t\t\tviews.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst optionalViews = [\r\n\t\t\"map\",\r\n\t\t\"agenda\",\r\n\t\t\"week_agenda\",\r\n\t\t\"year\"\r\n\t];\r\n\r\n\toptionalViews.forEach(function(viewName){\r\n\t\tif(scheduler[viewName + \"_view\"]){\r\n\t\t\tviews.push(viewName);\r\n\t\t}\r\n\t});\r\n\r\n\treturn views.concat(date).concat(nav);\r\n}\r\n\r\nscheduler.init=function(id,date,mode){\r\n\tif(this.$destroyed){\r\n\t\treturn; // not have errors when try to reinit destroyed scheduler\r\n\t}\r\n\tdate=date||(scheduler._currentDate());\r\n\tmode=mode||\"week\";\r\n\r\n\tif(this._obj){\r\n\t\tthis.unset_actions();\r\n\t}\r\n\r\n\tthis._obj=(typeof id == \"string\")?document.getElementById(id):id;\r\n\tthis.$container = this._obj;\r\n\tthis.$root = this._obj;\r\n\r\n\tif(!this.$container.offsetHeight && this.$container.offsetWidth && this.$container.style.height === \"100%\"){\r\n\t\t// scheduler container has zero height and non-zero width\r\n\t\twindow.console.error(scheduler._commonErrorMessages.collapsedContainer(), this.$container);\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tthis.$container.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\tif(!this.config.header && !hasSchedulerMarkup(this.$container)){\r\n\t\t// if no header config and no required markup - use the default header\r\n\t\t// so the scheduler could be initialized in an empty div\r\n\t\tthis.config.header = createDefaultHeader(this);\r\n\t\twindow.console.log([// jshint ignore:line\r\n\t\t\t\"Required DOM elements are missing from the scheduler container and **scheduler.config.header** is not specified.\",\r\n\t\t\t\"Using a default header configuration: \",\r\n\t\t\t\"scheduler.config.header = \" + JSON.stringify(this.config.header, null, 2),\r\n\t\t\t\"Check this article for the details: https://docs.dhtmlx.com/scheduler/initialization.html\"\r\n\t\t].join(\"\\n\"));// jshint ignore:line\r\n\t}\r\n\r\n\tif (this.config.header) {\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\tthis.$container.classList.add(\"dhx_cal_container\");\r\n\t\tif(this.config.header.height){\r\n\t\t\tthis.xy.nav_height = this.config.header.height;\r\n\t\t}\r\n\t\tthis.$container.appendChild(layout.navbar.render(this.config.header));\r\n\t\tthis.$container.appendChild(layout.header.render());\r\n\t\tthis.$container.appendChild(layout.dataArea.render());\r\n\t} else {\r\n\t\t// if no header config provided - make sure scheduler container has all necessary elements\r\n\t\tif(!hasSchedulerMarkup(this.$container)){\r\n\t\t\tthrow new Error([\r\n\t\t\t\t\"Required DOM elements are missing from the scheduler container.\",\r\n\t\t\t\t\"Be sure to either specify them manually in the markup: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviamarkup\",\r\n\t\t\t\t\"Or to use **scheduler.config.header** setting so they could be created automatically: https://docs.dhtmlx.com/scheduler/initialization.html#initializingschedulerviaheaderconfig\"\r\n\t\t\t].join(\"\\n\"));\r\n\t\t}\r\n\t}\r\n\r\n\tif (this.config.rtl) this.$container.className += \" dhx_cal_container_rtl\";\r\n\r\n\t//hook for terrace skin\r\n\tif (this._skin_init)\r\n\t\tscheduler._skin_init();\r\n\r\n\tscheduler.date.init();\r\n\r\n\tthis._scroll=true;\r\n\r\n\tthis._els=[];\r\n\tthis.get_elements();\r\n\tthis.init_templates();\r\n\tthis.set_actions();\r\n\r\n\tthis._init_once();\r\n\tthis._init_touch_events();\r\n\r\n\tthis.set_sizes();\r\n\tscheduler.callEvent('onSchedulerReady', []);\r\n\tscheduler.$initialized = true;\r\n\tthis.setCurrentView(date,mode);\r\n\r\n};\r\n\r\nscheduler.xy={\r\n\tmin_event_height:20,\r\n\tbar_height: 24,\r\n\tscale_width:50,\r\n\tscroll_width:18,\r\n\tscale_height:20,\r\n\tmonth_scale_height:20,\r\n\tmenu_width:25,\r\n\tmargin_top:0,\r\n\tmargin_left:0,\r\n\teditor_width:140,\r\n\tmonth_head_height:22,\r\n\tevent_header_height: 14\r\n};\r\nscheduler.keys={\r\n\tedit_save:13,\r\n\tedit_cancel:27\r\n};\r\n\r\nscheduler.bind = function bind(functor, object){\r\n\tif(functor.bind)\r\n\t\treturn functor.bind(object);\r\n\telse\r\n\t\treturn function(){ return functor.apply(object,arguments); };\r\n};\r\n\r\nscheduler.set_sizes=function(){\r\n\r\n\tvar w = this._x = this._obj.clientWidth-this.xy.margin_left;\r\n\r\n\t//not-table mode always has scroll - need to be fixed in future\r\n\tvar scale_x=this._table_view?0:(this.xy.scale_width+this.xy.scroll_width);\r\n\r\n\tvar materialScalePlaceholder = this.$container.querySelector(\".dhx_cal_scale_placeholder\");\r\n\tif(scheduler._is_material_skin()){\r\n\t\tif(!materialScalePlaceholder) {\r\n\t\t\tmaterialScalePlaceholder = document.createElement(\"div\");\r\n\t\t\tmaterialScalePlaceholder.className = \"dhx_cal_scale_placeholder\";\r\n\t\t\tthis.$container.insertBefore(materialScalePlaceholder, this._els[\"dhx_cal_header\"][0]);\r\n\t\t}\r\n\t\tmaterialScalePlaceholder.style.display = \"block\";\r\n\r\n\t\tthis.set_xy(materialScalePlaceholder,w,this.xy.scale_height + 1,0, this._els[\"dhx_cal_header\"][0].offsetTop);\r\n\r\n\t}else{\r\n\t\tif(materialScalePlaceholder){\r\n\t\t\tmaterialScalePlaceholder.parentNode.removeChild(materialScalePlaceholder);\r\n\t\t}\r\n\t}\r\n\r\n\tif (this._lightbox) {\r\n\t\tif (scheduler.$container.offsetWidth < 1200) {\r\n\t\t} else {\r\n\t\t\tthis._setLbPosition(document.querySelector(\".dhx_cal_light\"));\r\n\t\t}\r\n\t}\r\n\r\n\tthis._data_width = w-scale_x;\r\n\r\n\tthis._els[\"dhx_cal_navline\"][0].style.width = w + \"px\";\r\n\tconst header = this._els[\"dhx_cal_header\"][0];\r\n\tthis.set_xy(header, this._data_width, this.xy.scale_height);\r\n\t// this._els[\"dhx_cal_header\"][0].style.marginLeft = `${scheduler.xy.scale_width}px`;\r\n\theader.style.left = ``;\r\n\theader.style.right = ``;\r\n\tif(!this._table_view){\r\n\t\tif(this.config.rtl){\r\n\t\t\theader.style.right = `${this.xy.scale_width}px`;\r\n\t\t}else{\r\n\t\t\theader.style.left = `${this.xy.scale_width}px`;\r\n\t\t}\r\n\t} else {\r\n\t\tif(!this.config.rtl){\r\n\t\t\theader.style.left = `-1px`;\r\n\t\t} else {\r\n\t\t\theader.style.right = `-1px`;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.set_xy=function(node,w,h,x,y){\r\n\tfunction prepareValue(val){\r\n\t\tlet prepared = val;\r\n\t\tif(!isNaN(Number(prepared))){\r\n\t\t\tprepared = Math.max(0,prepared) + \"px\";\r\n\t\t}\r\n\t\treturn prepared;\r\n\t}\r\n\r\n\tvar direction = 'left';\r\n\r\n\tif(w !== undefined) {\r\n\t\tnode.style.width = prepareValue(w);\r\n\t}\r\n\r\n\tif(h !== undefined){\r\n\t\tnode.style.height = prepareValue(h);\r\n\t}\r\n\r\n\tif (arguments.length>3){\r\n\r\n\t\tif(x !== undefined){\r\n\t\t\tif (this.config.rtl) direction = 'right';\r\n\t\t\tnode.style[direction]=x+\"px\";\r\n\t\t}\r\n\t\tif(y !== undefined){\r\n\t\t\tnode.style.top=y+\"px\";\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.get_elements=function(){\r\n\t//get all child elements as named hash\r\n\tconst els=this._obj.getElementsByTagName(\"DIV\");\r\n\tfor (let i=0; i < els.length; i++){\r\n\t\tlet class_name= scheduler._getClassName(els[i]);\r\n\t\tconst attr_value = els[i].getAttribute(\"data-tab\") || els[i].getAttribute(\"name\") || \"\";\r\n\t\tif (class_name) class_name = class_name.split(\" \")[0];\r\n\t\tif (!this._els[class_name]) this._els[class_name]=[];\r\n\t\tthis._els[class_name].push(els[i]);\r\n\r\n\t\t//check if name need to be changed\r\n\t\t// scheduler.locale.labels[attr_value+\"_tab\"] - to fix getting labels for data-tab\r\n\t\tlet label = scheduler.locale.labels[attr_value+\"_tab\"] || scheduler.locale.labels[attr_value||class_name];\r\n\t\tif (typeof label !== \"string\" && attr_value && !els[i].innerHTML)\r\n\t\t\tlabel = attr_value.split(\"_\")[0];\r\n\t\tif (label) {\r\n\t\t\tthis._waiAria.labelAttr(els[i], label);\r\n\t\t\tels[i].innerHTML = label;\r\n\t\t}\r\n\t}\r\n};\r\n\r\n\r\nconst domEventsScope = scheduler._createDomEventScope();\r\n\r\nscheduler.unset_actions = function(){\r\n\tdomEventsScope.detachAll();\r\n};\r\n\r\nscheduler.set_actions=function(){\r\n\tfor (const a in this._els){\r\n\t\tif (this._click[a]){\r\n\t\t\tfor (let i=0; i < this._els[a].length; i++){\r\n\t\t\t\tconst element = this._els[a][i];\r\n\t\t\t\tconst handler = this._click[a].bind(element);\r\n\t\t\t\tdomEventsScope.attach(element, \"click\", handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdomEventsScope.attach(this._obj, \"selectstart\", function(e){\r\n\t\te.preventDefault();\r\n\t\treturn false;\r\n\t});\r\n\t//this._obj.onselectstart=function(e){ return false; };\r\n\tdomEventsScope.attach(this._obj, \"mousemove\", function(e){\r\n\t\tif (!scheduler._temp_touch_block)\r\n\t\t\tscheduler._on_mouse_move(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mousedown\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_down(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"mouseup\", function(e){\r\n\t\tif (!scheduler._ignore_next_click)\r\n\t\t\tscheduler._on_mouse_up(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"dblclick\", function(e){\r\n\t\tscheduler._on_dbl_click(e);\r\n\t});\r\n\tdomEventsScope.attach(this._obj, \"contextmenu\", function(event) {\r\n\t\tif(scheduler.checkEvent(\"onContextMenu\")){\r\n\t\t\t// block the default browser context menu \r\n\t\t\tevent.preventDefault();\r\n\t\t}\r\n\r\n\t\tconst returnValue = scheduler.callEvent(\"onContextMenu\", [scheduler._locate_event(event.target), event]);\r\n\t\treturn returnValue;\r\n\t});\r\n};\r\nscheduler.select=function(id){\r\n\tif (this._select_id==id) return;\r\n\tscheduler._close_not_saved();\r\n\tthis.editStop(false);\r\n\tif(this._select_id){\r\n\t\tthis.unselect();\r\n\t}\r\n\tthis._select_id = id;\r\n\tthis.updateEvent(id);\r\n\tthis.callEvent(\"onEventSelected\", [id]);\r\n};\r\nscheduler.unselect=function(id){\r\n\tif (id && id!=this._select_id) {\r\n\t\treturn;\r\n\t}\r\n\tconst previousSelection = this._select_id;\r\n\tthis._select_id = null;\r\n\tif (previousSelection && this.getEvent(previousSelection)) {\r\n\t\tthis.updateEvent(previousSelection);\r\n\t}\r\n\tthis.callEvent(\"onEventUnselected\", [previousSelection]);\r\n};\r\nscheduler.$stateProvider.registerProvider(\"global\", (function(){\r\n\treturn {\r\n\t\tmode: this._mode,\r\n\t\tdate: new Date(this._date),\r\n\t\tmin_date: new Date(this._min_date),\r\n\t\tmax_date: new Date(this._max_date),\r\n\t\teditor_id: this._edit_id,\r\n\t\tlightbox_id: this._lightbox_id,\r\n\t\tnew_event: this._new_event,\r\n\t\tselect_id: this._select_id,\r\n\t\texpanded: this.expanded,\r\n\t\tdrag_id: this._drag_id,\r\n\t\tdrag_mode: this._drag_mode\r\n\t};\r\n}).bind(scheduler));\r\n\r\nscheduler._click={\r\n\tdhx_cal_data:function(e){\r\n\t\t//in case of touch disable click processing\r\n\t\tif (scheduler._ignore_next_click){\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\r\n\t\tconst id = scheduler._locate_event(e.target);\r\n\r\n\t\tif (!id) {\r\n\t\t\tscheduler.callEvent(\"onEmptyClick\",[scheduler.getActionData(e).date, e]);\r\n\t\t} else {\r\n\t\t\tif ( !scheduler.callEvent(\"onClick\",[id,e]) || scheduler.config.readonly ) return;\r\n\t\t}\r\n\r\n\t\tif (id && scheduler.config.select) {\r\n\r\n\t\t\tscheduler.select(id);\r\n\t\t\tconst icon = e.target.closest(\".dhx_menu_icon\");\r\n\r\n\t\t\tconst mask = scheduler._getClassName(icon);\r\n\t\t\tif (mask.indexOf(\"_icon\")!=-1)\r\n\t\t\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t\t} else{\r\n\t\t\tscheduler._close_not_saved();\r\n\t\t\tif (scheduler.getState().select_id && new Date().valueOf()-(scheduler._new_event||0) > 500){\r\n\t\t\t\tscheduler.unselect();\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tdhx_cal_prev_button:function(){\r\n\t\tscheduler._click.dhx_cal_next_button(0,-1);\r\n\t},\r\n\tdhx_cal_next_button:function(dummy,step){\r\n\t\tlet def_step = 1;\r\n\t\tif (scheduler.config.rtl){\r\n\t\t\tstep = -step;\r\n\t\t\tdef_step = -def_step;\r\n\t\t}\r\n\t\tscheduler.setCurrentView(scheduler.date.add( //next line changes scheduler._date , but seems it has not side-effects\r\n\t\t\tscheduler.date[scheduler._mode+\"_start\"](new Date(scheduler._date)),(step||def_step),scheduler._mode));\r\n\t},\r\n\tdhx_cal_today_button:function(){\r\n\t\tif (scheduler.callEvent(\"onBeforeTodayDisplayed\", [])) {\r\n\t\t\tscheduler.setCurrentView(scheduler._currentDate());\r\n\t\t}\r\n\t},\r\n\tdhx_cal_tab:function(){\r\n\t\tconst name = this.getAttribute(\"data-tab\");\r\n\t\tconst deprecated_name = this.getAttribute(\"name\");\r\n\t\tconst mode = name || deprecated_name.substring(0, deprecated_name.search(\"_tab\"));\r\n\t\tscheduler.setCurrentView(scheduler._date,mode);\r\n\t},\r\n\tbuttons:{\r\n\t\t\"delete\":function(id){\r\n\t\t\tconst c = scheduler.locale.labels.confirm_deleting;\r\n\t\t\tscheduler._dhtmlx_confirm({message: c, title: scheduler.locale.labels.title_confirm_deleting, callback:function(){ scheduler.deleteEvent(id); },\r\n\t\t\tconfig: {ok: scheduler.locale.labels.icon_delete}\r\n\t\t});\r\n\t\t},\r\n\t\tedit:function(id){ scheduler.edit(id); },\r\n\t\tsave:function(id){ scheduler.editStop(true); },\r\n\t\tdetails:function(id){ scheduler.showLightbox(id); },\r\n\t\tform:function(id){ scheduler.showLightbox(id); },\r\n\t\tcancel:function(id){ scheduler.editStop(false); }\r\n\t}\r\n};\r\nscheduler._dhtmlx_confirm = function({message, title, callback, config}) {\r\n\tif (!message)\r\n\t\treturn callback();\r\n\r\n\tconfig = config || {};\r\n\tconst opts = { ...config, text: message };\r\n\tif (title) {\r\n\t\topts.title = title;\r\n\t}\r\n\tif (callback) {\r\n\t\topts.callback = function(result) {\r\n\t\t\tif (result) {\r\n\t\t\t\tcallback();\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\tscheduler.confirm(opts);\r\n};\r\nscheduler.addEventNow=function(start,end,e){\r\n\tlet base = {};\r\n\tif (scheduler._isObject(start) && !scheduler._isDate(start)){\r\n\t\tbase = start;\r\n\t\tstart = null;\r\n\t}\r\n\r\n\tconst duration = (this.config.event_duration||this.config.time_step)*60000;\r\n\tif (!start) start = base.start_date||Math.round((scheduler._currentDate()).valueOf()/duration)*duration;\r\n\tlet start_date = new Date(start);\r\n\tif (!end){\r\n\t\tlet start_hour = this.config.first_hour;\r\n\t\tif (start_hour > start_date.getHours()){\r\n\t\t\tstart_date.setHours(start_hour);\r\n\t\t\tstart = start_date.valueOf();\r\n\t\t}\r\n\t\tend = start.valueOf()+duration;\r\n\t}\r\n\tlet end_date = new Date(end);\r\n\r\n\t// scheduler.addEventNow(new Date(), new Date()) + collision though get_visible events defect (such event was not retrieved)\r\n\tif(start_date.valueOf() == end_date.valueOf())\r\n\t\tend_date.setTime(end_date.valueOf()+duration);\r\n\tbase.start_date = base.start_date||start_date;\r\n\tbase.end_date = base.end_date||end_date;\r\n\tbase.text = base.text||this.locale.labels.new_event;\r\n\tbase.id = this._drag_id = base.id || this.uid();\r\n\tthis._drag_mode=\"new-size\";\r\n\tthis._loading=true;\r\n\tconst eventId = this.addEvent(base);\r\n\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\tthis._loading=false;\r\n\r\n\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\tthis._on_mouse_up(e);\r\n\treturn eventId;\r\n};\r\nscheduler._on_dbl_click=function(e,src){\r\n\tsrc = src || e.target;\r\n\tif (this.config.readonly) return;\r\n\tconst name = scheduler._getClassName(src).split(\" \")[0];\r\n\tswitch(name){\r\n\t\tcase \"dhx_scale_holder\":\r\n\t\tcase \"dhx_scale_holder_now\":\r\n\t\tcase \"dhx_month_body\":\r\n\t\tcase \"dhx_wa_day_data\":\r\n\t\t\tif (!scheduler.config.dblclick_create) break;\r\n\t\t\tthis.addEventNow(this.getActionData(e).date,null,e);\r\n\t\t\tbreak;\r\n\t\tcase \"dhx_cal_event\":\r\n\t\tcase \"dhx_wa_ev_body\":\r\n\t\tcase \"dhx_agenda_line\":\r\n\t\tcase \"dhx_cal_agenda_event_line\":\r\n\t\tcase \"dhx_grid_event\":\r\n\t\tcase \"dhx_cal_event_line\":\r\n\t\tcase \"dhx_cal_event_clear\": {\r\n\t\t\tconst id = this._locate_event(src);\r\n\t\t\tif (!this.callEvent(\"onDblClick\",[id,e])) return;\r\n\t\t\tif (this.config.details_on_dblclick || this._table_view || !this.getEvent(id)._timed || !this.config.select)\r\n\t\t\t\tthis.showLightbox(id);\r\n\t\t\telse\r\n\t\t\t\tthis.edit(id);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase \"dhx_time_block\":\r\n\t\tcase \"dhx_cal_container\":\r\n\t\t\treturn;\r\n\t\tdefault: {\r\n\t\t\tconst viewHandler = this[\"dblclick_\"+name];\r\n\t\t\tif (viewHandler) {\r\n\t\t\t\tviewHandler.call(this,e);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (src.parentNode && src != this)\r\n\t\t\t\t\treturn scheduler._on_dbl_click(e,src.parentNode);\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n};\r\n//column index by mouse x-coordinate\r\nscheduler._get_column_index = function(x_pos){\r\n\tlet column = 0;\r\n\tif (this._cols){\r\n\t\tlet width = 0;\r\n\t\tlet i = 0;\r\n\t\twhile (width + this._cols[i] < x_pos && i < this._cols.length){\r\n\t\t\twidth += this._cols[i];\r\n\t\t\ti++;\r\n\t\t}\r\n\t\tcolumn = i + (this._cols[i] ? ((x_pos - width)/ this._cols[i]) : 0);\r\n\r\n\t\tif (this._ignores){\r\n\t\t\tif(column >= this._cols.length){\r\n\t\t\t\twhile(column >= 1 && this._ignores[Math.floor(column)]){\r\n\t\t\t\t\tcolumn--;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\treturn column;\r\n};\r\n\r\n//transform mouse coordinates to day-time indexes of week based view\r\nscheduler._week_indexes_from_pos = function(pos){\r\n\t//\"get position\" can be invoked before columns are loaded into the units view(e.g. by onMouseMove handler in key_nav.js)\r\n\tif(!this._cols){\r\n\t\treturn pos;\r\n\t}else{\r\n\t\tconst column = this._get_column_index(pos.x);\r\n\r\n\t\tpos.x=Math.min(this._cols.length-1, Math.max(0,Math.ceil(column)-1));\r\n\t\tpos.y=Math.max(0,Math.ceil(pos.y*60/(this.config.time_step*this.config.hour_size_px))-1)+this.config.first_hour*(60/this.config.time_step);\r\n\t\treturn pos;\r\n\t}\r\n};\r\n\r\nscheduler._mouse_coords=function(ev){\r\n\tlet pos;\r\n\tconst body = document.body;\r\n\tconst documentElement = document.documentElement;\r\n\tif (!this.$env.isIE && (ev.pageX || ev.pageY))\r\n\t\tpos={x:ev.pageX, y:ev.pageY};\r\n\telse pos={\r\n\t\tx:ev.clientX + (body.scrollLeft||documentElement.scrollLeft||0) - body.clientLeft,\r\n\t\ty:ev.clientY + (body.scrollTop||documentElement.scrollTop||0) - body.clientTop\r\n\t};\r\n\t//apply layout\r\n\tif (this.config.rtl && this._colsS) {\r\n\t\tpos.x = this.$container.querySelector(\".dhx_cal_data\").offsetWidth - pos.x;\r\n\t\tpos.x += this.$domHelpers.getAbsoluteLeft(this._obj);\r\n\t\tif (this._mode !== \"month\") {\r\n\t\t\tpos.x -= this.xy.scale_width;\r\n\t\t}\r\n\t} else {\r\n\t\tpos.x-=this.$domHelpers.getAbsoluteLeft(this._obj)+(this._table_view?0:this.xy.scale_width);\r\n\t}\r\n\r\n\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t//pos.y-=this.$domHelpers.getAbsoluteTop(this._obj)+this.xy.nav_height+(this._dy_shift||0)+this.xy.scale_height-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.y-=this.$domHelpers.getAbsoluteTop(dataArea)-this._els[\"dhx_cal_data\"][0].scrollTop;\r\n\tpos.ev = ev;\r\n\tconst handler = this[\"mouse_\"+this._mode];\r\n\tif (handler){\r\n\t\tpos = handler.call(this,pos);\r\n\t}else{\r\n\t\t//transform to date\r\n\t\tif (!this._table_view) {\r\n\t\t\tpos = this._week_indexes_from_pos(pos);\r\n\t\t} else {\r\n\t\t\tconst column = this._get_column_index(pos.x);\r\n\t\t\tif (!this._cols || !this._colsS) // agenda/map views\r\n\t\t\t\treturn pos;\r\n\t\t\tlet dy=0;\r\n\t\t\tfor (dy=1; dy < this._colsS.heights.length; dy++)\r\n\t\t\t\tif (this._colsS.heights[dy]>pos.y) break;\r\n\r\n\t\t\tpos.y=Math.ceil( (Math.max(0, column)+Math.max(0,dy-1)*7)*24*60/this.config.time_step );\r\n\r\n\t\t\tif (scheduler._drag_mode || this._mode == \"month\")\r\n\t\t\t\tpos.y=(Math.max(0,Math.ceil(column)-1)+Math.max(0,dy-1)*7)*24*60/this.config.time_step;\r\n\r\n\t\t\t//we care about ignored days only during event moving in month view\r\n\t\t\tif (this._drag_mode == \"move\"){\r\n\t\t\t\tif (scheduler._ignores_detected && scheduler.config.preserve_length){\r\n\t\t\t\t\tpos._ignores = true;\r\n\t\t\t\t\t//get real lengtn of event\r\n\t\t\t\t\tif (!this._drag_event._event_length)\r\n\t\t\t\t\t\tthis._drag_event._event_length = this._get_real_event_length(this._drag_event.start_date, this._drag_event.end_date, { x_step:1, x_unit:\"day\"});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tpos.x=0;\r\n\t\t}\r\n\t}\r\n\tpos.timestamp = +new Date();\r\n\treturn pos;\r\n};\r\nscheduler._close_not_saved=function(){\r\n\tif (new Date().valueOf()-(scheduler._new_event||0) > 500 && scheduler._edit_id){\r\n\t\tconst confirmationText=scheduler.locale.labels.confirm_closing;\r\n\r\n\t\tscheduler._dhtmlx_confirm({\r\n\t\t\tmessage: confirmationText, \r\n\t\t\ttitle: scheduler.locale.labels.title_confirm_closing, \r\n\t\t\tcallback: function() { \r\n\t\t\t\tscheduler.editStop(scheduler.config.positive_closing);\r\n\t\t\t}\r\n\t\t});\r\n\t\tif(confirmationText){\r\n\t\t\tthis._drag_id = this._drag_pos = this._drag_mode = null;\r\n\t\t}\r\n\t}\r\n};\r\nscheduler._correct_shift=function(start, back){\r\n\treturn start-=((new Date(scheduler._min_date)).getTimezoneOffset()-(new Date(start)).getTimezoneOffset())*60000*(back?-1:1);\r\n};\r\n\r\nscheduler._is_pos_changed = function(old_pos, new_pos){\r\n\tfunction diff(old_val, new_val, acc){\r\n\t\treturn !!(Math.abs(old_val - new_val) > acc);\r\n\t}\r\n\r\n\tif(!(old_pos && this._drag_pos)){\r\n\t\treturn true;\r\n\t}\r\n\tconst delay = 100;\r\n\tconst d_pos = 5;\r\n\r\n\t// start drag only if passed some time since mouse down, or if mouse position changed sufficiently\r\n\treturn !!(this._drag_pos.has_moved || !this._drag_pos.timestamp || (new_pos.timestamp - this._drag_pos.timestamp > delay) || diff(old_pos.ev.clientX, new_pos.ev.clientX, d_pos) || diff(old_pos.ev.clientY, new_pos.ev.clientY, d_pos));\r\n};\r\n\r\nscheduler._correct_drag_start_date = function(start){\r\n\tlet obj;\r\n\tif (scheduler.matrix)\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tstart = new Date(start);\r\n\tlet len = 1;\r\n\tif(obj._start_correction || obj._end_correction)\r\n\t\tlen = (obj.last_hour||0)*60 - (start.getHours()*60+start.getMinutes()) || 1;\r\n\r\n\treturn start*1 + (scheduler._get_fictional_event_length(start, len, obj) - len);\r\n};\r\nscheduler._correct_drag_end_date = function(start, duration){\r\n\tlet obj;\r\n\tif (scheduler.matrix) {\r\n\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t}\r\n\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\tconst end = start*1 + scheduler._get_fictional_event_length(start, duration, obj);\r\n\treturn new Date(end*1 - (scheduler._get_fictional_event_length(end, -1, obj, -1) + 1));\r\n};\r\n\r\nscheduler._on_mouse_move=function(e){\r\n\tif (this._drag_mode){\r\n\t\tvar pos=this._mouse_coords(e);\r\n\t\tif (this._is_pos_changed(this._drag_pos, pos)){\r\n\t\t\tvar start, end;\r\n\t\t\tif (this._edit_id!=this._drag_id)\r\n\t\t\t\tthis._close_not_saved();\r\n\r\n\t\t\tif(!this._drag_mode)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar mousedownPos = null;\r\n\t\t\tif(this._drag_pos && !this._drag_pos.has_moved){\r\n\t\t\t\tmousedownPos = this._drag_pos;\r\n\t\t\t\tmousedownPos.has_moved = true;\r\n\t\t\t}\r\n\r\n\t\t\tthis._drag_pos = pos;\r\n\r\n\t\t\tthis._drag_pos.has_moved = true;\r\n\r\n\t\t\tif (this._drag_mode==\"create\"){\r\n\r\n\t\t\t\t// use mouse down position as a starting point for drag-create\r\n\t\t\t\tif(mousedownPos){\r\n\t\t\t\t\tpos = mousedownPos;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._close_not_saved();\r\n\t\t\t\tthis.unselect(this._select_id);\r\n\t\t\t\tthis._loading=true; //will be ignored by dataprocessor\r\n\r\n\t\t\t\tstart = this._get_date_from_pos(pos).valueOf();\r\n\r\n\t\t\t\tif (!this._drag_start) {\r\n\t\t\t\t\tvar res = this.callEvent(\"onBeforeEventCreated\", [e, this._drag_id]);\r\n\t\t\t\t\tif (!res){\r\n\t\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loading=false;\r\n\t\t\t\t\tthis._drag_start=start;\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tend = start;\r\n\t\t\t\tif (end == this._drag_start) {\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar start_date = new Date(this._drag_start);\r\n\t\t\t\tvar end_date = new Date(end);\r\n\t\t\t\tif ( (this._mode == \"day\" || this._mode == \"week\") &&\r\n\t\t\t\t\t(start_date.getHours() == end_date.getHours() &&\r\n\t\t\t\t\tstart_date.getMinutes() == end_date.getMinutes()) ) {\r\n\t\t\t\t\t\tend_date = new Date(this._drag_start+1000);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tthis._drag_id=this.uid();\r\n\t\t\t\tthis.addEvent(start_date, end_date, this.locale.labels.new_event, this._drag_id, pos.fields);\r\n\r\n\t\t\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\t\t\tthis._loading=false;\r\n\t\t\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar timeStep = this.config.time_step;\r\n\t\t\tvar ev=this.getEvent(this._drag_id);\r\n\t\t\tvar obj;\r\n\t\t\tif (scheduler.matrix)\r\n\t\t\t\tobj = scheduler.matrix[scheduler._mode];\r\n\t\t\tobj = obj || { x_step:1, x_unit:\"day\" };\r\n\r\n\t\t\tif (this._drag_mode==\"move\"){\r\n\t\t\t\tstart = this._min_date.valueOf()+(pos.y*this.config.time_step+pos.x*24*60)*60000;\r\n\t\t\t\tif (!pos.custom && this._table_view) {\r\n\t\t\t\t\tstart += this.date.time_part(ev.start_date) * 1000;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._table_view && this._dragEventBody && this._drag_event._move_event_shift === undefined) {\r\n\t\t\t\t\tthis._drag_event._move_event_shift = start - ev.start_date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this._drag_event._move_event_shift) {\r\n\t\t\t\t\tstart -= this._drag_event._move_event_shift;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstart = this._correct_shift(start);\r\n\r\n\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view && obj){\r\n\r\n\t\t\t\t\tstart = scheduler._correct_drag_start_date(start);\r\n\t\t\t\t\tend = scheduler._correct_drag_end_date(start,this._drag_event._event_length);\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tend = ev.end_date.valueOf()-(ev.start_date.valueOf()-start);\r\n\t\t\t} else { // resize\r\n\t\t\t\tstart = ev.start_date.valueOf();\r\n\t\t\t\tend = ev.end_date.valueOf();\r\n\t\t\t\tif (this._table_view) {\r\n\t\t\t\t\tvar resize_date = this._min_date.valueOf()+pos.y*this.config.time_step*60000 + (pos.custom?0:24*60*60000);\r\n\t\t\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\t\t\tresize_date = this._correct_shift(resize_date, false);\r\n\t\t\t\t\t\tif( this._drag_from_start ) {\r\n\t\t\t\t\t\t\tvar day = 24*60*60000;\r\n\t\t\t\t\t\t\tif( resize_date <= scheduler.date.date_part(new Date(end+day-1)).valueOf() ) // to get end time as 23:59:59 and then the day start\r\n\t\t\t\t\t\t\t\tstart = resize_date - day;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tif(this.config.preserve_length) {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = scheduler._correct_drag_start_date(resize_date);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = scheduler._correct_drag_end_date(resize_date, 0);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (pos.resize_from_start) {\r\n\t\t\t\t\t\t\t\tstart = resize_date;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tend = resize_date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar end_day_start = this.date.date_part(new Date(ev.end_date.valueOf() - 1)).valueOf();\r\n\t\t\t\t\tvar end_day_date = new Date(end_day_start);\r\n\t\t\t\t\tvar firstHour = this.config.first_hour;\r\n\t\t\t\t\tvar lastHour = this.config.last_hour;\r\n\t\t\t\t\tvar maxY = (lastHour - firstHour) * (60/timeStep);\r\n\r\n\t\t\t\t\tthis.config.time_step = 1;\r\n\t\t\t\t\tvar precisePos = this._mouse_coords(e);\r\n\t\t\t\t\tthis.config.time_step = timeStep;\r\n\r\n\t\t\t\t\tvar minDate = pos.y*timeStep*60000;\r\n\t\t\t\t\tvar maxDate = Math.min(pos.y + 1, maxY)*timeStep*60000;\r\n\t\t\t\t\tvar preciseDate = precisePos.y*60000;\r\n\r\n\t\t\t\t\t// rounding end date to the closest time step\r\n\t\t\t\t\tif(Math.abs(minDate - preciseDate) > Math.abs(maxDate - preciseDate)){\r\n\t\t\t\t\t\tend = end_day_start + maxDate;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = end_day_start + minDate;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = end + ((new Date(end)).getTimezoneOffset() - end_day_date.getTimezoneOffset()) * 60000;\r\n\t\t\t\t\tthis._els[\"dhx_cal_data\"][0].style.cursor=\"s-resize\";\r\n\t\t\t\t\tif (this._mode == \"week\" || this._mode == \"day\")\r\n\t\t\t\t\t\tend = this._correct_shift(end);\r\n\t\t\t\t}\r\n\t\t\t\tif (this._drag_mode == \"new-size\") {\r\n\t\t\t\t\tif (end <= this._drag_start){\r\n\t\t\t\t\t\tvar shift = pos.shift||((this._table_view && !pos.custom)?24*60*60000:0);\r\n\t\t\t\t\t\tstart = end-(pos.shift?0:shift);\r\n\t\t\t\t\t\tend = this._drag_start+(shift||(timeStep*60000));\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tstart = this._drag_start;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (end<=start)\r\n\t\t\t\t\t\tend=start+timeStep*60000;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar new_end = new Date(end-1);\r\n\t\t\tvar new_start = new Date(start);\r\n\t\t\t//deny drag out of visible scheduler scale in timeline view\r\n\t\t\tif(this._drag_mode==\"move\" && scheduler.config.limit_drag_out &&\r\n\t\t\t\t(+new_start < +scheduler._min_date || +end > +scheduler._max_date)){\r\n\r\n\t\t\t\tif(+ev.start_date < +scheduler._min_date || +ev.end_date > +scheduler._max_date){\r\n\t\t\t\t\t// not move event if it's already outside time scale\r\n\t\t\t\t\tnew_start = new Date(ev.start_date);\r\n\t\t\t\t\tend = new Date(ev.end_date);\r\n\t\t\t\t}else{\r\n\r\n\t\t\t\t\tvar duration = end - new_start;\r\n\r\n\t\t\t\t\tif(+new_start < +scheduler._min_date){\r\n\t\t\t\t\t\tnew_start = new Date(scheduler._min_date);\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tnew_start = new Date(scheduler._correct_drag_start_date(new_start));\r\n\t\t\t\t\t\t\tif(obj._start_correction)\r\n\t\t\t\t\t\t\t\tnew_start = new Date(new_start.valueOf() + obj._start_correction);\r\n\t\t\t\t\t\t\tend = new Date(new_start*1 + this._get_fictional_event_length(new_start, this._drag_event._event_length, obj));\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tend = new Date(+new_start + duration);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tend = new Date(scheduler._max_date);\r\n\r\n\t\t\t\t\t\tif (pos._ignores && this.config.preserve_length && this._table_view){\r\n\t\t\t\t\t\t\tif(obj._end_correction)\r\n\t\t\t\t\t\t\t\tend = new Date(end.valueOf() - obj._end_correction);\r\n\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\tnew_start = new Date(end*1 - this._get_fictional_event_length(end, this._drag_event._event_length, obj, true));\r\n\t\t\t\t\t\t\tif(this._ignores_detected){\r\n\t\t\t\t\t\t\t\tnew_start = scheduler.date.add(new_start, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t\tend = new Date(end*1 - this._get_fictional_event_length(end, 0, obj, true));\r\n\t\t\t\t\t\t\t\tend = scheduler.date.add(end, obj.x_step, obj.x_unit);\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tvar new_end = new Date(end-1);\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view && this._dragEventBody &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler._get_section_view() && pos.x != this._get_event_sday({start_date: new Date(start), end_date:new Date(start)})) || new Date(start).getHours() < this.config.first_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tif (this._drag_mode == \"move\") {\r\n\t\t\t\t\tvar day = this._min_date.valueOf() + (pos.x * 24 * 60) * 60000;\r\n\t\t\t\t\tnew_start = new Date(day);\r\n\t\t\t\t\tnew_start.setHours(this.config.first_hour);\r\n\t\t\t\t\tend = new Date(new_start.valueOf() + duration);\r\n\t\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// fix event dates when resized to bottom of the column (day/week views)\r\n\t\t\tif(!this._table_view &&\r\n\t\t\t\t!scheduler.config.all_timed &&\r\n\t\t\t\t((!scheduler.getView() && pos.x != this._get_event_sday({start_date: new Date(end), end_date:new Date(end)})) || new Date(end).getHours() >= this.config.last_hour)){\r\n\t\t\t\tvar duration = end - new_start;\r\n\t\t\t\tvar day = this._min_date.valueOf()+(pos.x*24*60)*60000;\r\n\t\t\t\tend = scheduler.date.date_part(new Date(day));\r\n\t\t\t\tend.setHours(this.config.last_hour);\r\n\t\t\t\tnew_end = new Date(end-1);\r\n\t\t\t\tif(this._drag_mode == \"move\"){\r\n\t\t\t\t\tnew_start = new Date(+end - duration);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//prevent out-of-borders situation for day|week view\r\n\t\t\tif ( this._table_view || (new_end.getDate()==new_start.getDate() && new_end.getHours()=ed)\r\n\t\t\t\tcls += ' dhx_after';\r\n\t\t\telse if (sd.valueOf()==cd.valueOf())\r\n\t\t\t\tcls += ' dhx_now';\r\n\r\n\t\t\tif (this._ignores_detected && this._ignores[j]){\r\n\t\t\t\tcls += \" dhx_scale_ignore\";\r\n\t\t\t}\r\n\r\n\t\t\tcell.className = cls + \" \" + this.templates.month_date_class(sd, cd);\r\n\r\n\t\t\tcell.setAttribute(\"data-cell-date\", scheduler.templates.format_date(sd));\r\n\t\t\tvar body_class = \"dhx_month_body\";\r\n\t\t\tvar head_class = \"dhx_month_head\";\r\n\t\t\tif (j === 0 && this.config.left_border) {\r\n\t\t\t\tbody_class += \" dhx_month_body_border\";\r\n\t\t\t\thead_class += \" dhx_month_head_border\";\r\n\t\t\t}\r\n\t\t\tif (!this._ignores_detected || !this._ignores[j]){\r\n\t\t\t\tcell.style.width = tdwidths[j];\r\n\t\t\t\tthis._waiAria.monthCellAttr(cell, sd);\r\n\r\n\t\t\t\tvar cellHead = document.createElement(\"div\");\r\n\t\t\t\tcellHead.style.height = scheduler.xy.month_head_height + \"px\";\r\n\t\t\t\tcellHead.className = head_class;\r\n\t\t\t\tcellHead.innerHTML = this.templates.month_day(sd);\r\n\t\t\t\tcell.appendChild(cellHead);\r\n\r\n\t\t\t\tvar cellBody = document.createElement(\"div\");\r\n\t\t\t\tcellBody.className = body_class;\r\n\t\t\t\t// cellBody.style.height = row_height + \"px\";\r\n\t\t\t\t// cellBody.style.width = tdwidths[j];\r\n\t\t\t\tcell.appendChild(cellBody);\r\n\r\n\t\t\t} else {\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t\tcell.appendChild(document.createElement(\"div\"));\r\n\t\t\t}\r\n\t\t\trendered_dates.push(sd);\r\n\t\t\tvar bf1 = sd.getDate();\r\n\t\t\tsd=this.date.add(sd,1,\"day\");\r\n\t\t\tif (sd.getDate() - bf1 > 1)\r\n\t\t\t\tsd = new Date(sd.getFullYear(), sd.getMonth(), bf1 + 1, 12, 0);\r\n\t\t}\r\n\r\n\t\tscheduler._colsS.heights[i] = cellheight;\r\n\t\tcellheight += getCellHeight(i);\r\n\t}\r\n\r\n\tthis._min_date = view_start;\r\n\tthis._max_date = sd;\r\n\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.appendChild(table);\r\n\r\n\tthis._scales = {};\r\n\tvar cells = div.querySelectorAll('[data-cell-date]');\r\n\tcells.forEach((cell) => {\r\n\t\tconst date = scheduler.templates.parse_date(cell.getAttribute(\"data-cell-date\"));\r\n\t\tconst body = cell.querySelector(\".dhx_month_body\");\r\n\t\tthis._scales[+date] = body;\r\n\t\tthis.callEvent(\"onScaleAdd\", [this._scales[+date], date]);\r\n\t});\r\n\r\n\treturn this._max_date;\r\n};\r\n\r\nscheduler._reset_month_scale=function(b,dd,sd,rows){\r\n\t//recalculates rows height and redraws month layout\r\n\tvar ed=scheduler.date.add(dd,1,\"month\");\r\n\r\n\t//trim time part for comparison reasons\r\n\tvar cd = scheduler._currentDate();\r\n\tthis.date.date_part(cd);\r\n\tthis.date.date_part(sd);\r\n\r\n\trows = rows || Math.ceil(Math.round((ed.valueOf()-sd.valueOf()) / (60*60*24*1000) ) / 7);\r\n\r\n\tvar height = (Math.floor(b.clientHeight/rows) - this.xy.month_head_height);\r\n\r\n\tthis._colsS.height = height + this.xy.month_head_height;\r\n\tthis._colsS.heights = [];\r\n\r\n\treturn scheduler._render_month_scale(b, dd, sd, rows);\r\n\r\n};\r\n\r\nscheduler.getView = function (viewName) {\r\n\tif (!viewName) {\r\n\t\tviewName = scheduler.getState().mode;\r\n\t}\r\n\tif (scheduler.matrix && scheduler.matrix[viewName]) {\r\n\t\treturn scheduler.matrix[viewName];\r\n\t}\r\n\r\n\tif (scheduler._props && scheduler._props[viewName]) {\r\n\t\treturn scheduler._props[viewName];\r\n\t}\r\n\r\n\treturn null;\r\n};\r\n\r\nscheduler.getLabel = function(property, key) {\r\n\tvar sections = this.config.lightbox.sections;\r\n\tfor (var i=0; i scheduler.getState().max_date.valueOf()){\r\n\t\t\tendColumnIndex += getDaysDifference(endDate, scheduler.getState().max_date);\r\n\t\t}\r\n\t} else{\r\n\t\tendColumnIndex = Math.round(eventLength/60/60/1000/24);\r\n\t}\r\n\r\n\tvar last_column = true;\r\n\twhile (startColumnIndex < endColumnIndex){\r\n\t\tvar check = scheduler.date.add(endDate, -config.x_step, config.x_unit);\r\n\t\tif (ignore && ignore(endDate) && (!last_column || (last_column && ignore(check) ))){\r\n\t\t\teventLength -= (endDate-check);\r\n\r\n\t\t}else{\r\n\t\t\tlet excludedDuration = 0;\r\n\t\t\tconst intervalStart = new Date(Math.max(check.valueOf(), startDate.valueOf()));\r\n\t\t\tconst intervalEnd = endDate;\r\n\t\t\tconst leftCellCutOffStart = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.first_hour);\r\n\t\t\tconst leftCellCutOffEnd = new Date(intervalStart.getFullYear(), intervalStart.getMonth(), intervalStart.getDate(), config.last_hour||24);\r\n\t\t\tconst rightCellCutOffStart = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.first_hour);\r\n\t\t\tconst rightCellCutOffEnd = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), config.last_hour||24);\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += intervalEnd - rightCellCutOffEnd;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalEnd.valueOf() > rightCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += config._start_correction;\r\n\t\t\t} else {\r\n\t\t\t\texcludedDuration += intervalEnd.getHours()*60*60*1000 + intervalEnd.getMinutes()*60*1000;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffEnd.valueOf()){\r\n\t\t\t\texcludedDuration += config._end_correction;\r\n\t\t\t}\r\n\r\n\t\t\tif(intervalStart.valueOf() < leftCellCutOffStart.valueOf()){\r\n\t\t\t\texcludedDuration += (leftCellCutOffStart.valueOf() - intervalStart.valueOf());\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\teventLength -= excludedDuration;\r\n\t\t\tlast_column = false;\r\n\t\t}\r\n\t\tendDate = check;\r\n\t\tendColumnIndex--;\r\n\t}\r\n\treturn eventLength;\r\n};\r\nscheduler._get_fictional_event_length=function(end_date, ev_length, obj, back){\r\n\tvar sd = new Date(end_date);\r\n\tvar dir = back ? -1 : 1;\r\n\r\n\t//get difference caused by first|last hour\r\n\tif (obj._start_correction || obj._end_correction){\r\n\t\tvar today;\r\n\t\tif (back)\r\n\t\t\ttoday = (sd.getHours()*60+sd.getMinutes()) - (obj.first_hour||0)*60;\r\n\t\telse\r\n\t\t\ttoday = (obj.last_hour||0)*60 - (sd.getHours()*60+sd.getMinutes());\r\n\t\tvar per_day = (obj.last_hour - obj.first_hour)*60;\r\n\t\tvar days = Math.ceil( (ev_length / (60*1000) - today ) / per_day);\r\n\t\tif(days < 0) days = 0;\r\n\t\tev_length += days * (24*60 - per_day) * 60 * 1000;\r\n\t}\r\n\r\n\tvar fd = new Date(end_date*1+ev_length*dir);\r\n\tvar ignore = this[\"ignore_\"+this._mode];\r\n\r\n\tvar start_slot = 0,\r\n\t\tend_slot;\r\n\tif (obj.render){\r\n\t\tstart_slot = this._get_date_index(obj, sd);\r\n\t\tend_slot = this._get_date_index(obj, fd);\r\n\t} else{\r\n\t\tend_slot = Math.round(ev_length/60/60/1000/24);\r\n\t}\r\n\r\n\twhile (start_slot*dir <= end_slot*dir){\r\n\t\tvar check = scheduler.date.add(sd, obj.x_step*dir, obj.x_unit);\r\n\t\tif (ignore && ignore(sd)){\r\n\t\t\tev_length += (check-sd)*dir;\r\n\t\t\tend_slot += dir;\r\n\t\t}\r\n\r\n\t\tsd = check;\r\n\t\tstart_slot+=dir;\r\n\t}\r\n\r\n\treturn ev_length;\r\n};\r\n\r\nscheduler._get_section_view = function(){\r\n\treturn this.getView();\r\n};\r\n\r\nscheduler._get_section_property = function(){\r\n\tif(this.matrix && this.matrix[this._mode]){\r\n\t\treturn this.matrix[this._mode].y_property;\r\n\t}else if(this._props && this._props[this._mode]){\r\n\t\treturn this._props[this._mode].map_to;\r\n\t}\r\n\treturn null;\r\n};\r\n\r\nscheduler._is_initialized = function(){\r\n\tvar state = this.getState();\r\n\treturn (this._obj && state.date && state.mode);\r\n};\r\nscheduler._is_lightbox_open = function(){\r\n\tvar state = this.getState();\r\n\treturn state.lightbox_id !== null && state.lightbox_id !== undefined;\r\n};\r\n\r\n}","export default {\r\n\tevent: function (el, event, handler){\r\n\t\tif (el.addEventListener)\r\n\t\t\tel.addEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.attachEvent)\r\n\t\t\tel.attachEvent(\"on\"+event, handler);\r\n\t},\r\n\teventRemove: function (el, event, handler){\r\n\t\tif (el.removeEventListener)\r\n\t\t\tel.removeEventListener(event, handler, false);\r\n\t\r\n\t\telse if (el.detachEvent)\r\n\t\t\tel.detachEvent(\"on\"+event, handler);\r\n\t}\r\n};","import defaultDomEvents from './event';\r\n\r\nexport default function(){\r\n\r\n\tvar domEvents = function (addEvent, removeEvent) {\r\n\t\taddEvent = addEvent || defaultDomEvents.event;\r\n\t\tremoveEvent = removeEvent || defaultDomEvents.eventRemove;\r\n\t\tvar handlers = [];\r\n\t\tvar eventScope = {\r\n\t\t\tattach: function(el, event, callback, capture){\r\n\t\t\t\thandlers.push({element: el, event:event, callback: callback, capture: capture});\r\n\t\t\t\taddEvent(el, event, callback, capture);\r\n\t\t\t},\r\n\t\t\tdetach: function(el, event, callback, capture){\r\n\t\t\t\tremoveEvent(el, event, callback, capture);\r\n\t\t\t\tfor(var i = 0; i < handlers.length; i++){\r\n\t\t\t\t\tvar handler = handlers[i];\r\n\t\t\t\t\tif (handler.element === el && handler.event === event && handler.callback === callback && handler.capture === capture) {\r\n\t\t\t\t\t\thandlers.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdetachAll: function () {\r\n\t\t\t\tvar staticArray = handlers.slice();\r\n\t\t\t\t// original handlers array can be spliced on every iteration\r\n\t\t\t\tfor (var i = 0; i < staticArray.length; i++){\r\n\t\t\t\t\tvar handler = staticArray[i];\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, handler.capture);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, undefined);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, false);\r\n\t\t\t\t\teventScope.detach(handler.element, handler.event, handler.callback, true);\r\n\t\t\t\t}\r\n\t\t\t\thandlers.splice(0, handlers.length);\r\n\t\t\t},\r\n\t\t\textend: function(){\r\n\t\t\t\treturn domEvents(this.event, this.eventRemove);\r\n\t\t\t}\r\n\t\t};\r\n\t\treturn eventScope;\r\n\t};\r\n\t\r\n\treturn domEvents();\r\n}","import createEventScope from './utils/scoped_event';\r\n\r\nexport default function extend(scheduler) {\r\n\r\n\r\nvar domEvents = createEventScope();\r\n\r\nscheduler.event = domEvents.attach;\r\nscheduler.eventRemove = domEvents.detach;\r\nscheduler._eventRemoveAll = domEvents.detachAll;\r\nscheduler._createDomEventScope = domEvents.extend;\r\n\r\n\r\nscheduler._trim = function(str){\r\n\tvar func = String.prototype.trim || function(){ return this.replace(/^\\s+|\\s+$/g, \"\"); };\r\n\treturn func.apply(str);\r\n};\r\n\r\nscheduler._isDate = function(obj){\r\n\tif (obj && typeof obj == \"object\") {\r\n\t\treturn !!(obj.getFullYear && obj.getMonth && obj.getDate);\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n};\r\n\r\nscheduler._isObject = function(obj){\r\n\treturn (obj && typeof obj == \"object\");\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\t// eslint-disable-next-line no-control-regex\r\n\tvar htmlTags = new RegExp(\"<(?:.|\\n)*?>\", \"gm\");\r\n\tvar extraSpaces = new RegExp(\" +\", \"gm\");\r\n\r\n\tfunction stripHTMLLite(htmlText){\r\n\t\treturn (htmlText + \"\")\r\n\t\t\t.replace(htmlTags, \" \").\r\n\t\t\treplace(extraSpaces, \" \");\r\n\t}\r\n\r\n\tvar singleQuotes = new RegExp(\"'\", \"gm\");\r\n\tfunction escapeQuotes(text){\r\n\t\treturn (text + \"\").replace(singleQuotes, \"'\");\r\n\t}\r\n\r\n\tscheduler._waiAria = {\r\n\t\tgetAttributeString: function(attr){\r\n\t\t\tvar attributes = [\" \"];\r\n\t\t\tfor(var i in attr){\r\n\t\t\t\tif(typeof attr[i] != \"function\" && typeof attr[i] != \"object\") {\r\n\t\t\t\t\tvar text = escapeQuotes(stripHTMLLite(attr[i]));\r\n\t\t\t\t\tattributes.push(i + \"='\" + text + \"'\");\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tattributes.push(\" \");\r\n\t\t\treturn attributes.join(\" \");\r\n\t\t},\r\n\t\tsetAttributes: function(div, values){\r\n\t\t\tfor(var i in values){\r\n\t\t\t\tdiv.setAttribute(i, stripHTMLLite(values[i]));\r\n\t\t\t}\r\n\t\t\treturn div;\r\n\t\t},\r\n\r\n\t\tlabelAttr: function(div, content){\r\n\t\t\treturn this.setAttributes(div, {\"aria-label\": content});\r\n\t\t},\r\n\t\tlabel: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\t\t// day/week/units\r\n\r\n\t\thourScaleAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\r\n\t\t},\r\n\t\tmonthCellAttr: function(div, date){\r\n\t\t\tthis.labelAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\tnavBarDateAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\t\tdayHeaderAttr: function(div, content){\r\n\t\t\tthis.labelAttr(div, content);\r\n\t\t},\r\n\r\n\t\tdayColumnAttr: function(div, date){\r\n\t\t\tthis.dayHeaderAttr(div, scheduler.templates.day_date(date));\r\n\t\t},\r\n\r\n\t\theaderButtonsAttributes: function(div, label){\r\n\t\t\treturn this.setAttributes(div, {\"role\":\"button\", \"aria-label\":label});\r\n\t\t},\r\n\r\n\t\theaderToggleState: function(div, isActive){\r\n\t\t\treturn this.setAttributes(div, {\"aria-pressed\": isActive ? \"true\" : \"false\"});\r\n\t\t},\r\n\r\n\r\n\t\tgetHeaderCellAttr:function(dateString){\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": dateString});\r\n\t\t},\r\n\r\n\r\n\t\teventAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\r\n\t\t_eventCommonAttr: function(event, div){\r\n\t\t\tdiv.setAttribute(\"aria-label\", stripHTMLLite(scheduler.templates.event_text(event.start_date, event.end_date, event)));\r\n\r\n\t\t\tif(scheduler.config.readonly){\r\n\t\t\t\tdiv.setAttribute(\"aria-readonly\", true);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif(event.$dataprocessor_class){\r\n\t\t\t\tdiv.setAttribute(\"aria-busy\", true);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tdiv.setAttribute(\"aria-selected\",\r\n\t\t\t\t(scheduler.getState().select_id == event.id) ? \"true\" : \"false\");\r\n\t\t},\r\n\r\n\t\tsetEventBarAttr: function(event, div){\r\n\t\t\tthis._eventCommonAttr(event, div);\r\n\t\t},\r\n\r\n\t\t_getAttributes: function(attributeSetter, arg){\r\n\t\t\tvar result = {\r\n\t\t\t\tsetAttribute:function(name, value){\r\n\t\t\t\t\tthis[name] = value;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSetter.apply(this, [arg, result]);\r\n\t\t\treturn result;\r\n\r\n\t\t},\r\n\r\n\t\teventBarAttrString: function(event){\r\n\t\t\treturn this.getAttributeString(this._getAttributes(this.setEventBarAttr, event));\r\n\t\t},\r\n\r\n\r\n\r\n\t\tagendaHeadAttrString :function(){\r\n\t\t\treturn this.getAttributeString({role: \"row\"});\r\n\t\t},\r\n\t\tagendaHeadDateString :function(label){\r\n\t\t\treturn this.getAttributeString({role: \"columnheader\", \"aria-label\": label});\r\n\t\t},\r\n\t\tagendaHeadDescriptionString :function(label){\r\n\t\t\treturn this.agendaHeadDateString(label);\r\n\t\t},\r\n\t\tagendaDataAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\t\tagendaEventAttrString: function(event){\r\n\t\t\tvar attrs = this._getAttributes(this._eventCommonAttr, event);\r\n\r\n\t\t\tattrs[\"role\"] = \"row\";\r\n\r\n\t\t\treturn this.getAttributeString(attrs);\r\n\r\n\t\t},\r\n\t\tagendaDetailsBtnString: function(){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels.icon_details});\r\n\t\t},\r\n\r\n\r\n\t\tgridAttrString: function(){\r\n\t\t\treturn this.getAttributeString({role: \"grid\"});\r\n\t\t},\r\n\r\n\t\tgridRowAttrString: function(event){\r\n\t\t\treturn this.agendaEventAttrString(event);\r\n\t\t},\r\n\r\n\t\tgridCellAttrString: function(event, column, value){\r\n\t\t\treturn this.getAttributeString({\"role\":\"gridcell\", \"aria-label\": [\r\n\t\t\t\t(column.label === undefined ? column.id : column.label),\r\n\t\t\t\t\": \",\r\n\t\t\t\tvalue\r\n\t\t\t]});\r\n\t\t},\r\n\r\n\t\tmapAttrString: function(){\r\n\t\t\treturn this.gridAttrString();\r\n\t\t},\r\n\t\tmapRowAttrString: function(event){\r\n\t\t\treturn this.gridRowAttrString(event);\r\n\t\t},\r\n\t\tmapDetailsBtnString: function(){\r\n\t\t\treturn this.agendaDetailsBtnString();\r\n\t\t},\r\n\r\n\t\tminicalHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\",\r\n\t\t\t\t\"aria-live\":\"assertice\",\r\n\t\t\t\t\"aria-atomic\":\"true\"\r\n\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalGrid: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"aria-labelledby\":headerId+\"\",\r\n\t\t\t\t\"role\":\"grid\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalRow: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"row\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalDayCell: function(div, date){\r\n\t\t\tvar selected = (date.valueOf() < scheduler._max_date.valueOf() && date.valueOf() >= scheduler._min_date.valueOf());\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\",\r\n\t\t\t\t\"aria-label\": scheduler.templates.day_date(date),\r\n\t\t\t\t\"aria-selected\": selected ? \"true\" : \"false\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tminicalHeadCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"columnheader\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\tweekAgendaDayCell: function(div, date){\r\n\t\t\tvar header = div.querySelector(\".dhx_wa_scale_bar\");\r\n\t\t\tvar content = div.querySelector(\".dhx_wa_day_data\");\r\n\t\t\tvar headerId = scheduler.uid() + \"\";\r\n\t\t\tthis.setAttributes(header, { \"id\": headerId});\r\n\t\t\tthis.setAttributes(content, { \"aria-labelledby\": headerId});\r\n\r\n\t\t},\r\n\t\tweekAgendaEvent: function(div, event){\r\n\t\t\tthis.eventAttr(event, div);\r\n\t\t},\r\n\r\n\t\tlightboxHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t},\r\n\r\n\t\tlightboxVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\tlightboxSectionButtonAttrString: function(label){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\tyearHeader: function(div, headerId){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"id\":headerId+\"\"\r\n\t\t\t});\r\n\t\t},\r\n\t\tyearGrid: function(div, headerId){\r\n\t\t\tthis.minicalGrid(div, headerId);\r\n\t\t},\r\n\t\tyearHeadCell: function(div){\r\n\t\t\treturn this.minicalHeadCell(div);\r\n\t\t},\r\n\t\tyearRow: function(div){\r\n\t\t\treturn this.minicalRow(div);\r\n\t\t},\r\n\t\tyearDayCell: function(div){\r\n\t\t\tthis.setAttributes(div, {\r\n\t\t\t\t\"role\":\"gridcell\"\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tlightboxAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t\tdiv.firstChild.setAttribute(\"role\", \"heading\");\r\n\t\t},\r\n\r\n\t\tlightboxButtonAttrString:function(buttonName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[buttonName], \"tabindex\":\"0\"});\r\n\t\t},\r\n\t\teventMenuAttrString: function(iconName){\r\n\t\t\treturn this.getAttributeString({\"role\":\"button\", \"aria-label\":scheduler.locale.labels[iconName]});\r\n\t\t},\r\n\t\tlightboxHeader: function(div, headerText){\r\n\t\t\tdiv.setAttribute(\"aria-label\", headerText);\r\n\t\t},\r\n\r\n\t\tlightboxSelectAttrString: function(time_option){\r\n\t\t\tvar label = \"\";\r\n\r\n\t\t\tswitch (time_option) {\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.year;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.month;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.day;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\tlabel = scheduler.locale.labels.hour + \" \" + scheduler.locale.labels.minute;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"aria-label\": label});\r\n\t\t},\r\n\r\n\r\n\t\tmessageButtonAttrString: function(buttonLabel){\r\n\t\t\treturn \"tabindex='0' role='button' aria-label='\"+buttonLabel+\"'\";\r\n\t\t},\r\n\r\n\t\tmessageInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"alert\");\r\n\t\t\t//div.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tmessageModalAttr: function(div, uid){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t\tif(uid){\r\n\t\t\t\tdiv.setAttribute(\"aria-labelledby\", uid);\r\n\t\t\t}\r\n\r\n\t\t\t//\tdiv.setAttribute(\"tabindex\", \"-1\");\r\n\t\t},\r\n\r\n\t\tquickInfoAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"dialog\");\r\n\t\t},\r\n\r\n\t\tquickInfoHeaderAttrString: function(){\r\n\t\t\treturn \" role='heading' \";\r\n\t\t},\r\n\r\n\t\tquickInfoHeader: function(div, header){\r\n\t\t\tdiv.setAttribute(\"aria-label\", header);\r\n\t\t},\r\n\r\n\t\tquickInfoButtonAttrString: function(label){\r\n\t\t\treturn scheduler._waiAria.getAttributeString({\"role\":\"button\", \"aria-label\":label, \"tabindex\":\"0\"});\r\n\t\t},\r\n\r\n\t\ttooltipAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"role\", \"tooltip\");\r\n\t\t},\r\n\r\n\t\ttooltipVisibleAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"false\");\r\n\t\t},\r\n\r\n\t\ttooltipHiddenAttr: function(div){\r\n\t\t\tdiv.setAttribute(\"aria-hidden\", \"true\");\r\n\t\t}\r\n\t};\r\n\r\n\tfunction isDisabled(){\r\n\t\treturn !scheduler.config.wai_aria_attributes;\r\n\t}\r\n\r\n\tfor(var i in scheduler._waiAria){\r\n\t\tscheduler._waiAria[i] = (function(payload){\r\n\t\t\treturn function(){\r\n\t\t\t\tif(isDisabled()){\r\n\t\t\t\t\treturn \" \";\r\n\t\t\t\t}\r\n\t\t\t\treturn payload.apply(this, arguments);\r\n\t\t\t};\r\n\t\t})(scheduler._waiAria[i]);\r\n\t}\r\n\r\n\r\n})();\r\n\r\n}","//returns position of html element on the page\r\nfunction elementPosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\n/*\r\nevent position relatively to DOM element\r\n */\r\nfunction getRelativeEventPosition(ev, node){\r\n\tvar d = document.documentElement;\r\n\tvar box = elementPosition(node);\r\n\r\n\treturn {\r\n\t\tx: ev.clientX - d.clientLeft - box.x + node.scrollLeft,\r\n\t\ty: ev.clientY - d.clientTop - box.y + node.scrollTop\r\n\t};\r\n}\r\n\r\nfunction getNodePosition(elem) {\r\n\tvar top=0, left=0, right=0, bottom=0;\r\n\tif (elem.getBoundingClientRect) { //HTML5 method\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\t\tvar body = document.body;\r\n\t\tvar docElem = (document.documentElement ||\r\n\t\t\tdocument.body.parentNode ||\r\n\t\t\tdocument.body);\r\n\r\n\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\t\ttop = box.top + scrollTop - clientTop;\r\n\t\tleft = box.left + scrollLeft - clientLeft;\r\n\r\n\t\tright = document.body.offsetWidth - box.right;\r\n\t\tbottom = document.body.offsetHeight - box.bottom;\r\n\t} else { //fallback to naive approach\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop,10);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft,10);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\r\n\t\tright = document.body.offsetWidth - elem.offsetWidth - left;\r\n\t\tbottom = document.body.offsetHeight - elem.offsetHeight - top;\r\n\t}\r\n\treturn { y: Math.round(top), x: Math.round(left), width:elem.offsetWidth, height:elem.offsetHeight, right: Math.round(right), bottom: Math.round(bottom) };\r\n}\r\n\r\nfunction getClassName(node){\r\n\tif(!node) return \"\";\r\n\r\n\tvar className = node.className || \"\";\r\n\tif(className.baseVal)//'className' exist but not a string - IE svg element in DOM\r\n\t\tclassName = className.baseVal;\r\n\r\n\tif(!className.indexOf)\r\n\t\tclassName = '';\r\n\r\n\treturn className || \"\";\r\n}\r\n\r\nfunction getTargetNode(e) {\r\n\tvar trg;\r\n\tif (e.tagName)\r\n\t\ttrg = e;\r\n\telse {\r\n\t\te = e || window.event;\r\n\t\ttrg = e.target || e.srcElement;\r\n\t\tif (trg.shadowRoot && e.composedPath) {\r\n\t\t\ttrg = e.composedPath()[0];\r\n\t\t}\r\n\t}\r\n\treturn trg;\r\n}\r\n\r\nfunction locateCss(e, classname, strict){\r\n\tif(strict === undefined)\r\n\t\tstrict = true;\r\n\r\n\tvar trg = e.target || e.srcElement;\r\n\tvar css = '';\r\n\r\n\twhile (trg){\r\n\t\tcss = getClassName(trg);\r\n\r\n\t\tif(css){\r\n\t\t\tvar ind = css.indexOf(classname);\r\n\t\t\tif (ind >= 0){\r\n\t\t\t\tif (!strict)\r\n\t\t\t\t\treturn trg;\r\n\r\n\t\t\t\t//check that we have exact match\r\n\t\t\t\tvar left = (ind === 0) || (!((css.charAt(ind - 1)||\"\").trim()));\r\n\t\t\t\tvar right = ((ind + classname.length >= css.length)) || (!((css.charAt(ind + classname.length)).trim()));\r\n\r\n\t\t\t\tif (left && right)\r\n\t\t\t\t\treturn trg;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\ttrg=trg.parentNode;\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n\r\n// get focusable nodes\r\nfunction isVisible(node){\r\n\tvar display = false,\r\n\t\tvisibility = false;\r\n\tif(window.getComputedStyle){\r\n\t\tvar style = window.getComputedStyle(node, null);\r\n\t\tdisplay = style[\"display\"];\r\n\t\tvisibility = style[\"visibility\"];\r\n\t}else if(node.currentStyle){\r\n\t\tdisplay = node.currentStyle[\"display\"];\r\n\t\tvisibility = node.currentStyle[\"visibility\"];\r\n\t}\r\n\r\n\tvar hiddenSection = false;\r\n\tvar recurringSection = locateCss({target:node}, \"dhx_form_repeat\", false);\r\n\tif(recurringSection){\r\n\t\thiddenSection = !!(recurringSection.style.height == \"0px\");\r\n\t}\r\n\thiddenSection = hiddenSection || !(node.offsetHeight);\r\n\r\n\treturn (display != \"none\" && visibility != \"hidden\" && !hiddenSection);\r\n}\r\n\r\nfunction hasNonNegativeTabIndex(node){\r\n\treturn !isNaN(node.getAttribute(\"tabindex\")) && (node.getAttribute(\"tabindex\")*1 >= 0);\r\n}\r\n\r\nfunction hasHref(node){\r\n\tvar canHaveHref = {\"a\": true, \"area\": true};\r\n\tif(canHaveHref[node.nodeName.loLowerCase()]){\r\n\t\treturn !!node.getAttribute(\"href\");\r\n\t}\r\n\treturn true;\r\n}\r\n\r\nfunction isEnabled(node){\r\n\tvar canDisable = {\"input\":true, \"select\":true, \"textarea\":true, \"button\":true, \"object\":true};\r\n\tif(canDisable[node.nodeName.toLowerCase()]){\r\n\t\treturn !node.hasAttribute(\"disabled\");\r\n\t}\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\nfunction getFocusableNodes(root){\r\n\tvar nodes = root.querySelectorAll([\r\n\t\t\"a[href]\",\r\n\t\t\"area[href]\",\r\n\t\t\"input\",\r\n\t\t\"select\",\r\n\t\t\"textarea\",\r\n\t\t\"button\",\r\n\t\t\"iframe\",\r\n\t\t\"object\",\r\n\t\t\"embed\",\r\n\t\t\"[tabindex]\",\r\n\t\t\"[contenteditable]\"\r\n\t].join(\", \"));\r\n\r\n\tvar nodesArray = Array.prototype.slice.call(nodes, 0);\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tnodesArray[i].$position = i;\r\n\t\t// we remember original nodes order, \r\n\t\t// so when we sort them by tabindex we ensure order of nodes with same tabindex is preserved, \r\n\t\t// since some browsers do unstable sort\r\n\t}\r\n\t\r\n\tnodesArray.sort(function(a, b) {\r\n\t\tif(a.tabIndex === 0 && b.tabIndex !== 0){\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif(a.tabIndex !== 0 && b.tabIndex === 0){\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\t\r\n\t\tif (a.tabIndex === b.tabIndex){\r\n\t\t\t// ensure we do stable sort\r\n\t\t\treturn a.$position - b.$position;\r\n\t\t}\r\n\t\tif (a.tabIndex < b.tabIndex) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn 1;\r\n\t});\r\n\t\r\n\tfor(var i = 0; i < nodesArray.length; i++){\r\n\t\tvar node = nodesArray[i];\r\n\t\tvar isValid = (hasNonNegativeTabIndex(node) || isEnabled(node) || hasHref(node)) && isVisible(node);\r\n\t\tif(!isValid){\r\n\t\t\tnodesArray.splice(i, 1);\r\n\t\t\ti--;\r\n\t\t}\r\n\t}\r\n\treturn nodesArray;\r\n}\r\n\r\n\r\nfunction isShadowDomSupported() {\r\n\treturn document.head.createShadowRoot || document.head.attachShadow;\r\n}\r\n\r\n/**\r\n * Returns element that has the browser focus, or null if no element has focus.\r\n * Works with shadow DOM, so it's prefereed to use this function instead of document.activeElement directly.\r\n * @returns HTMLElement\r\n */\r\nfunction getActiveElement(){\r\n\tvar activeElement = document.activeElement;\r\n\tif (activeElement.shadowRoot) {\r\n\t\tactiveElement = activeElement.shadowRoot.activeElement;\r\n\t}\r\n\tif (activeElement === document.body && document.getSelection) {\r\n\t\tactiveElement = document.getSelection().focusNode || document.body;\r\n\t}\r\n\r\n\treturn activeElement;\r\n}\r\n\r\n/**\r\n * Returns document.body or the host node of the ShadowRoot, if the element is attached to ShadowDom\r\n * @param {HTMLElement} element \r\n * @returns HTMLElement\r\n */\r\nfunction getRootNode(element) {\r\n\tif (!element) {\r\n\t\treturn document.body;\r\n\t}\r\n\tif (!isShadowDomSupported()) {\r\n\t\treturn document.body;\r\n\t}\r\n\twhile (element.parentNode && (element = element.parentNode)) {\r\n\t\tif (element instanceof ShadowRoot) {\r\n\t\t\treturn element.host;\r\n\t\t}\r\n\t}\r\n\treturn document.body;\r\n}\r\n\r\nfunction hasShadowParent(element) {\r\n\treturn !!getRootNode(element);\r\n}\r\n\r\nexport default {\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteLeft: function getAbsoluteLeft(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).left;\r\n\t},\r\n\t/**\r\n\t * @desc: Calculate absolute position of html object\r\n\t * @type: private\r\n\t * @param: htmlObject - html object\r\n\t * @topic: 0\r\n\t */\r\n\tgetAbsoluteTop: function getAbsoluteTop(htmlObject){\r\n\t\treturn this.getOffset(htmlObject).top;\r\n\t},\r\n\r\n\tgetOffsetSum: function getOffsetSum(elem) {\r\n\t\tvar top=0, left=0;\r\n\t\twhile(elem) {\r\n\t\t\ttop = top + parseInt(elem.offsetTop);\r\n\t\t\tleft = left + parseInt(elem.offsetLeft);\r\n\t\t\telem = elem.offsetParent;\r\n\t\t}\r\n\t\treturn {top: top, left: left};\r\n\t},\r\n\r\n\tgetOffsetRect: function getOffsetRect(elem) {\r\n\t\tvar box = elem.getBoundingClientRect();\r\n\r\n\t\tvar top = 0,\r\n\t\t\tleft = 0;\r\n\r\n\t\t// https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent#Mobile_Tablet_or_Desktop\r\n\t\tif (!/Mobi/.test(navigator.userAgent)) {\r\n\t\t\tvar body = document.body;\r\n\t\t\tvar docElem = document.documentElement;\r\n\t\t\tvar scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;\r\n\t\t\tvar scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;\r\n\t\t\tvar clientTop = docElem.clientTop || body.clientTop || 0;\r\n\t\t\tvar clientLeft = docElem.clientLeft || body.clientLeft || 0;\r\n\r\n\t\t\ttop = box.top + scrollTop - clientTop;\r\n\t\t\tleft = box.left + scrollLeft - clientLeft;\r\n\t\t}else {\r\n\t\t\t// incorrect left coordinate on mobile zoom\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=489206\r\n\r\n\t\t\tvar dummy = document.createElement(\"div\");\r\n\t\t\tdummy.style.position=\"absolute\";\r\n\t\t\tdummy.style.left=\"0px\";\r\n\t\t\tdummy.style.top=\"0px\";\r\n\t\t\tdummy.style.width=\"1px\";\r\n\t\t\tdummy.style.height = \"1px\";\r\n\r\n\t\t\tdocument.body.appendChild(dummy);\r\n\t\t\tvar dummyBox = dummy.getBoundingClientRect();\r\n\t\t\ttop = box.top - dummyBox.top;\r\n\t\t\tleft = box.left - dummyBox.left;\r\n\r\n\t\t\tdummy.parentNode.removeChild(dummy);\r\n\t\t}\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t},\r\n\r\n\tgetOffset: function getOffset(elem) {\r\n\t\tif (elem.getBoundingClientRect) {\r\n\t\t\treturn this.getOffsetRect(elem);\r\n\t\t} else {\r\n\t\t\treturn this.getOffsetSum(elem);\r\n\t\t}\r\n\t},\r\n\r\n\tclosest: function(element, selector){\r\n\t\tif(!element || !selector){\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn closest(element, selector);\r\n\t},\r\n\tinsertAfter: function(newNode, referenceNode){\r\n\t\tif(referenceNode.nextSibling){\r\n\t\t\treferenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\r\n\t\t}else{\r\n\t\t\treferenceNode.parentNode.appendChild(newNode);\r\n\t\t}\r\n\t},\r\n\tremove: function(node) {\r\n\t\tif (node && node.parentNode) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t},\r\n\tisChildOf: function(child, parent) {\r\n\t\treturn parent.contains(child);\r\n\t},\r\n\tgetFocusableNodes,\r\n\tgetClassName,\r\n\tlocateCss,\r\n\tgetRootNode,\r\n\thasShadowParent,\r\n\tisShadowDomSupported,\r\n\tgetActiveElement,\r\n\tgetRelativeEventPosition,\r\n\tgetTargetNode,\r\n\tgetNodePosition\r\n};\r\n\r\nvar closest;\r\nif(Element.prototype.closest){\r\n\tclosest = function(element, selector){\r\n\t\treturn element.closest(selector);\r\n\t};\r\n}else{\r\n\tvar matches = Element.prototype.matches || Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n\tclosest = function(element, selector) {\r\n\t\tvar el = element;\r\n\t\tdo {\r\n\t\t\tif (matches.call(el, selector)){\r\n\t\t\t\treturn el;\r\n\t\t\t}\r\n\t\t\tel = el.parentElement || el.parentNode;\r\n\t\t} while (el !== null && el.nodeType === 1);\r\n\t\treturn null;\r\n\t};\r\n}\r\n","/* eslint-disable no-restricted-globals */\r\nvar isWindowAwailable = typeof window !== \"undefined\";\r\n\r\n/* eslint-enable no-restricted-globals */\r\n\r\nexport default {\r\n\tisIE: isWindowAwailable && (navigator.userAgent.indexOf(\"MSIE\") >= 0 || navigator.userAgent.indexOf(\"Trident\") >= 0),\r\n\tisOpera: isWindowAwailable && (navigator.userAgent.indexOf(\"Opera\") >= 0),\r\n\tisChrome: isWindowAwailable && (navigator.userAgent.indexOf(\"Chrome\") >= 0),\r\n\tisKHTML: isWindowAwailable && (navigator.userAgent.indexOf(\"Safari\") >= 0 || navigator.userAgent.indexOf(\"Konqueror\") >= 0),\r\n\tisFF: isWindowAwailable && (navigator.userAgent.indexOf(\"Firefox\") >= 0),\r\n\tisIPad: isWindowAwailable && (navigator.userAgent.search(/iPad/gi) >= 0),\r\n\tisEdge: isWindowAwailable && (navigator.userAgent.indexOf(\"Edge\")!=-1),\r\n\tisNode: (!isWindowAwailable || typeof navigator == \"undefined\")\r\n};","export default function extend(scheduler) {\r\n\r\nscheduler.destructor = function(){\r\n\tscheduler.callEvent(\"onDestroy\", []);\r\n\tthis.clearAll();\r\n\r\n\tif(this.$container){\r\n\t\t// FIXME: clear container or remove container\r\n\t\tthis.$container.innerHTML = \"\";\r\n\t\t// scheduler.$domHelpers.remove(this.$container);\r\n\t}\r\n\r\n\tif(this._eventRemoveAll){\r\n\t\tthis._eventRemoveAll();\r\n\t}\r\n\r\n\tif(this.resetLightbox){\r\n\t\tthis.resetLightbox();\r\n\t}\r\n\r\n\tif(this._dp && this._dp.destructor){\r\n\t\tthis._dp.destructor();\r\n\t}\r\n\r\n\t// detachAllEvents should be called last, because in components may be attached events\r\n\tthis.detachAllEvents();\r\n\r\n\tfor(var i in this){\r\n\t\tif(i.indexOf(\"$\") === 0){\r\n\t\t\tdelete this[i];\r\n\t\t}\r\n\t}\r\n\tscheduler.$destroyed = true;\r\n};\r\n\r\n}","export default function(data) {\r\n\tif (typeof data === \"string\" || typeof data === \"number\") {\r\n\t\treturn data;\r\n\t}\r\n\tvar result = \"\";\r\n\tfor (var key in data) {\r\n\t\tvar serialized = \"\";\r\n\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\tif (typeof data[key] === \"string\") {\r\n\t\t\t\tserialized = encodeURIComponent(data[key]);\r\n\t\t\t} else if (typeof data[key] === \"number\") {\r\n\t\t\t\tserialized = data[key];\r\n\t\t\t} else {\r\n\t\t\t\tserialized = encodeURIComponent(JSON.stringify(data[key]));\r\n\t\t\t}\r\n\t\t\tserialized = key + \"=\" + serialized;\r\n\r\n\t\t\tif (result.length) {\r\n\t\t\t\tserialized = \"&\" + serialized;\r\n\t\t\t}\r\n\t\t\tresult += serialized;\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n}","import serialize from \"../common/url_serialize.js\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.Promise = window.Promise; \r\n\r\nfunction createConfig(method, args) {\r\n\tvar result = {\r\n\t\tmethod: method\r\n\t};\r\n\r\n\tif (args.length === 0) {\r\n\t\tthrow new Error(\"Arguments list of query is wrong.\");\r\n\t}\r\n\tif (args.length === 1) {\r\n\t\tif (typeof args[0] === \"string\") {\r\n\t\t\tresult.url = args[0];\r\n\t\t\tresult.async = true;\r\n\t\t} else {\r\n\t\t\tresult.url = args[0].url;\r\n\t\t\tresult.async = (args[0].async || true);\r\n\t\t\tresult.callback = args[0].callback;\r\n\t\t\tresult.headers = args[0].headers;\r\n\t\t}\r\n\t\tif (method === \"POST\" || \"PUT\") {\r\n\t\t\tif (args[0].data) {\r\n\t\t\t\tif (typeof args[0].data !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[0].data);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[0].data;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tresult.url = args[0];\r\n\tswitch(method) {\r\n\t\tcase \"GET\":\r\n\t\tcase \"DELETE\":\r\n\t\t\tresult.callback = args[1];\r\n\t\t\tresult.headers = args[2];\r\n\t\tbreak;\r\n\t\tcase \"POST\":\r\n\t\tcase \"PUT\":\r\n\t\t\tif (args[1]) {\r\n\t\t\t\tif (typeof args[1] !== \"string\") {\r\n\t\t\t\t\tresult.data = serialize(args[1]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tresult.data = args[1];\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tresult.data = \"\";\r\n\t\t\t}\r\n\t\t\tresult.callback = args[2];\r\n\t\t\tresult.headers = args[3];\r\n\t\tbreak;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.ajax = {\r\n\t// if false - dhxr param will added to prevent caching on client side (default),\r\n\t// if true - do not add extra params\r\n\tcache: true,\r\n\r\n\t// default method for load/loadStruct, post/get allowed\r\n\tmethod: \"get\",\r\n\r\n\tserializeRequestParams: serialize,\r\n\tparse: function(data) {\r\n\t\tif (typeof data !== \"string\") return data;\r\n\r\n\t\tvar obj;\r\n\t\tdata = data.replace(/^[\\s]+/,\"\");\r\n\t\tif (typeof DOMParser !== \"undefined\" && !scheduler.$env.isIE) { // ff,ie9\r\n\t\t\tobj = (new DOMParser()).parseFromString(data, \"text/xml\");\r\n\t\t} else if (typeof window.ActiveXObject !== \"undefined\") {\r\n\t\t\tobj = new window.ActiveXObject(\"Microsoft.XMLDOM\");\r\n\t\t\tobj.async = \"false\";\r\n\t\t\tobj.loadXML(data);\r\n\t\t}\r\n\t\treturn obj;\r\n\t},\r\n\txmltop: function(tagname, xhr, obj) {\r\n\t\tif (typeof xhr.status == \"undefined\" || xhr.status < 400) {\r\n\t\t\tvar xml = (!xhr.responseXML) ? this.parse(xhr.responseText || xhr) : (xhr.responseXML || xhr);\r\n\t\t\tif (xml && xml.documentElement !== null && !xml.getElementsByTagName(\"parsererror\").length) {\r\n\t\t\t\treturn xml.getElementsByTagName(tagname)[0];\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (obj !== -1) scheduler.callEvent(\"onLoadXMLError\",[\"Incorrect XML\", arguments[1], obj]);\r\n\t\treturn document.createElement(\"DIV\");\r\n\t},\r\n\txpath: function(xpathExp, docObj) {\r\n\t\tif (!docObj.nodeName) docObj = docObj.responseXML || docObj;\r\n\t\tif (scheduler.$env.isIE) {\r\n\t\t\treturn docObj.selectNodes(xpathExp)||[];\r\n\t\t} else {\r\n\t\t\tvar rows = [];\r\n\t\t\tvar first;\r\n\t\t\tvar col = (docObj.ownerDocument||docObj).evaluate(xpathExp, docObj, null, XPathResult.ANY_TYPE, null);\r\n\r\n\t\t\twhile (true){\r\n\t\t\t\tfirst = col.iterateNext();\r\n\t\t\t\tif(first){\r\n\t\t\t\t\trows.push(first);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn rows;\r\n\t\t}\r\n\t},\r\n\tquery: function(config) {\r\n\t\treturn this._call(\r\n\t\t\t(config.method || \"GET\"),\r\n\t\t\tconfig.url,\r\n\t\t\tconfig.data || \"\",\r\n\t\t\t(config.async || true),\r\n\t\t\tconfig.callback,\r\n\t\t\tconfig.headers\r\n\t\t);\r\n\t},\r\n\tget: function(url, onLoad, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tgetSync: function(url, headers) {\r\n\t\tvar config = createConfig(\"GET\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\tput: function(url, postData, onLoad, headers) {\r\n\t\tvar config = createConfig(\"PUT\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tdel: function(url, onLoad, headers) {\r\n\t\t/**\r\n\t\t * https://tools.ietf.org/html/rfc7231#section-4.3.5\r\n\t\t * A payload within a DELETE request message has no defined semantics;\r\n\t\t * sending a payload body on a DELETE request might cause some existing\r\n\t\t * implementations to reject the request.\r\n\t\t */\r\n\t\tvar config = createConfig(\"DELETE\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpost: function(url, postData, onLoad, headers) {\r\n\t\tif (arguments.length == 1) {\r\n\t\t\tpostData = \"\";\r\n\t\t} else if (arguments.length == 2 && typeof(postData) == \"function\") {\r\n\t\t\tonLoad = postData;\r\n\t\t\tpostData = \"\";\r\n\t\t}\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\treturn this.query(config);\r\n\t},\r\n\tpostSync: function(url, postData, headers) {\r\n\t\tpostData = (postData === null ? \"\" : String(postData));\r\n\r\n\t\tvar config = createConfig(\"POST\", arguments);\r\n\t\tconfig.async = false;\r\n\t\treturn this.query(config);\r\n\t},\r\n\t_call: function(method, url, postData, async, onLoad, headers) {\r\n\t\treturn new scheduler.Promise((function(resolve, reject) {\r\n\t\t\tvar t = (typeof XMLHttpRequest !== undefined && !scheduler.$env.isIE ? new XMLHttpRequest() : new window.ActiveXObject(\"Microsoft.XMLHTTP\"));\r\n\t\t\tvar isQt = (navigator.userAgent.match(/AppleWebKit/) !== null && navigator.userAgent.match(/Qt/) !== null && navigator.userAgent.match(/Safari/) !== null);\r\n\r\n\t\t\tif (!!async) {\r\n\t\t\t\tt.addEventListener(\"readystatechange\", function() {\r\n\t\t\t\t\tif ((t.readyState == 4) || (isQt && t.readyState == 3)) { // what for long response and status 404?\r\n\t\t\t\t\t\tif (t.status != 200 || t.responseText === \"\")\r\n\t\t\t\t\t\t\tif (!scheduler.callEvent(\"onAjaxError\", [t])) return;\r\n\r\n\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad.apply(window, [{xmlDoc:t, filePath:url}]); // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tresolve(t);\r\n\t\t\t\t\t\t\tif (typeof(onLoad) == \"function\") {\r\n\t\t\t\t\t\t\t\tonLoad = null;\r\n\t\t\t\t\t\t\t\tt = null;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 0);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (method == \"GET\" && !this.cache) {\r\n\t\t\t\turl += (url.indexOf(\"?\")>=0?\"&\":\"?\")+\"dhxr\"+new Date().getTime()+\"=1\";\r\n\t\t\t}\r\n\r\n\t\t\tt.open(method, url, async);\r\n\r\n\t\t\tif (headers){\r\n\t\t\t\tfor (var key in headers)\r\n\t\t\t\t\tt.setRequestHeader(key, headers[key]);\r\n\t\t\t} else if (method.toUpperCase() == \"POST\" || method == \"PUT\" || method == \"DELETE\") {\r\n\t\t\t\tt.setRequestHeader(\"Content-Type\", \"application/x-www-form-urlencoded\");\r\n\t\t\t} else if (method == \"GET\") {\r\n\t\t\t\tpostData = null;\r\n\t\t\t}\r\n\r\n\t\t\tt.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n\r\n\t\t\tt.send(postData);\r\n\r\n\t\t\tif (!async) return {xmlDoc:t, filePath:url}; // dhtmlx-compat, response.xmlDoc.responseXML/responseText\r\n\t\t}.bind(this)));\r\n\t},\r\n\turlSeparator: function(str){\r\n\t\tif (str.indexOf(\"?\") != -1)\r\n\t\t\treturn \"&\";\r\n\t\telse\r\n\t\t\treturn \"?\";\r\n\t}\r\n};\r\n\r\nscheduler.$ajax = scheduler.ajax; // for old\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nvar generateStringToDate = function (format, utc) {\r\n\tvar splt = \"var temp=date.match(/[a-zA-Z]+|[0-9]+/g);\";\r\n\tvar mask = format.match(/%[a-zA-Z]/g);\r\n\tfor (var i = 0; i < mask.length; i++) {\r\n\t\tswitch (mask[i]) {\r\n\t\t\tcase \"%j\":\r\n\t\t\tcase \"%d\": splt += \"set[2]=temp[\" + i + \"]||1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%n\":\r\n\t\t\tcase \"%m\": splt += \"set[1]=(temp[\" + i + \"]||1)-1;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%y\": splt += \"set[0]=temp[\" + i + \"]*1+(temp[\" + i + \"]>50?1900:2000);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%g\":\r\n\t\t\tcase \"%G\":\r\n\t\t\tcase \"%h\":\r\n\t\t\tcase \"%H\":\r\n\t\t\t\tsplt += \"set[3]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%i\":\r\n\t\t\t\tsplt += \"set[4]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%Y\": splt += \"set[0]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%a\":\r\n\t\t\tcase \"%A\": splt += \"set[3]=set[3]%12+((temp[\" + i + \"]||'').toLowerCase()=='am'?0:12);\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%s\": splt += \"set[5]=temp[\" + i + \"]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%M\": splt += \"set[1]=this.locale.date.month_short_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"%F\": splt += \"set[1]=this.locale.date.month_full_hash[temp[\" + i + \"]]||0;\";\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\tvar code = \"set[0],set[1],set[2],set[3],set[4],set[5]\";\r\n\tif (utc) code = \" Date.UTC(\" + code + \")\";\r\n\treturn new Function(\"date\", \"var set=[0,0,1,0,0,0]; \" + splt + \" return new Date(\" + code + \");\");\r\n};\r\nvar csp_date_to_str = function (format, utc) {\r\n\treturn function(date) {\r\n\t\treturn format.replace(/%[a-zA-Z]/g, function (a) {\r\n\t\t\tswitch (a) {\r\n\t\t\t\tcase \"%d\": return utc ? scheduler.date.to_fixed(date.getUTCDate()) : scheduler.date.to_fixed(date.getDate());\r\n\t\t\t\tcase \"%m\": return utc ? scheduler.date.to_fixed((date.getUTCMonth() + 1)) : scheduler.date.to_fixed((date.getMonth() + 1));\r\n\t\t\t\tcase \"%j\": return utc ? date.getUTCDate() : date.getDate();\r\n\t\t\t\tcase \"%n\": return utc ? (date.getUTCMonth() + 1) : (date.getMonth() + 1);\r\n\t\t\t\tcase \"%y\": return utc ? scheduler.date.to_fixed(date.getUTCFullYear() % 100) : scheduler.date.to_fixed(date.getFullYear() % 100);\r\n\t\t\t\tcase \"%Y\": return utc ? date.getUTCFullYear() : date.getFullYear();\r\n\t\t\t\tcase \"%D\": return utc ? scheduler.locale.date.day_short[date.getUTCDay()] : scheduler.locale.date.day_short[date.getDay()];\r\n\t\t\t\tcase \"%l\": return utc ? scheduler.locale.date.day_full[date.getUTCDay()] : scheduler.locale.date.day_full[date.getDay()];\r\n\t\t\t\tcase \"%M\": return utc ? scheduler.locale.date.month_short[date.getUTCMonth()] : scheduler.locale.date.month_short[date.getMonth()];\r\n\t\t\t\tcase \"%F\": return utc ? scheduler.locale.date.month_full[date.getUTCMonth()] : scheduler.locale.date.month_full[date.getMonth()];\r\n\t\t\t\tcase \"%h\": return utc ? scheduler.date.to_fixed((date.getUTCHours() + 11) % 12 + 1) : scheduler.date.to_fixed((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%g\": return utc ? ((date.getUTCHours() + 11) % 12 + 1) : ((date.getHours() + 11) % 12 + 1);\r\n\t\t\t\tcase \"%G\": return utc ? date.getUTCHours() : date.getHours();\r\n\t\t\t\tcase \"%H\": return utc ? scheduler.date.to_fixed(date.getUTCHours()) : scheduler.date.to_fixed(date.getHours());\r\n\t\t\t\tcase \"%i\": return utc ? scheduler.date.to_fixed(date.getUTCMinutes()) : scheduler.date.to_fixed(date.getMinutes());\r\n\t\t\t\tcase \"%a\": return utc ? (date.getUTCHours() > 11 ? \"pm\" : \"am\") : (date.getHours() > 11 ? \"pm\" : \"am\");\r\n\t\t\t\tcase \"%A\": return utc ? (date.getUTCHours() > 11 ? \"PM\" : \"AM\") : (date.getHours() > 11 ? \"PM\" : \"AM\");\r\n\t\t\t\tcase \"%s\": return utc ? scheduler.date.to_fixed(date.getUTCSeconds()) : scheduler.date.to_fixed(date.getSeconds());\r\n\t\t\t\tcase \"%W\": return utc ? scheduler.date.to_fixed(scheduler.date.getUTCISOWeek(date)) : scheduler.date.to_fixed(scheduler.date.getISOWeek(date));\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n};\r\nvar csp_str_to_date = function (format, utc) {\r\n\tconst mask = format.match(/%[a-zA-Z]/g);\r\n\treturn function (date){\r\n\t\tvar set = [0, 0, 1, 0, 0, 0];\r\n\t\tvar temp = date.match(/[a-zA-Z]+|[0-9]+/g);\r\n\r\n\t\tfor (var i = 0; i < mask.length; i++) {\r\n\t\t\tswitch (mask[i]) {\r\n\t\t\t\tcase \"%j\":\r\n\t\t\t\tcase \"%d\":\r\n\t\t\t\t\tset[2] = temp[i] || 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%n\":\r\n\t\t\t\tcase \"%m\":\r\n\t\t\t\t\tset[1] = (temp[i] || 1) - 1;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%y\":\r\n\t\t\t\t\tset[0] = temp[i] * 1 + (temp[i] > 50 ? 1900 : 2000);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%g\":\r\n\t\t\t\tcase \"%G\":\r\n\t\t\t\tcase \"%h\":\r\n\t\t\t\tcase \"%H\":\r\n\t\t\t\t\tset[3] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%i\":\r\n\t\t\t\t\tset[4] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\tset[0] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%a\":\r\n\t\t\t\tcase \"%A\":\r\n\t\t\t\t\tset[3] = set[3] % 12 + ((temp[i] || '').toLowerCase() == 'am' ? 0 : 12);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%s\":\r\n\t\t\t\t\tset[5] = temp[i] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%M\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_short_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"%F\":\r\n\t\t\t\t\tset[1] = scheduler.locale.date.month_full_hash[temp[i]] || 0;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (utc) {\r\n\t\t\treturn new Date(Date.UTC(set[0], set[1], set[2], set[3], set[4], set[5]));\r\n\t\t}\r\n\r\n\t\treturn new Date(set[0], set[1], set[2], set[3], set[4], set[5]);\r\n\t};\r\n};\r\n\r\nlet cspEnabled = undefined;\r\nfunction checkIfCSPEnabled(){\r\n\ttry {\r\n\t\tnew Function(\"cspEnabled = false;\");\r\n\t\tcspEnabled = false;\r\n\t} catch(e) {\r\n\t\tcspEnabled = true;\r\n\t}\r\n\treturn cspEnabled;\r\n}\r\n\r\nfunction useCsp() {\r\n\tvar result = false;\r\n\tif (scheduler.config.csp === \"auto\") {\r\n\t\tif(cspEnabled === undefined){\r\n\t\t\tcspEnabled = checkIfCSPEnabled();\r\n\t\t}\r\n\t\tresult = cspEnabled;\r\n\t} else {\r\n\t\tresult = scheduler.config.csp;\r\n\t}\r\n\treturn result;\r\n}\r\nscheduler.date = {\r\n\tinit:function(){\r\n\t\tvar s = scheduler.locale.date.month_short;\r\n\t\tvar t = scheduler.locale.date.month_short_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\r\n\t\tvar s = scheduler.locale.date.month_full;\r\n\t\tvar t = scheduler.locale.date.month_full_hash = {};\r\n\t\tfor (var i = 0; i < s.length; i++)\r\n\t\t\tt[s[i]]=i;\r\n\t},\r\n\tdate_part:function(date){\r\n\t\tvar old = new Date(date);\r\n\t\tdate.setHours(0);\r\n\t\tdate.setMinutes(0);\r\n\t\tdate.setSeconds(0);\r\n\t\tdate.setMilliseconds(0);\r\n\t\tif (date.getHours() && //shift to yesterday on dst\r\n\t\t\t(date.getDate() < old.getDate() || date.getMonth() < old.getMonth() || date.getFullYear() < old.getFullYear()) )\r\n\t\t\tdate.setTime(date.getTime() + 60 * 60 * 1000 * (24 - date.getHours()));\r\n\t\treturn date;\r\n\t},\r\n\ttime_part:function(date){\r\n\t\treturn (date.valueOf()/1000 - date.getTimezoneOffset()*60)%86400;\r\n\t},\r\n\tweek_start:function(date){\r\n\t\tvar shift=date.getDay();\r\n\t\tif (scheduler.config.start_on_monday){\r\n\t\t\tif (shift===0) shift=6;\r\n\t\t\telse shift--;\r\n\t\t}\r\n\t\treturn this.date_part(this.add(date,-1*shift,\"day\"));\r\n\t},\r\n\tmonth_start:function(date){\r\n\t\tdate.setDate(1);\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\tyear_start:function(date){\r\n\t\tdate.setMonth(0);\r\n\t\treturn this.month_start(date);\r\n\t},\r\n\tday_start:function(date){\r\n\t\treturn this.date_part(date);\r\n\t},\r\n\t_add_days:function(date, inc){\r\n\t\tvar ndate = new Date(date.valueOf());\r\n\r\n\t\tndate.setDate(ndate.getDate() + inc);\r\n\r\n\t\t// Workaround for Safari/iOS timezone bug, ref:OKZ-149693\r\n\t\tif(inc == Math.round(inc) && inc > 0){\r\n\t\t\tvar datesDiff = +ndate - +date,\r\n\t\t\t\trest = datesDiff % (24*60*60*1000);\r\n\t\t\tif(rest && date.getTimezoneOffset() == ndate.getTimezoneOffset()){\r\n\t\t\t\tvar hours = rest / (60* 60 * 1000);\r\n\t\t\t\tndate.setTime(ndate.getTime() + (24 - hours) * 60 * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (inc >= 0 && (!date.getHours() && ndate.getHours()) &&//shift to yesterday on dst\r\n\t\t\t(ndate.getDate() < date.getDate() || ndate.getMonth() < date.getMonth() || ndate.getFullYear() < date.getFullYear()) )\r\n\t\t\tndate.setTime(ndate.getTime() + 60 * 60 * 1000 * (24 - ndate.getHours()));\r\n\t\treturn ndate;\r\n\t},\r\n\tadd:function(date,inc,mode){\r\n\t\tvar ndate=new Date(date.valueOf());\r\n\t\tswitch(mode){\r\n\t\t\tcase \"day\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"week\":\r\n\t\t\t\tndate = scheduler.date._add_days(ndate, inc * 7);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"month\": ndate.setMonth(ndate.getMonth()+inc); break;\r\n\t\t\tcase \"year\": ndate.setYear(ndate.getFullYear()+inc); break;\r\n\t\t\tcase \"hour\":\r\n\t\t\t\t/*\r\n\t\t\t\t setHour(getHour() + inc) and setMinutes gives weird result when is applied on a Daylight Saving time switch\r\n\t\t\t\t setTime seems working as expected\r\n\t\t\t\t*/\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"minute\":\r\n\t\t\t\tndate.setTime(ndate.getTime() + inc * 60 * 1000);\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t\t\treturn scheduler.date[\"add_\"+mode](date,inc,mode);\r\n\t\t}\r\n\t\treturn ndate;\r\n\t},\r\n\tto_fixed:function(num){\r\n\t\tif (num<10)\treturn \"0\"+num;\r\n\t\treturn num;\r\n\t},\r\n\tcopy:function(date){\r\n\t\treturn new Date(date.valueOf());\r\n\t},\r\n\tdate_to_str:function(format,utc){\r\n\t\tif (useCsp()) {\r\n\t\t\treturn csp_date_to_str(format,utc);\r\n\t\t}\r\n\r\n\t\tformat=format.replace(/%[a-zA-Z]/g,function(a){\r\n\t\t\tswitch(a){\r\n\t\t\t\tcase \"%d\": return \"\\\"+this.date.to_fixed(date.getDate())+\\\"\";\r\n\t\t\t\tcase \"%m\": return \"\\\"+this.date.to_fixed((date.getMonth()+1))+\\\"\";\r\n\t\t\t\tcase \"%j\": return \"\\\"+date.getDate()+\\\"\";\r\n\t\t\t\tcase \"%n\": return \"\\\"+(date.getMonth()+1)+\\\"\";\r\n\t\t\t\tcase \"%y\": return \"\\\"+this.date.to_fixed(date.getFullYear()%100)+\\\"\";\r\n\t\t\t\tcase \"%Y\": return \"\\\"+date.getFullYear()+\\\"\";\r\n\t\t\t\tcase \"%D\": return \"\\\"+this.locale.date.day_short[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%l\": return \"\\\"+this.locale.date.day_full[date.getDay()]+\\\"\";\r\n\t\t\t\tcase \"%M\": return \"\\\"+this.locale.date.month_short[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%F\": return \"\\\"+this.locale.date.month_full[date.getMonth()]+\\\"\";\r\n\t\t\t\tcase \"%h\": return \"\\\"+this.date.to_fixed((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%g\": return \"\\\"+((date.getHours()+11)%12+1)+\\\"\";\r\n\t\t\t\tcase \"%G\": return \"\\\"+date.getHours()+\\\"\";\r\n\t\t\t\tcase \"%H\": return \"\\\"+this.date.to_fixed(date.getHours())+\\\"\";\r\n\t\t\t\tcase \"%i\": return \"\\\"+this.date.to_fixed(date.getMinutes())+\\\"\";\r\n\t\t\t\tcase \"%a\": return \"\\\"+(date.getHours()>11?\\\"pm\\\":\\\"am\\\")+\\\"\";\r\n\t\t\t\tcase \"%A\": return \"\\\"+(date.getHours()>11?\\\"PM\\\":\\\"AM\\\")+\\\"\";\r\n\t\t\t\tcase \"%s\": return \"\\\"+this.date.to_fixed(date.getSeconds())+\\\"\";\r\n\t\t\t\tcase \"%W\": return \"\\\"+this.date.to_fixed(this.date.getISOWeek(date))+\\\"\";\r\n\t\t\t\tdefault: return a;\r\n\t\t\t}\r\n\t\t});\r\n\t\tif (utc) format=format.replace(/date\\.get/g,\"date.getUTC\");\r\n\t\tvar func = new Function(\"date\",\"return \\\"\"+format+\"\\\";\");\r\n\r\n\t\treturn func.bind(scheduler);\r\n\t},\r\n\tstr_to_date:function(format, utc, exactFormat){\r\n\t\tvar stringToDateMethod = useCsp() ? csp_str_to_date : generateStringToDate;\r\n\t\tvar parseExactFormat = stringToDateMethod(format, utc);\r\n\t\t// eslint-disable-next-line\r\n\t\tvar yyyyMMddhhIIss = /^[0-9]{4}(\\-|\\/)[0-9]{2}(\\-|\\/)[0-9]{2} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\r\n\t\t// MM/dd/yyyy - default old format for xml-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar MMddyyyyhhIIss = /^[0-9]{2}\\/[0-9]{2}\\/[0-9]{4} ?(([0-9]{1,2}:[0-9]{2})(:[0-9]{1,2})?)?$/;\r\n\t\t// dd-MM-yyyy - default old format for api-date\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ddMMyyyyhhIIss = /^[0-9]{2}\\-[0-9]{2}\\-[0-9]{4} ?(([0-9]{1,2}:[0-9]{1,2})(:[0-9]{1,2})?)?$/;\r\n\t\t// eslint-disable-next-line\r\n\t\tvar ISO8601 = /^([\\+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24\\:?00)([\\.,]\\d+(?!:))?)?(\\17[0-5]\\d([\\.,]\\d+)?)?([zZ]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$/;\r\n\r\n\t\tvar isYMDDate = function (datestr) {\r\n\t\t\treturn yyyyMMddhhIIss.test(String(datestr));\r\n\t\t};\r\n\r\n\t\tvar isMDYDate = function (datestr) {\r\n\t\t\treturn MMddyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isDMYDate = function (datestr) {\r\n\t\t\treturn ddMMyyyyhhIIss.test(String(datestr));\r\n\t\t};\r\n\t\tvar isISO8601 = function (datestr) {\r\n\t\t\treturn ISO8601.test(datestr);\r\n\t\t};\r\n\r\n\t\tvar parseYMD = stringToDateMethod(\"%Y-%m-%d %H:%i:%s\", utc);\r\n\t\tvar parseMDY = stringToDateMethod(\"%m/%d/%Y %H:%i:%s\", utc);\r\n\t\tvar parseDMY = stringToDateMethod(\"%d-%m-%Y %H:%i:%s\", utc);\r\n\r\n\t\treturn function (dateString) {\r\n\r\n\t\t\tif (!exactFormat && !scheduler.config.parse_exact_format) {\r\n\t\t\t\tif (dateString && dateString.getISOWeek) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (typeof dateString === \"number\") {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t} else if (isYMDDate(dateString)) {\r\n\t\t\t\t\treturn parseYMD(dateString);\r\n\t\t\t\t} else if (isMDYDate(dateString)) {\r\n\t\t\t\t\treturn parseMDY(dateString);\r\n\t\t\t\t} else if (isDMYDate(dateString)) {\r\n\t\t\t\t\treturn parseDMY(dateString);\r\n\t\t\t\t} else if (isISO8601(dateString)) {\r\n\t\t\t\t\treturn new Date(dateString);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn parseExactFormat.call(scheduler, dateString);\r\n\t\t};\r\n\t},\r\n\tgetISOWeek: function(ndate) {\r\n\t\tif(!ndate) return false;\r\n\t\tndate = this.date_part(new Date(ndate));\r\n\t\tvar nday = ndate.getDay();\r\n\t\tif (nday === 0) {\r\n\t\t\tnday = 7;\r\n\t\t}\r\n\t\tvar first_thursday = new Date(ndate.valueOf());\r\n\t\tfirst_thursday.setDate(ndate.getDate() + (4 - nday));\r\n\t\tvar year_number = first_thursday.getFullYear(); // year of the first Thursday\r\n\t\tvar ordinal_date = Math.round( (first_thursday.getTime() - new Date(year_number, 0, 1).getTime()) / 86400000); //ordinal date of the first Thursday - 1 (so not really ordinal date)\r\n\t\tvar week_number = 1 + Math.floor( ordinal_date / 7);\r\n\t\treturn week_number;\r\n\t},\r\n\tgetUTCISOWeek: function(ndate){\r\n\t\treturn this.getISOWeek(this.convert_to_utc(ndate));\r\n\t},\r\n\tconvert_to_utc: function(date) {\r\n\t\treturn new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds());\r\n\t}\r\n};\r\n\r\n}\r\n\r\n","export default function extend(scheduler) {\r\n\r\n/*\r\n%e\tDay of the month without leading zeros (01..31)\r\n%d\tDay of the month, 2 digits with leading zeros (01..31)\r\n%j\tDay of the year, 3 digits with leading zeros (001..366)\r\n%a\tA textual representation of a day, two letters\r\n%W\tA full textual representation of the day of the week\r\n\r\n%c\tNumeric representation of a month, without leading zeros (0..12)\r\n%m\tNumeric representation of a month, with leading zeros (00..12)\r\n%b\tA short textual representation of a month, three letters (Jan..Dec)\r\n%M\tA full textual representation of a month, such as January or March (January..December)\r\n\r\n%y\tA two digit representation of a year (93..03)\r\n%Y\tA full numeric representation of a year, 4 digits (1993..03)\r\n*/\r\n\r\nscheduler.config={\r\n\tdefault_date: \"%j %M %Y\",\r\n\tmonth_date: \"%F %Y\",\r\n\tload_date: \"%Y-%m-%d\",\r\n\tweek_date: \"%l\",\r\n\tday_date: \"%D %j\",\r\n\thour_date: \"%H:%i\",\r\n\tmonth_day: \"%d\",\r\n\t//xml_date: \"%m/%d/%Y %H:%i\",\r\n\tdate_format: \"%Y-%m-%d %H:%i\",\r\n\tapi_date: \"%d-%m-%Y %H:%i\",\r\n\tparse_exact_format: false,\r\n\tpreserve_length:true,\r\n\ttime_step: 5,\r\n\tdisplayed_event_color: \"#ff4a4a\",\r\n\tdisplayed_event_text_color: \"#ffef80\",\r\n\twide_form: 0,\r\n\tday_column_padding: 8,\r\n\tuse_select_menu_space: true,\r\n\tfix_tab_position: true,\r\n\tstart_on_monday: true,\r\n\tfirst_hour: 0,\r\n\tlast_hour: 24,\r\n\treadonly: false,\r\n\tdrag_resize: true,\r\n\tdrag_move: true,\r\n\tdrag_create: true,\r\n\tdrag_event_body: true,\r\n\tdblclick_create: true,\r\n\tdetails_on_dblclick: true,\r\n\tedit_on_create: true,\r\n\tdetails_on_create: true,\r\n\theader: null,\r\n\thour_size_px: 44,\r\n\tresize_month_events:false,\r\n\tresize_month_timed:false,\r\n\tresponsive_lightbox: false,\r\n\tseparate_short_events: true,\r\n\trtl:false,\r\n\r\n\tcascade_event_display: false,\r\n\tcascade_event_count: 4,\r\n\tcascade_event_margin: 30,\r\n\r\n\tmulti_day:true,\r\n\tmulti_day_height_limit: 200,\r\n\r\n\tdrag_lightbox: true,\r\n\tpreserve_scroll: true,\r\n\tselect: true,\r\n\tundo_deleted: true,\r\n\tserver_utc: false,\r\n\ttouch:true,\r\n\ttouch_tip:true,\r\n\ttouch_drag:500,\r\n\ttouch_swipe_dates: false,\r\n\tquick_info_detached:true,\r\n\r\n\tpositive_closing: false,\r\n\t//header_datepicker: true,\r\n\tdrag_highlight: true,\r\n\tlimit_drag_out: false,\r\n\ticons_edit: [\"icon_save\", \"icon_cancel\"],\r\n\ticons_select: [\"icon_details\", \"icon_edit\", \"icon_delete\"],\r\n\tbuttons_left: [\"dhx_save_btn\", \"dhx_cancel_btn\"],\r\n\tbuttons_right: [\"dhx_delete_btn\"],\r\n\tlightbox: {\r\n\t\tsections: [\r\n\t\t\t{name: \"description\", map_to: \"text\", type: \"textarea\", focus: true},\r\n\t\t\t{name: \"time\", height: 72, type: \"time\", map_to: \"auto\"}\r\n\t\t]\r\n\t},\r\n\thighlight_displayed_event: true,\r\n\tleft_border: false,\r\n\r\n\tajax_error: \"alert\",//\"ignore\"|\"console\"\r\n\tdelay_render: 0,\r\n\ttimeline_swap_resize: true,\r\n\twai_aria_attributes: true,\r\n\twai_aria_application_role: true,\r\n\r\n\tcsp: \"auto\",\r\n\tevent_attribute: \"data-event-id\",\r\n\tshow_errors: true\r\n};\r\n\r\nscheduler.config.buttons_left.$initial = scheduler.config.buttons_left.join();\r\nscheduler.config.buttons_right.$initial = scheduler.config.buttons_right.join();\r\n\r\nscheduler._helpers = {\r\n\tparseDate: function parseDate(date) {\r\n\t\tvar parse = scheduler.templates.xml_date || scheduler.templates.parse_date;\r\n\t\treturn parse(date);\r\n\t},\r\n\tformatDate: function formatDate(date) {\r\n\t\tvar format = scheduler.templates.xml_format || scheduler.templates.format_date;\r\n\t\treturn format(date);\r\n\t}\r\n};\r\n\r\nscheduler.templates={};\r\nscheduler.init_templates=function(){\r\n\r\n\r\n\r\n\tvar d=scheduler.date.date_to_str;\r\n\tvar c=scheduler.config;\r\n\tvar f = function(a,b){\r\n\t\tfor (var c in b)\r\n\t\t\tif (!a[c]) a[c]=b[c];\r\n\t};\r\n\tf(scheduler.templates,{\r\n\t\tday_date:d(c.default_date),\r\n\t\tmonth_date:d(c.month_date),\r\n\t\tweek_date:function(d1,d2){\r\n\t\t\tif(c.rtl) {\r\n\t\t\t\treturn scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"))+\" – \"+scheduler.templates.day_date(d1);\r\n\t\t\t} \r\n\t\t\treturn scheduler.templates.day_date(d1)+\" – \"+scheduler.templates.day_date(scheduler.date.add(d2,-1,\"day\"));\r\n\t\t},\r\n\t\tday_scale_date:d(c.default_date),\r\n\t\ttime_slot_text: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\ttime_slot_class: function(date){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\r\n\t\tmonth_scale_date:d(c.week_date),\r\n\t\tweek_scale_date:d(c.day_date),\r\n\t\thour_scale:d(c.hour_date),\r\n\t\ttime_picker:d(c.hour_date),\r\n\t\tevent_date:d(c.hour_date),\r\n\t\tmonth_day:d(c.month_day),\r\n\r\n\t\tload_format: d(c.load_date),\r\n\t//\txml_date:scheduler.date.str_to_date(c.xml_date,c.server_utc),\r\n\t//\txml_format:d(c.date_format,c.server_utc),\r\n\t\tformat_date: d(c.date_format, c.server_utc),\r\n\t\tparse_date:scheduler.date.str_to_date(c.date_format,c.server_utc),\r\n\t\tapi_date:scheduler.date.str_to_date(c.api_date, false, false),\r\n\t\tevent_header:function(start,end,ev){\r\n\r\n\t\t\tif(ev._mode === \"small\" || ev._mode === \"smallest\"){\r\n\t\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.templates.event_date(start)+\" - \"+scheduler.templates.event_date(end);\r\n\t\t\t}\r\n\t\t},\r\n\t\tevent_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tevent_class:function(start,end,ev){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tmonth_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tweek_date_class:function(d){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tevent_bar_date:function(start,end,ev) {\r\n\t\t\treturn scheduler.templates.event_date(start);\r\n\t\t},\r\n\t\tevent_bar_text:function(start,end,ev){\r\n\t\t\treturn ev.text;\r\n\t\t},\r\n\t\tmonth_events_link : function(date, count){\r\n\t\t\treturn \"View more(\"+count+\" events)\";\r\n\t\t},\r\n\t\tdrag_marker_class : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\tdrag_marker_content : function(start, end, event){\r\n\t\t\treturn \"\";\r\n\t\t},\r\n\t\t/* Could be redifined */\r\n\t\ttooltip_date_format: scheduler.date.date_to_str(\"%Y-%m-%d %H:%i\"),\r\n\t\ttooltip_text: function(start, end, event) {\r\n\t\t\treturn \"Event: \" + event.text + \"
Start date: \" + scheduler.templates.tooltip_date_format(start) + \"
End date: \" + scheduler.templates.tooltip_date_format(end);\r\n\t\t},\r\n\r\n\t\tcalendar_month: d(\"%F %Y\"),\r\n\t\tcalendar_scale_date: d(\"%D\"),\r\n\t\tcalendar_date: d(\"%d\"),\r\n\t\tcalendar_time: d(\"%d-%m-%Y\")\r\n\r\n\t});\r\n\tthis.callEvent(\"onTemplatesReady\",[]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._events = {};\r\nscheduler.clearAll = function() {\r\n\tthis._events = {};\r\n\tthis._loaded = {};\r\n\r\n\tthis._edit_id = null;\r\n\tthis._select_id = null;\r\n\tthis._drag_id = null;\r\n\tthis._drag_mode = null;\r\n\tthis._drag_pos = null;\r\n\tthis._new_event = null;\r\n\r\n\tthis.clear_view();\r\n\tthis.callEvent(\"onClearAll\", []);\r\n};\r\nscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\tif (!arguments.length)\r\n\t\treturn this.addEventNow();\r\n\tvar ev = start_date;\r\n\tif (arguments.length != 1) {\r\n\t\tev = extra_data || {};\r\n\t\tev.start_date = start_date;\r\n\t\tev.end_date = end_date;\r\n\t\tev.text = text;\r\n\t\tev.id = id;\r\n\t}\r\n\tev.id = ev.id || scheduler.uid();\r\n\tev.text = ev.text || \"\";\r\n\r\n\tif (typeof ev.start_date == \"string\") ev.start_date = this.templates.api_date(ev.start_date);\r\n\tif (typeof ev.end_date == \"string\") ev.end_date = this.templates.api_date(ev.end_date);\r\n\tvar d = (this.config.event_duration || this.config.time_step) * 60000;\r\n\tif (ev.start_date.valueOf() == ev.end_date.valueOf())\r\n\t\tev.end_date.setTime(ev.end_date.valueOf() + d);\r\n\r\n\tev.start_date.setMilliseconds(0);\r\n\tev.end_date.setMilliseconds(0);\r\n\r\n\tev._timed = this.isOneDayEvent(ev);\r\n\r\n\tvar is_new = !this._events[ev.id];\r\n\tthis._events[ev.id] = ev;\r\n\tthis.event_updated(ev);\r\n\tif (!this._loading)\r\n\t\tthis.callEvent(is_new ? \"onEventAdded\" : \"onEventChanged\", [ev.id, ev]);\r\n\treturn ev.id;\r\n};\r\nscheduler.deleteEvent = function(id, silent) {\r\n\tvar ev = this._events[id];\r\n\tif (!silent && (!this.callEvent(\"onBeforeEventDelete\", [id, ev]) || !this.callEvent(\"onConfirmedBeforeEventDelete\", [id, ev])))\r\n\t\treturn;\r\n\tif (ev) {\r\n\t\tif(scheduler.getState().select_id == id){\r\n\t\t\tscheduler.unselect();\r\n\t\t}\r\n\t\tdelete this._events[id];\r\n\t\tthis.event_updated(ev);\r\n\r\n\t\tif(this._drag_id == ev.id){\r\n\t\t\tthis._drag_id = null;\r\n\t\t\tthis._drag_mode=null;\r\n\t\t\tthis._drag_pos=null;\r\n\t\t}\r\n\t}\r\n\r\n\tthis.callEvent(\"onEventDeleted\", [id, ev]);\r\n};\r\nscheduler.getEvent = function(id) {\r\n\treturn this._events[id];\r\n};\r\nscheduler.setEvent = function(id, hash) {\r\n\tif(!hash.id)\r\n\t\thash.id = id;\r\n\r\n\tthis._events[id] = hash;\r\n};\r\nscheduler.for_rendered = function(id, method) {\r\n\tfor (var i = this._rendered.length - 1; i >= 0; i--)\r\n\t\tif (this._rendered[i].getAttribute(this.config.event_attribute) == id)\r\n\t\t\tmethod(this._rendered[i], i);\r\n};\r\nscheduler.changeEventId = function(id, new_id) {\r\n\tif (id == new_id) return;\r\n\tvar ev = this._events[id];\r\n\tif (ev) {\r\n\t\tev.id = new_id;\r\n\t\tthis._events[new_id] = ev;\r\n\t\tdelete this._events[id];\r\n\t}\r\n\tthis.for_rendered(id, function(r) {\r\n\t\tr.setAttribute(\"event_id\", new_id); // for backward compatibility\r\n\t\tr.setAttribute(scheduler.config.event_attribute, new_id);\r\n\t});\r\n\tif (this._select_id == id) this._select_id = new_id;\r\n\tif (this._edit_id == id) this._edit_id = new_id;\r\n\t//if (this._drag_id==id) this._drag_id=new_id;\r\n\tthis.callEvent(\"onEventIdChange\", [id, new_id]);\r\n};\r\n\r\n(function() {\r\n\tvar attrs = [\"text\", \"Text\", \"start_date\", \"StartDate\", \"end_date\", \"EndDate\"];\r\n\tvar create_getter = function(name) {\r\n\t\treturn function(id) { return (scheduler.getEvent(id))[name]; };\r\n\t};\r\n\tvar create_setter = function(name) {\r\n\t\treturn function(id, value) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tev[name] = value;\r\n\t\t\tev._changed = true;\r\n\t\t\tev._timed = this.isOneDayEvent(ev);\r\n\t\t\tscheduler.event_updated(ev, true);\r\n\t\t};\r\n\t};\r\n\tfor (var i = 0; i < attrs.length; i += 2) {\r\n\t\tscheduler[\"getEvent\" + attrs[i + 1]] = create_getter(attrs[i]);\r\n\t\tscheduler[\"setEvent\" + attrs[i + 1]] = create_setter(attrs[i]);\r\n\t}\r\n})();\r\n\r\nscheduler.event_updated = function(ev, force) {\r\n\tif (this.is_visible_events(ev))\r\n\t\tthis.render_view_data();\r\n\telse\r\n\t\tthis.clear_event(ev.id);\r\n};\r\nscheduler.is_visible_events = function(ev) {\r\n\tif(!this._min_date || !this._max_date){\r\n\t\treturn false;\r\n\t}\r\n\r\n\t//if in displayed dates\r\n\tvar in_visible_range = (ev.start_date.valueOf() < this._max_date.valueOf() && this._min_date.valueOf() < ev.end_date.valueOf());\r\n\r\n\tif(in_visible_range){\r\n\r\n\t\t//end dates are not between last/first hours\r\n\t\tvar evFirstHour = ev.start_date.getHours(),\r\n\t\t\tevLastHour = ev.end_date.getHours() + (ev.end_date.getMinutes()/60),\r\n\t\t\tlastHour = this.config.last_hour,\r\n\t\t\tfirstHour = this.config.first_hour;\r\n\r\n\t\tvar end_dates_visible = (this._table_view || !((evLastHour > lastHour || evLastHour <= firstHour) && (evFirstHour >= lastHour || evFirstHour < firstHour)));\r\n\r\n\t\tif(end_dates_visible){\r\n\t\t\treturn true;\r\n\t\t}else{\r\n\r\n\t\t\t//event is bigger than area hidden between last/first hours\r\n\t\t\tvar event_duration = (ev.end_date.valueOf() - ev.start_date.valueOf()) / (1000*60*60),//hours\r\n\t\t\t\thidden_duration = 24 - (this.config.last_hour - this.config.first_hour);\r\n\r\n\t\t\treturn !!((event_duration > hidden_duration) || (evFirstHour < lastHour && evLastHour > firstHour));\r\n\r\n\t\t}\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.isOneDayEvent = function(ev) {\r\n\t// decrease by one ms so events that ends on midnight on the next day were still considered one day events\r\n\t// e.g. (09-02-2018 19:00 - 10-02-2018 00:00)\r\n\t// events >= 24h long are considered multiday\r\n\tvar checkEndDate = new Date(ev.end_date.valueOf() - 1);\r\n\treturn (\r\n\t\tev.start_date.getFullYear() === checkEndDate.getFullYear() &&\r\n\t\tev.start_date.getMonth() === checkEndDate.getMonth() &&\r\n\t\tev.start_date.getDate() === checkEndDate.getDate()\r\n\t) && ((ev.end_date.valueOf() - ev.start_date.valueOf()) < (1000 * 60 * 60 * 24));\r\n};\r\n\r\nscheduler.get_visible_events = function(only_timed) {\r\n\t//not the best strategy for sure\r\n\tvar stack = [];\r\n\r\n\tfor (var id in this._events)\r\n\t\tif (this.is_visible_events(this._events[id]))\r\n\t\t\tif (!only_timed || this._events[id]._timed)\r\n\t\t\t\tif (this.filter_event(id, this._events[id]))\r\n\t\t\t\t\tstack.push(this._events[id]);\r\n\r\n\treturn stack;\r\n};\r\nscheduler.filter_event = function(id, ev) {\r\n\tvar filter = this[\"filter_\" + this._mode];\r\n\treturn (filter) ? filter(id, ev) : true;\r\n};\r\nscheduler._is_main_area_event = function(ev){\r\n\treturn !!ev._timed;\r\n};\r\nscheduler.render_view_data = function(evs, hold) {\r\n\tvar full = false;\r\n\tif (!evs) {\r\n\t\tfull = true;\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\t\tevs = this.get_visible_events(!(this._table_view || this.config.multi_day));\r\n\t}\r\n\tfor(var i= 0, len = evs.length; i < len; i++){\r\n\t\tthis._recalculate_timed(evs[i]);\r\n\t}\r\n\r\n\tif (this.config.multi_day && !this._table_view) {\r\n\r\n\t\tvar tvs = [];\r\n\t\tvar tvd = [];\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tif (this._is_main_area_event(evs[i]))\r\n\t\t\t\ttvs.push(evs[i]);\r\n\t\t\telse\r\n\t\t\t\ttvd.push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(!this._els['dhx_multi_day']){\r\n\t\t\tvar message = scheduler._commonErrorMessages.unknownView(this._mode);\r\n\t\t\tthrow new Error(message);\r\n\t\t}\r\n\r\n\t\t// multiday events\r\n\t\tthis._rendered_location = this._els['dhx_multi_day'][0];\r\n\t\tthis._table_view = true;\r\n\t\tthis.render_data(tvd, hold);\r\n\t\tthis._table_view = false;\r\n\r\n\t\t// normal events\r\n\t\tthis._rendered_location = this._els['dhx_cal_data'][0];\r\n\t\tthis._table_view = false;\r\n\t\tthis.render_data(tvs, hold);\r\n\r\n\t} else {\r\n\t\tvar buffer = document.createDocumentFragment();\r\n\t\tvar renderedLocation = this._els['dhx_cal_data'][0];\r\n\t\tthis._rendered_location = buffer;\r\n\t\tthis.render_data(evs, hold);\r\n\t\trenderedLocation.appendChild(buffer);\r\n\t\tthis._rendered_location = renderedLocation;\r\n\r\n\t}\r\n\r\n\tif(full){\r\n\t\tthis.callEvent(\"onDataRender\", []);\r\n\t}\r\n};\r\n\r\n\r\nscheduler._view_month_day = function(e){\r\n\tvar date = scheduler.getActionData(e).date;\r\n\tif(!scheduler.callEvent(\"onViewMoreClick\", [date]))\r\n\t\treturn;\r\n\tscheduler.setCurrentView(date, \"day\");\r\n};\r\n\r\nscheduler._render_month_link = function(ev){\r\n\tvar parent = this._rendered_location;\r\n\tvar toRender = this._lame_clone(ev);\r\n\r\n\t//render links in each cell of multiday events\r\n\tfor(var d = ev._sday; d < ev._eday; d++){\r\n\r\n\t\ttoRender._sday = d;\r\n\t\ttoRender._eday = d+1;\r\n\r\n\t\tvar date = scheduler.date;\r\n\t\tvar curr = scheduler._min_date;\r\n\t\tcurr = date.add(curr, toRender._sweek, \"week\");\r\n\t\tcurr = date.add(curr, toRender._sday, \"day\");\r\n\t\tvar count = scheduler.getEvents(curr, date.add(curr, 1, \"day\")).length;\r\n\r\n\t\tvar pos = this._get_event_bar_pos(toRender);\r\n\t\tvar widt = (pos.x2 - pos.x);\r\n\r\n\t\tvar el = document.createElement(\"div\");\r\n\t\tscheduler.event(el, \"click\", function(e){scheduler._view_month_day(e);});\r\n\t\tel.className = \"dhx_month_link\";\r\n\t\tel.style.top = pos.y + \"px\";\r\n\t\tel.style.left = pos.x + \"px\";\r\n\t\tel.style.width = widt + \"px\";\r\n\t\tel.innerHTML = scheduler.templates.month_events_link(curr, count);\r\n\t\tthis._rendered.push(el);\r\n\r\n\t\tparent.appendChild(el);\r\n\t}\r\n};\r\n\r\nscheduler._recalculate_timed = function(id){\r\n\tif(!id) return;\r\n\tvar ev;\r\n\tif(typeof(id) != \"object\")\r\n\t\tev = this._events[id];\r\n\telse\r\n\t\tev = id;\r\n\tif(!ev) return;\r\n\tev._timed = scheduler.isOneDayEvent(ev);\r\n};\r\nscheduler.attachEvent(\"onEventChanged\", scheduler._recalculate_timed);\r\nscheduler.attachEvent(\"onEventAdded\", scheduler._recalculate_timed);\r\n\r\nscheduler.render_data = function(evs, hold) {\r\n\tevs = this._pre_render_events(evs, hold);\r\n\tvar containers = {};\r\n\tfor (var i = 0; i < evs.length; i++)\r\n\t\tif (this._table_view){\r\n\t\t\tif(scheduler._mode != 'month'){\r\n\t\t\t\tthis.render_event_bar(evs[i]);//may be multiday section on other views\r\n\t\t\t}else{\r\n\r\n\t\t\t\tvar max_evs = scheduler.config.max_month_events;\r\n\t\t\t\tif(max_evs !== max_evs*1 || evs[i]._sorder < max_evs){\r\n\t\t\t\t\t//of max number events per month cell is set and event can be rendered\r\n\t\t\t\t\tthis.render_event_bar(evs[i]);\r\n\t\t\t\t}else if(max_evs !== undefined && evs[i]._sorder == max_evs){\r\n\t\t\t\t\t//render 'view more' links\r\n\t\t\t\t\tscheduler._render_month_link(evs[i]);\r\n\t\t\t\t}else{\r\n\t\t\t\t\t//do not render events with ordinal number > maximum events per cell\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t}else{\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tvar parent = scheduler.locate_holder(ev._sday);\r\n\t\t\tif (!parent) continue; //attempt to render non-visible event\r\n\r\n\t\t\tif(!containers[ev._sday]){\r\n\t\t\t\tcontainers[ev._sday] = {\r\n\t\t\t\t\treal: parent,\r\n\t\t\t\t\tbuffer: document.createDocumentFragment(),\r\n\t\t\t\t\twidth: parent.clientWidth\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tvar container = containers[ev._sday];\r\n\t\t\tthis.render_event(ev, container.buffer, container.width);\r\n\t\t}\r\n\r\n\t\tfor(var i in containers){\r\n\t\t\tvar container = containers[i];\r\n\t\t\tif(container.real && container.buffer){\r\n\t\t\t\tcontainer.real.appendChild(container.buffer);\r\n\t\t\t}\r\n\t\t}\r\n};\r\n\r\nscheduler._get_first_visible_cell = function(cells) {\r\n\tfor (var i = 0; i < cells.length; i++) {\r\n\t\tif ((cells[i].className || \"\").indexOf(\"dhx_scale_ignore\") == -1) {\r\n\t\t\treturn cells[i];\r\n\t\t}\r\n\t}\r\n\t// if no visible cell found, return cells[0] to be more tolerant, since it's the original logic\r\n\treturn cells[0];\r\n};\r\n\r\nscheduler._pre_render_events = function(evs, hold) {\r\n\tvar hb = this.xy.bar_height;\r\n\tvar h_old = this._colsS.heights;\r\n\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\tif (!this._table_view) {\r\n\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t}\r\n\telse {\r\n\t\tevs = this._pre_render_events_table(evs, hold);\r\n\t}\r\n\tif (this._table_view) {\r\n\t\tif (hold)\r\n\t\t\tthis._colsS.heights = h_old;\r\n\t\telse {\r\n\t\t\tvar monthRows = data.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\tif (monthRows.length) {\r\n\t\t\t\tfor (var i = 0; i < monthRows.length; i++) {\r\n\t\t\t\t\th[i]++;\r\n\t\t\t\t\tvar cells = monthRows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\t\t\t\t\tvar cellHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\tif ((h[i]) * hb > cellHeight) { // 22 - height of cell's header\r\n\t\t\t\t\t\t//we have overflow, update heights\r\n\r\n\t\t\t\t\t\tvar cHeight = cellHeight;\r\n\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > cellHeight){\r\n\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmonthRows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\th[i] = (h[i - 1] || 0) + scheduler._get_first_visible_cell(cells).offsetHeight;\r\n\t\t\t\t}\r\n\t\t\t\th.unshift(0);\r\n\t\t\t\tconst dataArea = this.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tif (dataArea.offsetHeight < dataArea.scrollHeight && !scheduler._colsS.scroll_fix && scheduler.xy.scroll_width) {\r\n\r\n\t\t\t\t\tvar scale_settings = scheduler._colsS,\r\n\t\t\t\t\t\tsum_width = scale_settings[scale_settings.col_length],\r\n\t\t\t\t\t\trow_heights = scale_settings.heights.slice();\r\n\r\n\t\t\t\t\tsum_width -= (scheduler.xy.scroll_width || 0);\r\n\t\t\t\t\tthis._calc_scale_sizes(sum_width, this._min_date, this._max_date);\r\n\t\t\t\t\tscheduler._colsS.heights = row_heights;\r\n\r\n\t\t\t\t\tthis.set_xy(this._els[\"dhx_cal_header\"][0], sum_width/*, this.xy.scale_height*/);\r\n\t\t\t\t\tscheduler._render_scales(this._els[\"dhx_cal_header\"][0]);\r\n\t\t\t\t\tscheduler._render_month_scale(this._els[\"dhx_cal_data\"][0], this._get_timeunit_start(), this._min_date);\r\n\r\n\t\t\t\t\tscale_settings.scroll_fix = true;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\th[0] = -1;\r\n\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\r\n\t\t\t\t\t// +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\tvar full_multi_day_height = (h[0] + 1) * hb + 4;\r\n\r\n\t\t\t\t\tvar used_multi_day_height = full_multi_day_height;\r\n\t\t\t\t\tvar used_multi_day_height_css = full_multi_day_height + \"px\";\r\n\t\t\t\t\tif (this.config.multi_day_height_limit) {\r\n\t\t\t\t\t\tused_multi_day_height = Math.min(full_multi_day_height, this.config.multi_day_height_limit) ;\r\n\t\t\t\t\t\tused_multi_day_height_css = used_multi_day_height + \"px\";\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar multi_day_section = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\tmulti_day_section.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_section.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_section.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t// icon\r\n\t\t\t\t\tvar multi_day_icon = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\tmulti_day_icon.style.height = used_multi_day_height_css;\r\n\t\t\t\t\tmulti_day_icon.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\tmulti_day_icon.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\tmulti_day_icon.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\tif(this.config.multi_day_height_limit){\r\n\t\t\t\t\t\tthis._dy_shift = Math.min(this.config.multi_day_height_limit, this._dy_shift);\r\n\t\t\t\t\t}\r\n\t\t\t\t\th[0] = 0;\r\n\r\n\t\t\t\t\tif (used_multi_day_height != full_multi_day_height) {\r\n\r\n\t\t\t\t\t\tmulti_day_section.style.overflowY = \"auto\";\r\n\t\t\t\t\t//\tmulti_day_section.style.width = (parseInt(this._els[\"dhx_cal_navline\"][0].style.width)) + \"px\";\r\n\r\n\t\t\t\t\t\tmulti_day_icon.style.position = \"fixed\";\r\n\t\t\t\t\t\tmulti_day_icon.style.top = \"\";\r\n\t\t\t\t\t\tmulti_day_icon.style.left = \"\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn evs;\r\n};\r\nscheduler._get_event_sday = function(ev) {\r\n\t// get day in current view\r\n\t// use rounding for 23 or 25 hour days on DST\r\n\tvar datePart = this.date.day_start(new Date(ev.start_date));\r\n\treturn Math.round((datePart.valueOf() - this._min_date.valueOf()) / (24 * 60 * 60 * 1000));\r\n};\r\nscheduler._get_event_mapped_end_date = function(ev) {\r\n\tvar end_date = ev.end_date;\r\n\tif (this.config.separate_short_events) {\r\n\t\tvar ev_duration = (ev.end_date - ev.start_date) / 60000; // minutes\r\n\t\tif (ev_duration < this._min_mapped_duration) {\r\n\t\t\tend_date = this.date.add(end_date, this._min_mapped_duration - ev_duration, \"minute\");\r\n\t\t}\r\n\t}\r\n\treturn end_date;\r\n};\r\nscheduler._pre_render_events_line = function(evs, hold){\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n\tvar days = []; //events by weeks\r\n\tvar evs_originals = [];\r\n\r\n\tthis._min_mapped_duration = Math.floor(this.xy.min_event_height * 60 / this.config.hour_size_px); // values could change along the way\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\r\n\t\t//check date overflow\r\n\t\tvar sd = ev.start_date;\r\n\t\tvar ed = ev.end_date;\r\n\t\t//check scale overflow\r\n\t\tvar sh = sd.getHours();\r\n\t\tvar eh = ed.getHours();\r\n\t\tev._sday = this._get_event_sday(ev); // sday based on event start_date\r\n\t\tif (this._ignores[ev._sday]){\r\n\t\t\t//ignore event\r\n\t\t\tevs.splice(i,1);\r\n\t\t\ti--;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!days[ev._sday]) days[ev._sday] = [];\r\n\r\n\t\tif (!hold) {\r\n\t\t\tev._inner = false;\r\n\r\n\t\t\tvar stack = days[ev._sday];\r\n\r\n\t\t\twhile (stack.length) {\r\n\t\t\t\tvar t_ev = stack[stack.length - 1];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tstack.splice(stack.length - 1, 1);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar slot_index = stack.length;\r\n\t\t\tvar sorderSet = false;\r\n\t\t\tfor (var j = 0; j < stack.length; j++) {\r\n\t\t\t\tvar t_ev = stack[j];\r\n\t\t\t\tvar t_end_date = this._get_event_mapped_end_date(t_ev);\r\n\t\t\t\tif (t_end_date.valueOf() <= ev.start_date.valueOf()) {\r\n\t\t\t\t\tsorderSet = true;\r\n\t\t\t\t\tev._sorder = t_ev._sorder;\r\n\t\t\t\t\tslot_index = j;\r\n\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (stack.length)\r\n\t\t\t\tstack[stack.length - 1]._inner = true;\r\n\r\n\t\t\tif (!sorderSet) {\r\n\t\t\t\tif (stack.length) {\r\n\t\t\t\t\tif (stack.length <= stack[stack.length - 1]._sorder) {\r\n\t\t\t\t\t\tif (!stack[stack.length - 1]._sorder)\r\n\t\t\t\t\t\t\tev._sorder = 0;\r\n\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\tfor (j = 0; j < stack.length; j++) {\r\n\t\t\t\t\t\t\t\tvar _is_sorder = false;\r\n\t\t\t\t\t\t\t\tfor (var k = 0; k < stack.length; k++) {\r\n\t\t\t\t\t\t\t\t\tif (stack[k]._sorder == j) {\r\n\t\t\t\t\t\t\t\t\t\t_is_sorder = true;\r\n\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (!_is_sorder) {\r\n\t\t\t\t\t\t\t\t\tev._sorder = j;\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._inner = true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvar _max_sorder = stack[0]._sorder;\r\n\t\t\t\t\t\tfor (j = 1; j < stack.length; j++) {\r\n\t\t\t\t\t\t\tif (stack[j]._sorder > _max_sorder)\r\n\t\t\t\t\t\t\t\t_max_sorder = stack[j]._sorder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tev._sorder = _max_sorder + 1;\r\n\t\t\t\t\t\tev._inner = false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._sorder = 0;\r\n\t\t\t}\r\n\r\n\t\t\tstack.splice(slot_index, slot_index == stack.length ? 0 : 1, ev);\r\n\r\n\t\t\tif (stack.length > (stack.max_count || 0)) {\r\n\t\t\t\tstack.max_count = stack.length;\r\n\t\t\t\tev._count = stack.length;\r\n\t\t\t} else {\r\n\t\t\t\tev._count = (ev._count) ? ev._count : 1;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sh < this.config.first_hour || eh >= this.config.last_hour) {\r\n\t\t\t// Need to create copy of event as we will be changing it's start/end date\r\n\t\t\t// e.g. first_hour = 11 and event.start_date hours = 9. Need to preserve that info\r\n\t\t\tevs_originals.push(ev);\r\n\t\t\tevs[i] = ev = this._copy_event(ev);\r\n\r\n\t\t\tif (sh < this.config.first_hour) {\r\n\t\t\t\tev.start_date.setHours(this.config.first_hour);\r\n\t\t\t\tev.start_date.setMinutes(0);\r\n\t\t\t}\r\n\t\t\tif (eh >= this.config.last_hour) {\r\n\t\t\t\tev.end_date.setMinutes(0);\r\n\t\t\t\tev.end_date.setHours(this.config.last_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif (ev.start_date > ev.end_date || sh == this.config.last_hour) {\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (!hold) {\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tevs[i]._count = days[evs[i]._sday].max_count;\r\n\t\t}\r\n\t\tfor (var i = 0; i < evs_originals.length; i++)\r\n\t\t\tevs_originals[i]._count = days[evs_originals[i]._sday].max_count;\r\n\t}\r\n\r\n\treturn evs;\r\n};\r\nscheduler._time_order = function(evs) {\r\n\tevs.sort(function(a, b) {\r\n\t\tif (a.start_date.valueOf() == b.start_date.valueOf()) {\r\n\t\t\tif (a._timed && !b._timed) return 1;\r\n\t\t\tif (!a._timed && b._timed) return -1;\r\n\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t}\r\n\t\treturn a.start_date > b.start_date ? 1 : -1;\r\n\t});\r\n};\r\n\r\nscheduler._is_any_multiday_cell_visible = function(from, to, event){\r\n\tvar cols = this._cols.length;\r\n\tvar isAnyCellVisible = false;\r\n\tvar checkDate = from;\r\n\tvar noCells = true;\r\n\tvar lastDayEnd = new Date(to);\r\n\tif(scheduler.date.day_start(new Date(to)).valueOf() != to.valueOf()){\r\n\t\tlastDayEnd = scheduler.date.day_start(lastDayEnd);\r\n\t\tlastDayEnd = scheduler.date.add(lastDayEnd, 1, \"day\");\r\n\t}\r\n\twhile(checkDate < lastDayEnd){\r\n\t\tnoCells = false;\r\n\t\tvar cellIndex = this.locate_holder_day(checkDate, false, event);\r\n\t\tvar weekCellIndex = cellIndex % cols;\r\n\t\tif(!this._ignores[weekCellIndex]){\r\n\t\t\tisAnyCellVisible = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcheckDate = scheduler.date.add(checkDate, 1, \"day\");\r\n\t}\r\n\treturn noCells || isAnyCellVisible;\r\n};\r\n\r\nscheduler._pre_render_events_table = function(evs, hold) { // max - max height of week slot\r\n\tthis._time_order(evs);\r\n\tvar out = [];\r\n\tvar weeks = [\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[],\r\n\t\t[]\r\n\t]; //events by weeks\r\n\tvar max = this._colsS.heights;\r\n\tvar start_date;\r\n\tvar cols = this._cols.length;\r\n\tvar chunks_info = {};\r\n\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tvar ev = evs[i];\r\n\t\tvar id = ev.id;\r\n\t\tif (!chunks_info[id]) {\r\n\t\t\tchunks_info[id] = {\r\n\t\t\t\tfirst_chunk: true,\r\n\t\t\t\tlast_chunk: true\r\n\t\t\t};\r\n\t\t}\r\n\t\tvar chunk_info = chunks_info[id];\r\n\t\tvar sd = (start_date || ev.start_date);\r\n\t\tvar ed = ev.end_date;\r\n\t\t//trim events which are crossing through current view\r\n\t\tif (sd < this._min_date) {\r\n\t\t\tchunk_info.first_chunk = false;\r\n\t\t\tsd = this._min_date;\r\n\t\t}\r\n\t\tif (ed > this._max_date) {\r\n\t\t\tchunk_info.last_chunk = false;\r\n\t\t\ted = this._max_date;\r\n\t\t}\r\n\r\n\t\tvar locate_s = this.locate_holder_day(sd, false, ev);\r\n\t\tev._sday = locate_s % cols;\r\n\t\t//skip single day events for ignored dates\r\n\t\tif (this._ignores[ev._sday] && ev._timed) continue;\r\n\r\n\t\tvar locate_e = this.locate_holder_day(ed, true, ev) || cols;\r\n\t\tev._eday = (locate_e % cols) || cols; //cols used to fill full week, when event end on monday\r\n\t\tev._length = locate_e - locate_s;\r\n\t\t//3600000 - compensate 1 hour during winter|summer time shift\r\n\t\tev._sweek = Math.floor((this._correct_shift(sd.valueOf(), 1) - this._min_date.valueOf()) / (60 * 60 * 1000 * 24 * cols));\r\n\r\n\t\tvar isAnyCellVisible = scheduler._is_any_multiday_cell_visible(sd, ed, ev);\r\n\r\n\t\tif(!isAnyCellVisible){\r\n\t\t\tstart_date = null;\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t//current slot\r\n\t\tvar stack = weeks[ev._sweek];\r\n\t\t//check order position\r\n\t\tvar stack_line;\r\n\r\n\t\tfor (stack_line = 0; stack_line < stack.length; stack_line++)\r\n\t\t\tif (stack[stack_line]._eday <= ev._sday)\r\n\t\t\t\tbreak;\r\n\r\n\t\tif (!ev._sorder || !hold) {\r\n\t\t\tev._sorder = stack_line;\r\n\t\t}\r\n\r\n\t\tif (ev._sday + ev._length <= cols) {\r\n\t\t\tstart_date = null;\r\n\t\t\tout.push(ev);\r\n\t\t\tstack[stack_line] = ev;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\tev._first_chunk = chunk_info.first_chunk;\r\n\t\t\tev._last_chunk = chunk_info.last_chunk;\r\n\t\t} else { // split long event in chunks\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\tcopy.id = ev.id;\r\n\t\t\tcopy._length = cols - ev._sday;\r\n\t\t\tcopy._eday = cols;\r\n\t\t\tcopy._sday = ev._sday;\r\n\t\t\tcopy._sweek = ev._sweek;\r\n\t\t\tcopy._sorder = ev._sorder;\r\n\t\t\tcopy.end_date = this.date.add(sd, copy._length, \"day\");\r\n\t\t\tcopy._first_chunk = chunk_info.first_chunk;\r\n\t\t\tif (chunk_info.first_chunk) {\r\n\t\t\t\tchunk_info.first_chunk = false;\r\n\t\t\t}\r\n\r\n\t\t\tout.push(copy);\r\n\t\t\tstack[stack_line] = copy;\r\n\t\t\tstart_date = copy.end_date;\r\n\t\t\t//get max height of slot\r\n\t\t\tmax[ev._sweek] = stack.length - 1;\r\n\t\t\ti--;\r\n\t\t\tcontinue; //repeat same step\r\n\t\t}\r\n\t}\r\n\treturn out;\r\n};\r\nscheduler._copy_dummy = function() {\r\n\tvar a = new Date(this.start_date);\r\n\tvar b = new Date(this.end_date);\r\n\tthis.start_date = a;\r\n\tthis.end_date = b;\r\n};\r\nscheduler._copy_event = function(ev) {\r\n\tthis._copy_dummy.prototype = ev;\r\n\treturn new this._copy_dummy();\r\n\t//return {start_date:ev.start_date, end_date:ev.end_date, text:ev.text, id:ev.id}\r\n};\r\nscheduler._rendered = [];\r\nscheduler.clear_view = function() {\r\n\tfor (var i = 0; i < this._rendered.length; i++) {\r\n\t\tvar obj = this._rendered[i];\r\n\t\tif (obj.parentNode) obj.parentNode.removeChild(obj);\r\n\t}\r\n\tthis._rendered = [];\r\n};\r\nscheduler.updateEvent = function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tthis.clear_event(id);\r\n\r\n\tif (ev && this.is_visible_events(ev) && this.filter_event(id, ev) && (this._table_view || this.config.multi_day || ev._timed)) {\r\n\t\tif (this.config.update_render){\r\n\t\t\tthis.render_view_data();\r\n\t\t}else{\r\n\t\t\tif(this.getState().mode == \"month\" && !this.getState().drag_id && !this.isOneDayEvent(ev)){\r\n\t\t\t\tthis.render_view_data();\r\n\t\t\t}else{\r\n\t\t\t\tthis.render_view_data([ev], true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.clear_event = function(id) {\r\n\tthis.for_rendered(id, function(node, i) {\r\n\t\tif (node.parentNode)\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\tscheduler._rendered.splice(i, 1);\r\n\t});\r\n};\r\nscheduler._y_from_date = function(date){\r\n\tvar sm = date.getHours() * 60 + date.getMinutes();\r\n\treturn ((Math.round((sm * 60 * 1000 - this.config.first_hour * 60 * 60 * 1000) * this.config.hour_size_px / (60 * 60 * 1000))) % (this.config.hour_size_px * 24)); //42px/hour\r\n};\r\nscheduler._calc_event_y = function(ev, min_height){\r\n\tmin_height = min_height || 0;\r\n\tvar sm = ev.start_date.getHours() * 60 + ev.start_date.getMinutes();\r\n\tvar em = (ev.end_date.getHours() * 60 + ev.end_date.getMinutes()) || (scheduler.config.last_hour * 60);\r\n\tvar top = this._y_from_date(ev.start_date);\r\n\r\n\tvar height = Math.max(min_height, (em - sm) * this.config.hour_size_px / 60); //42px/hour\r\n\treturn {\r\n\t\ttop: top,\r\n\t\theight: height\r\n\t};\r\n};\r\nscheduler.render_event = function(ev, buffer, parentWidth) {\r\n\tvar menu = scheduler.xy.menu_width;\r\n\tvar menu_offset = (this.config.use_select_menu_space) ? 0 : menu;\r\n\tif (ev._sday < 0) return; //can occur in case of recurring event during time shift\r\n\r\n\tvar parent = scheduler.locate_holder(ev._sday);\r\n\tif (!parent) return; //attempt to render non-visible event\r\n\r\n\tbuffer = buffer || parent;\r\n\r\n\tvar pos_y = this._calc_event_y(ev, scheduler.xy.min_event_height);\r\n\tvar top = pos_y.top,\r\n\t\theight = pos_y.height;\r\n\r\n\tvar ev_count = ev._count || 1;\r\n\tvar ev_sorder = ev._sorder || 0;\r\n\r\n\tparentWidth = parentWidth || parent.clientWidth;\r\n\tif(this.config.day_column_padding){\r\n\t\tparentWidth -= this.config.day_column_padding;\r\n\t}\r\n\r\n\tvar width = Math.floor((parentWidth - menu_offset) / ev_count);\r\n\tvar left = ev_sorder * width + 1;\r\n\tif (!ev._inner) width = width * (ev_count - ev_sorder);\r\n\tif (this.config.cascade_event_display) {\r\n\t\tvar limit = this.config.cascade_event_count;\r\n\t\tvar margin = this.config.cascade_event_margin;\r\n\t\tleft = ev_sorder % limit * margin;\r\n\t\tvar right = (ev._inner) ? (ev_count - ev_sorder - 1) % limit * margin / 2 : 0;\r\n\t\twidth = Math.floor(parentWidth - menu_offset - left - right);\r\n\t}\r\n\r\n\tif(height < 30){\r\n\t\tev._mode = \"smallest\";\r\n\t}else if(height < 42){\r\n\t\tev._mode = \"small\";\r\n\t}else{\r\n\t\tev._mode = null;\r\n\t}\r\n\r\n\tvar d = this._render_v_bar(ev, menu_offset + left, top, width, height, ev._text_style, scheduler.templates.event_header(ev.start_date, ev.end_date, ev), scheduler.templates.event_text(ev.start_date, ev.end_date, ev));\r\n\t\r\n\tif(ev._mode === \"smallest\"){\r\n\t\td.classList.add(\"dhx_cal_event--xsmall\");\r\n\t}else if (ev._mode === \"small\"){\r\n\t\td.classList.add(\"dhx_cal_event--small\");\r\n\t}\r\n\r\n\tthis._waiAria.eventAttr(ev, d);\r\n\tthis._rendered.push(d);\r\n\tbuffer.appendChild(d);\r\n\r\n\tvar parentPosition = parseInt( this.config.rtl ? parent.style.right : parent.style.left, 10);\r\n\r\n\tleft = left + parentPosition + menu_offset;\r\n\r\n\tif (this._edit_id == ev.id) {\r\n\r\n\t\td.style.zIndex = 1; //fix overlapping issue\r\n\t\twidth = Math.max(width, scheduler.xy.editor_width);\r\n\t\td = document.createElement(\"div\");\r\n\t\td.setAttribute(\"event_id\", ev.id); // for backward compatibility\r\n\t\td.setAttribute(this.config.event_attribute, ev.id);\r\n\r\n\t\tthis._waiAria.eventAttr(ev, d);\r\n\r\n\t\td.className = \"dhx_cal_event dhx_cal_editor\";\r\n\t\tif (this.config.rtl) left++;\r\n\t\tthis.set_xy(d, width, height, left, top);\r\n\r\n\r\n\t\tif(ev.color){\r\n\t\t\td.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tvar tplClass = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\r\n\t\tif(tplClass){\r\n\t\t\td.className += \" \" + tplClass;\r\n\t\t}\r\n\t\tvar d2 = document.createElement(\"div\");\r\n\t\td2.style.cssText += \"overflow:hidden;height:100%\";\r\n\r\n\t\td.appendChild(d2);\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\tthis._rendered.push(d);\r\n\r\n\t\td2.innerHTML = \"\";\r\n\t\tthis._editor = d2.querySelector(\"textarea\");\r\n\t\t\r\n\t\tscheduler.event(this._editor, \"keydown\", function(e) {\r\n\t\t\tif (e.shiftKey) return true;\r\n\t\t\tvar code = e.keyCode;\r\n\t\t\tif (code == scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\tif (code == scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\r\n\t\t\tif(code == scheduler.keys.edit_save || code == scheduler.keys.edit_cancel){\r\n\t\t\t\tif(e.preventDefault) e.preventDefault();\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.event(this._editor, \"selectstart\", function (e) {\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn true;\r\n\t\t});\r\n\t\tscheduler._focus(this._editor, true);\r\n\t\t//IE and opera can add x-scroll during focusing\r\n\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft = 0;\r\n\t}\r\n\tif (this.xy.menu_width !== 0 && this._select_id == ev.id) {\r\n\r\n\t\tif (this.config.cascade_event_display && this._drag_mode)\r\n\t\t\td.style.zIndex = 1; //fix overlapping issue for cascade view in case of dnd of selected event\r\n\t\tvar icons = this.config[\"icons_\" + ((this._edit_id == ev.id) ? \"edit\" : \"select\")];\r\n\t\tvar icons_str = \"\";\r\n\r\n\t\tvar ariaAttr;\r\n\r\n\t\tfor (var i = 0; i < icons.length; i++) {\r\n\t\t\tconst currentIcon = icons[i];\r\n\t\t\tariaAttr = this._waiAria.eventMenuAttrString(currentIcon);\r\n\t\t\ticons_str += `
`;\r\n\t\t}\r\n\t\tvar obj = this._render_v_bar(ev, left - menu - 1, top, menu, null, \"\", \"
\", icons_str, true);\r\n\r\n\t\tif(ev.color){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tobj.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\t//obj.style.left = left - menu + 1;\r\n\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\tthis._rendered.push(obj);\r\n\t}\r\n\tif(this.config.drag_highlight && this._drag_id == ev.id){\r\n\t\tthis.highlightEventPosition(ev);\r\n\t}\r\n};\r\nscheduler._render_v_bar = function (ev, x, y, w, h, style, contentA, contentB, bottom) {\r\n\tvar d = document.createElement(\"div\");\r\n\tvar id = ev.id;\r\n\tvar cs = (bottom) ? \"dhx_cal_event dhx_cal_select_menu\" : \"dhx_cal_event\";\r\n\r\n\tvar state = scheduler.getState();\r\n\tif(state.drag_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_drag\";\r\n\t}\r\n\r\n\tif(state.select_id == ev.id){\r\n\t\tcs += \" dhx_cal_event_selected\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse) cs = cs + \" \" + cse;\r\n\r\n\tif(this.config.cascade_event_display) {\r\n\t\tcs += \" dhx_cal_event_cascade\";\r\n\t}\r\n\r\n\tvar boxWidth = w - 1;\r\n\tvar html = `
\r\n\t\t\t\t
`;\r\n\r\n\td.innerHTML = html;\r\n\r\n\tvar container = d.cloneNode(true).firstChild;\r\n\r\n\tif (!bottom && scheduler.renderEvent(container, ev, w, h, contentA, contentB)) {\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\treturn container;\r\n\t} else {\r\n\t\tcontainer = d.firstChild;\r\n\t\tif(ev.color){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-background\", ev.color);\r\n\t\t}\r\n\t\tif(ev.textColor){\r\n\t\t\tcontainer.style.setProperty(\"--dhx-scheduler-event-color\", ev.textColor);\r\n\t\t}\r\n\r\n\t\tvar inner_html = '
 
';\r\n\t\tinner_html += '
' + contentA + '
';\r\n\t\tinner_html += '
' + contentB + '
'; // +2 css specific, moved from render_event\r\n\r\n\t\tvar footer_class = \"dhx_event_resize dhx_footer\";\r\n\t\tif (bottom || ev._drag_resize === false)\r\n\t\t\tfooter_class = \"dhx_resize_denied \" + footer_class;\r\n\r\n\t\tinner_html += '
';\r\n\r\n\t\tcontainer.innerHTML = inner_html;\r\n\t}\r\n\r\n\treturn container;\r\n};\r\nscheduler.renderEvent = function(){\r\n\treturn false;\r\n};\r\nscheduler.locate_holder = function(day) {\r\n\tif (this._mode == \"day\") return this._els[\"dhx_cal_data\"][0].firstChild; //dirty\r\n\treturn this._els[\"dhx_cal_data\"][0].childNodes[day];\r\n};\r\nscheduler.locate_holder_day = function(date, past) {\r\n\tvar day = Math.floor((this._correct_shift(date, 1) - this._min_date) / (60 * 60 * 24 * 1000));\r\n\t//when locating end data of event , we need to use next day if time part was defined\r\n\tif (past && this.date.time_part(date)) day++;\r\n\treturn day;\r\n};\r\n\r\n\r\n\r\nscheduler._get_dnd_order = function(order, ev_height, max_height){\r\n\tif(!this._drag_event)\r\n\t\treturn order;\r\n\tif(!this._drag_event._orig_sorder)\r\n\t\tthis._drag_event._orig_sorder = order;\r\n\telse\r\n\t\torder = this._drag_event._orig_sorder;\r\n\r\n\tvar evTop = ev_height * order;\r\n\twhile((evTop + ev_height) > max_height){\r\n\t\torder--;\r\n\t\tevTop -= ev_height;\r\n\t}\r\n\torder = Math.max(order, 0);\r\n\treturn order;\r\n};\r\n//scheduler._get_event_bar_pos = function(sday, eday, week, drag){\r\nscheduler._get_event_bar_pos = function(ev){\r\n\tvar rtl = this.config.rtl;\r\n\tvar columns = this._colsS;\r\n\tvar x = columns[ev._sday];\r\n\tvar x2 = columns[ev._eday];\r\n\tif (rtl) {\r\n\t\tx = columns[columns.col_length] - columns[ev._eday] + columns[0];\r\n\t\tx2 = columns[columns.col_length] - columns[ev._sday] + columns[0];\r\n\t}\r\n\r\n\tif (x2 == x) x2 = columns[ev._eday + 1];\r\n\tvar hb = this.xy.bar_height;\r\n\r\n\tvar order = ev._sorder;\r\n\tif(ev.id == this._drag_id){\r\n\t\tvar cellHeight = columns.heights[ev._sweek + 1] - columns.heights[ev._sweek]- this.xy.month_head_height;//22 for month head height\r\n\t\torder = scheduler._get_dnd_order(order, hb, cellHeight);\r\n\t}\r\n\tvar y_event_offset = order * hb;\r\n\tvar y = columns.heights[ev._sweek] + (columns.height ? (this.xy.month_scale_height + 2) : 2 ) + y_event_offset;\r\n\treturn {x:x, x2:x2, y:y};\r\n};\r\n\r\nscheduler.render_event_bar = function (ev) {\r\n\tvar parent = this._rendered_location;\r\n\tvar pos = this._get_event_bar_pos(ev);\r\n\tvar y = pos.y;\r\n\tvar x = pos.x;\r\n\tvar x2 = pos.x2;\r\n\t// resize for month mutliday events\r\n\tvar resize_handle = \"\";\r\n\r\n\t//events in ignored dates\r\n\r\n\tif (!x2) return;\r\n\r\n\tvar resizable = scheduler.config.resize_month_events && this._mode == \"month\" &&\r\n\t\t(!ev._timed || scheduler.config.resize_month_timed);\r\n\r\n\tvar d = document.createElement(\"div\");\r\n\tvar left_chunk = (ev.hasOwnProperty(\"_first_chunk\") && ev._first_chunk),\r\n\t\tright_chunk = (ev.hasOwnProperty(\"_last_chunk\") && ev._last_chunk);\r\n\r\n\tvar resize_left = resizable && (ev._timed || left_chunk);\r\n\tvar resize_right = resizable && (ev._timed || right_chunk);\r\n\r\n\tvar timed = true;\r\n\tvar cs = \"dhx_cal_event_clear\";\r\n\tif (!ev._timed || resizable) {\r\n\t\ttimed = false;\r\n\t\tcs = \"dhx_cal_event_line\";\r\n\t}\r\n\tif(left_chunk){\r\n\t\tcs += \" dhx_cal_event_line_start\";\r\n\t}\r\n\tif(right_chunk){\r\n\t\tcs += \" dhx_cal_event_line_end\";\r\n\t}\r\n\tif(resize_left){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\tif(resize_right){\r\n\t\tresize_handle += \"
\";\r\n\t}\r\n\r\n\tvar cse = scheduler.templates.event_class(ev.start_date, ev.end_date, ev);\r\n\tif (cse){\r\n\t\tcs += \" \" + cse;\r\n\t}\r\n\r\n\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\tvar style_text = [\r\n\t\t\"position:absolute\",\r\n\t\t\"top:\" + y + \"px\",\r\n\t\t\"left:\" + x + \"px\",\r\n\t\t\"width:\" + (x2 - x - (timed ? 1 : 0)) + \"px\",\r\n\t\t\"height:\" + (this.xy.bar_height - 2) + \"px\",\r\n\t\tcolor,\r\n\t\tbg_color,\r\n\t\t(ev._text_style || \"\")\r\n\t].join(\";\");\r\n\r\n\tvar html = \"
\";\r\n\tif (resizable) {\r\n\t\thtml += resize_handle;\r\n\t}\r\n\tif(scheduler.getState().mode == \"month\"){\r\n\t\tev = scheduler.getEvent(ev.id); // ev at this point could be a part (row in a month view) of a larger event\r\n\t}\r\n\r\n\tif (ev._timed){\r\n\t\thtml += `${scheduler.templates.event_bar_date(ev.start_date, ev.end_date, ev)}`;\r\n\t}\r\n\r\n\thtml += \"
\";\r\n\thtml += scheduler.templates.event_bar_text(ev.start_date, ev.end_date, ev) + '
';\r\n\thtml += \"
\";\r\n\thtml += '
';\r\n\r\n\td.innerHTML = html;\r\n\r\n\tthis._rendered.push(d.firstChild);\r\n\tparent.appendChild(d.firstChild);\r\n};\r\n\r\nscheduler._locate_event = function(node) {\r\n\tvar id = null;\r\n\twhile (node && !id && node.getAttribute) {\r\n\t\tid = node.getAttribute(this.config.event_attribute);\r\n\t\tnode = node.parentNode;\r\n\t}\r\n\treturn id;\r\n};\r\n\r\nscheduler.edit = function(id) {\r\n\tif (this._edit_id == id) return;\r\n\tthis.editStop(false, id);\r\n\tthis._edit_id = id;\r\n\tthis.updateEvent(id);\r\n};\r\nscheduler.editStop = function(mode, id) {\r\n\tif (id && this._edit_id == id) return;\r\n\tvar ev = this.getEvent(this._edit_id);\r\n\tif (ev) {\r\n\t\tif (mode) ev.text = this._editor.value;\r\n\t\tthis._edit_id = null;\r\n\t\tthis._editor = null;\r\n\t\tthis.updateEvent(ev.id);\r\n\t\tthis._edit_stop_event(ev, mode);\r\n\t}\r\n};\r\nscheduler._edit_stop_event = function(ev, mode) {\r\n\tif (this._new_event) {\r\n\t\tif (!mode) {\r\n\t\t\tif (ev) // in case of custom lightbox user can already delete event\r\n\t\t\t\tthis.deleteEvent(ev.id, true);\r\n\t\t} else {\r\n\t\t\tthis.callEvent(\"onEventAdded\", [ev.id, ev]);\r\n\t\t}\r\n\t\tthis._new_event = null;\r\n\t} else {\r\n\t\tif (mode){\r\n\t\t\tthis.callEvent(\"onEventChanged\", [ev.id, ev]);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ( (!from && !to) || (ev.start_date < to && ev.end_date > from) ))\r\n\t\t\tresult.push(ev);\r\n\t}\r\n\treturn result;\r\n};\r\nscheduler.getRenderedEvent = function(id) {\r\n\tif (!id)\r\n\t\treturn;\r\n\tvar rendered_events = scheduler._rendered;\r\n\tfor (var i=0; i -1){\r\n\t\t\t\t\tsection = section.split(scheduler.config.section_delimiter)[0];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvar top = timeline.getSectionTop(section);\r\n\t\t\tvar left = timeline.posFromDate(event.start_date);\r\n\t\t\tvar container = scheduler.$container.querySelector(\".dhx_timeline_data_wrapper\");\r\n\t\t\tleft = left - (container.offsetWidth - timeline.dx) / 2;\r\n\t\t\ttop = top - container.offsetHeight / 2 + timeline.dy/2;\r\n\r\n\t\t\tif (timeline._smartRenderingEnabled()) {\r\n\t\t\t\tvar handlerId = timeline.attachEvent(\"onScroll\", function(){\r\n\t\t\t\t\trestoreOriginalColors();\r\n\t\t\t\t\ttimeline.detachEvent(handlerId);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\ttimeline.scrollTo({\r\n\t\t\t\tleft: left,\r\n\t\t\t\ttop: top\r\n\t\t\t});\r\n\t\t\tif (!timeline._smartRenderingEnabled()) {\r\n\t\t\t\trestoreOriginalColors();\r\n\t\t\t}\r\n\t\t}\r\n\t}else{\r\n\t\trestoreOriginalColors();\r\n\t}\r\n\r\n\tscheduler.callEvent(\"onAfterEventDisplay\", [ev, mode]);\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._append_drag_marker = function(m){\r\n\tif(m.parentNode) return;\r\n\tvar zone = scheduler._els[\"dhx_cal_data\"][0];\r\n\r\n\tvar scale = zone.lastChild;\r\n\tvar className = scheduler._getClassName(scale);\r\n\tif(className.indexOf(\"dhx_scale_holder\") < 0 && scale.previousSibling){\r\n\t\tscale = scale.previousSibling;\r\n\t}\r\n\r\n\tclassName = scheduler._getClassName(scale);\r\n\tif (scale && className.indexOf(\"dhx_scale_holder\") === 0) {\r\n\t\tscale.appendChild(m);\r\n\t}\r\n};\r\n\r\nscheduler._update_marker_position = function(m, event){\r\n\tvar size = scheduler._calc_event_y(event, 0);\r\n\tm.style.top = size.top + \"px\";\r\n\tm.style.height = size.height + \"px\";\r\n};\r\n\r\nscheduler.highlightEventPosition = function(event){\r\n\tvar m = document.createElement(\"div\");\r\n\r\n\tm.setAttribute(\"event_id\", event.id); // for backward compatibility\r\n\tm.setAttribute(this.config.event_attribute, event.id);\r\n\tthis._rendered.push(m);\r\n\tthis._update_marker_position(m, event);\r\n\r\n\tvar css = this.templates.drag_marker_class(event.start_date, event.end_date, event);\r\n\tvar html = this.templates.drag_marker_content(event.start_date, event.end_date, event);\r\n\tm.className = \"dhx_drag_marker\";\r\n\tif(css)\r\n\t\tm.className += \" \" + css;\r\n\tif(html)\r\n\t\tm.innerHTML = html;\r\n\tthis._append_drag_marker(m);\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._parsers.xml = {\r\n\tcanParse: function(data, xhr){\r\n\t\t// IE returns non-empty responseXML type regardless of actual data type\r\n\t\tif(xhr.responseXML && xhr.responseXML.firstChild){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\ttry{\r\n\t\t\tvar xmlDoc = scheduler.ajax.parse(xhr.responseText);\r\n\t\t\tvar topElement = scheduler.ajax.xmltop(\"data\", xmlDoc);\r\n\t\t\tif(topElement && topElement.tagName === \"data\"){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}catch (e){\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(loader) {\r\n\t\tvar xml;\r\n\r\n\t\tif (!loader.xmlDoc.responseXML) { //from a string\r\n\t\t\tloader.xmlDoc.responseXML = scheduler.ajax.parse(loader.xmlDoc.responseText);\r\n\t\t}\r\n\t\r\n\t\txml = scheduler.ajax.xmltop(\"data\", loader.xmlDoc);\r\n\t\tif (xml.tagName != \"data\") return null;//not an xml\r\n\t\tvar csrfToken = xml.getAttribute(\"dhx_security\");\r\n\t\tif (csrfToken) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = csrfToken;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = csrfToken;\r\n\t\t}\r\n\t\r\n\t\tvar opts = scheduler.ajax.xpath(\"//coll_options\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < opts.length; i++) {\r\n\t\t\tvar bind = opts[i].getAttribute(\"for\");\r\n\t\t\tvar arr = scheduler.serverList[bind];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[bind] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length);\t//clear old options\r\n\t\t\tvar itms = scheduler.ajax.xpath(\".//item\", opts[i]);\r\n\t\t\tfor (var j = 0; j < itms.length; j++) {\r\n\t\t\t\tvar itm = itms[j];\r\n\t\t\t\tvar attrs = itm.attributes;\r\n\t\t\t\tvar obj = { key: itms[j].getAttribute(\"value\"), label: itms[j].getAttribute(\"label\")};\r\n\t\t\t\tfor (var k = 0; k < attrs.length; k++) {\r\n\t\t\t\t\tvar attr = attrs[k];\r\n\t\t\t\t\tif (attr.nodeName == \"value\" || attr.nodeName == \"label\")\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\tobj[attr.nodeName] = attr.nodeValue;\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (opts.length)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\t\r\n\t\tvar ud = scheduler.ajax.xpath(\"//userdata\", loader.xmlDoc);\r\n\t\tfor (var i = 0; i < ud.length; i++) {\r\n\t\t\tvar udx = scheduler._xmlNodeToJSON(ud[i]);\r\n\t\t\tscheduler._userdata[udx.name] = udx.text;\r\n\t\t}\r\n\t\r\n\t\tvar evs = [];\r\n\t\txml = scheduler.ajax.xpath(\"//event\", loader.xmlDoc);\r\n\t\r\n\t\tfor (var i = 0; i < xml.length; i++) {\r\n\t\t\tvar ev = evs[i] = scheduler._xmlNodeToJSON(xml[i]);\r\n\t\t\tscheduler._init_event(ev);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.json = scheduler._parsers.json = {\r\n\tcanParse: function(data){\r\n\t\tif(data && typeof data === \"object\"){\r\n\t\t\treturn true;\r\n\t\t} else if(typeof data === \"string\"){\r\n\t\t\ttry {\r\n\t\t\t\tvar result = JSON.parse(data);\r\n\t\t\t\treturn Object.prototype.toString.call(result) === '[object Object]' || \r\n\t\t\t\t\t\tObject.prototype.toString.call(result) === '[object Array]';\r\n\t\t\t} catch (err) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\tparse: function(data) {\r\n\t\tvar events = [];\r\n\r\n\t\tif (typeof data == \"string\") {\r\n\t\t\tdata = JSON.parse(data);\r\n\t\t}\r\n\t\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\t\tevents = data;\r\n\t\t} else {\r\n\t\t\tif(data){\r\n\t\t\t\tif(data.events){\r\n\t\t\t\t\tevents = data.events;\r\n\t\t\t\t}else if(data.data){\r\n\t\t\t\t\tevents = data.data;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevents = events || [];\r\n\r\n\t\tif (data.dhx_security) {\r\n\t\t\tif (window.dhtmlx) {\r\n\t\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t\t}\r\n\t\t\tscheduler.security_key = data.dhx_security;\r\n\t\t}\r\n\r\n\t\tvar collections = (data && data.collections) ? data.collections : {};\r\n\t\tvar collections_loaded = false;\r\n\t\tfor (var key in collections) {\r\n\t\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\t\tcollections_loaded = true;\r\n\t\t\t\tvar collection = collections[key];\r\n\t\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\t\tif (!arr) {\r\n\t\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t\t}\r\n\t\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\t\tvar option = collection[j];\r\n\t\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tarr.push(obj);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (collections_loaded)\r\n\t\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\t\tvar evs = [];\r\n\t\tfor (var i = 0; i < events.length; i++) {\r\n\t\t\tvar event = events[i];\r\n\t\t\tscheduler._init_event(event);\r\n\t\t\tevs.push(event);\r\n\t\t}\r\n\t\treturn evs;\r\n\t}\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler.ical = scheduler._parsers.ical = {\r\n\tcanParse: function(data){\r\n\t\tif(typeof data === \"string\"){\r\n\t\t\treturn new RegExp(\"^BEGIN:VCALENDAR\").test(data);\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t},\r\n\tparse:function(str){\r\n\t\tvar data = str.match(RegExp(this.c_start+\"[^\\f]*\"+this.c_end,\"\"));\r\n\t\tif (!data.length) return;\r\n\r\n\t\t// mpl: handle bad unfolding\r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+ /g,\"\");\r\n\r\n\t\t//unfolding \r\n\t\tdata[0]=data[0].replace(/[\\r\\n]+(?=[a-z \\t])/g,\" \");\r\n\t\t//drop property\r\n\t\tdata[0]=data[0].replace(/;[^:\\r\\n]*:/g,\":\");\r\n\t\t\r\n\t\t\r\n\t\tvar incoming=[];\r\n\t\tvar match;\r\n\t\tvar event_r = RegExp(\"(?:\"+this.e_start+\")([^\\f]*?)(?:\"+this.e_end+\")\",\"g\");\r\n\t\twhile ((match=event_r.exec(data)) !== null){\r\n\t\t\tvar e={};\r\n\t\t\tvar param;\r\n\t\t\tvar param_r = /[^\\r\\n]+[\\r\\n]+/g;\r\n\t\t\twhile ((param=param_r.exec(match[1])) !== null)\r\n\t\t\t\tthis.parse_param(param.toString(),e);\r\n\t\t\tif (e.uid && !e.id) e.id = e.uid; //fallback to UID, when ID is not defined\r\n\t\t\tincoming.push(e);\t\r\n\t\t}\r\n\t\treturn incoming;\r\n\t},\r\n\tparse_param:function(str,obj){\r\n\t\tvar d = str.indexOf(\":\"); \r\n\t\t\tif (d==-1) return;\r\n\t\t\r\n\t\tvar name = str.substr(0,d).toLowerCase();\r\n\t\tvar value = str.substr(d+1).replace(/\\\\,/g,\",\").replace(/[\\r\\n]+$/,\"\");\r\n\t\tif (name==\"summary\")\r\n\t\t\tname=\"text\";\r\n\t\telse if (name==\"dtstart\"){\r\n\t\t\tname = \"start_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\telse if (name==\"dtend\"){\r\n\t\t\tname = \"end_date\";\r\n\t\t\tvalue = this.parse_date(value,0,0);\r\n\t\t}\r\n\t\tobj[name]=value;\r\n\t},\r\n\tparse_date:function(value,dh,dm){\r\n\t\tvar t = value.split(\"T\");\r\n\r\n\t\tvar utcMark = false;\r\n\t\tif (t[1]){\r\n\t\t\tdh=t[1].substr(0,2);\r\n\t\t\tdm=t[1].substr(2,2);\r\n\t\t\tutcMark = !!(t[1][6] == \"Z\");\r\n\t\t}\r\n\t\tvar dy = t[0].substr(0,4);\r\n\t\tvar dn = parseInt(t[0].substr(4,2),10)-1;\r\n\t\tvar dd = t[0].substr(6,2);\r\n\r\n\t\tif(scheduler.config.server_utc || utcMark){\r\n\t\t\treturn new Date(Date.UTC(dy,dn,dd,dh,dm)) ;\r\n\t\t}else{\r\n\t\t\treturn new Date(dy,dn,dd,dh,dm);\r\n\t\t}\r\n\t},\r\n\tc_start:\"BEGIN:VCALENDAR\",\r\n\te_start:\"BEGIN:VEVENT\",\r\n\te_end:\"END:VEVENT\",\r\n\tc_end:\"END:VCALENDAR\"\t\r\n};\r\n\r\n}","export default function(scheduler){\r\n\treturn (function(){\r\n\t\tvar res = {};\r\n\t\tfor (var a in this._events){\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.id.toString().indexOf(\"#\") == -1){\r\n\t\t\t\tres[ev.id] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t}).bind(scheduler);\r\n}","import xmlLoaded from \"./loaders/xml\";\r\nimport jsonLoader from \"./loaders/json\";\r\nimport iCalLoader from \"./loaders/ical\";\r\nimport createSerializator from \"../core/common/get_serializable_events\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler._loaded = {};\r\nscheduler._load = function(url, from) {\r\n\turl = url || this._load_url;\r\n\r\n\tif(!url){\r\n\t\t//if scheduler.setLoadMode is called before scheduler.init, initial rendering will invoke data loading while url is undefined\r\n\t\treturn;\r\n\t}\r\n\r\n\turl += (url.indexOf(\"?\") == -1 ? \"?\" : \"&\") + \"timeshift=\" + (new Date()).getTimezoneOffset();\r\n\tif (this.config.prevent_cache) url += \"&uid=\" + this.uid();\r\n\tvar to;\r\n\tfrom = from || this._date;\r\n\tfunction ajaxCallback(response) {\r\n\t\tscheduler.on_load(response);\r\n\t\tscheduler.callEvent(\"onLoadEnd\", []);\r\n\t}\r\n\tif (this._load_mode) {\r\n\t\tvar lf = this.templates.load_format;\r\n\r\n\t\tfrom = this.date[this._load_mode + \"_start\"](new Date(from.valueOf()));\r\n\t\twhile (from > this._min_date) from = this.date.add(from, -1, this._load_mode);\r\n\t\tto = from;\r\n\r\n\t\tvar cache_line = true;\r\n\t\twhile (to < this._max_date) {\r\n\t\t\tto = this.date.add(to, 1, this._load_mode);\r\n\t\t\tif (this._loaded[lf(from)] && cache_line)\r\n\t\t\t\tfrom = this.date.add(from, 1, this._load_mode); else cache_line = false;\r\n\t\t}\r\n\r\n\t\tvar temp_to = to;\r\n\t\tdo {\r\n\t\t\tto = temp_to;\r\n\t\t\ttemp_to = this.date.add(to, -1, this._load_mode);\r\n\t\t} while (temp_to > from && this._loaded[lf(temp_to)]);\r\n\r\n\t\tif (to <= from)\r\n\t\t\treturn false; //already loaded\r\n\r\n\t\tscheduler.ajax.get(url + \"&from=\" + lf(from) + \"&to=\" + lf(to), ajaxCallback);\r\n\r\n\t\twhile (from < to) {\r\n\t\t\tthis._loaded[lf(from)] = true;\r\n\t\t\tfrom = this.date.add(from, 1, this._load_mode);\r\n\t\t}\r\n\t} else {\r\n\t\tscheduler.ajax.get(url, ajaxCallback);\r\n\t}\r\n\r\n\t// TODO: remove onXLS\r\n\tthis.callEvent(\"onXLS\", []);\r\n\tthis.callEvent(\"onLoadStart\", []);\r\n\treturn true;\r\n};\r\n\r\nscheduler._parsers = {};\r\n\r\n\r\nxmlLoaded(scheduler);\r\njsonLoader(scheduler);\r\niCalLoader(scheduler);\r\n\r\nscheduler.on_load = function (loader) {\r\n\tthis.callEvent(\"onBeforeParse\", []);\r\n\r\n\tvar evs;\r\n\tvar error = false;\r\n\r\n\tvar foundParser = false;\r\n\tfor(var i in this._parsers){\r\n\t\tvar parser = this._parsers[i];\r\n\t\tif(parser.canParse(loader.xmlDoc.responseText, loader.xmlDoc)){\r\n\t\t\ttry{\r\n\t\t\t\tvar param = loader.xmlDoc.responseText;\r\n\t\t\t\tif(i === \"xml\"){\r\n\t\t\t\t\tparam = loader;\r\n\t\t\t\t}\r\n\t\t\t\tevs = parser.parse(param);\r\n\t\t\t\tif(!evs){\r\n\t\t\t\t\terror = true;\r\n\t\t\t\t}\r\n\t\t\t}catch(e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t\tfoundParser = true;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif(!foundParser){\r\n\t\tif(this._process && this[this._process]){\r\n\t\t\ttry{\r\n\t\t\t\tevs = this[this._process].parse(loader.xmlDoc.responseText);\r\n\t\t\t}catch (e){\r\n\t\t\t\terror = true;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\terror = true;\r\n\t\t}\r\n\t}\r\n\r\n\tif(error || (loader.xmlDoc.status && loader.xmlDoc.status >= 400)){\r\n\t\tthis.callEvent(\"onLoadError\", [loader.xmlDoc]);\r\n\t\tevs = [];\r\n\t}\r\n\r\n\tthis._process_loading(evs);\r\n\r\n\t// TODO: remove onXLE\r\n\tthis.callEvent(\"onXLE\", []);\r\n\tthis.callEvent(\"onParse\", []);\r\n};\r\nscheduler._process_loading = function(evs) {\r\n\tthis._loading = true;\r\n\tthis._not_render = true;\r\n\tfor (var i = 0; i < evs.length; i++) {\r\n\t\tif (!this.callEvent(\"onEventLoading\", [evs[i]])) continue;\r\n\t\tthis.addEvent(evs[i]);\r\n\t}\r\n\tthis._not_render = false;\r\n\tif (this._render_wait) this.render_view_data();\r\n\r\n\tthis._loading = false;\r\n\tif (this._after_call) this._after_call();\r\n\tthis._after_call = null;\r\n};\r\nscheduler._init_event = function(event) {\r\n\tevent.text = (event.text || event._tagvalue) || \"\";\r\n\tevent.start_date = scheduler._init_date(event.start_date);\r\n\tevent.end_date = scheduler._init_date(event.end_date);\r\n};\r\n\r\nscheduler._init_date = function(date){\r\n\tif(!date)\r\n\t\treturn null;\r\n\tif (typeof date == \"string\") {\r\n\t\treturn scheduler._helpers.parseDate(date);\r\n\t}\r\n\telse return new Date(date);\r\n};\r\n\r\nconst getSerializableData = createSerializator(scheduler);\r\nscheduler.serialize = function(){\r\n\tconst dataset = [];\r\n\tconst allEvents = getSerializableData();\r\n\tfor (var a in allEvents){\r\n\t\t\r\n\t\tconst exportedEvent = {};\r\n\t\tvar ev = allEvents[a];\r\n\r\n\t\tfor(var key in ev){\r\n\t\t\tif (key.charAt(0) == \"$\" || key.charAt(0) == \"_\"){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet exportValue;\r\n\t\t\tconst rawValue = ev[key];\r\n\t\t\tif(scheduler.utils.isDate(rawValue)){\r\n\t\t\t\texportValue = scheduler.defined(scheduler.templates.xml_format) ? scheduler.templates.xml_format(rawValue) : scheduler.templates.format_date(rawValue);\r\n\t\t\t}else{\r\n\t\t\t\texportValue = rawValue;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\texportedEvent[key] = exportValue;\r\n\t\t}\r\n\r\n\t\tdataset.push(exportedEvent);\r\n\t}\r\n\treturn dataset;\r\n};\r\n\r\n/*\r\nscheduler.json = {};\r\nscheduler.json.parse = function(data) {\r\n\r\n\tvar events = [];\r\n\r\n\tif (typeof data == \"string\") {\r\n\t\tdata = JSON.parse(data);\r\n\t}\r\n\tif (Object.prototype.toString.call(data) === '[object Array]') {\r\n\t\tevents = data;\r\n\t} else {\r\n\t\tif(data){\r\n\t\t\tif(data.events){\r\n\t\t\t\tevents = data.events;\r\n\t\t\t}else if(data.data){\r\n\t\t\t\tevents = data.data;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tevents = events || [];\r\n\r\n\tif (data.dhx_security) {\r\n\t\tif (window.dhtmlx) {\r\n\t\t\twindow.dhtmlx.security_key = data.dhx_security;\r\n\t\t}\r\n\t\tscheduler.security_key = data.dhx_security;\r\n\t}\r\n\r\n\tvar collections = (data && data.collections) ? data.collections : {};\r\n\tvar collections_loaded = false;\r\n\tfor (var key in collections) {\r\n\t\tif (collections.hasOwnProperty(key)) {\r\n\t\t\tcollections_loaded = true;\r\n\t\t\tvar collection = collections[key];\r\n\t\t\tvar arr = scheduler.serverList[key];\r\n\t\t\tif (!arr) {\r\n\t\t\t\tscheduler.serverList[key] = arr = [];\r\n\t\t\t}\r\n\t\t\tarr.splice(0, arr.length); //clear old options\r\n\t\t\tfor (var j = 0; j < collection.length; j++) {\r\n\t\t\t\tvar option = collection[j];\r\n\t\t\t\tvar obj = { key: option.value, label: option.label }; // resulting option object\r\n\t\t\t\tfor (var option_key in option) {\r\n\t\t\t\t\tif (option.hasOwnProperty(option_key)) {\r\n\t\t\t\t\t\tif (option_key == \"value\" || option_key == \"label\")\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\tobj[option_key] = option[option_key]; // obj['value'] = option['value']\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tarr.push(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\tif (collections_loaded)\r\n\t\tscheduler.callEvent(\"onOptionsLoad\", []);\r\n\r\n\tvar evs = [];\r\n\tfor (var i = 0; i < events.length; i++) {\r\n\t\tvar event = events[i];\r\n\t\tscheduler._init_event(event);\r\n\t\tevs.push(event);\r\n\t}\r\n\treturn evs;\r\n};*/\r\nscheduler.parse = function(data, type) {\r\n\tthis._process = type;\r\n\tthis.on_load({xmlDoc: {responseText: data}});\r\n};\r\nscheduler.load = function(url, call) {\r\n\tif (typeof call == \"string\") {\r\n\t\tthis._process = call;\r\n\t\tcall = arguments[2];\r\n\t}\r\n\r\n\tthis._load_url = url;\r\n\tthis._after_call = call;\r\n\tthis._load(url, this._date);\r\n};\r\n//possible values - day,week,month,year,all\r\nscheduler.setLoadMode = function(mode) {\r\n\tif (mode == \"all\") mode = \"\";\r\n\tthis._load_mode = mode;\r\n};\r\n\r\nscheduler.serverList = function(name, array) {\r\n\tif (array) {\r\n\t\tthis.serverList[name] = array.slice(0);\r\n\t\treturn this.serverList[name];\r\n\t}\r\n\tthis.serverList[name] = (this.serverList[name] || []);\r\n\treturn this.serverList[name];\r\n};\r\nscheduler._userdata = {};\r\n\r\nscheduler._xmlNodeToJSON = function(node) {\r\n\tvar t = {};\r\n\tfor (var i = 0; i < node.attributes.length; i++)\r\n\t\tt[node.attributes[i].name] = node.attributes[i].value;\r\n\r\n\tfor (var i = 0; i < node.childNodes.length; i++) {\r\n\t\tvar child = node.childNodes[i];\r\n\t\tif (child.nodeType == 1)\r\n\t\t\tt[child.tagName] = child.firstChild ? child.firstChild.nodeValue : \"\";\r\n\t}\r\n\r\n\tif (!t.text) t.text = node.firstChild ? node.firstChild.nodeValue : \"\";\r\n\r\n\treturn t;\r\n};\r\nscheduler.attachEvent(\"onXLS\", function() {\r\n\tif (this.config.show_loading === true) {\r\n\t\tvar t;\r\n\t\tt = this.config.show_loading = document.createElement(\"div\");\r\n\t\tt.className = 'dhx_loading';\r\n\t\tt.style.left = Math.round((this._x - 128) / 2) + \"px\";\r\n\t\tt.style.top = Math.round((this._y - 15) / 2) + \"px\";\r\n\t\tthis._obj.appendChild(t);\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onXLE\", function() {\r\n\tvar t = this.config.show_loading;\r\n\tif (t && typeof t == \"object\") {\r\n\t\tif(t.parentNode) {\r\n\t\t\tt.parentNode.removeChild(t);\r\n\t\t}\r\n\t\tthis.config.show_loading = true;\r\n\t}\r\n});\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler._lightbox_controls = {};\r\nscheduler.formSection = function(name){\r\n\tvar config = this.config.lightbox.sections;\r\n\tvar i = 0;\r\n\tfor (i; i < config.length; i++) {\r\n\t\tif (config[i].name == name) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\tif (i === config.length) {\r\n\t\t// GS-1662 section not found, should exit here instead of throwing an error\r\n\t\treturn null;\r\n\t}\r\n\r\n\tvar section = config[i];\r\n\tif (!scheduler._lightbox) {\r\n\t\tscheduler.getLightbox();\r\n\t}\r\n\tvar header = scheduler._lightbox.querySelector(`#${section.id}`);\r\n\tvar node = header.nextSibling;\r\n\r\n\tvar result = {\r\n\t\tsection: section,\r\n\t\theader: header,\r\n\t\tnode: node,\r\n\t\tgetValue:function(ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].get_value(node, (ev||{}), section);\r\n\t\t},\r\n\t\tsetValue:function(value, ev){\r\n\t\t\treturn scheduler.form_blocks[section.type].set_value(node, value, (ev||{}), section);\r\n\t\t}\r\n\t};\r\n\r\n\tvar handler = scheduler._lightbox_controls[\"get_\"+section.type+\"_control\"];\r\n\treturn handler?handler(result):result;\r\n};\r\nscheduler._lightbox_controls.get_template_control = function(result) {\r\n\tresult.control = result.node;\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_select_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_textarea_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('textarea')[0];\r\n\treturn result;\r\n};\r\nscheduler._lightbox_controls.get_time_control = function(result) {\r\n\tresult.control = result.node.getElementsByTagName('select'); // array\r\n\treturn result;\r\n};\r\n\r\nscheduler._lightbox_controls.defaults = {\r\n\ttemplate: {\r\n\t\theight:30\r\n\t},\r\n\ttextarea: {\r\n\t\theight: 200\r\n\t},\r\n\tselect: {\r\n\t\theight: 23\r\n\t},\r\n\ttime: {\r\n\t\theight: 20\r\n\t}\r\n};\r\n\r\n\r\nscheduler.form_blocks={\r\n\ttemplate:{\r\n\t\trender: function(sns){\r\n\t\t\treturn \"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tnode.innerHTML = value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev,config){\r\n\t\t\treturn node.innerHTML||\"\";\r\n\t\t},\r\n\t\tfocus: function(node){\r\n\t\t}\r\n\t},\r\n\ttextarea:{\r\n\t\trender:function(sns){\r\n\t\t\tconst placeholder = sns.placeholder ? `placeholder='${sns.placeholder}'` : \"\";\r\n\t\t\treturn `
`;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev){\r\n\t\t\tscheduler.form_blocks.textarea._get_input(node).value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn scheduler.form_blocks.textarea._get_input(node).value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a = scheduler.form_blocks.textarea._get_input(node);\r\n\t\t\tscheduler._focus(a, true);\r\n\t\t},\r\n\t\t_get_input: function(node){\r\n\t\t\treturn node.getElementsByTagName(\"textarea\")[0];\r\n\t\t}\r\n\t},\r\n\tselect:{\r\n\t\trender:function(sns){\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\t\t\tvar html=\"
\";\r\n\t\t\treturn html;\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,sns){\r\n\t\t\tvar select = node.firstChild;\r\n\t\t\tif (!select._dhx_onchange && sns.onchange) {\r\n\t\t\t\tscheduler.event(select, \"change\", sns.onchange);\r\n\t\t\t\tselect._dhx_onchange = true;\r\n\t\t\t}\r\n\t\t\tif (typeof value == \"undefined\")\r\n\t\t\t\tvalue = (select.options[0]||{}).value;\r\n\t\t\tselect.value=value||\"\";\r\n\t\t},\r\n\t\tget_value:function(node,ev){\r\n\t\t\treturn node.firstChild.value;\r\n\t\t},\r\n\t\tfocus:function(node){\r\n\t\t\tvar a=node.firstChild; scheduler._focus(a, true);\r\n\t\t}\r\n\t},\r\n\ttime:{\r\n\t\trender:function(sns) {\r\n\t\t\tif (!sns.time_format) {\r\n\t\t\t\t// default order\r\n\t\t\t\tsns.time_format = [\"%H:%i\", \"%d\", \"%m\", \"%Y\"];\r\n\t\t\t}\r\n\t\t\t// map: default order => real one\r\n\t\t\tsns._time_format_order = {};\r\n\t\t\tvar time_format = sns.time_format;\r\n\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar dt = scheduler.date.date_part(scheduler._currentDate());\r\n\t\t\tvar last = 24*60, first = 0;\r\n\t\t\tif(scheduler.config.limit_time_select){\r\n\t\t\t\tlast = 60*cfg.last_hour+1;\r\n\t\t\t\tfirst = 60*cfg.first_hour;\r\n\t\t\t\tdt.setHours(cfg.first_hour);\r\n\t\t\t}\r\n\t\t\tvar html = \"\";\r\n\r\n\t\t\tfor (var p = 0; p < time_format.length; p++) {\r\n\t\t\t\tvar time_option = time_format[p];\r\n\r\n\t\t\t\t// adding spaces between selects\r\n\t\t\t\tif (p > 0) {\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t\tvar selectBoxClass = \"\";\r\n\t\t\t\tvar options = \"\";\r\n\t\t\t\tswitch (time_option) {\r\n\t\t\t\t\tcase \"%Y\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_year_select\";\r\n\t\t\t\t\t\tsns._time_format_order[3] = p;\r\n\t\t\t\t\t\t//year\r\n\t\t\t\t\t\tvar range;\r\n\t\t\t\t\t\tvar start_year;\r\n\t\t\t\t\t\tvar end_year;\r\n\t\t\t\t\t\tif(sns.year_range){\r\n\t\t\t\t\t\t\tif (!isNaN(sns.year_range)) {\r\n\t\t\t\t\t\t\t\trange = sns.year_range;\r\n\t\t\t\t\t\t\t} else if (sns.year_range.push) {\r\n\t\t\t\t\t\t\t\t// if\r\n\t\t\t\t\t\t\t\tstart_year = sns.year_range[0];\r\n\t\t\t\t\t\t\t\tend_year = sns.year_range[1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\trange = range || 10;\r\n\t\t\t\t\t\tvar offset = offset || Math.floor(range / 2);\r\n\t\t\t\t\t\tstart_year = start_year || dt.getFullYear() - offset;\r\n\t\t\t\t\t\tend_year = end_year || start_year + range;\r\n\r\n\t\t\t\t\t\tfor (var i = start_year; i < end_year; i++)\r\n\t\t\t\t\t\t\toptions += \"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%m\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_month_select\";\r\n\t\t\t\t\t\tsns._time_format_order[2] = p;\r\n\t\t\t\t\t\t//month\r\n\t\t\t\t\t\tfor (var i=0; i < 12; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%d\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_day_select\";\r\n\t\t\t\t\t\tsns._time_format_order[1] = p;\r\n\t\t\t\t\t\t//days\r\n\t\t\t\t\t\tfor (var i=1; i < 32; i++)\r\n\t\t\t\t\t\t\toptions+=\"\";\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"%H:%i\":\r\n\t\t\t\t\t\tselectBoxClass = \"dhx_lightbox_time_select\";\r\n\t\t\t\t\t\tsns._time_format_order[0] = p;\r\n\t\t\t\t\t\t//hours\r\n\t\t\t\t\t\tvar i = first;\r\n\t\t\t\t\t\tvar tdate = dt.getDate();\r\n\t\t\t\t\t\tsns._time_values = [];\r\n\r\n\t\t\t\t\t\twhile(i\"+time+\"\";\r\n\t\t\t\t\t\t\tsns._time_values.push(i);\r\n\t\t\t\t\t\t\tdt.setTime(dt.valueOf()+this.config.time_step*60*1000);\r\n\t\t\t\t\t\t\tvar diff = (dt.getDate()!=tdate)?1:0; // moved or not to the next day\r\n\t\t\t\t\t\t\ti=diff*24*60+dt.getHours()*60+dt.getMinutes();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(options){\r\n\r\n\t\t\t\t\tvar ariaAttrs = scheduler._waiAria.lightboxSelectAttrString(time_option);\r\n\t\t\t\t\tvar readonly = sns.readonly ? \"disabled='disabled'\" : \"\";\r\n\t\t\t\t\thtml += \" \";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t//var defaults = scheduler._lightbox_controls.defaults.select;\r\n\r\n\t\t\treturn \"
\"+html+\"  –  \"+html+\"
\";\r\n\t\t},\r\n\t\tset_value:function(node,value,ev,config){\r\n\t\t\tvar cfg = scheduler.config;\r\n\t\t\tvar s=node.getElementsByTagName(\"select\");\r\n\t\t\tvar map = config._time_format_order;\r\n\t\t\tvar start_date, end_date;\r\n\r\n\t\t\tif(cfg.full_day) {\r\n\t\t\t\tif (!node._full_day){\r\n\t\t\t\t\tvar html = \"\";\r\n\t\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\t\thtml = node.previousSibling.innerHTML+html;\r\n\t\t\t\t\tnode.previousSibling.innerHTML=html;\r\n\t\t\t\t\tnode._full_day=true;\r\n\t\t\t\t}\r\n\t\t\t\tvar input=node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\t\t\t\tinput.checked = (scheduler.date.time_part(ev.start_date)===0 && scheduler.date.time_part(ev.end_date)===0);\r\n\r\n\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\tif(!input.$_eventAttached){\r\n\t\t\t\t\tinput.$_eventAttached = true;\r\n\r\n\t\t\t\t\t\tscheduler.event(input, \"click\", function(){\r\n\t\t\t\t\t\tif(input.checked) {\r\n\t\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\t\tscheduler.form_blocks.time.get_value(node,obj,config);\r\n\r\n\t\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tstart_date = null;\r\n\t\t\t\t\t\t\tend_date = null;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ts[map[0]].disabled=input.checked;\r\n\t\t\t\t\t\ts[ map[0] + s.length/2 ].disabled=input.checked;\r\n\r\n\t\t\t\t\t\t_fill_lightbox_select(s,0,start_date||ev.start_date);\r\n\t\t\t\t\t\t_fill_lightbox_select(s,4,end_date||ev.end_date);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(cfg.auto_end_date && cfg.event_duration) {\r\n\t\t\t\tvar _update_lightbox_select = function () {\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (!(cfg.auto_end_date && cfg.event_duration)){\r\n\t\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tstart_date = new Date(s[map[3]].value,s[map[2]].value,s[map[1]].value,0,s[map[0]].value);\r\n\t\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\t\t\t\t\t_fill_lightbox_select(s, 4, end_date);\r\n\t\t\t\t};\r\n\t\t\t\tfor(var i=0; i<4; i++) {\r\n\t\t\t\t\tif(!s[i].$_eventAttached) {\r\n\t\t\t\t\t\ts[i].$_eventAttached = true;\r\n\t\t\t\t\t\tscheduler.event(s[i], \"change\", _update_lightbox_select);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction _fill_lightbox_select(s,i,d) {\r\n\t\t\t\tvar time_values = config._time_values;\r\n\t\t\t\tvar direct_value = d.getHours()*60+d.getMinutes();\r\n\t\t\t\tvar fixed_value = direct_value;\r\n\t\t\t\tvar value_found = false;\r\n\t\t\t\tfor (var k=0; k\";\r\n\t\tvar ariaAttr = \"\";\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\r\n\t\tbuttons = this.config.buttons_right;\r\n\t\tvar rtl = scheduler.config.rtl;\r\n\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\tariaAttr = this._waiAria.lightboxButtonAttrString(buttons[i]);\r\n\r\n\t\t\thtml += \"
\";\r\n\r\n\t\t\thtml += \"
\" + scheduler.locale.labels[buttons[i]] + \"
\";\r\n\t\t}\r\n\t\thtml += \"\";\r\n\t\thtml+=\"\";\r\n\t\td.innerHTML=html;\r\n\t\tif (scheduler.config.drag_lightbox){\r\n\t\t\tscheduler.event(d.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\tscheduler.event(d.firstChild, \"selectstart\", function(e){ \r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn false; \r\n\t\t\t});\r\n\t\t\td.firstChild.style.cursor = \"move\";\r\n\t\t\tscheduler._init_dnd_events();\r\n\r\n\t\t}\r\n\r\n\t\tthis._waiAria.lightboxAttr(d);\r\n\r\n\t\tthis.show_cover();\r\n\t\tthis._cover.insertBefore(d,this._cover.firstChild);\r\n\t\t\r\n\t\tthis._lightbox=d;\r\n\r\n\t\tvar sns=this.config.lightbox.sections;\r\n\t\thtml=\"\";\r\n\t\tfor (var i=0; i < sns.length; i++) {\r\n\t\t\tvar block=this.form_blocks[sns[i].type];\r\n\t\t\tif (!block) continue; //ignore incorrect blocks\r\n\t\t\tsns[i].id=\"area_\"+this.uid();\r\n\t\t\tvar button = \"\";\r\n\t\t\tif (sns[i].button){\r\n\t\t\t\tvar ariaAttr = scheduler._waiAria.lightboxSectionButtonAttrString(this.locale.labels[\"button_\"+sns[i].button]);\r\n\t\t\t\tbutton = \"
\"+this.locale.labels[\"button_\"+sns[i].button]+\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tif (this.config.wide_form){\r\n\t\t\t\thtml+=\"
\";\r\n\t\t\t}\r\n\r\n\t\t\tvar label_name = this.locale.labels[\"section_\"+sns[i].name];\r\n\t\t\tif(typeof label_name !== \"string\"){\r\n\t\t\t\tlabel_name = sns[i].name;\r\n\t\t\t}\r\n\t\t\thtml+=\"
\"+button+ \"
\"+block.render.call(this,sns[i]);\r\n\t\t\thtml+=\"
\";\r\n\t\t}\r\n\r\n\t\tvar ds=d.getElementsByTagName(\"div\");\r\n\t\tfor (var i=0; i
 \r\n
\r\n
\r\n\r\n
`;\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._init_touch_events = function(){\r\n\tvar mobile = this.config.touch &&\r\n\t\t( ((navigator.userAgent.indexOf(\"Mobile\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"iPad\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Android\")!=-1) ||\r\n\t\t\t(navigator.userAgent.indexOf(\"Touch\")!=-1)) && !window.MSStream) ||\r\n\t\t\t((navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1));\r\n\r\n\tif(mobile){\r\n\t\tthis.xy.scroll_width = 0;\r\n\t\tthis._mobile = true;\r\n\t}\r\n\r\n\tif(this.config.touch){\r\n\r\n\t\tvar touchEventsSupported = true;\r\n\t\ttry {\r\n\t\t\tdocument.createEvent(\"TouchEvent\");\r\n\t\t} catch (e) {\r\n\t\t\ttouchEventsSupported = false;\r\n\t\t}\r\n\r\n\t\tif (touchEventsSupported) {\r\n\t\t\tthis._touch_events([\"touchmove\", \"touchstart\", \"touchend\"], function (ev) {\r\n\t\t\t\tif (ev.touches && ev.touches.length > 1) return null;\r\n\t\t\t\tif (ev.touches[0])\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\ttarget: ev.target,\r\n\t\t\t\t\t\tpageX: ev.touches[0].pageX,\r\n\t\t\t\t\t\tpageY: ev.touches[0].pageY,\r\n\t\t\t\t\t\tclientX: ev.touches[0].clientX,\r\n\t\t\t\t\t\tclientY: ev.touches[0].clientY\r\n\t\t\t\t\t};\r\n\t\t\t\telse\r\n\t\t\t\t\treturn ev;\r\n\t\t\t}, function () {\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\t\t} else if (window.PointerEvent || window.navigator.pointerEnabled) {\r\n\t\t\tthis._touch_events([\"pointermove\", \"pointerdown\", \"pointerup\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == \"mouse\") return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || (ev.pointerType == \"mouse\" ));\r\n\t\t\t});\r\n\t\t} else if (window.navigator.msPointerEnabled) {\r\n\t\t\tthis._touch_events([\"MSPointerMove\", \"MSPointerDown\", \"MSPointerUp\"], function (ev) {\r\n\t\t\t\tif (ev.pointerType == ev.MSPOINTER_TYPE_MOUSE) return null;\r\n\t\t\t\treturn ev;\r\n\t\t\t}, function (ev) {\r\n\t\t\t\treturn (!ev || ev.pointerType == ev.MSPOINTER_TYPE_MOUSE);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n};\r\n\r\nscheduler._touch_events = function(names, accessor, ignore){\r\n\t//webkit on android need to be handled separately\r\n\t//var a_webkit = (navigator.userAgent.indexOf(\"Android\")!=-1) && (navigator.userAgent.indexOf(\"WebKit\")!=-1);\r\n\tvar source, tracker, timer, drag_mode, scroll_mode, action_mode;\r\n\tvar dblclicktime = 0;\r\n\r\n\tfunction attachTouchEvent(element, name, callback){\r\n\t\t//touch gestures must be disabled when ligthbox is opened\r\n\t\tscheduler.event(element, name, function(e){\r\n\t\t\tif(scheduler._is_lightbox_open()){\r\n\t\t\t\treturn true;\r\n\t\t\t}else{\r\n\t\t\t\tif (ignore(e)) return;\r\n\t\t\t\treturn callback(e);\r\n\t\t\t}\r\n\t\t}, { passive: false });\r\n\t}\r\n\r\n\tfunction check_direction_swipe(s_ev, e_ev, step, max_dy){\r\n\t\tif (!s_ev || !e_ev) return false;\r\n\r\n\t\tvar t = s_ev.target;\r\n\t\twhile(t && t != scheduler._obj){\r\n\t\t\tt = t.parentNode;\r\n\t\t}\r\n\t\tif(t != scheduler._obj){\r\n\t\t\t//swipe outside scheduler\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// ignore swipe in horizontal timeline\r\n\t\tif(scheduler.matrix && scheduler.matrix[scheduler.getState().mode]){\r\n\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\tif(timeline.scrollable){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar dy = Math.abs(s_ev.pageY - e_ev.pageY);\r\n\t\tvar dx = Math.abs(s_ev.pageX - e_ev.pageX);\r\n\t\tif (dy < max_dy && dx>step && (!dy || (dx/dy > 3))){\r\n\t\t\tif (s_ev.pageX > e_ev.pageX) {\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t}else {\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction doMouseMove(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tvar dnd = scheduler.getState().drag_mode,\r\n\t\t\ttimeline = scheduler.matrix ? scheduler.matrix[scheduler._mode] : false;\r\n\r\n\t\tvar original_render = scheduler.render_view_data;\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\t//suppress full redraw of timeline on creating event\r\n\t\t\tscheduler.render_view_data = function() {\r\n\t\t\t\tvar id = scheduler.getState().drag_id;\r\n\t\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\t\tvar property = timeline.y_property;\r\n\r\n\t\t\t\tvar evs = scheduler.getEvents(ev.start_date, ev.end_date);\r\n\t\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\t\tif(evs[i][property] != ev[property]){\r\n\t\t\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tev._sorder = evs.length - 1;\r\n\t\t\t\tev._count = evs.length;\r\n\r\n\t\t\t\tthis.render_data([ev], scheduler.getState().mode);\r\n\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscheduler._on_mouse_move(e);\r\n\r\n\t\tif(dnd == 'create' && timeline){\r\n\t\t\tscheduler.render_view_data = original_render;\r\n\t\t}\r\n\r\n\t\tif (e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\te.cancelBubble = true;\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// touchmove\r\n\tattachTouchEvent(document.body, names[0], function(e){\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tvar acc = accessor(e);\r\n\t\tif(!acc) return;\r\n\t\tif (drag_mode){\r\n\t\t\tdoMouseMove(acc);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._update_global_tip();\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//if (tracker && a_webkit){\r\n\t\t//\tcheck_direction_swipe(tracker, accessor(e), 0);\r\n\t\t//}\r\n\r\n\t\ttracker = accessor(e);\r\n\t\t//ignore common and scrolling moves\r\n\t\tif (!action_mode) return;\r\n\r\n\t\t//multitouch\r\n\t\tif (!tracker){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//target changed - probably in scroll mode\r\n\r\n\t\tif (source.target != tracker.target || (Math.abs(source.pageX - tracker.pageX) > 5) || (Math.abs(source.pageY - tracker.pageY) > 5)){\r\n\t\t\tscroll_mode = true;\r\n\t\t\tclearTimeout(timer);\r\n\t\t}\r\n\r\n\t});\r\n\r\n\t//attachTouchEvent(this._els[\"dhx_cal_data\"][0], \"scroll\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"touchcancel\", drag_cancel);\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], \"contextmenu\", function(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tif (action_mode){\r\n\t\t\tif (e && e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\t// touchstart\r\n\tattachTouchEvent(this._obj, names[1], function(e){\r\n\t\t// block pull-to-refresh\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.add(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._pointerDragId = e.pointerId;\r\n\r\n\t\tvar fake_event;\r\n\t\tdrag_mode = scroll_mode = false;\r\n\t\taction_mode = true;\r\n\t\tfake_event = tracker = accessor(e);\r\n\r\n\t\tif (!fake_event){\r\n\t\t\tscroll_mode = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//dbl click\r\n\t\tvar now = new Date();\r\n\r\n\t\tif (!scroll_mode && !drag_mode && now - dblclicktime < 250){\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\twindow.setTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t//fake_event.type = \"dblclick\";\r\n\t\t\t\tscheduler._on_dbl_click(fake_event);\r\n\t\t\t}, 50);\r\n\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._block_next_stop = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tdblclicktime = now;\r\n\r\n\t\t//drag\r\n\r\n\t\tif (scroll_mode || drag_mode || !scheduler.config.touch_drag)\r\n\t\t\treturn;\r\n\r\n\t\tvar actTask = scheduler._locate_event(document.activeElement);\r\n\t\tvar fakeTask = scheduler._locate_event(fake_event.target);\r\n\t\tvar sourceTask = source? scheduler._locate_event(source.target) : null;\r\n\r\n\t\tif(actTask && fakeTask && actTask == fakeTask && actTask != sourceTask)\r\n\t\t{\r\n\t\t\tif(e.preventDefault) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t\te.cancelBubble = true;\r\n\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\tscheduler._click.dhx_cal_data(fake_event);\r\n\t\t\tsource = fake_event;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t//there is no target\r\n\t\ttimer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tdrag_mode = true;\r\n\t\t\tvar target = source.target;\r\n\t\t\tvar className = scheduler._getClassName(target);\r\n\t\t\tif (target && className.indexOf(\"dhx_body\") != -1)\r\n\t\t\t\ttarget = target.previousSibling;\r\n\r\n\t\t\tscheduler._on_mouse_down(source, target);\r\n\t\t\tif (scheduler._drag_mode && scheduler._drag_mode != \"create\"){\r\n\t\t\t\tscheduler.for_rendered(scheduler._drag_id, function(node, i) {\r\n\t\t\t\t\tnode.style.display='none';\r\n\t\t\t\t\tscheduler._rendered.splice(i, 1);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (scheduler.config.touch_tip) {\r\n\t\t\t\tscheduler._show_global_tip();\r\n\t\t\t}\r\n\t\t\tscheduler.updateEvent(scheduler._drag_id);\r\n\t\t},scheduler.config.touch_drag);\r\n\r\n\t\tsource = fake_event;\r\n\t});\r\n\tfunction drag_cancel(e){\r\n\t\tif (ignore(e)) return;\r\n\t\tscheduler._hide_global_tip();\r\n\t\tif (drag_mode){\r\n\t\t\tscheduler._on_mouse_up( accessor(e) );\r\n\t\t\tscheduler._temp_touch_block = false;\r\n\t\t}\r\n\t\tscheduler._drag_id = null;\r\n\t\tscheduler._drag_mode=null;\r\n\t\tscheduler._drag_pos=null;\r\n\t\tscheduler._pointerDragId = null;\r\n\t\tclearTimeout(timer);\r\n\t\tdrag_mode = action_mode = false;\r\n\t\tscroll_mode = true;\r\n\t}\r\n\r\n\t// touch end\r\n\tattachTouchEvent(this._els[\"dhx_cal_data\"][0], names[2], function(e){\r\n\t\tif(document && document.body){\r\n\t\t\tdocument.body.classList.remove(\"dhx_cal_touch_active\");\r\n\t\t}\r\n\r\n\t\tif (ignore(e)) return;\r\n\r\n\t\tif(scheduler.config.touch_swipe_dates){\r\n\t\t\tif (!drag_mode && check_direction_swipe(source, tracker, 200, 100)) {\r\n\t\t\t\tscheduler._block_next_stop = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (drag_mode) {\r\n\t\t\tscheduler._ignore_next_click = true;\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tscheduler._ignore_next_click = false;\r\n\t\t\t}, 100);\r\n\t\t}\r\n\r\n\t\tdrag_cancel(e);\r\n\t\tif (scheduler._block_next_stop){\r\n\t\t\tscheduler._block_next_stop = false;\r\n\t\t\tif (e.preventDefault)\r\n\t\t\t\te.preventDefault();\r\n\t\t\te.cancelBubble = true;\r\n\t\t\treturn false;\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.event(document.body, names[2], drag_cancel);\r\n};\r\n\r\nscheduler._show_global_tip = function(){\r\n\tscheduler._hide_global_tip();\r\n\r\n\tvar toptip = scheduler._global_tip = document.createElement(\"div\");\r\n\ttoptip.className='dhx_global_tip';\r\n\r\n\tscheduler._update_global_tip(1);\r\n\r\n\tdocument.body.appendChild(toptip);\r\n};\r\nscheduler._update_global_tip = function(init){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip){\r\n\t\tvar time = \"\";\r\n\t\tif (scheduler._drag_id && !init){\r\n\t\t\tvar ev = scheduler.getEvent(scheduler._drag_id);\r\n\t\t\tif (ev)\r\n\t\t\t\ttime = \"
\" + (ev._timed ? scheduler.templates.event_header(ev.start_date, ev.end_date, ev):scheduler.templates.day_date(ev.start_date, ev.end_date, ev)) + \"
\";\r\n\t\t}\r\n\r\n\t\tif (scheduler._drag_mode == \"create\" || scheduler._drag_mode == \"new-size\")\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_create || \"Drag to create\")+time;\r\n\t\telse\r\n\t\t\ttoptip.innerHTML = (scheduler.locale.labels.drag_to_move || \"Drag to move\")+time;\r\n\t}\r\n};\r\nscheduler._hide_global_tip = function(){\r\n\tvar toptip = scheduler._global_tip;\r\n\tif (toptip && toptip.parentNode){\r\n\t\ttoptip.parentNode.removeChild(toptip);\r\n\t\tscheduler._global_tip = 0;\r\n\t}\r\n};\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nscheduler.getRootView = function() {\r\n\treturn {\r\n\t\tview: {\r\n\t\t\trender: function(){\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttag: \"div\",\r\n\t\t\t\t\ttype: 1,\r\n\t\t\t\t\tattrs: {\r\n\t\t\t\t\t\tstyle: \"width:100%;height:100%;\"\r\n\t\t\t\t\t},\r\n\t\t\t\t\thooks: {\r\n\t\t\t\t\t\t\"didInsert\": function(){\r\n\t\t\t\t\t\t\tscheduler.setCurrentView();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbody: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tel: this.el,\r\n\t\t\t\t\t\t\ttype: 1\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t};\r\n\t\t\t},\r\n\t\t\tinit: function(){\r\n\t\t\t\tvar container = document.createElement(\"DIV\");\r\n\t\t\t\tcontainer.id = \"scheduler_\"+ scheduler.uid();\r\n\t\t\t\tcontainer.style.width = \"100%\";\r\n\t\t\t\tcontainer.style.height = \"100%\";\r\n\t\t\t\tcontainer.classList.add(\"dhx_cal_container\");\r\n\t\t\t\tcontainer.cmp = \"grid\";\r\n\t\t\t\tcontainer.innerHTML = '
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
' +\r\n\t\t\t\t\t'
';\r\n\t\t\t\tscheduler.init(container);\r\n\r\n\t\t\t\tthis.el = container;\r\n\t\t\t}\r\n\t\t},\r\n\t\ttype: 4\r\n\t};\r\n};\r\n\r\n}","export default function extend(scheduler) {\r\n\r\n\r\nscheduler._addThemeClass = function(){\r\n\tdocument.documentElement.setAttribute(\"data-scheduler-theme\", scheduler.skin);\r\n};\r\n\r\nscheduler._skin_settings = {\r\n\tfix_tab_position: [1,0],\r\n\tuse_select_menu_space: [1,0],\r\n\twide_form: [1,0],\r\n\r\n\thour_size_px: [44,42],\r\n\tdisplayed_event_color: [\"#ff4a4a\", \"ffc5ab\"],\r\n\tdisplayed_event_text_color: [\"#ffef80\", \"7e2727\"]\r\n};\r\n\r\nscheduler._skin_xy = {\r\n\tlightbox_additional_height: [90,50],\r\n\tnav_height: [59,22],\r\n\tbar_height: [24,20]\r\n};\r\n\r\n// material skin uses a different box sizing model than other skins, and also requires some post-processing.\r\n// In order to render events correctly, we need to know which box sizing model is used\r\n// We can detect it by styles applied, taking into account that styles may be loaded after scheduler is rendered\r\n\r\nscheduler._is_material_skin = function(){\r\n\tif(!scheduler.skin){\r\n\t\treturn checkIfMaterialSkin();\r\n\t}else{\r\n\t\treturn ((scheduler.skin + \"\").indexOf(\"material\") > -1);\r\n\t}\r\n};\r\n\r\nfunction themeNameFromFile(){\r\n\tvar links = document.getElementsByTagName(\"link\");\r\n\tfor (var i = 0; i < links.length; i++) {\r\n\t\tvar res = links[i].href.match(\"dhtmlxscheduler_([a-z]+).css\");\r\n\t\tif (res){\r\n\t\t\treturn res[1];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nscheduler._build_skin_info = function() {\r\n\tmonitorThemeChange();\r\n\tconst styles = getComputedStyle(this.$container);\r\n\tconst themeVar = styles.getPropertyValue(\"--dhx-scheduler-theme\");\r\n\r\n\tlet isCssVarTheme = !!themeVar;\r\n\tlet themeName;\r\n\tlet cssValues = {};\r\n\tlet oldMaterialTheme = false;\r\n\r\n\tif(isCssVarTheme){\r\n\t\tthemeName = themeVar;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tcssValues[i] = styles.getPropertyValue(`--dhx-scheduler-xy-${i}`);\r\n\t\t}\r\n\r\n\t\tcssValues.hour_size_px = styles.getPropertyValue(`--dhx-scheduler-config-hour_size_px`);\r\n\t\tcssValues.wide_form = styles.getPropertyValue(`--dhx-scheduler-config-form_wide`);\r\n\r\n\t}else{\r\n\t\tthemeName = themeNameFromFile();\r\n\t\toldMaterialTheme = scheduler._is_material_skin();\r\n\t}\r\n\r\n\r\n\tscheduler._theme_info = {\r\n\t\ttheme: themeName,\r\n\t\tcssVarTheme: isCssVarTheme,\r\n\t\toldMaterialTheme: oldMaterialTheme,\r\n\t\tvalues: cssValues\r\n\t};\r\n\r\n\tif(scheduler._theme_info.cssVarTheme){\r\n\t\tconst themeVariables = this._theme_info.values;\r\n\t\tfor(let i in scheduler.xy){\r\n\t\t\tif(!isNaN(parseInt(themeVariables[i]))){\r\n\t\t\t\tscheduler.xy[i] = parseInt(themeVariables[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar calculatedMaterial;\r\nfunction checkIfMaterialSkin(){\r\n\tif(calculatedMaterial === undefined){\r\n\t\tvar probe = document.createElement(\"div\");\r\n\t\tprobe.style.position = \"absolute\";\r\n\t\tprobe.style.left = \"-9999px\";\r\n\t\tprobe.style.top = \"-9999px\";\r\n\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\t\"
\"+\r\n\t\t\"
\";\r\n\t\tdocument.body.appendChild(probe);\r\n\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_cal_scale_placeholder\"));\r\n\t\tvar position = styles.getPropertyValue('position');\r\n\t\tif(position === \"absolute\"){\r\n\t\t\t// page has skins for placeholder element from material skin\r\n\t\t\tcalculatedMaterial = true;\r\n\t\t}else{\r\n\t\t\tcalculatedMaterial = false;\r\n\t\t}\r\n\r\n\t\tsetTimeout(function(){\r\n\t\t\tcalculatedMaterial = null;\r\n\t\t\tif(probe && probe.parentNode){\r\n\t\t\t\tprobe.parentNode.removeChild(probe);\r\n\t\t\t}\r\n\t\t}, 500);\r\n\t}\r\n\treturn calculatedMaterial;\r\n}\r\n\r\nvar cachedBorderBoxValue;\r\nfunction checkIfBorderBoxStyling(){\r\n\tif(scheduler._is_material_skin()){\r\n\t\treturn true;\r\n\t}else{\r\n\t\tif(cachedBorderBoxValue === undefined){\r\n\t\t\tvar probe = document.createElement(\"div\");\r\n\t\t\tprobe.style.position = \"absolute\";\r\n\t\t\tprobe.style.left = \"-9999px\";\r\n\t\t\tprobe.style.top = \"-9999px\";\r\n\t\t\tprobe.innerHTML = \"
\" +\r\n\t\t\t\t\"
\" +\r\n\t\t\t\t\t\"
\"+\r\n\t\t\t\t\"
\"+\r\n\t\t\t\"
\";\r\n\r\n\t\t\tdocument.body.appendChild(probe);\r\n\t\t\tvar styles = window.getComputedStyle(probe.querySelector(\".dhx_body\"));\r\n\t\t\tvar boxSizing = styles.getPropertyValue('box-sizing');\r\n\t\t\tdocument.body.removeChild(probe);\r\n\t\t\tcachedBorderBoxValue = !!(boxSizing === \"border-box\");\r\n\r\n\t\t\tif(!cachedBorderBoxValue){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tcachedBorderBoxValue = undefined;\r\n\t\t\t\t}, 1000);// recalculate in case scheduler initialized before skin is loaded\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\treturn cachedBorderBoxValue;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction refreshAfterLoad(){\r\n\tif(scheduler._is_material_skin() || scheduler._border_box_events()){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar oldStyling = cachedBorderBoxValue;\r\n\tcachedBorderBoxValue = undefined;\r\n\tcalculatedMaterial = undefined;\r\n\tvar newStyling = checkIfBorderBoxStyling();\r\n\r\n\t// if box styling model changed - means scheduler was rendered before stylesheet was loaded or parsed inline\r\n\t// repaint scheduler in order to apply new styles\r\n\tif(oldStyling !== newStyling && scheduler.$container && scheduler.getState().mode){\r\n\t\tscheduler.setCurrentView();\r\n\t}\r\n}\r\nscheduler.event(window, 'DOMContentLoaded', refreshAfterLoad);\r\nscheduler.event(window, 'load', refreshAfterLoad);\r\n\r\nscheduler._border_box_events = function(){\r\n\treturn checkIfBorderBoxStyling();\r\n};\r\n\r\nscheduler._configure = function(col, data, skin){\r\n\tfor (var key in data)\r\n\t\tif (typeof col[key] == \"undefined\")\r\n\t\t\tcol[key] = data[key][skin];\r\n};\r\n\r\nscheduler.setSkin = function(value){\r\n\tthis.skin = value;\r\n\tscheduler._addThemeClass();\r\n\tif(scheduler.$container){\r\n\t\tthis._skin_init();\r\n\t\tthis.render();\r\n\t}\r\n\t\r\n\t//\r\n};\r\n\r\nfunction flatSkinHourScale(date){\r\n\tvar min = date.getMinutes();\r\n\tmin = min < 10 ? \"0\"+min : min;\r\n\tvar html = \"\"+ date.getHours() +\"\"+\r\n\t\t\" \"+ min +\"\";\r\n\treturn html;\r\n}\r\n\r\nlet monitorIntervalId = null;\r\nfunction monitorThemeChange(){\r\n\tconst container = scheduler.$container;\r\n\t\r\n\tclearInterval(monitorIntervalId);\r\n\tif(container){\r\n\t\tmonitorIntervalId = setInterval(() => {\r\n\t\t\tconst csstheme = getComputedStyle(container).getPropertyValue('--dhx-scheduler-theme');\r\n\t\t\tif(csstheme && csstheme !== scheduler.skin){\r\n\t\t\t\tscheduler.setSkin(csstheme);\r\n\t\t\t}\r\n\r\n\t\t}, 100);\r\n\t}\r\n}\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tclearInterval(monitorIntervalId);\r\n});\r\n\r\nscheduler._skin_init = function(){\r\n\tthis._build_skin_info();\r\n\r\n\tif (!this.skin){\r\n\t\tthis.skin = this._theme_info.theme;\r\n\t}\r\n\tscheduler._addThemeClass();\r\n\tif (scheduler.skin === \"flat\"){\r\n\t\t// scheduler.xy.scale_height = 35;\r\n\t\tscheduler.templates.hour_scale = flatSkinHourScale;\r\n\t}else if (scheduler.templates.hour_scale === flatSkinHourScale){\r\n\t\tscheduler.templates.hour_scale = scheduler.date.date_to_str(scheduler.config.hour_date);\r\n\t}\r\n\r\n\r\n\r\n\t//scheduler._lightbox_template=\"
 
\";\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\r\n\t\tvar date_to_str = scheduler.date.date_to_str(\"%d\");\r\n\t\tif(!scheduler.templates._old_month_day){\r\n\t\t\tscheduler.templates._old_month_day = scheduler.templates.month_day;\r\n\t\t}\r\n\t\tvar old_month_day = scheduler.templates._old_month_day;\r\n\t\tscheduler.templates.month_day = function(date) {\r\n\t\t\tif (this._mode == \"month\") {\r\n\t\t\t\tvar label = date_to_str(date);\r\n\t\t\t\tif (date.getDate() == 1) {\r\n\t\t\t\t\tlabel = scheduler.locale.date.month_full[date.getMonth()] + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\tif (+date == +scheduler.date.date_part(this._currentDate())) {\r\n\t\t\t\t\tlabel = scheduler.locale.labels.dhx_cal_today_button + \" \" + label;\r\n\t\t\t\t}\r\n\t\t\t\treturn label;\r\n\t\t\t} else {\r\n\t\t\t\treturn old_month_day.call(this, date);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// tab classes\r\n\t\tif(scheduler.config.fix_tab_position){\r\n\t\t\tconst tabs = scheduler._els[\"dhx_cal_navline\"][0].querySelectorAll('[data-tab]');\r\n\t\t\ttabs.forEach((tab) => {\r\n\t\t\t\tconst view = tab.getAttribute(\"data-tab\") || tab.getAttribute(\"name\");\r\n\r\n\t\t\t\tswitch (view) {\r\n\t\t\t\t\tcase \"day\":\r\n\t\t\t\t\tcase \"day_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_first\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"week\":\r\n\t\t\t\t\tcase \"week_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"month\":\r\n\t\t\t\t\tcase \"month_tab\":\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_last\");\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_segmented\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\ttab.classList.add(\"dhx_cal_tab_standalone\");\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treorderTabs(scheduler._els[\"dhx_cal_navline\"][0]);\r\n\r\n\t\t}\r\n\t}, {once: true});\r\n\r\n\tfunction reorderTabs(container) {\r\n\t\t// segmented tabs should go first\r\n\r\n\t\tif(scheduler.config.header){\r\n\t\t\treturn;\r\n\t\t\t// don't reorder tabs if header is defined via config\r\n\t\t}\r\n\t\tconst tabs = Array.from(container.querySelectorAll('.dhx_cal_tab'));\r\n\t\r\n\t\t// segmented tabs\r\n\t\tconst order = ['day', 'week', 'month'];\r\n\t\r\n\t\tconst specialTabs = order.map(tabName => \r\n\t\t\ttabs.find(tab => tab.getAttribute('data-tab') === tabName)\r\n\t\t).filter(tab => tab !== undefined);\r\n\t\r\n\t\tlet firstTab = tabs.length > 0 ? tabs[0] : null;\r\n\r\n\t\tspecialTabs.reverse().forEach(tab => {\r\n\t\t\tcontainer.insertBefore(tab, firstTab);\r\n\t\t\tfirstTab = tab;\r\n\t\t});\r\n\t}\r\n\r\n\t// scheduler._skin_init = function(){\r\n\t// \tthis._build_skin_info();\r\n\t// \tthis.skin = this._theme_info.theme;\r\n\t// };\r\n};\r\n\r\n\r\n\r\n}","export default function extend(scheduler) {\r\n\r\nif (window.jQuery){\r\n\r\n(function( $ ){\r\n\tvar counter = 0;\r\n\tvar methods = [];\r\n\t$.fn.dhx_scheduler = function(config){\r\n\t\tif (typeof(config) === 'string') {\r\n\t\t\tif (methods[config] ) {\r\n\t\t\t\treturn methods[config].apply(this, []);\r\n\t\t\t}else {\r\n\t\t\t\t$.error('Method ' + config + ' does not exist on jQuery.dhx_scheduler');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvar views = [];\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tif (this && this.getAttribute){\r\n\t\t\t\t\tif (!this.getAttribute(\"dhxscheduler\")){\r\n\t\t\t\t\t\tvar name = \"scheduler\";\r\n\t\t\t\t\t\tif (counter){\r\n\t\t\t\t\t\t\tname = \"scheduler\" + (counter+1);\r\n\t\t\t\t\t\t\twindow[name] = Scheduler.getSchedulerInstance();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar comp = window[name];\r\n\r\n\t\t\t\t\t\tthis.setAttribute(\"dhxscheduler\", name);\r\n\t\t\t\t\t\tfor (var key in config)\r\n\t\t\t\t\t\t\tif (key!=\"data\")\r\n\t\t\t\t\t\t\t\tcomp.config[key] = config[key];\r\n\r\n\t\t\t\t\t\tif (!this.getElementsByTagName(\"div\").length){\r\n\t\t\t\t\t\t\tthis.innerHTML = '
';\r\n\t\t\t\t\t\t\tthis.className += \" dhx_cal_container\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tcomp.init(this, comp.config.date, comp.config.mode);\r\n\t\t\t\t\t\tif (config.data)\r\n\t\t\t\t\t\t\tcomp.parse(config.data);\r\n\r\n\t\t\t\t\t\tviews.push(comp);\r\n\t\t\t\t\t\tcounter++;\r\n\t\t\t\t\t} else\r\n\t\t\t\t\t\tviews.push(window[this.getAttribute(\"dhxscheduler\")]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif (views.length === 1) return views[0];\r\n\t\t\treturn views;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\r\n\r\n})(window.jQuery);\r\n\r\n}\r\n\r\n}","import global from \"../global\";\r\n\r\nexport default function extend(scheduler) {\r\n\r\n(function(){\r\n\r\n\tvar setCurrentView = scheduler.setCurrentView,\r\n\t\tupdateView = scheduler.updateView;\r\n\tvar update_view_timer = null,\r\n\t\tcurr_view_timer = null;\r\n\r\n\tvar lazy_setCurrentView = function(date, mode){\r\n\t\tvar self = this;\r\n\t\tglobal.clearTimeout(curr_view_timer);\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\r\n\t\tvar oldDate = self._date,\r\n\t\t\toldMode = self._mode;\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tcurr_view_timer = setTimeout(function(){\r\n\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!self.callEvent(\"onBeforeViewChange\", [oldMode, oldDate, mode || self._mode, date || self._date])){\r\n\t\t\t\tupdateFlags(self, oldDate, oldMode);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tupdateView.call(self, date, mode);\r\n\t\t\tself.callEvent(\"onViewChange\", [self._mode, self._date]);\r\n\r\n\t\t\tglobal.clearTimeout(update_view_timer);\r\n\t\t\tcurr_view_timer = 0;\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tvar lazy_updateView = function(date, mode){\r\n\t\tvar self = this,\r\n\t\t\tars = arguments;\r\n\r\n\t\tupdateFlags(this, date, mode);\r\n\r\n\t\tglobal.clearTimeout(update_view_timer);\r\n\t\tupdate_view_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(curr_view_timer)\r\n\t\t\t\treturn;\r\n\r\n\t\t\tupdateView.apply(self, ars);\r\n\t\t}, scheduler.config.delay_render);\r\n\t};\r\n\tfunction updateFlags(scheduler, date, mode){\r\n\t\tif(date)\r\n\t\t\tscheduler._date = date;\r\n\t\tif(mode)\r\n\t\t\tscheduler._mode = mode;\r\n\r\n\t}\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tif(scheduler.config.delay_render){\r\n\t\t\tscheduler.setCurrentView = lazy_setCurrentView;\r\n\t\t\tscheduler.updateView = lazy_updateView;\r\n\t\t}else{\r\n\t\t\tscheduler.setCurrentView = setCurrentView;\r\n\t\t\tscheduler.updateView = updateView;\r\n\t\t}\r\n\t});\r\n\r\n})();\r\n\r\n}","export default function DataProcessorEvents(scheduler, dp){\r\n\tthis.$scheduler = scheduler;\r\n\tthis.$dp = dp;\r\n\tthis._dataProcessorHandlers = [];\r\n\r\n\tthis.attach = function () {\r\n\t\tvar dp = this.$dp;\r\n\t\tvar scheduler = this.$scheduler;\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\t\t\tif (!this._validId(id)) return;\r\n\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false); return true; }\r\n\t\t\tif (z==\"deleted\") return false;\r\n\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\treturn false;\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onEventChanged\", function(id) { \r\n\t\t\tif (!this._loading && this._validId(id))\r\n\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t}));\r\n\r\n\t\tthis._dataProcessorHandlers.push(scheduler.attachEvent(\"onClearAll\", function() { \r\n\t\t\t// clear dataprocessor state when scheduler is reset\r\n\t\t\tdp._in_progress={};\r\n\t\t\tdp._invalid={};\r\n\t\t\tdp.updatedRows = [];\r\n\t\t\tdp._waitMode = 0;\r\n\t\t}));\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tif (scheduler.getEvent(id)){\r\n\t\t\t\tscheduler.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\t\tscheduler.deleteEvent(id);\r\n\t\t\t} else if (scheduler._add_rec_marker)\r\n\t\t\t\tscheduler._update_callback(upd, id);\r\n\t\t});\r\n\t};\r\n\r\n\tthis.detach = function () {\r\n\t\tfor (var key in this._dataProcessorHandlers) {\r\n\t\t\tvar handler = this._dataProcessorHandlers[key];\r\n\t\t\tthis.$scheduler.detachEvent(handler);\r\n\t\t}\r\n\t\tthis._dataProcessorHandlers = [];\r\n\t};\r\n}\r\n\r\nexport function extendScheduler(scheduler, dp){\r\n\tscheduler._validId=function(id){\r\n\t\tif(this._is_virtual_event){\r\n\t\t\treturn !this._is_virtual_event(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\tscheduler.setUserData=function(id,name,value){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev) ev[name]=value;\r\n\t\t}else{\r\n\t\t\tthis._userdata[name]=value;\r\n\t\t}\r\n\t};\r\n\tscheduler.getUserData=function(id,name){\r\n\t\tif (id){\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif(ev)\r\n\t\t\t\treturn ev[name];\r\n\t\t\telse\r\n\t\t\t\treturn null;\r\n\t\t}else{\r\n\t\t\treturn this._userdata[name];\r\n\t\t}\r\n\t};\r\n\tscheduler._set_event_text_style=function(id,style){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tthis.for_rendered(id,function(r){\r\n\t\t\tr.style.cssText+=\";\"+style;\r\n\t\t});\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tev[\"_text_style\"]=style;\r\n\t\tthis.event_updated(ev);\r\n\t};\r\n\tscheduler._update_callback = function(upd,id){\r\n\t\tvar data = scheduler._xmlNodeToJSON(upd.firstChild);\r\n\t\t//fix for updates of recurring events\r\n\t\tif (data.rec_type == \"none\") data.rec_pattern = \"none\";\r\n\t\tdata.text = data.text||data._tagvalue;\r\n\t\tdata.start_date = scheduler._helpers.parseDate(data.start_date);\r\n\t\tdata.end_date = scheduler._helpers.parseDate(data.end_date);\r\n\t\tscheduler.addEvent(data);\r\n\t\tif (scheduler._add_rec_marker)\r\n\t\t\tscheduler.setCurrentView();\r\n\t};\r\n\tscheduler._dp_change_event_id = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\t\tscheduler.changeEventId(id, new_id);\r\n\t};\r\n\tscheduler._dp_hook_delete = function(id, new_id){\r\n\t\tif(!scheduler.getEvent(id))\r\n\t\t\treturn;\r\n\r\n\t\tif(new_id && id != new_id){\r\n\t\t\tif(this.getUserData(id, dp.action_param) == \"true_deleted\")\r\n\t\t\t\tthis.setUserData(id, dp.action_param, \"updated\");\r\n\r\n\t\t\tthis.changeEventId(id, new_id);\r\n\t\t}\r\n\t\treturn this.deleteEvent(new_id, true);\r\n\t};\r\n\r\n\tscheduler.setDp = function() {\r\n\t\tthis._dp = dp;\r\n\t};\r\n\tscheduler.setDp();\r\n}","import DataProcessorEvents from \"./dataprocessor_hooks\";\r\nimport { extendScheduler } from \"./dataprocessor_hooks\";\r\nimport eventable from \"../../utils/eventable\";\r\nimport global from \"../../global\";\r\n\r\n/**\r\n *\t@desc: constructor, data processor object\r\n *\t@param: serverProcessorURL - url used for update\r\n *\t@type: public\r\n */\r\nexport function DataProcessor(serverProcessorURL){\r\n\tthis.serverProcessor = serverProcessorURL;\r\n\tthis.action_param = \"!nativeeditor_status\";\r\n\r\n\tthis.object = null;\r\n\tthis.updatedRows = []; // ids of updated rows\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.updateMode = \"cell\";\r\n\tthis._tMode = \"GET\";\r\n\tthis._headers = null;\r\n\tthis._payload = null;\r\n\tthis.post_delim = \"_\";\r\n\r\n\tthis._waitMode = 0;\r\n\tthis._in_progress = {};\r\n\tthis._invalid = {};\r\n\tthis.messages = [];\r\n\r\n\tthis.styles = {\r\n\t\tupdated: \"font-weight:bold;\",\r\n\t\tinserted: \"font-weight:bold;\",\r\n\t\tdeleted: \"text-decoration : line-through;\",\r\n\t\tinvalid: \"background-color:FFE0E0;\",\r\n\t\tinvalid_cell: \"border-bottom:2px solid red;\",\r\n\t\terror: \"color:red;\",\r\n\t\tclear: \"font-weight:normal;text-decoration:none;\"\r\n\t};\r\n\tthis.enableUTFencoding(true);\r\n\teventable(this); // TODO: need to update\r\n\r\n\treturn this;\r\n}\r\nDataProcessor.prototype = {\r\n\tsetTransactionMode: function (mode, total) {\r\n\t\tif (typeof mode == \"object\") {\r\n\t\t\tthis._tMode = mode.mode || this._tMode;\r\n\r\n\t\t\tif (mode.headers !== undefined) {\r\n\t\t\t\tthis._headers = mode.headers;\r\n\t\t\t}\r\n\r\n\t\t\tif (mode.payload !== undefined) {\r\n\t\t\t\tthis._payload = mode.payload;\r\n\t\t\t}\r\n\t\t\tthis._tSend = !!total;\r\n\t\t} else {\r\n\t\t\tthis._tMode = mode;\r\n\t\t\tthis._tSend = total;\r\n\t\t}\r\n\r\n\t\tif (this._tMode == \"REST\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"JSON\" || this._tMode === \"REST-JSON\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._serializeAsJson = true;\r\n\t\t\tthis._headers = this._headers || {};\r\n\t\t\tthis._headers[\"Content-Type\"] = \"application/json\";\r\n\t\t}else{\r\n\t\t\tif(this._headers && !this._headers[\"Content-Type\"]){\r\n\t\t\t\tthis._headers[\"Content-Type\"] = \"application/x-www-form-urlencoded\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tthis._tSend = false;\r\n\t\t\tthis._endnm = true;\r\n\t\t\tthis._router = mode.router;\r\n\t\t}\r\n\t},\r\n\tescape: function (data) {\r\n\t\tif (this._utf)\r\n\t\t\treturn encodeURIComponent(data);\r\n\t\telse\r\n\t\t\treturn escape(data);\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to set escaping mode\r\n\t *\t@param: true - utf based escaping, simple - use current page encoding\r\n\t *\t@type: public\r\n\t */\r\n\tenableUTFencoding: function (mode) {\r\n\t\tthis._utf = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: allows to define, which column may trigger update\r\n\t *\t@param: val - array or list of true/false values\r\n\t *\t@type: public\r\n\t */\r\n\tsetDataColumns: function (val) {\r\n\t\tthis._columns = (typeof val == \"string\") ? val.split(\",\") : val;\r\n\t},\r\n\t/**\r\n\t *\t@desc: get state of updating\r\n\t *\t@returns: true - all in sync with server, false - some items not updated yet.\r\n\t *\t@type: public\r\n\t */\r\n\tgetSyncState: function () {\r\n\t\treturn !this.updatedRows.length;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable named field for data syncing, will use column ids for grid\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenableDataNames: function (mode) {\r\n\t\tthis._endnm = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: enable/disable mode , when only changed fields and row id send to the server side, instead of all fields in default mode\r\n\t *\t@param: mode - true/false\r\n\t *\t@type: public\r\n\t */\r\n\tenablePartialDataSend: function (mode) {\r\n\t\tthis._changed = !!mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: set if rows should be send to server automatically\r\n\t *\t@param: mode - \"row\" - based on row selection changed, \"cell\" - based on cell editing finished, \"off\" - manual data sending\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdateMode: function (mode, dnd) {\r\n\t\tthis.autoUpdate = (mode == \"cell\");\r\n\t\tthis.updateMode = mode;\r\n\t\tthis.dnd = dnd;\r\n\t},\r\n\tignore: function (code, master) {\r\n\t\tthis._silent_mode = true;\r\n\t\tcode.call(master || window);\r\n\t\tthis._silent_mode = false;\r\n\t},\r\n\t/**\r\n\t *\t@desc: mark row as updated/normal. check mandatory fields,initiate autoupdate (if turned on)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@param: state - true for \"updated\", false for \"not updated\"\r\n\t *\t@param: mode - update mode name\r\n\t *\t@type: public\r\n\t */\r\n\tsetUpdated: function (rowId, state, mode) {\r\n\t\tif (this._silent_mode) return;\r\n\t\tvar ind = this.findRow(rowId);\r\n\r\n\t\tmode = mode || \"updated\";\r\n\t\tvar existing = this.$scheduler.getUserData(rowId, this.action_param);\r\n\t\tif (existing && mode == \"updated\") mode = existing;\r\n\t\tif (state) {\r\n\t\t\tthis.set_invalid(rowId, false); //clear previous error flag\r\n\t\t\tthis.updatedRows[ind] = rowId;\r\n\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, mode);\r\n\t\t\tif (this._in_progress[rowId])\r\n\t\t\t\tthis._in_progress[rowId] = \"wait\";\r\n\t\t} else {\r\n\t\t\tif (!this.is_invalid(rowId)) {\r\n\t\t\t\tthis.updatedRows.splice(ind, 1);\r\n\t\t\t\tthis.$scheduler.setUserData(rowId, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.markRow(rowId, state, mode);\r\n\t\tif (state && this.autoUpdate) this.sendData(rowId);\r\n\t},\r\n\r\n\tmarkRow: function (id, state, mode) {\r\n\t\tvar str = \"\";\r\n\t\tvar invalid = this.is_invalid(id);\r\n\t\tif (invalid) {\r\n\t\t\tstr = this.styles[invalid];\r\n\t\t\tstate = true;\r\n\t\t}\r\n\t\tif (this.callEvent(\"onRowMark\", [id, state, mode, invalid])) {\r\n\t\t\t//default logic\r\n\t\t\tstr = this.styles[state ? mode : \"clear\"] + str;\r\n\r\n\t\t\tthis.$scheduler[this._methods[0]](id, str);\r\n\r\n\t\t\tif (invalid && invalid.details) {\r\n\t\t\t\tstr += this.styles[invalid + \"_cell\"];\r\n\t\t\t\tfor (var i = 0; i < invalid.details.length; i++)\r\n\t\t\t\t\tif (invalid.details[i])\r\n\t\t\t\t\t\tthis.$scheduler[this._methods[1]](id, i, str);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tgetActionByState: function(state) {\r\n\t\tif (state === \"inserted\") {\r\n\t\t\treturn \"create\";\r\n\t\t}\r\n\t\tif (state === \"updated\") {\r\n\t\t\treturn \"update\";\r\n\t\t}\r\n\t\tif (state === \"deleted\") {\r\n\t\t\treturn \"delete\";\r\n\t\t}\r\n\t\treturn \"update\";\r\n\t},\r\n\r\n\tgetState: function (id) {\r\n\t\treturn this.$scheduler.getUserData(id, this.action_param);\r\n\t},\r\n\tis_invalid: function (id) {\r\n\t\treturn this._invalid[id];\r\n\t},\r\n\tset_invalid: function (id, mode, details) {\r\n\t\tif (details) mode = {\r\n\t\t\tvalue: mode, details: details, toString: function () {\r\n\t\t\t\treturn this.value.toString();\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis._invalid[id] = mode;\r\n\t},\r\n\t/**\r\n\t *\t@desc: check mandatory fields and varify values of cells, initiate update (if specified)\r\n\t *\t@param: rowId - id of row to set update-status for\r\n\t *\t@type: public\r\n\t */\r\n\tcheckBeforeUpdate: function (rowId) {\r\n\t\treturn true;\r\n\t},\r\n\t/**\r\n\t *\t@desc: send row(s) values to server\r\n\t *\t@param: rowId - id of row which data to send. If not specified, then all \"updated\" rows will be send\r\n\t *\t@type: public\r\n\t */\r\n\tsendData: function (rowId) {\r\n\t\tif (this.$scheduler.editStop) this.$scheduler.editStop();\r\n\r\n\t\tif (typeof rowId == \"undefined\" || this._tSend) return this.sendAllData();\r\n\t\tif (this._in_progress[rowId]) return false;\r\n\r\n\t\tthis.messages = [];\r\n\t\tif (!this.checkBeforeUpdate(rowId) && this.callEvent(\"onValidationError\", [rowId, this.messages])) return false;\r\n\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t},\r\n\t_beforeSendData: function (data, rowId) {\r\n\t\tif (!this.callEvent(\"onBeforeUpdate\", [rowId, this.getState(rowId), data])) return false;\r\n\t\tthis._sendData(data, rowId);\r\n\t},\r\n\tserialize: function (data, id) {\r\n\t\tif (this._serializeAsJson) {\r\n\t\t\treturn this._serializeAsJSON(data);\r\n\t\t}\r\n\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tif (typeof id != \"undefined\")\r\n\t\t\treturn this.serialize_one(data, \"\");\r\n\t\telse {\r\n\t\t\tvar stack = [];\r\n\t\t\tvar keys = [];\r\n\t\t\tfor (var key in data)\r\n\t\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\t\tstack.push(this.serialize_one(data[key], key + this.post_delim));\r\n\t\t\t\t\tkeys.push(key);\r\n\t\t\t\t}\r\n\t\t\tstack.push(\"ids=\" + this.escape(keys.join(\",\")));\r\n\t\t\tif (this.$scheduler.security_key)\r\n\t\t\t\tstack.push(\"dhx_security=\" + (this.$scheduler.security_key));\r\n\t\t\treturn stack.join(\"&\");\r\n\t\t}\r\n\t},\r\n\tserialize_one: function (data, pref) {\r\n\t\tif (typeof data == \"string\")\r\n\t\t\treturn data;\r\n\t\tvar stack = [];\r\n\t\tvar serialized = \"\";\r\n\t\tfor (var key in data)\r\n\t\t\tif (data.hasOwnProperty(key)) {\r\n\t\t\t\tif ((key == \"id\" || key == this.action_param) && this._tMode == \"REST\") continue;\r\n\t\t\t\tif (typeof data[key] === \"string\" || typeof data[key] === \"number\") {\r\n\t\t\t\t\tserialized = data[key];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tserialized = JSON.stringify(data[key]);\r\n\t\t\t\t}\r\n\t\t\t\tstack.push(this.escape((pref || \"\") + key) + \"=\" + this.escape(serialized));\r\n\t\t\t}\r\n\t\treturn stack.join(\"&\");\r\n\t},\r\n\t_applyPayload: function (url) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._payload)\r\n\t\t\tfor (var key in this._payload)\r\n\t\t\t\turl = url + ajax.urlSeparator(url) + this.escape(key) + \"=\" + this.escape(this._payload[key]);\r\n\t\treturn url;\r\n\t},\r\n\t_sendData: function (dataToSend, rowId) {\r\n\t\tif (!dataToSend) {\r\n\t\t\treturn; // nothing to send\r\n\t\t}\r\n\t\tif (!this.callEvent(\"onBeforeDataSending\", rowId ? [rowId, this.getState(rowId), dataToSend] : [null, null, dataToSend])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (rowId) {\r\n\t\t\tthis._in_progress[rowId] = (new Date()).valueOf();\r\n\t\t}\r\n\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (this._tMode === \"CUSTOM\") {\r\n\t\t\tvar state = this.getState(rowId);\r\n\t\t\tvar action = this.getActionByState(state);\r\n\t\t\tvar _onResolvedCreateUpdate = function (tag) {\r\n\t\t\t\tvar resultState = state;\r\n\t\t\t\tif(tag && tag.responseText && tag.setRequestHeader){\r\n\t\t\t\t\tif(tag.status !== 200){\r\n\t\t\t\t\t\tresultState = \"error\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\ttag = JSON.parse(tag.responseText);\r\n\t\t\t\t\t} catch (e){}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresultState = resultState || \"updated\";\r\n\t\t\t\tvar sid = rowId;\r\n\t\t\t\tvar tid = rowId;\r\n\r\n\t\t\t\tif (tag) {\r\n\t\t\t\t\tresultState = tag.action || resultState;\r\n\t\t\t\t\tsid = tag.sid || sid;\r\n\t\t\t\t\ttid = tag.id || tag.tid || tid;\r\n\t\t\t\t}\r\n\t\t\t\tself.afterUpdateCallback(sid, tid, resultState, tag);\r\n\t\t\t};\r\n\r\n\t\t\tconst routerMode = \"event\";\r\n\t\t\tvar actionPromise;\r\n\t\t\tif (this._router instanceof Function) {\r\n\t\t\t\tactionPromise = this._router(routerMode, action, dataToSend, rowId);\r\n\t\t\t} else {\r\n\t\t\t\tswitch (state) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].create(dataToSend);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].delete(rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tactionPromise = this._router[routerMode].update(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(actionPromise){\r\n\t\t\t\t// neither promise nor {tid: newId} response object\r\n\t\t\t\tif(!actionPromise.then &&\r\n\t\t\t\t\t(actionPromise.id === undefined && actionPromise.tid === undefined && actionPromise.action === undefined)){\r\n\t\t\t\t\tthrow new Error(\"Incorrect router return value. A Promise or a response object is expected\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(actionPromise.then){\r\n\t\t\t\t\tactionPromise.then(_onResolvedCreateUpdate).catch(function(error) {\r\n\t\t\t\t\t\tif(error && error.action){\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate(error);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t_onResolvedCreateUpdate({ action: \"error\", value: error});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// custom method may return a response object in case of sync action\r\n\t\t\t\t\t_onResolvedCreateUpdate(actionPromise);\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t_onResolvedCreateUpdate(null);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar queryParams = {\r\n\t\t\tcallback: function(xml) {\r\n\t\t\t\tvar ids = [];\r\n\r\n\t\t\t\tif (rowId) {\r\n\t\t\t\t\tids.push(rowId);\r\n\t\t\t\t} else if (dataToSend) {\r\n\t\t\t\t\tfor (var key in dataToSend) {\r\n\t\t\t\t\t\tids.push(key);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn self.afterUpdate(self, xml, ids);\r\n\t\t\t},\r\n\t\t\theaders: self._headers\r\n\t\t};\r\n\r\n\t\tvar urlParams = this.serverProcessor + (this._user ? (ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + this.$scheduler.getUserData(0, \"version\")].join(\"&\")) : \"\");\r\n\t\tvar url = this._applyPayload(urlParams);\r\n\t\tvar data;\r\n\r\n\t\tswitch (this._tMode) {\r\n\t\t\tcase \"GET\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url + ajax.urlSeparator(url) + this.serialize(data, rowId);\r\n\t\t\t\tqueryParams.method = \"GET\";\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"POST\":\r\n\t\t\t\tdata = this._cleanupArgumentsBeforeSend(dataToSend);\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = this.serialize(data, rowId);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"JSON\":\r\n\t\t\t\tdata = {};\r\n\t\t\t\tvar preprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t\t\tfor (var key in preprocessedData) {\r\n\t\t\t\t\tif (key === this.action_param || key === \"id\" || key === \"gr_id\") {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdata[key] = preprocessedData[key];\r\n\t\t\t\t}\r\n\r\n\t\t\t\tqueryParams.url = url;\r\n\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\tqueryParams.data = JSON.stringify({\r\n\t\t\t\t\tid: rowId,\r\n\t\t\t\t\taction: dataToSend[this.action_param],\r\n\t\t\t\t\tdata: data\r\n\t\t\t\t});\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"REST\":\r\n\t\t\tcase \"REST-JSON\":\r\n\t\t\t\turl = urlParams.replace(/(&|\\?)editing=true/, \"\");\r\n\t\t\t\tdata = \"\";\r\n\r\n\t\t\t\tswitch (this.getState(rowId)) {\r\n\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\tqueryParams.method = \"POST\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\tqueryParams.method = \"DELETE\";\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tqueryParams.method = \"PUT\";\r\n\t\t\t\t\t\tqueryParams.data = this.serialize(dataToSend, rowId);\r\n\t\t\t\t\t\turl = url + (url.slice(-1) === \"/\" ? \"\" : \"/\") + rowId;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tqueryParams.url = this._applyPayload(url);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis._waitMode++;\r\n\t\treturn ajax.query(queryParams);\r\n\t},\r\n\tsendAllData: function () {\r\n\t\tif (!this.updatedRows.length || this.updateMode === \"off\") { // FIXME: need to leave checking 'this.updateMode === \"off\"'?\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.messages = [];\r\n\t\tvar valid = true;\r\n\r\n\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\tvalid = valid && this.checkBeforeUpdate(rowId);\r\n\t\t});\r\n\r\n\t\tif (!valid && !this.callEvent(\"onValidationError\", [\"\", this.messages])) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._tSend) {\r\n\t\t\tthis._sendData(this._getAllData());\r\n\t\t} else {\r\n\t\t\tthis._forEachUpdatedRow(function(rowId) {\r\n\t\t\t\tif (!this._in_progress[rowId]) {\r\n\t\t\t\t\tif (this.is_invalid(rowId)) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis._beforeSendData(this._getRowData(rowId), rowId);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t_getAllData: function (rowId) {\r\n\t\tvar out = {};\r\n\t\tvar has_one = false;\r\n\t\tthis._forEachUpdatedRow(function(id) {\r\n\t\t\tif (this._in_progress[id] || this.is_invalid(id)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar row = this._getRowData(id);\r\n\t\t\tif (!this.callEvent(\"onBeforeUpdate\", [id, this.getState(id), row])) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tout[id] = row;\r\n\t\t\thas_one = true;\r\n\t\t\tthis._in_progress[id] = (new Date()).valueOf();\r\n\t\t});\r\n\t\treturn has_one ? out : null;\r\n\t},\r\n\r\n\tfindRow: function (pattern) {\r\n\t\tvar i = 0;\r\n\t\tfor (i = 0; i < this.updatedRows.length; i++)\r\n\t\t\tif (pattern == this.updatedRows[i]) break;\r\n\t\treturn i;\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: define custom actions\r\n\t *\t@param: name - name of action, same as value of action attribute\r\n\t *\t@param: handler - custom function, which receives a XMl response content for action\r\n\t *\t@type: private\r\n\t */\r\n\tdefineAction: function (name, handler) {\r\n\t\tif (!this._uActions) this._uActions = {};\r\n\t\tthis._uActions[name] = handler;\r\n\t},\r\n\r\n\t/**\r\n\t *\t @desc: used in combination with setOnBeforeUpdateHandler to create custom client-server transport system\r\n\t *\t @param: sid - id of item before update\r\n\t *\t @param: tid - id of item after up0ate\r\n\t *\t @param: action - action name\r\n\t *\t @type: public\r\n\t *\t @topic: 0\r\n\t */\r\n\tafterUpdateCallback: function (sid, tid, action, btag) {\r\n\t\tif(!this.$scheduler){\r\n\t\t\t// destructor has been called before the callback\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar marker = sid;\r\n\t\tvar correct = (action !== \"error\" && action !== \"invalid\");\r\n\t\tif (!correct) {\r\n\t\t\tthis.set_invalid(sid, action);\r\n\t\t}\r\n\t\tif ((this._uActions) && (this._uActions[action]) && (!this._uActions[action](btag))) {\r\n\t\t\treturn (delete this._in_progress[marker]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tthis.setUpdated(sid, false);\r\n\t\t}\r\n\r\n\t\tvar originalSid = sid;\r\n\r\n\t\tswitch (action) {\r\n\t\t\tcase \"inserted\":\r\n\t\t\tcase \"insert\":\r\n\t\t\t\tif (tid != sid) {\r\n\t\t\t\t\tthis.setUpdated(sid, false);\r\n\t\t\t\t\tthis.$scheduler[this._methods[2]](sid, tid);\r\n\t\t\t\t\tsid = tid;\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"delete\":\r\n\t\t\tcase \"deleted\":\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"true_deleted\");\r\n\t\t\t\tthis.$scheduler[this._methods[3]](sid, tid);\r\n\t\t\t\tdelete this._in_progress[marker];\r\n\t\t\t\treturn this.callEvent(\"onAfterUpdate\", [sid, action, tid, btag]);\r\n\t\t}\r\n\r\n\t\tif (this._in_progress[marker] !== \"wait\") {\r\n\t\t\tif (correct) {\r\n\t\t\t\tthis.$scheduler.setUserData(sid, this.action_param, \"\");\r\n\t\t\t}\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t} else {\r\n\t\t\tdelete this._in_progress[marker];\r\n\t\t\tthis.setUpdated(tid, true, this.$scheduler.getUserData(sid, this.action_param));\r\n\t\t}\r\n\r\n\t\tthis.callEvent(\"onAfterUpdate\", [originalSid, action, tid, btag]);\r\n\t},\r\n\r\n\t_errorResponse: function (xml, id){\r\n\t\tif(this.$scheduler && this.$scheduler.callEvent){\r\n\t\t\tthis.$scheduler.callEvent(\"onSaveError\", [id, xml.xmlDoc]);\r\n\t\t}\r\n\t\treturn this.cleanUpdate(id);\r\n\t},\r\n\r\n\t_setDefaultTransactionMode: function () {\r\n\t\tif (this.serverProcessor) {\r\n\t\t\tthis.setTransactionMode(\"POST\", true);\r\n\t\t\tthis.serverProcessor += (this.serverProcessor.indexOf(\"?\") !== -1 ? \"&\" : \"?\") + \"editing=true\";\r\n\t\t\tthis._serverProcessor = this.serverProcessor;\r\n\t\t}\r\n\t},\r\n\t\r\n\t/**\r\n\t *\t@desc: response from server\r\n\t *\t@param: xml - XMLLoader object with response XML\r\n\t *\t@type: private\r\n\t */\r\n\tafterUpdate: function (that, xml, id) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\r\n\t\tif (xml.xmlDoc.status !== 200){\r\n\t\t\tthis._errorResponse(xml, id);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// try to use json first\r\n\t\tvar tag;\r\n\t\ttry {\r\n\t\t\ttag = JSON.parse(xml.xmlDoc.responseText);\r\n\t\t} catch (e) {\r\n\t\t\t// empty response also can be processed by json handler\r\n\t\t\tif (!xml.xmlDoc.responseText.length) {\r\n\t\t\t\ttag = {};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (tag) {\r\n\t\t\tvar action = tag.action || this.getState(id) || \"updated\";\r\n\t\t\tvar sid = tag.sid || id[0];\r\n\t\t\tvar tid = tag.tid || id[0];\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, tag);\r\n\t\t\tthat.finalizeUpdate();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// xml response\r\n\t\tvar top = ajax.xmltop(\"data\", xml.xmlDoc); // fix incorrect content type in IE\r\n\t\tif (!top) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\t\tvar atag = ajax.xpath(\"//data/action\", top);\r\n\t\tif (!atag.length) {\r\n\t\t\treturn this._errorResponse(xml, id);\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < atag.length; i++) {\r\n\t\t\tvar btag = atag[i];\r\n\t\t\tvar action = btag.getAttribute(\"type\");\r\n\t\t\tvar sid = btag.getAttribute(\"sid\");\r\n\t\t\tvar tid = btag.getAttribute(\"tid\");\r\n\r\n\t\t\tthat.afterUpdateCallback(sid, tid, action, btag);\r\n\t\t}\r\n\t\tthat.finalizeUpdate();\r\n\t},\r\n\tcleanUpdate: function (id) {\r\n\t\tif (id)\r\n\t\t\tfor (var i = 0; i < id.length; i++)\r\n\t\t\t\tdelete this._in_progress[id[i]];\r\n\t},\r\n\tfinalizeUpdate: function () {\r\n\t\tif (this._waitMode) this._waitMode--;\r\n\r\n\t\tthis.callEvent(\"onAfterUpdateFinish\", []);\r\n\t\tif (!this.updatedRows.length)\r\n\t\t\tthis.callEvent(\"onFullSync\", []);\r\n\t},\r\n\r\n\t/**\r\n\t *\t@desc: initializes data-processor\r\n\t *\t@param: scheduler - dhtmlxScheduler object to attach this data-processor to\r\n\t *\t@type: public\r\n\t */\r\n\tinit: function (scheduler) {\r\n\t\tif (this._initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.$scheduler = scheduler;\r\n\t\tif (this.$scheduler._dp_init) {\r\n\t\t\tthis.$scheduler._dp_init(this);\r\n\t\t}\r\n\r\n\t\tthis._setDefaultTransactionMode();\r\n\r\n\t\tthis._methods=this._methods||[\"_set_event_text_style\",\"\",\"_dp_change_event_id\",\"_dp_hook_delete\"];\r\n\t\textendScheduler(this.$scheduler, this);\r\n\t\tvar dataProcessorEvents = new DataProcessorEvents(this.$scheduler, this);\r\n\t\tdataProcessorEvents.attach();\r\n\t\tthis.attachEvent(\"onDestroy\", function() {\r\n\t\t\tdelete this._getRowData;\r\n\r\n\t\t\tdelete this.$scheduler._dp;\r\n\t\t\tdelete this.$scheduler._dataprocessor;\r\n\t\t\tdelete this.$scheduler._set_event_text_style;\r\n\t\t\tdelete this.$scheduler._dp_change_event_id;\r\n\t\t\tdelete this.$scheduler._dp_hook_delete;\r\n\t\t\tdelete this.$scheduler;\r\n\t\t\tdataProcessorEvents.detach();\r\n\t\t});\r\n\t\tthis.$scheduler.callEvent(\"onDataProcessorReady\", [this]);\r\n\t\tthis._initialized = true;\r\n\r\n\t\tscheduler._dataprocessor=this;\r\n\t},\r\n\r\n\tsetOnAfterUpdate: function (ev) {\r\n\t\tthis.attachEvent(\"onAfterUpdate\", ev);\r\n\t},\r\n\tsetOnBeforeUpdateHandler: function (func) {\r\n\t\tthis.attachEvent(\"onBeforeDataSending\", func);\r\n\t},\r\n\r\n\t/* starts autoupdate mode\r\n\t\t@param interval time interval for sending update requests\r\n\t*/\r\n\tsetAutoUpdate: function (interval, user) {\r\n\t\tinterval = interval || 2000;\r\n\r\n\t\tthis._user = user || (new Date()).valueOf();\r\n\t\tthis._need_update = false;\r\n\t\t//this._loader = null;\r\n\t\tthis._update_busy = false;\r\n\r\n\t\tthis.attachEvent(\"onAfterUpdate\", function (sid, action, tid, xml_node) {\r\n\t\t\tthis.afterAutoUpdate(sid, action, tid, xml_node);\r\n\t\t});\r\n\t\tthis.attachEvent(\"onFullSync\", function () {\r\n\t\t\tthis.fullSync();\r\n\t\t});\r\n\r\n\t\tvar self = this;\r\n\t\tlet intervalId = global.setInterval(function () {\r\n\t\t\tself.loadUpdate();\r\n\t\t}, interval);\r\n\t\tthis.attachEvent(\"onDestroy\", function(){\r\n\t\t\tclearInterval(intervalId);\r\n\t\t});\r\n\t},\r\n\r\n\t/* process updating request answer\r\n\t\tif status == collision version is deprecated\r\n\t\tset flag for autoupdating immediately\r\n\t*/\r\n\tafterAutoUpdate: function (sid, action, tid, xml_node) {\r\n\t\tif (action == 'collision') {\r\n\t\t\tthis._need_update = true;\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t},\r\n\r\n\t/* callback function for onFillSync event\r\n\t\tcall update function if it's need\r\n\t*/\r\n\tfullSync: function () {\r\n\t\tif (this._need_update) {\r\n\t\t\tthis._need_update = false;\r\n\t\t\tthis.loadUpdate();\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/* sends query to the server and call callback function\r\n\t*/\r\n\tgetUpdates: function (url, callback) {\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tif (this._update_busy)\r\n\t\t\treturn false;\r\n\t\telse\r\n\t\t\tthis._update_busy = true;\r\n\r\n\t\tajax.get(url, callback);\r\n\t},\r\n\r\n\t/* returns xml node value\r\n\t\t@param node\r\n\t\t\txml node\r\n\t*/\r\n\t_getXmlNodeValue: function(node) {\r\n\t\tif (node.firstChild) {\r\n\t\t\treturn node.firstChild.nodeValue;\r\n\t\t}\r\n\t\treturn \"\";\r\n\t},\r\n\r\n\t/* loads updates and processes them\r\n\t*/\r\n\tloadUpdate: function () {\r\n\t\tvar self = this;\r\n\t\tvar ajax = this.$scheduler.ajax;\r\n\t\tvar version = this.$scheduler.getUserData(0, \"version\");\r\n\t\tvar url = this.serverProcessor + ajax.urlSeparator(this.serverProcessor) + [\"dhx_user=\" + this._user, \"dhx_version=\" + version].join(\"&\");\r\n\t\turl = url.replace(\"editing=true&\", \"\");\r\n\t\tthis.getUpdates(url, function (xml) {\r\n\t\t\tvar vers = ajax.xpath(\"//userdata\", xml);\r\n\t\t\tself.$scheduler.setUserData(0, \"version\", self._getXmlNodeValue(vers[0]));\r\n\r\n\t\t\tvar updates = ajax.xpath(\"//update\", xml);\r\n\t\t\tif (updates.length) {\r\n\t\t\t\tself._silent_mode = true;\r\n\r\n\t\t\t\tfor (var i = 0; i < updates.length; i++) {\r\n\t\t\t\t\tvar status = updates[i].getAttribute(\"status\");\r\n\t\t\t\t\tvar id = updates[i].getAttribute(\"id\");\r\n\t\t\t\t\tvar parent = updates[i].getAttribute(\"parent\");\r\n\t\t\t\t\tswitch (status) {\r\n\t\t\t\t\t\tcase \"inserted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"insertCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"updated\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"updateCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"deleted\":\r\n\t\t\t\t\t\t\tthis.callEvent(\"deleteCallback\", [updates[i], id, parent]);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tself._silent_mode = false;\r\n\t\t\t}\r\n\t\t\tself._update_busy = false;\r\n\t\t\tself = null;\r\n\t\t});\r\n\t},\r\n\r\n\tdestructor: function() {\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.updatedRows = [];\r\n\t\tthis._in_progress = {};\r\n\t\tthis._invalid = {};\r\n\t\tthis._headers = null;\r\n\t\tthis._payload = null;\r\n\t\tdelete this._initialized;\r\n\t},\r\n\r\n\turl: function(url) {\r\n\t\tthis.serverProcessor = this._serverProcessor = url;\r\n\t},\r\n\r\n\t_serializeAsJSON: function(data) {\r\n\t\tif (typeof data === \"string\") {\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\tvar copy = this.$scheduler.utils.copy(data);\r\n\t\tif (this._tMode === \"REST-JSON\") {\r\n\t\t\tdelete copy.id;\r\n\t\t\tdelete copy[this.action_param];\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(copy);\r\n\t},\r\n\r\n\t// GET/POST/JSON modes of the dataProcessor didn't send the whole data items in 'delete' requests\r\n\t// clear extra info from the data in order not to change the request format\r\n\t_cleanupArgumentsBeforeSend: function(dataToSend) {\r\n\t\tvar processedData;\r\n\t\tif(dataToSend[this.action_param] === undefined){// hash of updated items, and not an individual item\r\n\t\t\tprocessedData = {};\r\n\t\t\tfor(var i in dataToSend) {\r\n\t\t\t\tprocessedData[i] = this._cleanupArgumentsBeforeSend(dataToSend[i]);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tprocessedData = this._cleanupItemBeforeSend(dataToSend);\r\n\t\t}\r\n\t\treturn processedData;\r\n\t},\r\n\t_cleanupItemBeforeSend: function(updatedItem) {\r\n\t\tvar output = null;\r\n\t\tif(updatedItem){\r\n\t\t\tif(updatedItem[this.action_param] === \"deleted\"){\r\n\t\t\t\toutput = {};\r\n\t\t\t\toutput.id = updatedItem.id;\r\n\t\t\t\toutput[this.action_param] = updatedItem[this.action_param];\r\n\t\t\t}else{\r\n\t\t\t\toutput = updatedItem;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn output;\r\n\t},\r\n\r\n\t_forEachUpdatedRow: function(code) {\r\n\t\tvar updatedRows = this.updatedRows.slice();\r\n\t\tfor (var i = 0; i < updatedRows.length; i++) {\r\n\t\t\tvar rowId = updatedRows[i];\r\n\t\t\tif (this.$scheduler.getUserData(rowId, this.action_param)) {\r\n\t\t\t\tcode.call(this, rowId);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_prepareItemForJson(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (let i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop){\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForJson(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t\t}\r\n\t\t\t} else if (prop !== undefined){\r\n\t\t\t\tprocessedItem[i] = prop; \r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareItemForForm(item){\r\n\t\tconst processedItem = {};\r\n\t\tconst scheduler = this.$scheduler;\r\n\t\tconst copy = scheduler.utils.copy(item);\r\n\t\tfor (var i in copy) {\r\n\t\t\tlet prop = copy[i];\r\n\t\t\tif (i.indexOf(\"_\") === 0) {\r\n\t\t\t\tcontinue;\r\n\t\t\t} else if (prop) {\r\n\t\t\t\tif(prop.getUTCFullYear){\r\n\t\t\t\t\tprocessedItem[i] = scheduler._helpers.formatDate(prop);\r\n\t\t\t\t} else if(typeof prop == \"object\") {\r\n\t\t\t\t\tprocessedItem[i] = this._prepareItemForForm(prop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tprocessedItem[i] = prop;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tprocessedItem[i] = \"\"; // for all falthy values\r\n\t\t\t}\r\n\t\t}\r\n\t\tprocessedItem[this.action_param] = scheduler.getUserData(item.id, this.action_param);\r\n\t\treturn processedItem;\r\n\t},\r\n\t_prepareDataItem: function(item) {\r\n\t\tif(this._serializeAsJson){\r\n\t\t\treturn this._prepareItemForJson(item);\r\n\t\t}else {\r\n\t\t\treturn this._prepareItemForForm(item);\r\n\t\t}\r\n\t},\r\n\t_getRowData: function(id) {\r\n\t\tvar dataItem = this.$scheduler.getEvent(id);\r\n\t\tif (!dataItem) {\r\n\t\t\tdataItem = { id: id };\r\n\t\t}\r\n\t\treturn this._prepareDataItem(dataItem);\r\n\t}\r\n};\r\n\r\n\r\nexport default function extend(scheduler) {\r\n\r\nscheduler.createDataProcessor = function(config) {\r\n\tvar router;\r\n\tvar tMode;\r\n\tif (config instanceof Function) {\r\n\t\trouter = config;\r\n\t} else if (config.hasOwnProperty(\"router\")) {\r\n\t\trouter = config.router;\r\n\t} else if(config.hasOwnProperty(\"event\")){\r\n\t\trouter = config;\r\n\t}\r\n\r\n\tif (router) {\r\n\t\ttMode = \"CUSTOM\";\r\n\t} else {\r\n\t\ttMode = config.mode || \"REST-JSON\";\r\n\t}\r\n\r\n\tvar dp = new DataProcessor(config.url);\r\n\tdp.init(scheduler);\r\n\tdp.setTransactionMode({\r\n\t\tmode: tMode,\r\n\t\trouter: router\r\n\t}, config.batchUpdate); // FIXME: config.batchUpdate where it is explained?\r\n\treturn dp;\r\n};\r\n\r\nscheduler.DataProcessor = DataProcessor;\r\n\r\n}\r\n\r\n//var dataProcessor = global.dataProcessor = DataProcessor; // for old","import utils from \"./utils/utils\";\r\nimport domHelpers from \"./utils/dom_helpers\";\r\n\r\n\r\nexport default function(scheduler) {\r\n\r\n\tvar boxAttribute = \"data-dhxbox\";\r\n\r\n\tvar _dhx_msg_cfg = null;\r\n\r\n\tfunction callback(config, result) {\r\n\t\tvar usercall = config.callback;\r\n\t\tmodalBox.hide(config.box);\r\n\r\n\t\t_dhx_msg_cfg = config.box = null;\r\n\tif (usercall)\r\n\t\t\tusercall(result);\r\n\t}\r\n\r\n\tfunction modal_key(event) {\r\n\t\tif (_dhx_msg_cfg) {\r\n\r\n\t\t\tvar code = event.which || event.keyCode;\r\n\t\t\tvar preventDefault = false;\r\n\r\n\t\t\tif (messageBox.keyboard) {\r\n\t\t\t\tif (code == 13 || code == 32) {\r\n\t\t\t\t\t// default behavior is to confirm/submit popup on space/enter\r\n\t\t\t\t\t// if browser focus is set on button element - do button click instead of default behavior\r\n\t\t\t\t\tvar target = event.target || event.srcElement;\r\n\t\t\t\t\tif (domHelpers.getClassName(target).indexOf(\"scheduler_popup_button\") > -1 && target.click) {\r\n\t\t\t\t\t\ttarget.click();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback(_dhx_msg_cfg, true);\r\n\t\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (code == 27) {\r\n\t\t\t\t\tcallback(_dhx_msg_cfg, false);\r\n\t\t\t\t\tpreventDefault = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (preventDefault) {\r\n\t\t\t\tif (event.preventDefault){\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\treturn !(event.cancelBubble = true);\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", modal_key, true);\r\n\r\n\tfunction modality(mode) {\r\n\t\tif (!modality.cover) {\r\n\t\t\tmodality.cover = document.createElement(\"div\");\r\n\t\t\t//necessary for IE only\r\n\t\t\tscheduler.event(modality.cover, \"keydown\", modal_key);\r\n\t\t\tmodality.cover.className = \"dhx_modal_cover\";\r\n\t\t\tdocument.body.appendChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tmodality.cover.style.display = mode ? \"inline-block\" : \"none\";\r\n\t}\r\n\r\n\tfunction button(text, classValue, result) {\r\n\t\tvar buttonAriaAttrs = scheduler._waiAria.messageButtonAttrString(text);\r\n\t\tvar name = (classValue || \"\").toLowerCase().replace(/ /g, \"_\");\r\n\t\tvar buttonCss = `scheduler_${name}_button dhtmlx_${name}_button`; \r\n\t\treturn `
${text}
`;\r\n\t}\r\n\r\n\tfunction info(text) {\r\n\t\tif (!messageBox.area) {\r\n\t\t\tmessageBox.area = document.createElement(\"div\");\r\n\t\t\tmessageBox.area.className = \"scheduler_message_area dhtmlx_message_area\";\r\n\t\t\tmessageBox.area.style[messageBox.position] = \"5px\";\r\n\t\t\tdocument.body.appendChild(messageBox.area);\r\n\t\t}\r\n\r\n\t\tmessageBox.hide(text.id);\r\n\t\tvar message = document.createElement(\"div\");\r\n\t\tmessage.innerHTML = \"
\" + text.text + \"
\";\r\n\t\tmessage.className = \"scheduler-info dhtmlx-info scheduler-\" + text.type + \" dhtmlx-\" + text.type;\r\n\t\tscheduler.event(message, \"click\",function (e) {\r\n if(text.callback) {\r\n text.callback.call(this, e);\r\n }\r\n\t\t\tmessageBox.hide(text.id);\r\n\t\t\ttext = null;\r\n\t\t});\r\n\r\n\t\tscheduler._waiAria.messageInfoAttr(message);\r\n\r\n\t\tif (messageBox.position == \"bottom\" && messageBox.area.firstChild)\r\n\t\t\tmessageBox.area.insertBefore(message, messageBox.area.firstChild);\r\n\t\telse\r\n\t\t\tmessageBox.area.appendChild(message);\r\n\r\n\t\tif (text.expire > 0)\r\n\t\t\tmessageBox.timers[text.id] = window.setTimeout(function () {\r\n\t\t\t\t// GS-1213: We need that when Scheduler is destroyed\r\n\t\t\t\tif (messageBox) messageBox.hide(text.id);\r\n\t\t\t}, text.expire);\r\n\r\n\t\tmessageBox.pull[text.id] = message;\r\n\t\tmessage = null;\r\n\r\n\t\treturn text.id;\r\n\t}\r\n\r\n\tfunction getFirstDefined() {\r\n\t\tvar values = [].slice.apply(arguments, [0]);\r\n\r\n\t\tfor (var i = 0; i < values.length; i++) {\r\n\t\t\tif (values[i]) {\r\n\t\t\t\treturn values[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction _boxStructure(config, ok, cancel) {\r\n\t\tvar box = document.createElement(\"div\");\r\n\r\n\t\tvar contentId = utils.uid();\r\n\t\tscheduler._waiAria.messageModalAttr(box, contentId);\r\n\r\n\r\n\t\tbox.className = \" scheduler_modal_box dhtmlx_modal_box scheduler-\" + config.type + \" dhtmlx-\" + config.type;\r\n\t\tbox.setAttribute(boxAttribute, 1);\r\n\r\n\t\tvar inner = '';\r\n\r\n\t\tif (config.width)\r\n\t\t\tbox.style.width = config.width;\r\n\t\tif (config.height)\r\n\t\t\tbox.style.height = config.height;\r\n\t\tif (config.title)\r\n\t\t\tinner += '
' + config.title + '
';\r\n\t\tinner += '
' + (config.content ? '' : config.text) + '
';\r\n\t\tif (ok)\r\n\t\t\tinner += button(getFirstDefined(config.ok, scheduler.locale.labels.message_ok, \"OK\"), \"ok\", true);\r\n\t\tif (cancel)\r\n\t\t\tinner += button(getFirstDefined(config.cancel, scheduler.locale.labels.message_cancel, \"Cancel\"), \"cancel\", false);\r\n\r\n\t\tif (config.buttons) {\r\n\t\t\tfor (var i = 0; i < config.buttons.length; i++) {\r\n\t\t\t\tvar btn = config.buttons[i];\r\n\t\t\t\tif (typeof btn == \"object\") {\r\n\t\t\t\t\t// Support { label:\"Save\", css:\"main_button\", value:\"save\" }\r\n\t\t\t\t\tvar label = btn.label;\r\n\t\t\t\t\tvar css = btn.css || (\"scheduler_\" + btn.label.toLowerCase() + \"_button dhtmlx_\" + btn.label.toLowerCase() + \"_button\");\r\n\t\t\t\t\tvar value = btn.value || i;\r\n\t\t\t\t\tinner += button(label, css, value);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tinner += button(btn, btn, i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tinner += '
';\r\n\t\tbox.innerHTML = inner;\r\n\r\n\t\tif (config.content) {\r\n\t\t\tvar node = config.content;\r\n\t\t\tif (typeof node == \"string\")\r\n\t\t\t\tnode = document.getElementById(node);\r\n\t\t\tif (node.style.display == 'none')\r\n\t\t\t\tnode.style.display = \"\";\r\n\t\t\tbox.childNodes[config.title ? 1 : 0].appendChild(node);\r\n\t\t}\r\n\r\n\t\tscheduler.event(box, \"click\", function (event) {\r\n\t\t\tvar source = event.target || event.srcElement;\r\n\t\t\tif (!source.className) source = source.parentNode;\r\n\t\t\tif (domHelpers.closest(source, \".scheduler_popup_button\")) {\r\n\t\t\t\tvar result = source.getAttribute(\"data-result\");\r\n\t\t\t\tresult = (result == \"true\") || (result == \"false\" ? false : result);\r\n\t\t\t\tcallback(config, result);\r\n\t\t\t}\r\n\t\t});\r\n\t\tconfig.box = box;\r\n\t\tif (ok || cancel)\r\n\t\t\t_dhx_msg_cfg = config;\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction _createBox(config, ok, cancel) {\r\n\t\tvar box = config.tagName ? config : _boxStructure(config, ok, cancel);\r\n\r\n\t\tif (!config.hidden)\r\n\t\t\tmodality(true);\r\n\t\tdocument.body.appendChild(box);\r\n\t\tvar x = Math.abs(Math.floor(((window.innerWidth || document.documentElement.offsetWidth) - box.offsetWidth) / 2));\r\n\t\tvar y = Math.abs(Math.floor(((window.innerHeight || document.documentElement.offsetHeight) - box.offsetHeight) / 2));\r\n\t\tif (config.position == \"top\")\r\n\t\t\tbox.style.top = \"-3px\";\r\n\t\telse\r\n\t\t\tbox.style.top = y + 'px';\r\n\t\tbox.style.left = x + 'px';\r\n\t\t//necessary for IE only\r\n\t\tscheduler.event(box, \"keydown\", modal_key);\r\n\r\n\t\tmodalBox.focus(box);\r\n\r\n\t\tif (config.hidden)\r\n\t\t\tmodalBox.hide(box);\r\n\r\n\t\tscheduler.callEvent(\"onMessagePopup\", [box]);\r\n\t\treturn box;\r\n\t}\r\n\r\n\tfunction alertPopup(config) {\r\n\t\treturn _createBox(config, true, false);\r\n\t}\r\n\r\n\tfunction confirmPopup(config) {\r\n\t\treturn _createBox(config, true, true);\r\n\t}\r\n\r\n\tfunction boxPopup(config) {\r\n\t\treturn _createBox(config);\r\n\t}\r\n\r\n\tfunction box_params(text, type, callback) {\r\n\t\tif (typeof text != \"object\") {\r\n\t\t\tif (typeof type == \"function\") {\r\n\t\t\t\tcallback = type;\r\n\t\t\t\ttype = \"\";\r\n\t\t\t}\r\n\t\t\ttext = {text: text, type: type, callback: callback};\r\n\t\t}\r\n\t\treturn text;\r\n\t}\r\n\r\n\tfunction params(text, type, expire, id, callback) {\r\n\t\tif (typeof text != \"object\")\r\n\t\t\ttext = {text: text, type: type, expire: expire, id: id, callback: callback};\r\n\t\ttext.id = text.id || utils.uid();\r\n\t\ttext.expire = text.expire || messageBox.expire;\r\n\t\treturn text;\r\n\t}\r\n\r\n\tvar alertBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"confirm\";\r\n\t\treturn alertPopup(text);\r\n\t};\r\n\tvar confirmBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn confirmPopup(text);\r\n\t};\r\n\tvar modalBox = function () {\r\n\t\tvar text = box_params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"alert\";\r\n\t\treturn boxPopup(text);\r\n\t};\r\n\tmodalBox.hide = function (node) {\r\n\t\twhile (node && node.getAttribute && !node.getAttribute(boxAttribute))\r\n\t\t\tnode = node.parentNode;\r\n\t\tif (node) {\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t\tmodality(false);\r\n\r\n\t\t\tscheduler.callEvent(\"onAfterMessagePopup\", [node]);\r\n\t\t}\r\n\t};\r\n\r\n\tmodalBox.focus = function (node) {\r\n\t\tsetTimeout(function () {\r\n\t\t\tvar focusable = domHelpers.getFocusableNodes(node);\r\n\t\t\tif (focusable.length) {\r\n\t\t\t\tif (focusable[0].focus) focusable[0].focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t};\r\n\r\n\tvar messageBox = function (text, type, expire, id) {\r\n\t\ttext = params.apply(this, arguments);\r\n\t\ttext.type = text.type || \"info\";\r\n\r\n\t\tvar subtype = text.type.split(\"-\")[0];\r\n\t\tswitch (subtype) {\r\n\t\t\tcase \"alert\":\r\n\t\t\t\treturn alertPopup(text);\r\n\t\t\tcase \"confirm\":\r\n\t\t\t\treturn confirmPopup(text);\r\n\t\t\tcase \"modalbox\":\r\n\t\t\t\treturn boxPopup(text);\r\n\t\t\tdefault:\r\n\t\t\t\treturn info(text);\r\n\t\t}\r\n\t};\r\n\r\n\tmessageBox.seed = (new Date()).valueOf();\r\n\tmessageBox.uid = utils.uid;\r\n\tmessageBox.expire = 4000;\r\n\tmessageBox.keyboard = true;\r\n\tmessageBox.position = \"top\";\r\n\tmessageBox.pull = {};\r\n\tmessageBox.timers = {};\r\n\r\n\tmessageBox.hideAll = function () {\r\n\t\tfor (var key in messageBox.pull)\r\n\t\t\tmessageBox.hide(key);\r\n\t};\r\n\tmessageBox.hide = function (id) {\r\n\t\tvar obj = messageBox.pull[id];\r\n\t\tif (obj && obj.parentNode) {\r\n\t\t\twindow.setTimeout(function () {\r\n\t\t\t\tobj.parentNode.removeChild(obj);\r\n\t\t\t\tobj = null;\r\n\t\t\t}, 2000);\r\n\t\t\tobj.className += \" hidden\";\r\n\r\n\t\t\tif (messageBox.timers[id])\r\n\t\t\t\twindow.clearTimeout(messageBox.timers[id]);\r\n\t\t\tdelete messageBox.pull[id];\r\n\t\t}\r\n\t};\r\n\r\n\tvar popups = [];\r\n\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\tpopups.push(box);\r\n\t});\r\n\tscheduler.attachEvent(\"onAfterMessagePopup\", function(box){\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i] === box){\r\n\t\t\t\tpopups.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tif(modality.cover && modality.cover.parentNode){\r\n\t\t\tmodality.cover.parentNode.removeChild(modality.cover);\r\n\t\t}\r\n\r\n\t\tfor(var i = 0; i < popups.length; i++){\r\n\t\t\tif(popups[i].parentNode){\r\n\t\t\t\tpopups[i].parentNode.removeChild(popups[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\tpopups = null;\r\n\r\n\t\tif(messageBox.area && messageBox.area.parentNode){\r\n\t\t\tmessageBox.area.parentNode.removeChild(messageBox.area);\r\n\t\t}\r\n\t\tmessageBox = null;\r\n\t});\r\n\r\n\treturn {\r\n\t\talert: alertBox,\r\n\t\tconfirm: confirmBox,\r\n\t\tmessage: messageBox,\r\n\t\tmodalbox: modalBox\r\n\t};\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"كانون الثاني\", \"شباط\", \"آذار\", \"نيسان\", \"أيار\", \"حزيران\", \"تموز\", \"آب\", \"أيلول\", \"تشرين الأول\", \"تشرين الثاني\", \"كانون الأول\"],\r\n\t\tmonth_short: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_full: [\"الأحد\", \"الأثنين\", \"ألثلاثاء\", \"الأربعاء\", \"ألحميس\", \"ألجمعة\", \"السبت\"],\r\n\t\tday_short: [\"احد\", \"اثنين\", \"ثلاثاء\", \"اربعاء\", \"خميس\", \"جمعة\", \"سبت\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"اليوم\",\r\n\t\tday_tab: \"يوم\",\r\n\t\tweek_tab: \"أسبوع\",\r\n\t\tmonth_tab: \"شهر\",\r\n\t\tnew_event: \"حدث جديد\",\r\n\t\ticon_save: \"اخزن\",\r\n\t\ticon_cancel: \"الغاء\",\r\n\t\ticon_details: \"تفاصيل\",\r\n\t\ticon_edit: \"تحرير\",\r\n\t\ticon_delete: \"حذف\",\r\n\t\tconfirm_closing: \"التغييرات سوف تضيع, هل انت متأكد؟\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"الحدث سيتم حذفها نهائيا ، هل أنت متأكد؟\",\r\n\t\tsection_description: \"الوصف\",\r\n\t\tsection_time: \"الفترة الزمنية\",\r\n\t\tfull_day: \"طوال اليوم\",\r\n\r\n\t\tconfirm_recurring: \"هل تريد تحرير مجموعة كاملة من الأحداث المتكررة؟\",\r\n\t\tsection_recurring: \"تكرار الحدث\",\r\n\t\tbutton_recurring: \"تعطيل\",\r\n\t\tbutton_recurring_open: \"تمكين\",\r\n\t\tbutton_edit_series: \"تحرير سلسلة\",\r\n\t\tbutton_edit_occurrence: \"تعديل نسخة\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"جدول\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"يومي\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"أسبوعي\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"شهري\",\r\n\t\trepeat_radio_year: \"سنوي\",\r\n\t\trepeat_radio_day_type: \"كل\",\r\n\t\trepeat_text_day_count: \"يوم\",\r\n\t\trepeat_radio_day_type2: \"كل يوم عمل\",\r\n\t\trepeat_week: \" تكرار كل\",\r\n\t\trepeat_text_week_count: \"أسبوع في الأيام التالية:\",\r\n\t\trepeat_radio_month_type: \"تكرار\",\r\n\t\trepeat_radio_month_start: \"في\",\r\n\t\trepeat_text_month_day: \"يوم كل\",\r\n\t\trepeat_text_month_count: \"شهر\",\r\n\t\trepeat_text_month_count2_before: \"كل\",\r\n\t\trepeat_text_month_count2_after: \"شهر\",\r\n\t\trepeat_year_label: \"في\",\r\n\t\tselect_year_day2: \"من\",\r\n\t\trepeat_text_year_day: \"يوم\",\r\n\t\tselect_year_month: \"شهر\",\r\n\t\trepeat_radio_end: \"بدون تاريخ انتهاء\",\r\n\t\trepeat_text_occurences_count: \"تكرارات\",\r\n\t\trepeat_radio_end2: \"بعد\",\r\n\t\trepeat_radio_end3: \"ينتهي في\",\r\n\r\n\t\trepeat_never: \"أبداً\",\r\n\t\trepeat_daily: \"كل يوم\",\r\n\t\trepeat_workdays: \"كل يوم عمل\",\r\n\t\trepeat_weekly: \"كل أسبوع\",\r\n\t\trepeat_monthly: \"كل شهر\",\r\n\t\trepeat_yearly: \"كل سنة\",\r\n\t\trepeat_custom: \"تخصيص\",\r\n\t\trepeat_freq_day: \"يوم\",\r\n\t\trepeat_freq_week: \"أسبوع\",\r\n\t\trepeat_freq_month: \"شهر\",\r\n\t\trepeat_freq_year: \"سنة\",\r\n\t\trepeat_on_date: \"في التاريخ\",\r\n\t\trepeat_ends: \"ينتهي\",\r\n\r\n\t\tmonth_for_recurring: [\"يناير\", \"فبراير\", \"مارس\", \"أبريل\", \"مايو\", \"يونيو\", \"يوليو\", \"أغسطس\", \"سبتمبر\", \"أكتوبر\", \"نوفمبر\", \"ديسمبر\"],\r\n\t\tday_for_recurring: [\"الأحد\", \"الإثنين\", \"الثلاثاء\", \"الأربعاء\", \"الخميس\", \"الجمعة\", \"السبت\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n Translation by Sofya Morozova\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Студзень\", \"Люты\", \"Сакавік\", \"Красавік\", \"Maй\", \"Чэрвень\", \"Ліпень\", \"Жнівень\", \"Верасень\", \"Кастрычнік\", \"Лістапад\", \"Снежань\"],\r\n\t\tmonth_short: [\"Студз\", \"Лют\", \"Сак\", \"Крас\", \"Maй\", \"Чэр\", \"Ліп\", \"Жнів\", \"Вер\", \"Каст\", \"Ліст\", \"Снеж\"],\r\n\t\tday_full: [ \"Нядзеля\", \"Панядзелак\", \"Аўторак\", \"Серада\", \"Чацвер\", \"Пятніца\", \"Субота\"],\r\n\t\tday_short: [\"Нд\", \"Пн\", \"Аўт\", \"Ср\", \"Чцв\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сёння\",\r\n\t\tday_tab: \"Дзень\",\r\n\t\tweek_tab: \"Тыдзень\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новая падзея\",\r\n\t\ticon_save: \"Захаваць\",\r\n\t\ticon_cancel: \"Адмяніць\",\r\n\t\ticon_details: \"Дэталі\",\r\n\t\ticon_edit: \"Змяніць\",\r\n\t\ticon_delete: \"Выдаліць\",\r\n\t\tconfirm_closing: \"\", //Унесеныя змены будуць страчаны, працягнуць?\r\n\t\tconfirm_deleting: \"Падзея будзе выдалена незваротна, працягнуць?\",\r\n\t\tsection_description: \"Апісанне\",\r\n\t\tsection_time: \"Перыяд часу\",\r\n\t\tfull_day: \"Увесь дзень\",\r\n\r\n\t\tconfirm_recurring: \"Вы хочаце змяніць усю серыю паўтаральных падзей?\",\r\n\t\tsection_recurring: \"Паўтарэнне\",\r\n\t\tbutton_recurring: \"Адключана\",\r\n\t\tbutton_recurring_open: \"Уключана\",\r\n\t\tbutton_edit_series: \"Рэдагаваць серыю\",\r\n\t\tbutton_edit_occurrence: \"Рэдагаваць асобнік\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Спіс\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Апісанне\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Спіс\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Спic\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Дзень\",\r\n\t\trepeat_radio_week: \"Тыдзень\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Кожны\",\r\n\t\trepeat_text_day_count: \"дзень\",\r\n\t\trepeat_radio_day_type2: \"Кожны працоўны дзень\",\r\n\t\trepeat_week: \" Паўтараць кожны\",\r\n\t\trepeat_text_week_count: \"тыдзень\",\r\n\t\trepeat_radio_month_type: \"Паўтараць\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" чысла кожнага\",\r\n\t\trepeat_text_month_count: \"месяцу\",\r\n\t\trepeat_text_month_count2_before: \"кожны \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"дзень\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты заканчэння\",\r\n\t\trepeat_text_occurences_count: \"паўтораў\",\r\n\t\trepeat_radio_end2: \"\",\r\n\t\trepeat_radio_end3: \"Да \",\r\n\r\n\t\trepeat_never: \"Ніколі\",\r\n\t\trepeat_daily: \"Кожны дзень\",\r\n\t\trepeat_workdays: \"Кожны працоўны дзень\",\r\n\t\trepeat_weekly: \"Кожны тыдзень\",\r\n\t\trepeat_monthly: \"Кожны месяц\",\r\n\t\trepeat_yearly: \"Кожны год\",\r\n\t\trepeat_custom: \"Наладжвальны\",\r\n\t\trepeat_freq_day: \"Дзень\",\r\n\t\trepeat_freq_week: \"Тыдзень\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Заканчваецца\",\r\n\r\n\t\tmonth_for_recurring: [\"Студзеня\", \"Лютага\", \"Сакавіка\", \"Красавіка\", \"Мая\", \"Чэрвеня\", \"Ліпeня\", \"Жніўня\", \"Верасня\", \"Кастрычніка\", \"Лістапада\", \"Снежня\"],\r\n\t\tday_for_recurring: [\"Нядзелю\", \"Панядзелак\", \"Аўторак\", \"Сераду\", \"Чацвер\", \"Пятніцу\", \"Суботу\"]\r\n\t}\r\n};\r\n","/*\r\n @Traducido por Vicente Adria Bohigues - vicenteadria@hotmail.com\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Oct\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"],\r\n\t\tday_short: [\"Dg\", \"Dl\", \"Dm\", \"Dc\", \"Dj\", \"Dv\", \"Ds\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hui\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Setmana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nou esdeveniment\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancel·lar\",\r\n\t\ticon_details: \"Detalls\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Esborrar\",\r\n\t\tconfirm_closing: \"\", //\"Els seus canvis es perdràn, continuar ?\"\r\n\t\tconfirm_deleting: \"L'esdeveniment s'esborrarà definitivament, continuar ?\",\r\n\t\tsection_description: \"Descripció\",\r\n\t\tsection_time: \"Periode de temps\",\r\n\t\tfull_day: \"Tot el dia\",\r\n\r\n\t\tconfirm_recurring: \"¿Desitja modificar el conjunt d'esdeveniments repetits?\",\r\n\t\tsection_recurring: \"Repeteixca l'esdeveniment\",\r\n\t\tbutton_recurring: \"Impedit\",\r\n\t\tbutton_recurring_open: \"Permés\",\r\n\t\tbutton_edit_series: \"Edit sèrie\",\r\n\t\tbutton_edit_occurrence: \"Edita Instància\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descripció\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Any\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Taula\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create: \"Drag to create\",\r\n\t\tdrag_to_move: \"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok: \"OK\",\r\n\t\tmessage_cancel: \"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour: \"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diari\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Setmanal\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mensual\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada dia laborable\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"setmana els dies següents:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada\",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"de\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sense data de finalització\",\r\n\t\trepeat_text_occurences_count: \"ocurrències\",\r\n\t\trepeat_radio_end2: \"Després\",\r\n\t\trepeat_radio_end3: \"Finalitzar el\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Cada dia\",\r\n\t\trepeat_workdays: \"Cada dia laborable\",\r\n\t\trepeat_weekly: \"Cada setmana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada any\",\r\n\t\trepeat_custom: \"Personalitzat\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Setmana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Any\",\r\n\t\trepeat_on_date: \"En la data\",\r\n\t\trepeat_ends: \"Finalitza\",\r\n\r\n\t\tmonth_for_recurring: [\"Gener\", \"Febrer\", \"Març\", \"Abril\", \"Maig\", \"Juny\", \"Juliol\", \"Agost\", \"Setembre\", \"Octubre\", \"Novembre\", \"Desembre\"],\r\n\t\tday_for_recurring: [\"Diumenge\", \"Dilluns\", \"Dimarts\", \"Dimecres\", \"Dijous\", \"Divendres\", \"Dissabte\"]\r\n\t}\r\n};","/*\r\nTranslation by FreezeSoul\r\n*/\r\n//scheduler.config.day_date=\"%M %d日 %D\";\r\n//scheduler.config.default_date=\"%Y年 %M %d日\";\r\n//scheduler.config.month_date=\"%Y年 %M\";\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tmonth_short: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"],\r\n\t\tday_short: [\"日\", \"一\", \"二\", \"三\", \"四\", \"五\", \"六\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今天\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"周\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新建日程\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"关闭\",\r\n\t\ticon_details: \"详细\",\r\n\t\ticon_edit: \"编辑\",\r\n\t\ticon_delete: \"删除\",\r\n\t\tconfirm_closing: \"请确认是否撤销修改!\", //Your changes will be lost, are your sure?\r\n\t\tconfirm_deleting: \"是否删除日程?\",\r\n\t\tsection_description: \"描述\",\r\n\t\tsection_time: \"时间范围\",\r\n\t\tfull_day: \"整天\",\r\n\r\n\t\tconfirm_recurring:\"请确认是否将日程设为重复模式?\",\r\n\t\tsection_recurring:\"重复周期\",\r\n\t\tbutton_recurring:\"禁用\",\r\n\t\tbutton_recurring_open:\"启用\",\r\n\t\tbutton_edit_series: \"编辑系列\",\r\n\t\tbutton_edit_occurrence: \"编辑实例\",\r\n\t\t\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"议程\",\r\n\t\tdate:\"日期\",\r\n\t\tdescription:\"说明\",\r\n\t\t\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"议程\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab:\"电网\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"按天\",\r\n\t\trepeat_radio_week: \"按周\",\r\n\t\trepeat_radio_month: \"按月\",\r\n\t\trepeat_radio_year: \"按年\",\r\n\t\trepeat_radio_day_type: \"每\",\r\n\t\trepeat_text_day_count: \"天\",\r\n\t\trepeat_radio_day_type2: \"每个工作日\",\r\n\t\trepeat_week: \" 重复 每\",\r\n\t\trepeat_text_week_count: \"星期的:\",\r\n\t\trepeat_radio_month_type: \"重复\",\r\n\t\trepeat_radio_month_start: \"在\",\r\n\t\trepeat_text_month_day: \"日 每\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"每\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"在\",\r\n\t\tselect_year_day2: \"的\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"无结束日期\",\r\n\t\trepeat_text_occurences_count: \"次结束\",\r\n\t\trepeat_radio_end2: \"重复\",\r\n\t\trepeat_radio_end3: \"结束于\",\r\n\t\t\r\n\t\trepeat_never: \"从不\",\r\n\t\trepeat_daily: \"每天\",\r\n\t\trepeat_workdays: \"每个工作日\",\r\n\t\trepeat_weekly: \"每周\",\r\n\t\trepeat_monthly: \"每月\",\r\n\t\trepeat_yearly: \"每年\",\r\n\t\trepeat_custom: \"自定义\",\r\n\t\trepeat_freq_day: \"天\",\r\n\t\trepeat_freq_week: \"周\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"在日期\",\r\n\t\trepeat_ends: \"结束\",\r\n\r\n\t\tmonth_for_recurring: [\"一月\", \"二月\", \"三月\", \"四月\", \"五月\", \"六月\", \"七月\", \"八月\", \"九月\", \"十月\", \"十一月\", \"十二月\"],\r\n\t\tday_for_recurring: [\"星期日\", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tmonth_short: [\"Led\", \"Ún\", \"Bře\", \"Dub\", \"Kvě\", \"Čer\", \"Čec\", \"Srp\", \"Září\", \"Říj\", \"List\", \"Pro\"],\r\n\t\tday_full: [\"Neděle\", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Út\", \"St\", \"Čt\", \"Pá\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Den\",\r\n\t\tweek_tab: \"Týden\",\r\n\t\tmonth_tab: \"Měsíc\",\r\n\t\tnew_event: \"Nová událost\",\r\n\t\ticon_save: \"Uložit\",\r\n\t\ticon_cancel: \"Zpět\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Smazat\",\r\n\t\tconfirm_closing: \"\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Událost bude trvale smazána, opravdu?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Přejete si upravit celou řadu opakovaných událostí?\",\r\n\t\tsection_recurring: \"Opakování události\",\r\n\t\tbutton_recurring: \"Vypnuto\",\r\n\t\tbutton_recurring_open: \"Zapnuto\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Upravit instance\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Full day\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mřížka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denně\",\r\n\t\trepeat_radio_week: \"Týdně\",\r\n\t\trepeat_radio_month: \"Měsíčně\",\r\n\t\trepeat_radio_year: \"Ročně\",\r\n\t\trepeat_radio_day_type: \"každý\",\r\n\t\trepeat_text_day_count: \"Den\",\r\n\t\trepeat_radio_day_type2: \"pracovní dny\",\r\n\t\trepeat_week: \"Opakuje každých\",\r\n\t\trepeat_text_week_count: \"Týdnů na:\",\r\n\t\trepeat_radio_month_type: \"u každého\",\r\n\t\trepeat_radio_month_start: \"na\",\r\n\t\trepeat_text_month_day: \"Den každého\",\r\n\t\trepeat_text_month_count: \"Měsíc\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"Měsíc\",\r\n\t\trepeat_year_label: \"na\",\r\n\t\tselect_year_day2: \"v\",\r\n\t\trepeat_text_year_day: \"Den v\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"bez data ukončení\",\r\n\t\trepeat_text_occurences_count: \"Události\",\r\n\t\trepeat_radio_end2: \"po\",\r\n\t\trepeat_radio_end3: \"Konec\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý den\",\r\n\t\trepeat_workdays: \"Každý pracovní den\",\r\n\t\trepeat_weekly: \"Každý týden\",\r\n\t\trepeat_monthly: \"Každý měsíc\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastní\",\r\n\t\trepeat_freq_day: \"Den\",\r\n\t\trepeat_freq_week: \"Týden\",\r\n\t\trepeat_freq_month: \"Měsíc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Končí\",\r\n\r\n\t\tmonth_for_recurring: [\"Leden\", \"Únor\", \"Březen\", \"Duben\", \"Květen\", \"Červen\", \"Červenec\", \"Srpen\", \"Září\", \"Říjen\", \"Listopad\", \"Prosinec\"],\r\n\t\tday_for_recurring: [\"Neděle \", \"Pondělí\", \"Úterý\", \"Středa\", \"Čtvrtek\", \"Pátek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marts\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uge\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny begivenhed\",\r\n\t\ticon_save: \"Gem\",\r\n\t\ticon_cancel: \"Fortryd\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Tilret\",\r\n\t\ticon_delete: \"Slet\",\r\n\t\tconfirm_closing: \"Dine rettelser vil gå tabt.. Er dy sikker?\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Bigivenheden vil blive slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du tilrette hele serien af gentagne begivenheder?\",\r\n\t\tsection_recurring: \"Gentag begivenhed\",\r\n\t\tbutton_recurring: \"Frakoblet\",\r\n\t\tbutton_recurring_open: \"Tilkoblet\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Rediger en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagsorden\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagsorden\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ugenlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"På hver arbejdsdag\",\r\n\t\trepeat_week: \" Gentager sig hver\",\r\n\t\trepeat_text_week_count: \"uge på følgende dage:\",\r\n\t\trepeat_radio_month_type: \"Hver den\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \" i hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen slutdato\",\r\n\t\trepeat_text_occurences_count: \"gentagelse\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\t\trepeat_radio_end3: \"Slut\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver hverdag\",\r\n\t\trepeat_weekly: \"Hver uge\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Brugerdefineret\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uge\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\" Januar\", \" Februar\", \" März \", \" April\", \" Mai\", \" Juni\", \" Juli\", \" August\", \" September \", \" Oktober\", \" November \", \" Dezember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [ \"Sonntag\", \"Montag\", \"Dienstag\", \" Mittwoch\", \" Donnerstag\", \"Freitag\", \"Samstag\"],\r\n\t\tday_short: [\"So\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Heute\",\r\n\t\tday_tab: \"Tag\",\r\n\t\tweek_tab: \"Woche\",\r\n\t\tmonth_tab: \"Monat\",\r\n\t\tnew_event: \"neuer Eintrag\",\r\n\t\ticon_save: \"Speichern\",\r\n\t\ticon_cancel: \"Abbrechen\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Ändern\",\r\n\t\ticon_delete: \"Löschen\",\r\n\t\tconfirm_closing: \"\", //\"Ihre Veränderungen werden verloren sein, wollen Sie ergänzen? \"\r\n\t\tconfirm_deleting: \"Der Eintrag wird gelöscht\",\r\n\t\tsection_description: \"Beschreibung\",\r\n\t\tsection_time: \"Zeitspanne\",\r\n\t\tfull_day: \"Ganzer Tag\",\r\n\r\n\t\tconfirm_recurring: \"Wollen Sie alle Einträge bearbeiten oder nur diesen einzelnen Eintrag?\",\r\n\t\tsection_recurring: \"Wiederholung\",\r\n\t\tbutton_recurring: \"Aus\",\r\n\t\tbutton_recurring_open: \"An\",\r\n\t\tbutton_edit_series: \"Bearbeiten Sie die Serie\",\r\n\t\tbutton_edit_occurrence: \"Bearbeiten Sie eine Kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beschreibung\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jahre\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Täglich\",\r\n\t\trepeat_radio_week: \"Wöchentlich\",\r\n\t\trepeat_radio_month: \"Monatlich\",\r\n\t\trepeat_radio_year: \"Jährlich\",\r\n\t\trepeat_radio_day_type: \"jeden\",\r\n\t\trepeat_text_day_count: \"Tag\",\r\n\t\trepeat_radio_day_type2: \"an jedem Arbeitstag\",\r\n\t\trepeat_week: \" Wiederholt sich jede\",\r\n\t\trepeat_text_week_count: \"Woche am:\",\r\n\t\trepeat_radio_month_type: \"an jedem\",\r\n\t\trepeat_radio_month_start: \"am\",\r\n\t\trepeat_text_month_day: \"Tag eines jeden\",\r\n\t\trepeat_text_month_count: \"Monats\",\r\n\t\trepeat_text_month_count2_before: \"jeden\",\r\n\t\trepeat_text_month_count2_after: \"Monats\",\r\n\t\trepeat_year_label: \"am\",\r\n\t\tselect_year_day2: \"im\",\r\n\t\trepeat_text_year_day: \"Tag im\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"kein Enddatum\",\r\n\t\trepeat_text_occurences_count: \"Ereignissen\",\r\n\t\trepeat_radio_end3: \"Schluß\",\r\n\t\trepeat_radio_end2: \"nach\",\r\n\r\n\t\trepeat_never: \"Nie\",\r\n\t\trepeat_daily: \"Jeden Tag\",\r\n\t\trepeat_workdays: \"Jeden Werktag\",\r\n\t\trepeat_weekly: \"Jede Woche\",\r\n\t\trepeat_monthly: \"Jeden Monat\",\r\n\t\trepeat_yearly: \"Jedes Jahr\",\r\n\t\trepeat_custom: \"Benutzerdefiniert\",\r\n\t\trepeat_freq_day: \"Tag\",\r\n\t\trepeat_freq_week: \"Woche\",\r\n\t\trepeat_freq_month: \"Monat\",\r\n\t\trepeat_freq_year: \"Jahr\",\r\n\t\trepeat_on_date: \"Am Datum\",\r\n\t\trepeat_ends: \"Endet\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n\t\tday_for_recurring: [\"Sonntag\", \"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tmonth_short: [\"ΙΑΝ\", \"ΦΕΒ\", \"ΜΑΡ\", \"ΑΠΡ\", \"ΜΑΙ\", \"ΙΟΥΝ\", \"ΙΟΥΛ\", \"ΑΥΓ\", \"ΣΕΠ\", \"ΟΚΤ\", \"ΝΟΕ\", \"ΔΕΚ\"],\r\n\t\tday_full: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"],\r\n\t\tday_short: [\"ΚΥ\", \"ΔΕ\", \"ΤΡ\", \"ΤΕ\", \"ΠΕ\", \"ΠΑ\", \"ΣΑ\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Σήμερα\",\r\n\t\tday_tab: \"Ημέρα\",\r\n\t\tweek_tab: \"Εβδομάδα\",\r\n\t\tmonth_tab: \"Μήνας\",\r\n\t\tnew_event: \"Νέο έργο\",\r\n\t\ticon_save: \"Αποθήκευση\",\r\n\t\ticon_cancel: \"Άκυρο\",\r\n\t\ticon_details: \"Λεπτομέρειες\",\r\n\t\ticon_edit: \"Επεξεργασία\",\r\n\t\ticon_delete: \"Διαγραφή\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Το έργο θα διαγραφεί οριστικά. Θέλετε να συνεχίσετε;\",\r\n\t\tsection_description: \"Περιγραφή\",\r\n\t\tsection_time: \"Χρονική περίοδος\",\r\n\t\tfull_day: \"Πλήρης Ημέρα\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Θέλετε να επεξεργασθείτε ολόκληρη την ομάδα των επαναλαμβανόμενων έργων;\",\r\n\t\tsection_recurring: \"Επαναλαμβανόμενο έργο\",\r\n\t\tbutton_recurring: \"Ανενεργό\",\r\n\t\tbutton_recurring_open: \"Ενεργό\",\r\n\t\tbutton_edit_series: \"Επεξεργαστείτε τη σειρά\",\r\n\t\tbutton_edit_occurrence: \"Επεξεργασία ένα αντίγραφο\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ημερήσια Διάταξη\",\r\n\t\tdate: \"Ημερομηνία\",\r\n\t\tdescription: \"Περιγραφή\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Έτος\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ημερήσια Διάταξη\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Πλέγμα\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Ημερησίως\",\r\n\t\trepeat_radio_week: \"Εβδομαδιαίως\",\r\n\t\trepeat_radio_month: \"Μηνιαίως\",\r\n\t\trepeat_radio_year: \"Ετησίως\",\r\n\t\trepeat_radio_day_type: \"Κάθε\",\r\n\t\trepeat_text_day_count: \"ημέρα\",\r\n\t\trepeat_radio_day_type2: \"Κάθε εργάσιμη\",\r\n\t\trepeat_week: \" Επανάληψη κάθε\",\r\n\t\trepeat_text_week_count: \"εβδομάδα τις επόμενες ημέρες:\",\r\n\t\trepeat_radio_month_type: \"Επανάληψη\",\r\n\t\trepeat_radio_month_start: \"Την\",\r\n\t\trepeat_text_month_day: \"ημέρα κάθε\",\r\n\t\trepeat_text_month_count: \"μήνα\",\r\n\t\trepeat_text_month_count2_before: \"κάθε\",\r\n\t\trepeat_text_month_count2_after: \"μήνα\",\r\n\t\trepeat_year_label: \"Την\",\r\n\t\tselect_year_day2: \"του\",\r\n\t\trepeat_text_year_day: \"ημέρα\",\r\n\t\tselect_year_month: \"μήνα\",\r\n\t\trepeat_radio_end: \"Χωρίς ημερομηνία λήξεως\",\r\n\t\trepeat_text_occurences_count: \"επαναλήψεις\",\r\n\t\trepeat_radio_end3: \"Λήγει την\",\r\n\t\trepeat_radio_end2: \"Μετά από\",\r\n\r\n\t\trepeat_never: \"Ποτέ\",\r\n\t\trepeat_daily: \"Κάθε μέρα\",\r\n\t\trepeat_workdays: \"Κάθε εργάσιμη μέρα\",\r\n\t\trepeat_weekly: \"Κάθε εβδομάδα\",\r\n\t\trepeat_monthly: \"Κάθε μήνα\",\r\n\t\trepeat_yearly: \"Κάθε χρόνο\",\r\n\t\trepeat_custom: \"Προσαρμοσμένο\",\r\n\t\trepeat_freq_day: \"Ημέρα\",\r\n\t\trepeat_freq_week: \"Εβδομάδα\",\r\n\t\trepeat_freq_month: \"Μήνας\",\r\n\t\trepeat_freq_year: \"Χρόνος\",\r\n\t\trepeat_on_date: \"Σε ημερομηνία\",\r\n\t\trepeat_ends: \"Λήγει\",\r\n\r\n\t\tmonth_for_recurring: [\"Ιανουάριος\", \"Φεβρουάριος\", \"Μάρτιος\", \"Απρίλιος\", \"Μάϊος\", \"Ιούνιος\", \"Ιούλιος\", \"Αύγουστος\", \"Σεπτέμβριος\", \"Οκτώβριος\", \"Νοέμβριος\", \"Δεκέμβριος\"],\r\n\t\tday_for_recurring: [\"Κυριακή\", \"Δευτέρα\", \"Τρίτη\", \"Τετάρτη\", \"Πέμπτη\", \"Παρασκευή\", \"Σάββατο\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate:{\r\n\t\tmonth_full:[\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n\t\tday_short:[\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Today\",\r\n\t\tday_tab:\"Day\",\r\n\t\tweek_tab:\"Week\",\r\n\t\tmonth_tab:\"Month\",\r\n\t\tnew_event:\"New event\",\r\n\t\ticon_save:\"Save\",\r\n\t\ticon_cancel:\"Cancel\",\r\n\t\ticon_details:\"Details\",\r\n\t\ticon_edit:\"Edit\",\r\n\t\ticon_delete:\"Delete\",\r\n\t\tconfirm_closing:\"\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Event will be deleted permanently, are you sure?\",\r\n\t\tsection_description:\"Description\",\r\n\t\tsection_time:\"Time period\",\r\n\t\tfull_day:\"Full day\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Do you want to edit the whole set of repeated events?\",\r\n\t\tsection_recurring:\"Repeat event\",\r\n\t\tbutton_recurring:\"Disabled\",\r\n\t\tbutton_recurring_open:\"Enabled\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Date\",\r\n\t\tdescription:\"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"Year\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daily\",//name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Weekly\",//name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Monthly\",\r\n\t\trepeat_radio_year: \"Yearly\",\r\n\t\trepeat_radio_day_type: \"Every\",\r\n\t\trepeat_text_day_count: \"day\",\r\n\t\trepeat_radio_day_type2: \"Every workday\",\r\n\t\trepeat_week: \" Repeat every\",\r\n\t\trepeat_text_week_count: \"week next days:\",\r\n\t\trepeat_radio_month_type: \"Repeat\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"day every\",\r\n\t\trepeat_text_month_count: \"month\",\r\n\t\trepeat_text_month_count2_before: \"every\",\r\n\t\trepeat_text_month_count2_after: \"month\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"day\",\r\n\t\tselect_year_month: \"month\",\r\n\t\trepeat_radio_end: \"No end date\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end2: \"After\",\r\n\t\trepeat_radio_end3: \"End by\",\r\n\r\n\t\trepeat_never: \"Never\",\r\n\t\trepeat_daily: \"Every day\",\r\n\t\trepeat_workdays: \"Every weekday\",\r\n\t\trepeat_weekly: \"Every week\",\r\n\t\trepeat_monthly: \"Every month\",\r\n\t\trepeat_yearly: \"Every year\",\r\n\t\trepeat_custom: \"Custom\",\r\n\t\trepeat_freq_day: \"Day\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Month\",\r\n\t\trepeat_freq_year: \"Year\",\r\n\t\trepeat_on_date: \"On date\",\r\n\t\trepeat_ends: \"Ends\",\r\n\r\n\t\tmonth_for_recurring: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"]//\r\n\t}\r\n};\r\n\r\n","/*\r\n @Autor Manuel Fernandez Panzuela - www.mfernandez.es\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Enero\", \"Febrero\", \"Marzo\", \"Abril\", \"Mayo\", \"Junio\", \"Julio\", \"Agosto\", \"Septiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tmonth_short: [\"Ene\", \"Feb\", \"Mar\", \"Abr\", \"May\", \"Jun\", \"Jul\", \"Ago\", \"Sep\", \"Oct\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jueves\", \"Viernes\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mié\", \"Jue\", \"Vie\", \"Sáb\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoy\",\r\n\t\tday_tab: \"Día\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mes\",\r\n\t\tnew_event: \"Nuevo evento\",\r\n\t\ticon_save: \"Guardar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalles\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Eliminar\",\r\n\t\tconfirm_closing: \"\", //\"Sus cambios se perderán, continuar ?\"\r\n\t\tconfirm_deleting: \"El evento se borrará definitivamente, ¿continuar?\",\r\n\t\tsection_description: \"Descripción\",\r\n\t\tsection_time: \"Período\",\r\n\t\tfull_day: \"Todo el día\",\r\n\r\n\t\tconfirm_recurring: \"¿Desea modificar el conjunto de eventos repetidos?\",\r\n\t\tsection_recurring: \"Repita el evento\",\r\n\t\tbutton_recurring: \"Impedido\",\r\n\t\tbutton_recurring_open: \"Permitido\",\r\n\t\tbutton_edit_series: \"Editar la serie\",\r\n\t\tbutton_edit_occurrence: \"Editar este evento\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Día\",\r\n\t\tdate: \"Fecha\",\r\n\t\tdescription: \"Descripción\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Año\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Día\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Reja\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diariamente\",\r\n\t\trepeat_radio_week: \"Semanalmente\",\r\n\t\trepeat_radio_month: \"Mensualmente\",\r\n\t\trepeat_radio_year: \"Anualmente\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia\",\r\n\t\trepeat_radio_day_type2: \"Cada jornada de trabajo\",\r\n\t\trepeat_week: \" Repetir cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repita\",\r\n\t\trepeat_radio_month_start: \"El\",\r\n\t\trepeat_text_month_day: \"dia cada \",\r\n\t\trepeat_text_month_count: \"mes\",\r\n\t\trepeat_text_month_count2_before: \"cada\",\r\n\t\trepeat_text_month_count2_after: \"mes\",\r\n\t\trepeat_year_label: \"El\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mes\",\r\n\t\trepeat_radio_end: \"Sin fecha de finalización\",\r\n\t\trepeat_text_occurences_count: \"ocurrencias\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Después de\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Cada día\",\r\n\t\trepeat_workdays: \"Cada día laborable\",\r\n\t\trepeat_weekly: \"Cada semana\",\r\n\t\trepeat_monthly: \"Cada mes\",\r\n\t\trepeat_yearly: \"Cada año\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Día\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mes\",\r\n\t\trepeat_freq_year: \"Año\",\r\n\t\trepeat_on_date: \"En la fecha\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Enero\", \"Febrero\", \"Маrzo\", \"Аbril\", \"Mayo\", \"Junio\", \"Julio\", \"Аgosto\", \"Setiembre\", \"Octubre\", \"Noviembre\", \"Diciembre\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Lunes\", \"Martes\", \"Miércoles\", \"Jeuves\", \"Viernes\", \"Sabado\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tmonth_short: [\"Tam\", \"Hel\", \"Maa\", \"Huh\", \"Tou\", \"Kes\", \"Hei\", \"Elo\", \"Syy\", \"Lok\", \"Mar\", \"Jou\"],\r\n\t\tday_full: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"],\r\n\t\tday_short: [\"Su\", \"Ma\", \"Ti\", \"Ke\", \"To\", \"Pe\", \"La\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Tänään\",\r\n\t\tday_tab: \"Päivä\",\r\n\t\tweek_tab: \"Viikko\",\r\n\t\tmonth_tab: \"Kuukausi\",\r\n\t\tnew_event: \"Uusi tapahtuma\",\r\n\t\ticon_save: \"Tallenna\",\r\n\t\ticon_cancel: \"Peru\",\r\n\t\ticon_details: \"Tiedot\",\r\n\t\ticon_edit: \"Muokkaa\",\r\n\t\ticon_delete: \"Poista\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Haluatko varmasti poistaa tapahtuman?\",\r\n\t\tsection_description: \"Kuvaus\",\r\n\t\tsection_time: \"Aikajakso\",\r\n\t\tfull_day: \"Koko päivä\",\r\n\r\n\t\tconfirm_recurring: \"Haluatko varmasti muokata toistuvan tapahtuman kaikkia jaksoja?\",\r\n\t\tsection_recurring: \"Toista tapahtuma\",\r\n\t\tbutton_recurring: \"Ei käytössä\",\r\n\t\tbutton_recurring_open: \"Käytössä\",\r\n\t\tbutton_edit_series: \"Muokkaa sarja\",\r\n\t\tbutton_edit_occurrence: \"Muokkaa kopio\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Esityslista\",\r\n\t\tdate: \"Päivämäärä\",\r\n\t\tdescription: \"Kuvaus\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Vuoden\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Esityslista\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Ritilä\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Luo uusi vetämällä\",\r\n\t\tdrag_to_move:\"Siirrä vetämällä\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Päivittäin\",\r\n\t\trepeat_radio_week: \"Viikoittain\",\r\n\t\trepeat_radio_month: \"Kuukausittain\",\r\n\t\trepeat_radio_year: \"Vuosittain\",\r\n\t\trepeat_radio_day_type: \"Joka\",\r\n\t\trepeat_text_day_count: \"päivä\",\r\n\t\trepeat_radio_day_type2: \"Joka arkipäivä\",\r\n\t\trepeat_week: \"Toista joka\",\r\n\t\trepeat_text_week_count: \"viikko näinä päivinä:\",\r\n\t\trepeat_radio_month_type: \"Toista\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \"päivänä joka\",\r\n\t\trepeat_text_month_count: \"kuukausi\",\r\n\t\trepeat_text_month_count2_before: \"joka\",\r\n\t\trepeat_text_month_count2_after: \"kuukausi\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"päivä\",\r\n\t\tselect_year_month: \"kuukausi\",\r\n\t\trepeat_radio_end: \"Ei loppumisaikaa\",\r\n\t\trepeat_text_occurences_count: \"Toiston jälkeen\",\r\n\t\trepeat_radio_end3: \"Loppuu\",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ei koskaan\",\r\n\t\trepeat_daily: \"Joka päivä\",\r\n\t\trepeat_workdays: \"Joka arkipäivä\",\r\n\t\trepeat_weekly: \"Joka viikko\",\r\n\t\trepeat_monthly: \"Joka kuukausi\",\r\n\t\trepeat_yearly: \"Joka vuosi\",\r\n\t\trepeat_custom: \"Mukautettu\",\r\n\t\trepeat_freq_day: \"Päivä\",\r\n\t\trepeat_freq_week: \"Viikko\",\r\n\t\trepeat_freq_month: \"Kuukausi\",\r\n\t\trepeat_freq_year: \"Vuosi\",\r\n\t\trepeat_on_date: \"Tiettynä päivänä\",\r\n\t\trepeat_ends: \"Päättyy\",\r\n\r\n\t\tmonth_for_recurring: [\"Tammikuu\", \"Helmikuu\", \"Maaliskuu\", \"Huhtikuu\", \"Toukokuu\", \"Kesäkuu\", \"Heinäkuu\", \"Elokuu\", \"Syyskuu\", \"Lokakuu\", \"Marraskuu\", \"Joulukuu\"],\r\n\t\tday_for_recurring: [\"Sunnuntai\", \"Maanantai\", \"Tiistai\", \"Keskiviikko\", \"Torstai\", \"Perjantai\", \"Lauantai\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tmonth_short: [\"Jan\", \"Fév\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Aoû\", \"Sep\", \"Oct\", \"Nov\", \"Déc\"],\r\n\t\tday_full: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"],\r\n\t\tday_short: [\"Dim\", \"Lun\", \"Mar\", \"Mer\", \"Jeu\", \"Ven\", \"Sam\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Aujourd'hui\",\r\n\t\tday_tab: \"Jour\",\r\n\t\tweek_tab: \"Semaine\",\r\n\t\tmonth_tab: \"Mois\",\r\n\t\tnew_event: \"Nouvel événement\",\r\n\t\ticon_save: \"Enregistrer\",\r\n\t\ticon_cancel: \"Annuler\",\r\n\t\ticon_details: \"Détails\",\r\n\t\ticon_edit: \"Modifier\",\r\n\t\ticon_delete: \"Effacer\",\r\n\t\tconfirm_closing: \"\", //Vos modifications seront perdus, êtes-vous sûr ?\r\n\t\tconfirm_deleting: \"L'événement sera effacé sans appel, êtes-vous sûr ?\",\r\n\t\tsection_description: \"Description\",\r\n\t\tsection_time: \"Période\",\r\n\t\tfull_day: \"Journée complète\",\r\n\r\n\t\tconfirm_recurring: \"Voulez-vous éditer toute une série d'évènements répétés?\",\r\n\t\tsection_recurring: \"Périodicité\",\r\n\t\tbutton_recurring: \"Désactivé\",\r\n\t\tbutton_recurring_open: \"Activé\",\r\n\t\tbutton_edit_series: \"Modifier la série\",\r\n\t\tbutton_edit_occurrence: \"Modifier une copie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Jour\",\r\n\t\tdate: \"Date\",\r\n\t\tdescription: \"Description\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Année\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Jour\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grille\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidienne\",\r\n\t\trepeat_radio_week: \"Hebdomadaire\",\r\n\t\trepeat_radio_month: \"Mensuelle\",\r\n\t\trepeat_radio_year: \"Annuelle\",\r\n\t\trepeat_radio_day_type: \"Chaque\",\r\n\t\trepeat_text_day_count: \"jour\",\r\n\t\trepeat_radio_day_type2: \"Chaque journée de travail\",\r\n\t\trepeat_week: \" Répéter toutes les\",\r\n\t\trepeat_text_week_count: \"semaine:\",\r\n\t\trepeat_radio_month_type: \"Répéter\",\r\n\t\trepeat_radio_month_start: \"Le\",\r\n\t\trepeat_text_month_day: \"jour chaque\",\r\n\t\trepeat_text_month_count: \"mois\",\r\n\t\trepeat_text_month_count2_before: \"chaque\",\r\n\t\trepeat_text_month_count2_after: \"mois\",\r\n\t\trepeat_year_label: \"Le\",\r\n\t\tselect_year_day2: \"du\",\r\n\t\trepeat_text_year_day: \"jour\",\r\n\t\tselect_year_month: \"mois\",\r\n\t\trepeat_radio_end: \"Pas de date d"achèvement\",\r\n\t\trepeat_text_occurences_count: \"occurrences\",\r\n\t\trepeat_radio_end3: \"Fin\",\r\n\t\trepeat_radio_end2: \"Après\",\r\n\r\n\t\trepeat_never: \"Jamais\",\r\n\t\trepeat_daily: \"Chaque jour\",\r\n\t\trepeat_workdays: \"Chaque jour ouvrable\",\r\n\t\trepeat_weekly: \"Chaque semaine\",\r\n\t\trepeat_monthly: \"Chaque mois\",\r\n\t\trepeat_yearly: \"Chaque année\",\r\n\t\trepeat_custom: \"Personnalisé\",\r\n\t\trepeat_freq_day: \"Jour\",\r\n\t\trepeat_freq_week: \"Semaine\",\r\n\t\trepeat_freq_month: \"Mois\",\r\n\t\trepeat_freq_year: \"Année\",\r\n\t\trepeat_on_date: \"À la date\",\r\n\t\trepeat_ends: \"Se termine\",\r\n\r\n\t\tmonth_for_recurring: [\"Janvier\", \"Février\", \"Mars\", \"Avril\", \"Mai\", \"Juin\", \"Juillet\", \"Août\", \"Septembre\", \"Octobre\", \"Novembre\", \"Décembre\"],\r\n\t\tday_for_recurring: [\"Dimanche\", \"Lundi\", \"Mardi\", \"Mercredi\", \"Jeudi\", \"Vendredi\", \"Samedi\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tmonth_short: [\"ינו\", \"פבר\", \"מרץ\", \"אפר\", \"מאי\", \"יונ\", \"יול\", \"אוג\", \"ספט\", \"אוק\", \"נוב\", \"דצמ\"],\r\n\t\tday_full: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"],\r\n\t\tday_short: [\"א\", \"ב\", \"ג\", \"ד\", \"ה\", \"ו\", \"ש\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"היום\",\r\n\t\tday_tab: \"יום\",\r\n\t\tweek_tab: \"שבוע\",\r\n\t\tmonth_tab: \"חודש\",\r\n\t\tnew_event: \"ארוע חדש\",\r\n\t\ticon_save: \"שמור\",\r\n\t\ticon_cancel: \"בטל\",\r\n\t\ticon_details: \"פרטים\",\r\n\t\ticon_edit: \"ערוך\",\r\n\t\ticon_delete: \"מחק\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"ארוע ימחק סופית.להמשיך?\",\r\n\t\tsection_description: \"תיאור\",\r\n\t\tsection_time: \"תקופה\",\r\n\r\n\t\tconfirm_recurring: \"האם ברצונך לשנות כל סדרת ארועים מתמשכים?\",\r\n\t\tsection_recurring: \"להעתיק ארוע\",\r\n\t\tbutton_recurring: \"לא פעיל\",\r\n\t\tbutton_recurring_open: \"פעיל\",\r\n\t\tfull_day: \"יום שלם\",\r\n\t\tbutton_edit_series: \"ערוך את הסדרה\",\r\n\t\tbutton_edit_occurrence: \"עריכת עותק\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"סדר יום\",\r\n\t\tdate: \"תאריך\",\r\n\t\tdescription: \"תיאור\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"לשנה\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"סדר יום\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"סורג\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"גרור כדי להזיז\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"בטל\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"הבא\",\r\n\t\tprev: \"הקודם\",\r\n\t\tyear: \"שנה\",\r\n\t\tmonth: \"חודש\",\r\n\t\tday: \"יום\",\r\n\t\thour:\"שעה\",\r\n\t\tminute: \"דקה\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"יומי\",\r\n\t\trepeat_radio_week: \"שבועי\",\r\n\t\trepeat_radio_month: \"חודשי\",\r\n\t\trepeat_radio_year: \"שנתי\",\r\n\t\trepeat_radio_day_type: \"חזור כל\",\r\n\t\trepeat_text_day_count: \"ימים\",\r\n\t\trepeat_radio_day_type2: \"חזור כל יום עבודה\",\r\n\t\trepeat_week: \" חזור כל\",\r\n\t\trepeat_text_week_count: \"שבוע לפי ימים:\",\r\n\t\trepeat_radio_month_type: \"חזור כל\",\r\n\t\trepeat_radio_month_start: \"כל\",\r\n\t\trepeat_text_month_day: \"ימים כל\",\r\n\t\trepeat_text_month_count: \"חודשים\",\r\n\t\trepeat_text_month_count2_before: \"חזור כל\",\r\n\t\trepeat_text_month_count2_after: \"חודש\",\r\n\t\trepeat_year_label: \"כל\",\r\n\t\tselect_year_day2: \"בחודש\",\r\n\t\trepeat_text_year_day: \"ימים\",\r\n\t\tselect_year_month: \"חודש\",\r\n\t\trepeat_radio_end: \"לעולם לא מסתיים\",\r\n\t\trepeat_text_occurences_count: \"אירועים\",\r\n\t\trepeat_radio_end3: \"מסתיים ב\",\r\n\t\trepeat_radio_end2: \"אחרי\",\r\n\r\n\t\trepeat_never: \"אף פעם\",\r\n\t\trepeat_daily: \"כל יום\",\r\n\t\trepeat_workdays: \"כל יום עבודה\",\r\n\t\trepeat_weekly: \"כל שבוע\",\r\n\t\trepeat_monthly: \"כל חודש\",\r\n\t\trepeat_yearly: \"כל שנה\",\r\n\t\trepeat_custom: \"מותאם אישית\",\r\n\t\trepeat_freq_day: \"יום\",\r\n\t\trepeat_freq_week: \"שבוע\",\r\n\t\trepeat_freq_month: \"חודש\",\r\n\t\trepeat_freq_year: \"שנה\",\r\n\t\trepeat_on_date: \"בתאריך\",\r\n\t\trepeat_ends: \"מסתיים\",\r\n\r\n\t\tmonth_for_recurring: [\"ינואר\", \"פברואר\", \"מרץ\", \"אפריל\", \"מאי\", \"יוני\", \"יולי\", \"אוגוסט\", \"ספטמבר\", \"אוקטובר\", \"נובמבר\", \"דצמבר\"],\r\n\t\tday_for_recurring: [\"ראשון\", \"שני\", \"שלישי\", \"רביעי\", \"חמישי\", \"שישי\", \"שבת\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Már\", \"Ápr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Vasárnap\", \"Hétfõ\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"szombat\"],\r\n\t\tday_short: [\"Va\", \"Hé\", \"Ke\", \"Sze\", \"Csü\", \"Pé\", \"Szo\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Ma\",\r\n\t\tday_tab: \"Nap\",\r\n\t\tweek_tab: \"Hét\",\r\n\t\tmonth_tab: \"Hónap\",\r\n\t\tnew_event: \"Új esemény\",\r\n\t\ticon_save: \"Mentés\",\r\n\t\ticon_cancel: \"Mégse\",\r\n\t\ticon_details: \"Részletek\",\r\n\t\ticon_edit: \"Szerkesztés\",\r\n\t\ticon_delete: \"Törlés\",\r\n\t\tconfirm_closing: \"\", //A változások elvesznek, biztosan folytatja? \"\r\n\t\tconfirm_deleting: \"Az esemény törölve lesz, biztosan folytatja?\",\r\n\t\tsection_description: \"Leírás\",\r\n\t\tsection_time: \"Idõszak\",\r\n\t\tfull_day: \"Egesz napos\",\r\n\r\n\t\t/*ismétlõdõ események*/\r\n\t\tconfirm_recurring: \"Biztosan szerkeszteni akarod az összes ismétlõdõ esemény beállítását?\",\r\n\t\tsection_recurring: \"Esemény ismétlése\",\r\n\t\tbutton_recurring: \"Tiltás\",\r\n\t\tbutton_recurring_open: \"Engedélyezés\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Szerkesztés bíróság\",\r\n\r\n\t\t/*napirendi nézet*/\r\n\t\tagenda_tab: \"Napirend\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Leírás\",\r\n\r\n\t\t/*éves nézet*/\r\n\t\tyear_tab: \"Év\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Napi\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Heti\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Havi\",\r\n\t\trepeat_radio_year: \"Éves\",\r\n\t\trepeat_radio_day_type: \"Minden\",\r\n\t\trepeat_text_day_count: \"nap\",\r\n\t\trepeat_radio_day_type2: \"Minden munkanap\",\r\n\t\trepeat_week: \" Ismételje meg minden\",\r\n\t\trepeat_text_week_count: \"héten a következő napokon:\",\r\n\t\trepeat_radio_month_type: \"Ismétlés\",\r\n\t\trepeat_radio_month_start: \"Ekkor\",\r\n\t\trepeat_text_month_day: \"nap minden\",\r\n\t\trepeat_text_month_count: \"hónapban\",\r\n\t\trepeat_text_month_count2_before: \"minden\",\r\n\t\trepeat_text_month_count2_after: \"hónapban\",\r\n\t\trepeat_year_label: \"Ekkor\",\r\n\t\tselect_year_day2: \"-án/-én\",\r\n\t\trepeat_text_year_day: \"nap\",\r\n\t\tselect_year_month: \"hónap\",\r\n\t\trepeat_radio_end: \"Nincs befejezési dátum\",\r\n\t\trepeat_text_occurences_count: \"esemény\",\r\n\t\trepeat_radio_end2: \"Után\",\r\n\t\trepeat_radio_end3: \"Befejező dátum\",\r\n\r\n\t\trepeat_never: \"Soha\",\r\n\t\trepeat_daily: \"Minden nap\",\r\n\t\trepeat_workdays: \"Minden munkanap\",\r\n\t\trepeat_weekly: \"Minden héten\",\r\n\t\trepeat_monthly: \"Minden hónapban\",\r\n\t\trepeat_yearly: \"Minden évben\",\r\n\t\trepeat_custom: \"Egyedi\",\r\n\t\trepeat_freq_day: \"Nap\",\r\n\t\trepeat_freq_week: \"Hét\",\r\n\t\trepeat_freq_month: \"Hónap\",\r\n\t\trepeat_freq_year: \"Év\",\r\n\t\trepeat_on_date: \"Dátum szerint\",\r\n\t\trepeat_ends: \"Befejeződik\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Március\", \"Április\", \"Május\", \"Június\", \"Július\", \"Augusztus\", \"Szeptember\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Vasárnap\", \"Hétfő\", \"Kedd\", \"Szerda\", \"Csütörtök\", \"Péntek\", \"Szombat\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Ags\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"],\r\n\t\tday_short: [\"Ming\", \"Sen\", \"Sel\", \"Rab\", \"Kam\", \"Jum\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hari Ini\",\r\n\t\tday_tab: \"Hari\",\r\n\t\tweek_tab: \"Minggu\",\r\n\t\tmonth_tab: \"Bulan\",\r\n\t\tnew_event: \"Acara Baru\",\r\n\t\ticon_save: \"Simpan\",\r\n\t\ticon_cancel: \"Batal\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edit\",\r\n\t\ticon_delete: \"Hapus\",\r\n\t\tconfirm_closing: \"\", /*Perubahan tidak akan disimpan ?*/\r\n\t\tconfirm_deleting: \"Acara akan dihapus\",\r\n\t\tsection_description: \"Keterangan\",\r\n\t\tsection_time: \"Periode\",\r\n\t\tfull_day: \"Hari penuh\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Apakah acara ini akan berulang?\",\r\n\t\tsection_recurring: \"Acara Rutin\",\r\n\t\tbutton_recurring: \"Tidak Difungsikan\",\r\n\t\tbutton_recurring_open: \"Difungsikan\",\r\n\t\tbutton_edit_series: \"Mengedit seri\",\r\n\t\tbutton_edit_occurrence: \"Mengedit salinan\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Tanggal\",\r\n\t\tdescription: \"Keterangan\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Tahun\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Harian\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Mingguan\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Bulanan\",\r\n\t\trepeat_radio_year: \"Tahunan\",\r\n\t\trepeat_radio_day_type: \"Setiap\",\r\n\t\trepeat_text_day_count: \"hari\",\r\n\t\trepeat_radio_day_type2: \"Setiap hari kerja\",\r\n\t\trepeat_week: \" Ulangi setiap\",\r\n\t\trepeat_text_week_count: \"minggu pada hari berikut:\",\r\n\t\trepeat_radio_month_type: \"Ulangi\",\r\n\t\trepeat_radio_month_start: \"Pada\",\r\n\t\trepeat_text_month_day: \"hari setiap\",\r\n\t\trepeat_text_month_count: \"bulan\",\r\n\t\trepeat_text_month_count2_before: \"setiap\",\r\n\t\trepeat_text_month_count2_after: \"bulan\",\r\n\t\trepeat_year_label: \"Pada\",\r\n\t\tselect_year_day2: \"dari\",\r\n\t\trepeat_text_year_day: \"hari\",\r\n\t\tselect_year_month: \"bulan\",\r\n\t\trepeat_radio_end: \"Tanpa tanggal akhir\",\r\n\t\trepeat_text_occurences_count: \"kejadian\",\r\n\t\trepeat_radio_end2: \"Setelah\",\r\n\t\trepeat_radio_end3: \"Berakhir pada\",\r\n\r\n\t\trepeat_never: \"Tidak pernah\",\r\n\t\trepeat_daily: \"Setiap hari\",\r\n\t\trepeat_workdays: \"Setiap hari kerja\",\r\n\t\trepeat_weekly: \"Setiap minggu\",\r\n\t\trepeat_monthly: \"Setiap bulan\",\r\n\t\trepeat_yearly: \"Setiap tahun\",\r\n\t\trepeat_custom: \"Kustom\",\r\n\t\trepeat_freq_day: \"Hari\",\r\n\t\trepeat_freq_week: \"Minggu\",\r\n\t\trepeat_freq_month: \"Bulan\",\r\n\t\trepeat_freq_year: \"Tahun\",\r\n\t\trepeat_on_date: \"Pada tanggal\",\r\n\t\trepeat_ends: \"Berakhir\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maret\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Agustus\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Minggu\", \"Senin\", \"Selasa\", \"Rabu\", \"Kamis\", \"Jumat\", \"Sabtu\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Giugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tmonth_short: [\"Gen\", \"Feb\", \"Mar\", \"Apr\", \"Mag\", \"Giu\", \"Lug\", \"Ago\", \"Set\", \"Ott\", \"Nov\", \"Dic\"],\r\n\t\tday_full: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Giovedì\", \"Venerdì\", \"Sabato\"],\r\n\t\tday_short: [\"Dom\", \"Lun\", \"Mar\", \"Mer\", \"Gio\", \"Ven\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Oggi\",\r\n\t\tday_tab: \"Giorno\",\r\n\t\tweek_tab: \"Settimana\",\r\n\t\tmonth_tab: \"Mese\",\r\n\t\tnew_event: \"Nuovo evento\",\r\n\t\ticon_save: \"Salva\",\r\n\t\ticon_cancel: \"Chiudi\",\r\n\t\ticon_details: \"Dettagli\",\r\n\t\ticon_edit: \"Modifica\",\r\n\t\ticon_delete: \"Elimina\",\r\n\t\tconfirm_closing: \"\", //Le modifiche apportate saranno perse, siete sicuri?\r\n\t\tconfirm_deleting: \"L'evento sarà eliminato, siete sicuri?\",\r\n\t\tsection_description: \"Descrizione\",\r\n\t\tsection_time: \"Periodo di tempo\",\r\n\t\tfull_day: \"Intera giornata\",\r\n\r\n\t\tconfirm_recurring: \"Vuoi modificare l'intera serie di eventi?\",\r\n\t\tsection_recurring: \"Ripetere l'evento\",\r\n\t\tbutton_recurring: \"Disattivato\",\r\n\t\tbutton_recurring_open: \"Attivato\",\r\n\t\tbutton_edit_series: \"Modificare la serie\",\r\n\t\tbutton_edit_occurrence: \"Modificare una copia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrizione\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Anno\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Griglia\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Quotidiano\",\r\n\t\trepeat_radio_week: \"Settimanale\",\r\n\t\trepeat_radio_month: \"Mensile\",\r\n\t\trepeat_radio_year: \"Annuale\",\r\n\t\trepeat_radio_day_type: \"Ogni\",\r\n\t\trepeat_text_day_count: \"giorno\",\r\n\t\trepeat_radio_day_type2: \"Ogni giornata lavorativa\",\r\n\t\trepeat_week: \" Ripetere ogni\",\r\n\t\trepeat_text_week_count: \"settimana:\",\r\n\t\trepeat_radio_month_type: \"Ripetere\",\r\n\t\trepeat_radio_month_start: \"Il\",\r\n\t\trepeat_text_month_day: \"giorno ogni\",\r\n\t\trepeat_text_month_count: \"mese\",\r\n\t\trepeat_text_month_count2_before: \"ogni\",\r\n\t\trepeat_text_month_count2_after: \"mese\",\r\n\t\trepeat_year_label: \"Il\",\r\n\t\tselect_year_day2: \"del\",\r\n\t\trepeat_text_year_day: \"giorno\",\r\n\t\tselect_year_month: \"mese\",\r\n\t\trepeat_radio_end: \"Senza data finale\",\r\n\t\trepeat_text_occurences_count: \"occorenze\",\r\n\t\trepeat_radio_end3: \"Fine\",\r\n\t\trepeat_radio_end2: \"Dopo\",\r\n\r\n\t\trepeat_never: \"Mai\",\r\n\t\trepeat_daily: \"Ogni giorno\",\r\n\t\trepeat_workdays: \"Ogni giorno feriale\",\r\n\t\trepeat_weekly: \"Ogni settimana\",\r\n\t\trepeat_monthly: \"Ogni mese\",\r\n\t\trepeat_yearly: \"Ogni anno\",\r\n\t\trepeat_custom: \"Personalizzato\",\r\n\t\trepeat_freq_day: \"Giorno\",\r\n\t\trepeat_freq_week: \"Settimana\",\r\n\t\trepeat_freq_month: \"Mese\",\r\n\t\trepeat_freq_year: \"Anno\",\r\n\t\trepeat_on_date: \"Alla data\",\r\n\t\trepeat_ends: \"Finisce\",\r\n\r\n\t\tmonth_for_recurring: [\"Gennaio\", \"Febbraio\", \"Marzo\", \"Aprile\", \"Maggio\", \"Jiugno\", \"Luglio\", \"Agosto\", \"Settembre\", \"Ottobre\", \"Novembre\", \"Dicembre\"],\r\n\t\tday_for_recurring: [\"Domenica\", \"Lunedì\", \"Martedì\", \"Mercoledì\", \"Jovedì\", \"Venerdì\", \"Sabato\"]\r\n\t}\r\n};\r\n","/*\r\n Translation by Genexus Japan Inc.\r\n */\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tmonth_short: [ \"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_full: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"],\r\n\t\tday_short: [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"今日\",\r\n\t\tday_tab: \"日\",\r\n\t\tweek_tab: \"週\",\r\n\t\tmonth_tab: \"月\",\r\n\t\tnew_event: \"新イベント\",\r\n\t\ticon_save: \"保存\",\r\n\t\ticon_cancel: \"キャンセル\",\r\n\t\ticon_details: \"詳細\",\r\n\t\ticon_edit: \"編集\",\r\n\t\ticon_delete: \"削除\",\r\n\t\tconfirm_closing: \"\", //変更が取り消されます、宜しいですか?\r\n\t\tconfirm_deleting: \"イベント完全に削除されます、宜しいですか?\",\r\n\t\tsection_description: \"デスクリプション\",\r\n\t\tsection_time: \"期間\",\r\n\t\tconfirm_recurring: \"繰り返されているイベントを全て編集しますか?\",\r\n\t\tsection_recurring: \"イベントを繰り返す\",\r\n\t\tbutton_recurring: \"無効\",\r\n\t\tbutton_recurring_open: \"有効\",\r\n\t\tfull_day: \"終日\",\r\n\t\tbutton_edit_series: \"シリーズを編集します\",\r\n\t\tbutton_edit_occurrence: \"コピーを編集\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"議題は\",\r\n\t\tdate: \"日付\",\r\n\t\tdescription: \"説明\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"今年\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"議題は\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"グリッド\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"毎日\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"毎週\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"毎月\",\r\n\t\trepeat_radio_year: \"毎年\",\r\n\t\trepeat_radio_day_type: \"毎\",\r\n\t\trepeat_text_day_count: \"日\",\r\n\t\trepeat_radio_day_type2: \"毎営業日\",\r\n\t\trepeat_week: \" 繰り返し毎\",\r\n\t\trepeat_text_week_count: \"週 次の日:\",\r\n\t\trepeat_radio_month_type: \"繰り返し\",\r\n\t\trepeat_radio_month_start: \"オン\",\r\n\t\trepeat_text_month_day: \"日毎\",\r\n\t\trepeat_text_month_count: \"月\",\r\n\t\trepeat_text_month_count2_before: \"毎\",\r\n\t\trepeat_text_month_count2_after: \"月\",\r\n\t\trepeat_year_label: \"オン\",\r\n\t\tselect_year_day2: \"の\",\r\n\t\trepeat_text_year_day: \"日\",\r\n\t\tselect_year_month: \"月\",\r\n\t\trepeat_radio_end: \"終了日なし\",\r\n\t\trepeat_text_occurences_count: \"回数\",\r\n\t\trepeat_radio_end2: \"後\",\r\n\t\trepeat_radio_end3: \"終了日まで\",\r\n\r\n\t\trepeat_never: \"決して\",\r\n\t\trepeat_daily: \"毎日\",\r\n\t\trepeat_workdays: \"毎営業日\",\r\n\t\trepeat_weekly: \"毎週\",\r\n\t\trepeat_monthly: \"毎月\",\r\n\t\trepeat_yearly: \"毎年\",\r\n\t\trepeat_custom: \"カスタム\",\r\n\t\trepeat_freq_day: \"日\",\r\n\t\trepeat_freq_week: \"週\",\r\n\t\trepeat_freq_month: \"月\",\r\n\t\trepeat_freq_year: \"年\",\r\n\t\trepeat_on_date: \"日にち\",\r\n\t\trepeat_ends: \"終了\",\r\n\r\n\t\tmonth_for_recurring: [\"1月\", \"2月\", \"3月\", \"4月\", \"5月\", \"6月\", \"7月\", \"8月\", \"9月\", \"10月\", \"11月\", \"12月\"],\r\n\t\tday_for_recurring: [\"日曜日\", \"月曜日\", \"火曜日\", \"水曜日\", \"木曜日\", \"金曜日\", \"土曜日\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default class LocaleManager{\r\n\tconstructor(config){\r\n\t\tthis._locales = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._locales[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddLocale(name, locale) {\r\n\t\tthis._locales[name] = locale;\r\n\t}\r\n\r\n\tgetLocale(name) {\r\n\t\treturn this._locales[name];\r\n\t}\r\n}","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Mon\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"I dag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny hendelse\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Rediger\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Hendelsen vil bli slettet permanent. Er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du forandre hele dette settet av repeterende hendelser?\",\r\n\t\tsection_recurring: \"Repeter hendelsen\",\r\n\t\tbutton_recurring: \"Av\",\r\n\t\tbutton_recurring_open: \"På\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\",\r\n\t\trepeat_radio_week: \"Ukentlig\",\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Alle hverdager\",\r\n\t\trepeat_week: \" Gjentas hver\",\r\n\t\trepeat_text_week_count: \"uke på:\",\r\n\t\trepeat_radio_month_type: \"På hver\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"på\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomst\",\r\n\t\trepeat_radio_end3: \"Stop den\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Sondag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"mrt\", \"Apr\", \"Mei\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"],\r\n\t\tday_short: [\"Zo\", \"Ma\", \"Di\", \"Wo\", \"Do\", \"Vr\", \"Za\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Vandaag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Week\",\r\n\t\tmonth_tab: \"Maand\",\r\n\t\tnew_event: \"Nieuw item\",\r\n\t\ticon_save: \"Opslaan\",\r\n\t\ticon_cancel: \"Annuleren\",\r\n\t\ticon_details: \"Details\",\r\n\t\ticon_edit: \"Bewerken\",\r\n\t\ticon_delete: \"Verwijderen\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Item zal permanent worden verwijderd, doorgaan?\",\r\n\t\tsection_description: \"Beschrijving\",\r\n\t\tsection_time: \"Tijd periode\",\r\n\t\tfull_day: \"Hele dag\",\r\n\r\n\t\tconfirm_recurring: \"Wilt u alle terugkerende items bijwerken?\",\r\n\t\tsection_recurring: \"Item herhalen\",\r\n\t\tbutton_recurring: \"Uit\",\r\n\t\tbutton_recurring_open: \"Aan\",\r\n\t\tbutton_edit_series: \"Bewerk de serie\",\r\n\t\tbutton_edit_occurrence: \"Bewerk een kopie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Omschrijving\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Jaar\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabel\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagelijks\",\r\n\t\trepeat_radio_week: \"Wekelijks\",\r\n\t\trepeat_radio_month: \"Maandelijks\",\r\n\t\trepeat_radio_year: \"Jaarlijks\",\r\n\t\trepeat_radio_day_type: \"Elke\",\r\n\t\trepeat_text_day_count: \"dag(en)\",\r\n\t\trepeat_radio_day_type2: \"Elke werkdag\",\r\n\t\trepeat_week: \" Herhaal elke\",\r\n\t\trepeat_text_week_count: \"week op de volgende dagen:\",\r\n\t\trepeat_radio_month_type: \"Herhaal\",\r\n\t\trepeat_radio_month_start: \"Op\",\r\n\t\trepeat_text_month_day: \"dag iedere\",\r\n\t\trepeat_text_month_count: \"maanden\",\r\n\t\trepeat_text_month_count2_before: \"iedere\",\r\n\t\trepeat_text_month_count2_after: \"maanden\",\r\n\t\trepeat_year_label: \"Op\",\r\n\t\tselect_year_day2: \"van\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"maand\",\r\n\t\trepeat_radio_end: \"Geen eind datum\",\r\n\t\trepeat_text_occurences_count: \"keren\",\r\n\t\trepeat_radio_end3: \"Eindigd per\",\r\n\t\trepeat_radio_end2: \"Na\",\r\n\r\n\t\trepeat_never: \"Nooit\",\r\n\t\trepeat_daily: \"Elke dag\",\r\n\t\trepeat_workdays: \"Elke werkdag\",\r\n\t\trepeat_weekly: \"Elke week\",\r\n\t\trepeat_monthly: \"Elke maand\",\r\n\t\trepeat_yearly: \"Elk jaar\",\r\n\t\trepeat_custom: \"Aangepast\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Week\",\r\n\t\trepeat_freq_month: \"Maand\",\r\n\t\trepeat_freq_year: \"Jaar\",\r\n\t\trepeat_on_date: \"Op datum\",\r\n\t\trepeat_ends: \"Eindigt\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Maart\", \"April\", \"Mei\", \"Juni\", \"Juli\", \"Augustus\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Zondag\", \"Maandag\", \"Dinsdag\", \"Woensdag\", \"Donderdag\", \"Vrijdag\", \"Zaterdag\"]\r\n\t}\r\n};\r\n\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Des\"],\r\n\t\tday_full: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"],\r\n\t\tday_short: [\"Søn\", \"Man\", \"Tir\", \"Ons\", \"Tor\", \"Fre\", \"Lør\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Uke\",\r\n\t\tmonth_tab: \"Måned\",\r\n\t\tnew_event: \"Ny\",\r\n\t\ticon_save: \"Lagre\",\r\n\t\ticon_cancel: \"Avbryt\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Endre\",\r\n\t\ticon_delete: \"Slett\",\r\n\t\tconfirm_closing: \"Endringer blir ikke lagret, er du sikker?\", //Endringer blir ikke lagret, er du sikker?\r\n\t\tconfirm_deleting: \"Oppføringen vil bli slettet, er du sikker?\",\r\n\t\tsection_description: \"Beskrivelse\",\r\n\t\tsection_time: \"Tidsperiode\",\r\n\t\tfull_day: \"Full dag\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vil du endre hele settet med repeterende oppføringer?\",\r\n\t\tsection_recurring: \"Repeterende oppføring\",\r\n\t\tbutton_recurring: \"Ikke aktiv\",\r\n\t\tbutton_recurring_open: \"Aktiv\",\r\n\t\tbutton_edit_series: \"Rediger serien\",\r\n\t\tbutton_edit_occurrence: \"Redigere en kopi\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Dato\",\r\n\t\tdescription: \"Beskrivelse\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grid\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Daglig\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Ukentlig\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Månedlig\",\r\n\t\trepeat_radio_year: \"Årlig\",\r\n\t\trepeat_radio_day_type: \"Hver\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Hver arbeidsdag\",\r\n\t\trepeat_week: \" Gjenta hver\",\r\n\t\trepeat_text_week_count: \"uke neste dager:\",\r\n\t\trepeat_radio_month_type: \"Gjenta\",\r\n\t\trepeat_radio_month_start: \"På\",\r\n\t\trepeat_text_month_day: \"dag hver\",\r\n\t\trepeat_text_month_count: \"måned\",\r\n\t\trepeat_text_month_count2_before: \"hver\",\r\n\t\trepeat_text_month_count2_after: \"måned\",\r\n\t\trepeat_year_label: \"På\",\r\n\t\tselect_year_day2: \"av\",\r\n\t\trepeat_text_year_day: \"dag\",\r\n\t\tselect_year_month: \"måned\",\r\n\t\trepeat_radio_end: \"Ingen sluttdato\",\r\n\t\trepeat_text_occurences_count: \"forekomster\",\r\n\t\trepeat_radio_end2: \"Etter\",\r\n\t\trepeat_radio_end3: \"Slutt innen\",\r\n\r\n\t\trepeat_never: \"Aldri\",\r\n\t\trepeat_daily: \"Hver dag\",\r\n\t\trepeat_workdays: \"Hver ukedag\",\r\n\t\trepeat_weekly: \"Hver uke\",\r\n\t\trepeat_monthly: \"Hver måned\",\r\n\t\trepeat_yearly: \"Hvert år\",\r\n\t\trepeat_custom: \"Tilpasset\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Uke\",\r\n\t\trepeat_freq_month: \"Måned\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På dato\",\r\n\t\trepeat_ends: \"Slutter\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Mars\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Desember\"],\r\n\t\tday_for_recurring: [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Styczeń\", \"Luty\", \"Marzec\", \"Kwiecień\", \"Maj\", \"Czerwiec\", \"Lipiec\", \"Sierpień\", \"Wrzesień\", \"Październik\", \"Listopad\", \"Grudzień\"],\r\n\t\tmonth_short: [\"Sty\", \"Lut\", \"Mar\", \"Kwi\", \"Maj\", \"Cze\", \"Lip\", \"Sie\", \"Wrz\", \"Paź\", \"Lis\", \"Gru\"],\r\n\t\tday_full: [\"Niedziela\", \"Poniedziałek\", \"Wtorek\", \"Środa\", \"Czwartek\", \"Piątek\", \"Sobota\"],\r\n\t\tday_short: [\"Nie\", \"Pon\", \"Wto\", \"Śro\", \"Czw\", \"Pią\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dziś\",\r\n\t\tday_tab: \"Dzień\",\r\n\t\tweek_tab: \"Tydzień\",\r\n\t\tmonth_tab: \"Miesiąc\",\r\n\t\tnew_event: \"Nowe zdarzenie\",\r\n\t\ticon_save: \"Zapisz\",\r\n\t\ticon_cancel: \"Anuluj\",\r\n\t\ticon_details: \"Szczegóły\",\r\n\t\ticon_edit: \"Edytuj\",\r\n\t\ticon_delete: \"Usuń\",\r\n\t\tconfirm_closing: \"\", //Zmiany zostaną usunięte, jesteś pewien?\r\n\t\tconfirm_deleting: \"Zdarzenie zostanie usunięte na zawsze, kontynuować?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Okres czasu\",\r\n\t\tfull_day: \"Cały dzień\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Czy chcesz edytować cały zbiór powtarzających się zdarzeń?\",\r\n\t\tsection_recurring: \"Powtórz zdarzenie\",\r\n\t\tbutton_recurring: \"Nieaktywne\",\r\n\t\tbutton_recurring_open: \"Aktywne\",\r\n\t\tbutton_edit_series: \"Edytuj serię\",\r\n\t\tbutton_edit_occurrence: \"Edytuj kopię\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Agenda\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Tabela\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Codziennie\",\r\n\t\trepeat_radio_week: \"Co tydzie\",\r\n\t\trepeat_radio_month: \"Co miesic\",\r\n\t\trepeat_radio_year: \"Co rok\",\r\n\t\trepeat_radio_day_type: \"Kadego\",\r\n\t\trepeat_text_day_count: \"dnia\",\r\n\t\trepeat_radio_day_type2: \"Kadego dnia roboczego\",\r\n\t\trepeat_week: \" Powtarzaj kadego\",\r\n\t\trepeat_text_week_count: \"tygodnia w dni:\",\r\n\t\trepeat_radio_month_type: \"Powtrz\",\r\n\t\trepeat_radio_month_start: \"W\",\r\n\t\trepeat_text_month_day: \"dnia kadego\",\r\n\t\trepeat_text_month_count: \"miesica\",\r\n\t\trepeat_text_month_count2_before: \"kadego\",\r\n\t\trepeat_text_month_count2_after: \"miesica\",\r\n\t\trepeat_year_label: \"W\",\r\n\t\tselect_year_day2: \"miesica\",\r\n\t\trepeat_text_year_day: \"dnia miesica\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Bez daty kocowej\",\r\n\t\trepeat_text_occurences_count: \"wystpieniu/ach\",\r\n\t\trepeat_radio_end3: \"Zakocz w\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nigdy\",\r\n\t\trepeat_daily: \"Codziennie\",\r\n\t\trepeat_workdays: \"Każdy dzień roboczy\",\r\n\t\trepeat_weekly: \"Co tydzień\",\r\n\t\trepeat_monthly: \"Co miesiąc\",\r\n\t\trepeat_yearly: \"Co rok\",\r\n\t\trepeat_custom: \"Niestandardowy\",\r\n\t\trepeat_freq_day: \"Dzień\",\r\n\t\trepeat_freq_week: \"Tydzień\",\r\n\t\trepeat_freq_month: \"Miesiąc\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"W dniu\",\r\n\t\trepeat_ends: \"Kończy się\",\r\n\r\n\t\tmonth_for_recurring: [\"Stycznia\", \"Lutego\", \"Marca\", \"Kwietnia\", \"Maja\", \"Czerwca\", \"Lipca\", \"Sierpnia\", \"Wrzenia\", \"Padziernka\", \"Listopada\", \"Grudnia\"],\r\n\t\tday_for_recurring: [\"Niedziela\", \"Poniedziaek\", \"Wtorek\", \"roda\", \"Czwartek\", \"Pitek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","/*\r\n\r\n TRANSLATION BY MATTHEUS PIROVANI RORIZ GONЗALVES\r\n\r\n mattheusroriz@hotmail.com / mattheus.pirovani@gmail.com /\r\n\r\n www.atrixian.com.br\r\n\r\n */\r\n\r\nexport default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tmonth_short: [\"Jan\", \"Fev\", \"Mar\", \"Abr\", \"Mai\", \"Jun\", \"Jul\", \"Ago\", \"Set\", \"Out\", \"Nov\", \"Dez\"],\r\n\t\tday_full: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"],\r\n\t\tday_short: [\"Dom\", \"Seg\", \"Ter\", \"Qua\", \"Qui\", \"Sex\", \"Sab\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Hoje\",\r\n\t\tday_tab: \"Dia\",\r\n\t\tweek_tab: \"Semana\",\r\n\t\tmonth_tab: \"Mês\",\r\n\t\tnew_event: \"Novo evento\",\r\n\t\ticon_save: \"Salvar\",\r\n\t\ticon_cancel: \"Cancelar\",\r\n\t\ticon_details: \"Detalhes\",\r\n\t\ticon_edit: \"Editar\",\r\n\t\ticon_delete: \"Deletar\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Tem certeza que deseja excluir?\",\r\n\t\tsection_description: \"Descrição\",\r\n\t\tsection_time: \"Período de tempo\",\r\n\t\tfull_day: \"Dia inteiro\",\r\n\r\n\t\tconfirm_recurring: \"Deseja editar todos esses eventos repetidos?\",\r\n\t\tsection_recurring: \"Repetir evento\",\r\n\t\tbutton_recurring: \"Desabilitar\",\r\n\t\tbutton_recurring_open: \"Habilitar\",\r\n\t\tbutton_edit_series: \"Editar a série\",\r\n\t\tbutton_edit_occurrence: \"Editar uma cópia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dia\",\r\n\t\tdate: \"Data\",\r\n\t\tdescription: \"Descrição\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Ano\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dia\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Grade\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Diário\",\r\n\t\trepeat_radio_week: \"Semanal\",\r\n\t\trepeat_radio_month: \"Mensal\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"Cada\",\r\n\t\trepeat_text_day_count: \"dia(s)\",\r\n\t\trepeat_radio_day_type2: \"Cada trabalho diário\",\r\n\t\trepeat_week: \" Repita cada\",\r\n\t\trepeat_text_week_count: \"semana:\",\r\n\t\trepeat_radio_month_type: \"Repetir\",\r\n\t\trepeat_radio_month_start: \"Em\",\r\n\t\trepeat_text_month_day: \"todo dia\",\r\n\t\trepeat_text_month_count: \"mês\",\r\n\t\trepeat_text_month_count2_before: \"todo\",\r\n\t\trepeat_text_month_count2_after: \"mês\",\r\n\t\trepeat_year_label: \"Em\",\r\n\t\tselect_year_day2: \"of\",\r\n\t\trepeat_text_year_day: \"dia\",\r\n\t\tselect_year_month: \"mês\",\r\n\t\trepeat_radio_end: \"Sem data final\",\r\n\t\trepeat_text_occurences_count: \"ocorrências\",\r\n\t\trepeat_radio_end3: \"Fim\",\r\n\t\trepeat_radio_end2: \"Depois\",\r\n\r\n\t\trepeat_never: \"Nunca\",\r\n\t\trepeat_daily: \"Todos os dias\",\r\n\t\trepeat_workdays: \"Todos os dias úteis\",\r\n\t\trepeat_weekly: \"Toda semana\",\r\n\t\trepeat_monthly: \"Todo mês\",\r\n\t\trepeat_yearly: \"Todo ano\",\r\n\t\trepeat_custom: \"Personalizado\",\r\n\t\trepeat_freq_day: \"Dia\",\r\n\t\trepeat_freq_week: \"Semana\",\r\n\t\trepeat_freq_month: \"Mês\",\r\n\t\trepeat_freq_year: \"Ano\",\r\n\t\trepeat_on_date: \"Na data\",\r\n\t\trepeat_ends: \"Termina\",\r\n\r\n\t\tmonth_for_recurring: [\"Janeiro\", \"Fevereiro\", \"Março\", \"Abril\", \"Maio\", \"Junho\", \"Julho\", \"Agosto\", \"Setembro\", \"Outubro\", \"Novembro\", \"Dezembro\"],\r\n\t\tday_for_recurring: [\"Domingo\", \"Segunda\", \"Terça\", \"Quarta\", \"Quinta\", \"Sexta\", \"Sábado\"]\r\n\t}\r\n};\r\n\r\n\r\n","/*\r\n\tTraducere de Ovidiu Lixandru: http://www.madball.ro\r\n */\r\n\r\nexport default {\r\n\tdate:{\r\n\t\tmonth_full:[\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"November\", \"December\"],\r\n\t\tmonth_short:[\"Ian\", \"Feb\", \"Mar\", \"Apr\", \"Mai\", \"Iun\", \"Iul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n\t\tday_full:[\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"],\r\n\t\tday_short:[\"Du\", \"Lu\", \"Ma\", \"Mi\", \"Jo\", \"Vi\", \"Sa\"]\r\n\t},\r\n\tlabels:{\r\n\t\tdhx_cal_today_button:\"Astazi\",\r\n\t\tday_tab:\"Zi\",\r\n\t\tweek_tab:\"Saptamana\",\r\n\t\tmonth_tab:\"Luna\",\r\n\t\tnew_event:\"Eveniment nou\",\r\n\t\ticon_save:\"Salveaza\",\r\n\t\ticon_cancel:\"Anuleaza\",\r\n\t\ticon_details:\"Detalii\",\r\n\t\ticon_edit:\"Editeaza\",\r\n\t\ticon_delete:\"Sterge\",\r\n\t\tconfirm_closing:\"Schimbarile nu vor fi salvate, esti sigur?\",//Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting:\"Evenimentul va fi sters permanent, esti sigur?\",\r\n\t\tsection_description:\"Descriere\",\r\n\t\tsection_time:\"Interval\",\r\n\t\tfull_day:\"Toata ziua\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring:\"Vrei sa editezi toata seria de evenimente repetate?\",\r\n\t\tsection_recurring:\"Repetare\",\r\n\t\tbutton_recurring:\"Dezactivata\",\r\n\t\tbutton_recurring_open:\"Activata\",\r\n\t\tbutton_edit_series: \"Editeaza serie\",\r\n\t\tbutton_edit_occurrence: \"Editeaza doar intrare\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab:\"Agenda\",\r\n\t\tdate:\"Data\",\r\n\t\tdescription:\"Descriere\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab:\"An\",\r\n\r\n\t\t/* week agenda extension */\r\n\t\tweek_agenda_tab: \"Agenda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Lista\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Zilnic\",\r\n\t\trepeat_radio_week: \"Saptamanal\",\r\n\t\trepeat_radio_month: \"Lunar\",\r\n\t\trepeat_radio_year: \"Anual\",\r\n\t\trepeat_radio_day_type: \"La fiecare\",\r\n\t\trepeat_text_day_count: \"zi(le)\",\r\n\t\trepeat_radio_day_type2: \"Fiecare zi lucratoare\",\r\n\t\trepeat_week: \" Repeta la fiecare\",\r\n\t\trepeat_text_week_count: \"saptamana in urmatoarele zile:\",\r\n\t\trepeat_radio_month_type: \"Repeta in\",\r\n\t\trepeat_radio_month_start: \"In a\",\r\n\t\trepeat_text_month_day: \"zi la fiecare\",\r\n\t\trepeat_text_month_count: \"luni\",\r\n\t\trepeat_text_month_count2_before: \"la fiecare\",\r\n\t\trepeat_text_month_count2_after: \"luni\",\r\n\t\trepeat_year_label: \"In\",\r\n\t\tselect_year_day2: \"a lunii\",\r\n\t\trepeat_text_year_day: \"zi a lunii\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Fara data de sfarsit\",\r\n\t\trepeat_text_occurences_count: \"evenimente\",\r\n\t\trepeat_radio_end3: \"La data\",\r\n\t\trepeat_radio_end2: \"Dupa\",\r\n\r\n\t\trepeat_never: \"Niciodată\",\r\n\t\trepeat_daily: \"În fiecare zi\",\r\n\t\trepeat_workdays: \"În fiecare zi lucrătoare\",\r\n\t\trepeat_weekly: \"În fiecare săptămână\",\r\n\t\trepeat_monthly: \"În fiecare lună\",\r\n\t\trepeat_yearly: \"În fiecare an\",\r\n\t\trepeat_custom: \"Personalizat\",\r\n\t\trepeat_freq_day: \"Zi\",\r\n\t\trepeat_freq_week: \"Săptămână\",\r\n\t\trepeat_freq_month: \"Lună\",\r\n\t\trepeat_freq_year: \"An\",\r\n\t\trepeat_on_date: \"La data\",\r\n\t\trepeat_ends: \"Se termină\",\r\n\r\n\t\tmonth_for_recurring: [\"Ianuarie\", \"Februarie\", \"Martie\", \"Aprilie\", \"Mai\", \"Iunie\", \"Iulie\", \"August\", \"Septembrie\", \"Octombrie\", \"Noiembrie\", \"Decembrie\"],\r\n\t\tday_for_recurring: [\"Duminica\", \"Luni\", \"Marti\", \"Miercuri\", \"Joi\", \"Vineri\", \"Sambata\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Январь\", \"Февраль\", \"Март\", \"Апрель\", \"Maй\", \"Июнь\", \"Июль\", \"Август\", \"Сентябрь\", \"Oктябрь\", \"Ноябрь\", \"Декабрь\"],\r\n\t\tmonth_short: [\"Янв\", \"Фев\", \"Maр\", \"Aпр\", \"Maй\", \"Июн\", \"Июл\", \"Aвг\", \"Сен\", \"Окт\", \"Ноя\", \"Дек\"],\r\n\t\tday_full: [ \"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среда\", \"Четверг\", \"Пятница\", \"Суббота\"],\r\n\t\tday_short: [\"Вс\", \"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сегодня\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Неделя\",\r\n\t\tmonth_tab: \"Месяц\",\r\n\t\tnew_event: \"Новое событие\",\r\n\t\ticon_save: \"Сохранить\",\r\n\t\ticon_cancel: \"Отменить\",\r\n\t\ticon_details: \"Детали\",\r\n\t\ticon_edit: \"Изменить\",\r\n\t\ticon_delete: \"Удалить\",\r\n\t\tconfirm_closing: \"\", //Ваши изменения будут потеряны, продолжить?\r\n\t\tconfirm_deleting: \"Событие будет удалено безвозвратно, продолжить?\",\r\n\t\tsection_description: \"Описание\",\r\n\t\tsection_time: \"Период времени\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\tconfirm_recurring: \"Вы хотите изменить всю серию повторяющихся событий?\",\r\n\t\tsection_recurring: \"Повторение\",\r\n\t\tbutton_recurring: \"Отключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редактировать серию\",\r\n\t\tbutton_edit_occurrence: \"Редактировать экземпляр\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Список\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Описание\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Год\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Список\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблица\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Неделя\",\r\n\t\trepeat_radio_month: \"Месяц\",\r\n\t\trepeat_radio_year: \"Год\",\r\n\t\trepeat_radio_day_type: \"Каждый\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Каждый рабочий день\",\r\n\t\trepeat_week: \" Повторять каждую\",\r\n\t\trepeat_text_week_count: \"неделю , в:\",\r\n\t\trepeat_radio_month_type: \"Повторять\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа каждый \",\r\n\t\trepeat_text_month_count: \"месяц\",\r\n\t\trepeat_text_month_count2_before: \"каждый \",\r\n\t\trepeat_text_month_count2_after: \"месяц\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без даты окончания\",\r\n\t\trepeat_text_occurences_count: \"повторений\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Никогда\",\r\n\t\trepeat_daily: \"Каждый день\",\r\n\t\trepeat_workdays: \"Каждый будний день\",\r\n\t\trepeat_weekly: \"Каждую неделю\",\r\n\t\trepeat_monthly: \"Каждый месяц\",\r\n\t\trepeat_yearly: \"Каждый год\",\r\n\t\trepeat_custom: \"Настроить\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Неделя\",\r\n\t\trepeat_freq_month: \"Месяц\",\r\n\t\trepeat_freq_year: \"Год\",\r\n\t\trepeat_on_date: \"В дату\",\r\n\t\trepeat_ends: \"Заканчивается\",\r\n\r\n\t\tmonth_for_recurring: [\"Января\", \"Февраля\", \"Марта\", \"Апреля\", \"Мая\", \"Июня\", \"Июля\", \"Августа\", \"Сентября\", \"Октября\", \"Ноября\", \"Декабря\"],\r\n\t\tday_for_recurring: [\"Воскресенье\", \"Понедельник\", \"Вторник\", \"Среду\", \"Четверг\", \"Пятницу\", \"Субботу\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"],\r\n\t\tday_short: [\"Ned\", \"Pon\", \"Tor\", \"Sre\", \"Čet\", \"Pet\", \"Sob\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Danes\",\r\n\t\tday_tab: \"Dan\",\r\n\t\tweek_tab: \"Teden\",\r\n\t\tmonth_tab: \"Mesec\",\r\n\t\tnew_event: \"Nov dogodek\",\r\n\t\ticon_save: \"Shrani\",\r\n\t\ticon_cancel: \"Prekliči\",\r\n\t\ticon_details: \"Podrobnosti\",\r\n\t\ticon_edit: \"Uredi\",\r\n\t\ticon_delete: \"Izbriši\",\r\n\t\tconfirm_closing: \"\", //Spremembe ne bodo shranjene. Želite nadaljevati ?\r\n\t\tconfirm_deleting: \"Dogodek bo izbrisan. Želite nadaljevati?\",\r\n\t\tsection_description: \"Opis\",\r\n\t\tsection_time: \"Časovni okvir\",\r\n\t\tfull_day: \"Ves dan\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Želite urediti celoten set ponavljajočih dogodkov?\",\r\n\t\tsection_recurring: \"Ponovi dogodek\",\r\n\t\tbutton_recurring: \"Onemogočeno\",\r\n\t\tbutton_recurring_open: \"Omogočeno\",\r\n\t\tbutton_edit_series: \"Edit series\",\r\n\t\tbutton_edit_occurrence: \"Edit occurrence\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Zadeva\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Opis\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Leto\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Zadeva\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Miza\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dnevno\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Tedensko\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Mesečno\",\r\n\t\trepeat_radio_year: \"Letno\",\r\n\t\trepeat_radio_day_type: \"Vsak\",\r\n\t\trepeat_text_day_count: \"dan\",\r\n\t\trepeat_radio_day_type2: \"Vsak delovni dan\",\r\n\t\trepeat_week: \" Ponavljaj vsak\",\r\n\t\trepeat_text_week_count: \"teden na naslednje dni:\",\r\n\t\trepeat_radio_month_type: \"Ponavljaj\",\r\n\t\trepeat_radio_month_start: \"Na\",\r\n\t\trepeat_text_month_day: \"dan vsak\",\r\n\t\trepeat_text_month_count: \"mesec\",\r\n\t\trepeat_text_month_count2_before: \"vsak\",\r\n\t\trepeat_text_month_count2_after: \"mesec\",\r\n\t\trepeat_year_label: \"Na\",\r\n\t\tselect_year_day2: \"od\",\r\n\t\trepeat_text_year_day: \"dan\",\r\n\t\tselect_year_month: \"mesec\",\r\n\t\trepeat_radio_end: \"Brez končnega datuma\",\r\n\t\trepeat_text_occurences_count: \"pojavitve\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\t\trepeat_radio_end3: \"Končaj do\",\r\n\r\n\t\trepeat_never: \"Nikoli\",\r\n\t\trepeat_daily: \"Vsak dan\",\r\n\t\trepeat_workdays: \"Vsak delovni dan\",\r\n\t\trepeat_weekly: \"Vsak teden\",\r\n\t\trepeat_monthly: \"Vsak mesec\",\r\n\t\trepeat_yearly: \"Vsako leto\",\r\n\t\trepeat_custom: \"Po meri\",\r\n\t\trepeat_freq_day: \"Dan\",\r\n\t\trepeat_freq_week: \"Teden\",\r\n\t\trepeat_freq_month: \"Mesec\",\r\n\t\trepeat_freq_year: \"Leto\",\r\n\t\trepeat_on_date: \"Na datum\",\r\n\t\trepeat_ends: \"Konča se\",\r\n\r\n\t\tmonth_for_recurring: [\"Januar\", \"Februar\", \"Marec\", \"April\", \"Maj\", \"Junij\", \"Julij\", \"Avgust\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nedelja\", \"Ponedeljek\", \"Torek\", \"Sreda\", \"Četrtek\", \"Petek\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Máj\", \"Jún\", \"Júl\", \"Aug\", \"Sept\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Nedeľa\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"],\r\n\t\tday_short: [\"Ne\", \"Po\", \"Ut\", \"St\", \"Št\", \"Pi\", \"So\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Dnes\",\r\n\t\tday_tab: \"Deň\",\r\n\t\tweek_tab: \"Týždeň\",\r\n\t\tmonth_tab: \"Mesiac\",\r\n\t\tnew_event: \"Nová udalosť\",\r\n\t\ticon_save: \"Uložiť\",\r\n\t\ticon_cancel: \"Späť\",\r\n\t\ticon_details: \"Detail\",\r\n\t\ticon_edit: \"Edituj\",\r\n\t\ticon_delete: \"Zmazať\",\r\n\t\tconfirm_closing: \"Vaše zmeny nebudú uložené. Skutočne?\", //Vaše změny budou ztraceny, opravdu ?\r\n\t\tconfirm_deleting: \"Udalosť bude natrvalo vymazaná. Skutočne?\",\r\n\t\tsection_description: \"Poznámky\",\r\n\t\tsection_time: \"Doba platnosti\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Prajete si upraviť celú radu opakovaných udalostí?\",\r\n\t\tsection_recurring: \"Opakovanie udalosti\",\r\n\t\tbutton_recurring: \"Vypnuté\",\r\n\t\tbutton_recurring_open: \"Zapnuté\",\r\n\t\tbutton_edit_series: \"Upraviť opakovania\",\r\n\t\tbutton_edit_occurrence: \"Upraviť inštancie\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Program\",\r\n\t\tdate: \"Dátum\",\r\n\t\tdescription: \"Poznámka\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Rok\",\r\n\t\tfull_day: \"Celý deň\", // Full day\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Program\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Mriežka\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Denne\",\r\n\t\trepeat_radio_week: \"Týždenne\",\r\n\t\trepeat_radio_month: \"Mesaène\",\r\n\t\trepeat_radio_year: \"Roène\",\r\n\t\trepeat_radio_day_type: \"Každý\",\r\n\t\trepeat_text_day_count: \"deò\",\r\n\t\trepeat_radio_day_type2: \"Každý prac. deò\",\r\n\t\trepeat_week: \"Opakova každý\",\r\n\t\trepeat_text_week_count: \"týždeò v dòoch:\",\r\n\t\trepeat_radio_month_type: \"Opakova\",\r\n\t\trepeat_radio_month_start: \"On\",\r\n\t\trepeat_text_month_day: \"deò každý\",\r\n\t\trepeat_text_month_count: \"mesiac\",\r\n\t\trepeat_text_month_count2_before: \"každý\",\r\n\t\trepeat_text_month_count2_after: \"mesiac\",\r\n\t\trepeat_year_label: \"On\",\r\n\t\tselect_year_day2: \"poèas\",\r\n\t\trepeat_text_year_day: \"deò\",\r\n\t\tselect_year_month: \"mesiac\",\r\n\t\trepeat_radio_end: \"Bez dátumu ukonèenia\",\r\n\t\trepeat_text_occurences_count: \"udalostiach\",\r\n\t\trepeat_radio_end3: \"Ukonèi\",\r\n\t\trepeat_radio_end2: \"Po\",\r\n\r\n\t\trepeat_never: \"Nikdy\",\r\n\t\trepeat_daily: \"Každý deň\",\r\n\t\trepeat_workdays: \"Každý pracovný deň\",\r\n\t\trepeat_weekly: \"Každý týždeň\",\r\n\t\trepeat_monthly: \"Každý mesiac\",\r\n\t\trepeat_yearly: \"Každý rok\",\r\n\t\trepeat_custom: \"Vlastné\",\r\n\t\trepeat_freq_day: \"Deň\",\r\n\t\trepeat_freq_week: \"Týždeň\",\r\n\t\trepeat_freq_month: \"Mesiac\",\r\n\t\trepeat_freq_year: \"Rok\",\r\n\t\trepeat_on_date: \"Na dátum\",\r\n\t\trepeat_ends: \"Koniec\",\r\n\r\n\t\tmonth_for_recurring: [\"Január\", \"Február\", \"Marec\", \"Apríl\", \"Máj\", \"Jún\", \"Júl\", \"August\", \"September\", \"Október\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Nede¾a\", \"Pondelok\", \"Utorok\", \"Streda\", \"Štvrtok\", \"Piatok\", \"Sobota\"]\r\n\t}\r\n};\r\n\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tmonth_short: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dec\"],\r\n\t\tday_full: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"],\r\n\t\tday_short: [\"Sön\", \"Mån\", \"Tis\", \"Ons\", \"Tor\", \"Fre\", \"Lör\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Idag\",\r\n\t\tday_tab: \"Dag\",\r\n\t\tweek_tab: \"Vecka\",\r\n\t\tmonth_tab: \"Månad\",\r\n\t\tnew_event: \"Ny händelse\",\r\n\t\ticon_save: \"Spara\",\r\n\t\ticon_cancel: \"Ångra\",\r\n\t\ticon_details: \"Detaljer\",\r\n\t\ticon_edit: \"Ändra\",\r\n\t\ticon_delete: \"Ta bort\",\r\n\t\tconfirm_closing: \"\", //Dina förändingar kommer gå förlorade, är du säker?\r\n\t\tconfirm_deleting: \"Är du säker på att du vill ta bort händelsen permanent?\",\r\n\t\tsection_description: \"Beskrivning\",\r\n\t\tsection_time: \"Tid\",\r\n\t\tfull_day: \"Hela dagen\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Vill du redigera hela serien med repeterande händelser?\",\r\n\t\tsection_recurring: \"Upprepa händelse\",\r\n\t\tbutton_recurring: \"Inaktiverat\",\r\n\t\tbutton_recurring_open: \"Aktiverat\",\r\n\t\tbutton_edit_series: \"Redigera serien\",\r\n\t\tbutton_edit_occurrence: \"Redigera en kopia\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Dagordning\",\r\n\t\tdate: \"Datum\",\r\n\t\tdescription: \"Beskrivning\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"År\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Dagordning\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Galler\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Dra för att skapa ny\",\r\n\t\tdrag_to_move:\"Dra för att flytta\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Dagligen\",\r\n\t\trepeat_radio_week: \"Veckovis\",\r\n\t\trepeat_radio_month: \"Månadsvis\",\r\n\t\trepeat_radio_year: \"Årligen\",\r\n\t\trepeat_radio_day_type: \"Var\",\r\n\t\trepeat_text_day_count: \"dag\",\r\n\t\trepeat_radio_day_type2: \"Varje arbetsdag\",\r\n\t\trepeat_week: \" Upprepa var\",\r\n\t\trepeat_text_week_count: \"vecka dessa dagar:\",\r\n\t\trepeat_radio_month_type: \"Upprepa\",\r\n\t\trepeat_radio_month_start: \"Den\",\r\n\t\trepeat_text_month_day: \"dagen var\",\r\n\t\trepeat_text_month_count: \"månad\",\r\n\t\trepeat_text_month_count2_before: \"var\",\r\n\t\trepeat_text_month_count2_after: \"månad\",\r\n\t\trepeat_year_label: \"Den\",\r\n\t\tselect_year_day2: \"i\",\r\n\t\trepeat_text_year_day: \"dag i\",\r\n\t\tselect_year_month: \"månad\",\r\n\t\trepeat_radio_end: \"Inget slutdatum\",\r\n\t\trepeat_text_occurences_count: \"upprepningar\",\r\n\t\trepeat_radio_end3: \"Sluta efter\",\r\n\t\trepeat_radio_end2: \"Efter\",\r\n\r\n\t\trepeat_never: \"Aldrig\",\r\n\t\trepeat_daily: \"Varje dag\",\r\n\t\trepeat_workdays: \"Varje vardag\",\r\n\t\trepeat_weekly: \"Varje vecka\",\r\n\t\trepeat_monthly: \"Varje månad\",\r\n\t\trepeat_yearly: \"Varje år\",\r\n\t\trepeat_custom: \"Anpassad\",\r\n\t\trepeat_freq_day: \"Dag\",\r\n\t\trepeat_freq_week: \"Vecka\",\r\n\t\trepeat_freq_month: \"Månad\",\r\n\t\trepeat_freq_year: \"År\",\r\n\t\trepeat_on_date: \"På datum\",\r\n\t\trepeat_ends: \"Slutar\",\r\n\r\n\t\tmonth_for_recurring: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n\t\tday_for_recurring: [\"Söndag\", \"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\"]\r\n\t}\r\n};\r\n","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Ocak\", \"Þubat\", \"Mart\", \"Nisan\", \"Mayýs\", \"Haziran\", \"Temmuz\", \"Aðustos\", \"Eylül\", \"Ekim\", \"Kasým\", \"Aralýk\"],\r\n\t\tmonth_short: [\"Oca\", \"Þub\", \"Mar\", \"Nis\", \"May\", \"Haz\", \"Tem\", \"Aðu\", \"Eyl\", \"Eki\", \"Kas\", \"Ara\"],\r\n\t\tday_full: [\"Pazar\", \"Pazartes,\", \"Salý\", \"Çarþamba\", \"Perþembe\", \"Cuma\", \"Cumartesi\"],\r\n\t\tday_short: [\"Paz\", \"Pts\", \"Sal\", \"Çar\", \"Per\", \"Cum\", \"Cts\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Bugün\",\r\n\t\tday_tab: \"Gün\",\r\n\t\tweek_tab: \"Hafta\",\r\n\t\tmonth_tab: \"Ay\",\r\n\t\tnew_event: \"Uygun\",\r\n\t\ticon_save: \"Kaydet\",\r\n\t\ticon_cancel: \"Ýptal\",\r\n\t\ticon_details: \"Detaylar\",\r\n\t\ticon_edit: \"Düzenle\",\r\n\t\ticon_delete: \"Sil\",\r\n\t\tconfirm_closing: \"\", //Your changes will be lost, are your sure ?\r\n\t\tconfirm_deleting: \"Etkinlik silinecek, devam?\",\r\n\t\tsection_description: \"Açýklama\",\r\n\t\tsection_time: \"Zaman aralýðý\",\r\n\t\tfull_day: \"Tam gün\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Tüm tekrar eden etkinlikler silinecek, devam?\",\r\n\t\tsection_recurring: \"Etkinliði tekrarla\",\r\n\t\tbutton_recurring: \"Pasif\",\r\n\t\tbutton_recurring_open: \"Aktif\",\r\n\t\tbutton_edit_series: \"Dizi düzenleme\",\r\n\t\tbutton_edit_occurrence: \"Bir kopyasını düzenleyin\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Ajanda\",\r\n\t\tdate: \"Tarih\",\r\n\t\tdescription: \"Açýklama\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Yýl\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Ajanda\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Izgara\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"Günlük\", //name=\"repeat\" value=\"day\"\r\n\t\trepeat_radio_week: \"Haftalık\", //name=\"repeat\" value=\"week\r\n\t\trepeat_radio_month: \"Aylık\",\r\n\t\trepeat_radio_year: \"Yıllık\",\r\n\t\trepeat_radio_day_type: \"Her\",\r\n\t\trepeat_text_day_count: \"gün\",\r\n\t\trepeat_radio_day_type2: \"Her iş günü\",\r\n\t\trepeat_week: \" Tekrar her\",\r\n\t\trepeat_text_week_count: \"hafta şu günlerde:\",\r\n\t\trepeat_radio_month_type: \"Tekrar et\",\r\n\t\trepeat_radio_month_start: \"Tarihinde\",\r\n\t\trepeat_text_month_day: \"gün her\",\r\n\t\trepeat_text_month_count: \"ay\",\r\n\t\trepeat_text_month_count2_before: \"her\",\r\n\t\trepeat_text_month_count2_after: \"ay\",\r\n\t\trepeat_year_label: \"Tarihinde\",\r\n\t\tselect_year_day2: \"ayın\",\r\n\t\trepeat_text_year_day: \"günü\",\r\n\t\tselect_year_month: \"ay\",\r\n\t\trepeat_radio_end: \"Bitiş tarihi yok\",\r\n\t\trepeat_text_occurences_count: \"olay\",\r\n\t\trepeat_radio_end2: \"Sonra\",\r\n\t\trepeat_radio_end3: \"Tarihinde bitir\",\r\n\r\n\t\trepeat_never: \"Asla\",\r\n\t\trepeat_daily: \"Her gün\",\r\n\t\trepeat_workdays: \"Her iş günü\",\r\n\t\trepeat_weekly: \"Her hafta\",\r\n\t\trepeat_monthly: \"Her ay\",\r\n\t\trepeat_yearly: \"Her yıl\",\r\n\t\trepeat_custom: \"Özel\",\r\n\t\trepeat_freq_day: \"Gün\",\r\n\t\trepeat_freq_week: \"Hafta\",\r\n\t\trepeat_freq_month: \"Ay\",\r\n\t\trepeat_freq_year: \"Yıl\",\r\n\t\trepeat_on_date: \"Tarihinde\",\r\n\t\trepeat_ends: \"Biter\",\r\n\r\n\t\tmonth_for_recurring: [\"Ocak\", \"Şubat\", \"Mart\", \"Nisan\", \"Mayıs\", \"Haziran\", \"Temmuz\", \"Ağustos\", \"Eylül\", \"Ekim\", \"Kasım\", \"Aralık\"],\r\n\t\tday_for_recurring: [\"Pazar\", \"Pazartesi\", \"Salı\", \"Çarşamba\", \"Perşembe\", \"Cuma\", \"Cumartesi\"]\r\n\t}\r\n};","export default {\r\n\tdate: {\r\n\t\tmonth_full: [\"Січень\", \"Лютий\", \"Березень\", \"Квітень\", \"Травень\", \"Червень\", \"Липень\", \"Серпень\", \"Вересень\", \"Жовтень\", \"Листопад\", \"Грудень\"],\r\n\t\tmonth_short: [\"Січ\", \"Лют\", \"Бер\", \"Кві\", \"Тра\", \"Чер\", \"Лип\", \"Сер\", \"Вер\", \"Жов\", \"Лис\", \"Гру\"],\r\n\t\tday_full: [\"Неділя\", \"Понеділок\", \"Вівторок\", \"Середа\", \"Четвер\", \"П'ятниця\", \"Субота\"],\r\n\t\tday_short: [\"Нед\", \"Пон\", \"Вів\", \"Сер\", \"Чет\", \"Птн\", \"Суб\"]\r\n\t},\r\n\tlabels: {\r\n\t\tdhx_cal_today_button: \"Сьогодні\",\r\n\t\tday_tab: \"День\",\r\n\t\tweek_tab: \"Тиждень\",\r\n\t\tmonth_tab: \"Місяць\",\r\n\t\tnew_event: \"Нова подія\",\r\n\t\ticon_save: \"Зберегти\",\r\n\t\ticon_cancel: \"Відміна\",\r\n\t\ticon_details: \"Деталі\",\r\n\t\ticon_edit: \"Редагувати\",\r\n\t\ticon_delete: \"Вилучити\",\r\n\t\tconfirm_closing: \"\", //Ваші зміни втратяться. Ви впевнені ?\r\n\t\tconfirm_deleting: \"Подія вилучиться назавжди. Ви впевнені?\",\r\n\t\tsection_description: \"Опис\",\r\n\t\tsection_time: \"Часовий проміжок\",\r\n\t\tfull_day: \"Весь день\",\r\n\r\n\t\t/*recurring events*/\r\n\t\tconfirm_recurring: \"Хочете редагувати весь перелік повторюваних подій?\",\r\n\t\tsection_recurring: \"Повторювана подія\",\r\n\t\tbutton_recurring: \"Відключено\",\r\n\t\tbutton_recurring_open: \"Включено\",\r\n\t\tbutton_edit_series: \"Редагувати серію\",\r\n\t\tbutton_edit_occurrence: \"Редагувати примірник\",\r\n\r\n\t\t/*agenda view extension*/\r\n\t\tagenda_tab: \"Перелік\",\r\n\t\tdate: \"Дата\",\r\n\t\tdescription: \"Опис\",\r\n\r\n\t\t/*year view extension*/\r\n\t\tyear_tab: \"Рік\",\r\n\r\n\t\t/*week agenda view extension*/\r\n\t\tweek_agenda_tab: \"Перелік\",\r\n\r\n\t\t/*grid view extension*/\r\n\t\tgrid_tab: \"Таблиця\",\r\n\r\n\t\t/* touch tooltip*/\r\n\t\tdrag_to_create:\"Drag to create\",\r\n\t\tdrag_to_move:\"Drag to move\",\r\n\r\n\t\t/* dhtmlx message default buttons */\r\n\t\tmessage_ok:\"OK\",\r\n\t\tmessage_cancel:\"Cancel\",\r\n\r\n\t\t/* wai aria labels for non-text controls */\r\n\t\tnext: \"Next\",\r\n\t\tprev: \"Previous\",\r\n\t\tyear: \"Year\",\r\n\t\tmonth: \"Month\",\r\n\t\tday: \"Day\",\r\n\t\thour:\"Hour\",\r\n\t\tminute: \"Minute\",\r\n\r\n\t\t/* recurring event components */\r\n\t\trepeat_radio_day: \"День\",\r\n\t\trepeat_radio_week: \"Тиждень\",\r\n\t\trepeat_radio_month: \"Місяць\",\r\n\t\trepeat_radio_year: \"Рік\",\r\n\t\trepeat_radio_day_type: \"Кожний\",\r\n\t\trepeat_text_day_count: \"день\",\r\n\t\trepeat_radio_day_type2: \"Кожний робочий день\",\r\n\t\trepeat_week: \" Повторювати кожен\",\r\n\t\trepeat_text_week_count: \"тиждень , по:\",\r\n\t\trepeat_radio_month_type: \"Повторювати\",\r\n\t\trepeat_radio_month_start: \"\",\r\n\t\trepeat_text_month_day: \" числа кожний \",\r\n\t\trepeat_text_month_count: \"місяць\",\r\n\t\trepeat_text_month_count2_before: \"кожен \",\r\n\t\trepeat_text_month_count2_after: \"місяць\",\r\n\t\trepeat_year_label: \"\",\r\n\t\tselect_year_day2: \"\",\r\n\t\trepeat_text_year_day: \"день\",\r\n\t\tselect_year_month: \"\",\r\n\t\trepeat_radio_end: \"Без дати закінчення\",\r\n\t\trepeat_text_occurences_count: \"повторень\",\r\n\t\trepeat_radio_end3: \"До \",\r\n\t\trepeat_radio_end2: \"\",\r\n\r\n\t\trepeat_never: \"Ніколи\",\r\n\t\trepeat_daily: \"Щодня\",\r\n\t\trepeat_workdays: \"Щодня в робочі дні\",\r\n\t\trepeat_weekly: \"Щотижня\",\r\n\t\trepeat_monthly: \"Щомісяця\",\r\n\t\trepeat_yearly: \"Щороку\",\r\n\t\trepeat_custom: \"Налаштоване\",\r\n\t\trepeat_freq_day: \"День\",\r\n\t\trepeat_freq_week: \"Тиждень\",\r\n\t\trepeat_freq_month: \"Місяць\",\r\n\t\trepeat_freq_year: \"Рік\",\r\n\t\trepeat_on_date: \"На дату\",\r\n\t\trepeat_ends: \"Закінчується\",\r\n\r\n\t\tmonth_for_recurring: [\"січня\", \"лютого\", \"березня\", \"квітня\", \"травня\", \"червня\", \"липня\", \"серпня\", \"вересня\", \"жовтня\", \"листопада\", \"грудня\"],\r\n\t\tday_for_recurring: [\"Неділям\", \"Понеділкам\", \"Вівторкам\", \"Середам\", \"Четвергам\", \"П'ятницям\", \"Суботам\"]\r\n\t}\r\n};\r\n","import ar from \"./locale_ar\";\r\nimport be from \"./locale_be\";\r\nimport ca from \"./locale_ca\";\r\nimport cn from \"./locale_cn\";\r\nimport cs from \"./locale_cs\";\r\nimport da from \"./locale_da\";\r\nimport de from \"./locale_de\";\r\nimport el from \"./locale_el\";\r\nimport en from \"./locale_en\";\r\nimport es from \"./locale_es\";\r\nimport fi from \"./locale_fi\";\r\nimport fr from \"./locale_fr\";\r\nimport he from \"./locale_he\";\r\nimport hu from \"./locale_hu\";\r\nimport id from \"./locale_id\";\r\nimport it from \"./locale_it\";\r\nimport jp from \"./locale_jp\";\r\n\r\nimport LocaleManager from \"./locale_manager\";\r\n\r\nimport nb from \"./locale_nb\";\r\nimport nl from \"./locale_nl\";\r\nimport no from \"./locale_no\";\r\nimport pl from \"./locale_pl\";\r\nimport pt from \"./locale_pt\";\r\nimport ro from \"./locale_ro\";\r\nimport ru from \"./locale_ru\";\r\nimport si from \"./locale_si\";\r\nimport sk from \"./locale_sk\";\r\nimport sv from \"./locale_sv\";\r\nimport tr from \"./locale_tr\";\r\nimport ua from \"./locale_ua\";\r\n\r\nexport default function(){\r\n\treturn new LocaleManager({\r\n\t\ten,\r\n\t\tar,\r\n\t\tbe,\r\n\t\tca,\r\n\t\tcn,\r\n\t\tcs,\r\n\t\tda,\r\n\t\tde,\r\n\t\tel,\r\n\t\tes,\r\n\t\tfi,\r\n\t\tfr,\r\n\t\the,\r\n\t\thu,\r\n\t\tid,\r\n\t\tit,\r\n\t\tjp,\r\n\t\tnb,\r\n\t\tnl,\r\n\t\tno,\r\n\t\tpl,\r\n\t\tpt,\r\n\t\tro,\r\n\t\tru,\r\n\t\tsi,\r\n\t\tsk,\r\n\t\tsv,\r\n\t\ttr,\r\n\t\tua\r\n\t});\r\n}","import eventable from \"../utils/eventable\";\r\n\r\nexport class DatePicker {\r\n\tconstructor(scheduler, container, state = {}) {\r\n\t\tthis.state = {\r\n\t\t\tdate: new Date(),\r\n\t\t\tmodes: ['days', 'months', 'years'],\r\n\t\t\tcurrentRange: [],\r\n\t\t\teventDates: [],\r\n\t\t\tcurrentModeIndex: 0,\r\n\t\t\t...state\r\n\t\t};\r\n\t\tthis.container = null;\r\n\t\tthis.element = null;\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis.state = this.getState();\r\n\t\teventable(this);\r\n\t\tif(container){\r\n\r\n\t\t\tthis.container = container;\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\r\n\t\tthis.onStateChange((oldState, newState) => {\r\n\t\t\tthis.callEvent(\"onStateChange\", [newState, oldState]);\r\n\t\t});\r\n\t}\r\n\r\n\tgetState() {\r\n\t\treturn { \r\n\t\t\t...this.state,\r\n\t\t\tmode: this.state.modes[this.state.currentModeIndex]\r\n\t\t};\r\n\t}\r\n\r\n\tsetState(newState) {\r\n\t\tconst oldState = { ...this.state };\r\n\t\tif(newState.mode){\r\n\t\t\tnewState.currentModeIndex = this.state.modes.indexOf(newState.mode);\r\n\t\t}\r\n\t\tthis.state = { ...this.state, ...newState };\r\n\r\n\t\tthis._notifyStateChange(oldState, this.state);\r\n\r\n\t\tif (this.container) {\r\n\t\t\tthis.render(this.container);\r\n\t\t}\r\n\t}\r\n\r\n\tonStateChange(handler) {\r\n\t\tthis.onStateChangeHandlers.push(handler);\r\n\r\n\t\t// function to remove the handler\r\n\t\treturn () => {\r\n\t\t\tconst index = this.onStateChangeHandlers.indexOf(handler);\r\n\t\t\tif (index !== -1) {\r\n\t\t\t\tthis.onStateChangeHandlers.splice(index, 1);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t_notifyStateChange(oldState, newState) {\r\n\t\tthis.onStateChangeHandlers.forEach(handler => handler(oldState, newState));\r\n\t}\r\n\r\n\t_adjustDate(direction) {\r\n\r\n\t\tconst {mode, date} = this.getState();\r\n\t\tconst newDate = new Date(date);\r\n\t\tif (mode === 'days') {\r\n\t\t\tnewDate.setMonth(date.getMonth() + direction);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction);\r\n\t\t} else {\r\n\t\t\tnewDate.setFullYear(date.getFullYear() + direction * 10);\r\n\t\t}\r\n\t\tthis.setState({ date: newDate });\r\n\t}\r\n\r\n\t_toggleMode() {\r\n\t\tconst newIndex = (this.state.currentModeIndex + 1) % this.state.modes.length;\r\n\t\tthis.setState({ currentModeIndex: newIndex });\r\n\t}\r\n\r\n\t_renderCalendarHeader(container) {\r\n\t\tconst {mode, date} = this.getState();\r\n\r\n\t\tconst header = document.createElement('div');\r\n\t\theader.classList.add('dhx_cal_datepicker_header');\r\n\r\n\t\tconst backwardArrow = document.createElement('button');\r\n\r\n\t\tbackwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_left\");\r\n\t\theader.appendChild(backwardArrow);\r\n\r\n\t\tconst monthLabel = document.createElement('div');\r\n\t\tmonthLabel.classList.add('dhx_cal_datepicker_title');\r\n\r\n\t\tif (mode === 'days') {\r\n\t\t\tmonthLabel.innerText = date.toLocaleString('default', { month: 'long' }) + ' ' + date.getFullYear();\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tmonthLabel.innerText = date.getFullYear();\r\n\t\t} else {\r\n\t\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\tmonthLabel.innerText = `${startYear} - ${startYear + 9}`;\r\n\t\t}\r\n\r\n\t\tthis._domEvents.attach(monthLabel, \"click\", this._toggleMode.bind(this));\r\n\t\theader.appendChild(monthLabel);\r\n\r\n\t\tconst forwardArrow = document.createElement('button');\r\n\r\n\t\tforwardArrow.classList.add(\"dhx_cal_datepicker_arrow\", \"scheduler_icon\", \"arrow_right\");\r\n\t\theader.appendChild(forwardArrow);\r\n\r\n\t\tcontainer.appendChild(header);\r\n\r\n\t\tthis._domEvents.attach(backwardArrow, \"click\", this._adjustDate.bind(this, -1));\r\n\t\tthis._domEvents.attach(forwardArrow, \"click\", this._adjustDate.bind(this, 1));\r\n\t}\r\n\r\n\trender(container) {\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.container = container || this.container; \r\n\t\tthis.container.innerHTML = '';\r\n\r\n\t\tif(!this.element){\r\n\t\t\tthis.element = document.createElement(\"div\");\r\n\t\t\tthis.element.classList.add(\"dhx_cal_datepicker\");\r\n\t\t}\r\n\t\tthis.element.innerHTML = '';\r\n\t\tthis.container.appendChild(this.element);\r\n\r\n\t\tthis._renderCalendarHeader(this.element);\r\n\t\tconst dataContainer = document.createElement(\"div\");\r\n\t\tdataContainer.classList.add(\"dhx_cal_datepicker_data\");\r\n\t\tthis.element.appendChild(dataContainer);\r\n\r\n\t\tconst {mode} = this.getState();\r\n\t\tif (mode === 'days') {\r\n\t\t\tthis._renderDayGrid(dataContainer);\r\n\t\t} else if (mode === 'months') {\r\n\t\t\tthis._renderMonthGrid(dataContainer);\r\n\t\t} else {\r\n\t\t\tthis._renderYearGrid(dataContainer);\r\n\t\t}\r\n\t}\r\n\r\n\t_renderDayGridHeader(daysOfWeekContainer) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst scheduler = this.scheduler;\r\n\r\n\t\tlet currentDate = scheduler.date.week_start(new Date(date));\r\n\t\tconst maxDate = scheduler.date.add(scheduler.date.week_start(new Date(date)), 1, 'week');\r\n\r\n\t\tdaysOfWeekContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tconst labelFormat = scheduler.date.date_to_str(\"%D\");\r\n\r\n\t\twhile (currentDate.valueOf() < maxDate.valueOf()) {\r\n\t\t\tconst label = labelFormat(currentDate);\r\n\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-day\", currentDate.getDay());\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_dayname');\r\n\t\t\tdayElement.innerText = label;\r\n\t\t\tdaysOfWeekContainer.appendChild(dayElement);\r\n\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, 'day');\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_weeksBetween(min, max) {\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tlet weeks = 0;\r\n\t\tlet currWeek = new Date(min);\r\n\t\twhile(currWeek.valueOf() < max.valueOf()){\r\n\t\t\tweeks += 1;\r\n\t\t\tcurrWeek = scheduler.date.week_start(scheduler.date.add(currWeek, 1, \"week\"));\r\n\t\t}\r\n\t\treturn weeks;\r\n\t}\r\n\r\n\t_renderDayGrid(container) {\r\n\t\tconst {date, currentRange, eventDates, minWeeks} = this.getState();\r\n\r\n\t\tlet minSchedulerDate = currentRange[0];\r\n\t\tlet maxSchedulerDate = currentRange[1];\r\n\r\n\t\tconst eventDaysTable = eventDates.reduce((acc, date) => {\r\n\t\t\tconst dayStart = this.scheduler.date.day_start(new Date(date));\r\n\t\t\tacc[dayStart.valueOf()] = true;\r\n\t\t\treturn acc;\r\n\t\t}, {});\r\n\r\n\r\n\t\t// Render Days of the Week\r\n\t\tconst daysOfWeekContainer = document.createElement('div');\r\n\t\tthis._renderDayGridHeader(daysOfWeekContainer);\r\n\t\tcontainer.appendChild(daysOfWeekContainer);\r\n\r\n\t\tconst scheduler = this.scheduler;\r\n\t\tconst firstDate = scheduler.date.week_start(scheduler.date.month_start(new Date(date)));\r\n\t\tconst monthStart = scheduler.date.month_start(new Date(date));\r\n\t\tconst monthEnd = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tlet lastDate = scheduler.date.add(scheduler.date.month_start(new Date(date)), 1, 'month');\r\n\t\tconst currentCalDate = scheduler.date.date_part(scheduler._currentDate());\r\n\t\tif(lastDate.getDay() !== 0){\r\n\t\t\tlastDate = scheduler.date.add(scheduler.date.week_start(lastDate), 1, \"week\");\r\n\t\t}\r\n\r\n\t\tlet weeks = this._weeksBetween(firstDate, lastDate);\r\n\t\tif(minWeeks && weeks < minWeeks){\r\n\t\t\tlastDate = scheduler.date.add(lastDate, (minWeeks - weeks), \"week\");\r\n\t\t}\r\n\r\n\t\tlet currDate = firstDate;\r\n\r\n\t\tconst dayGridContainer = document.createElement('div');\r\n\t\tdayGridContainer.classList.add('dhx_cal_datepicker_days');\r\n\r\n\t\tthis._domEvents.attach(dayGridContainer, \"click\", (event) => {\r\n\t\t\tconst dateCell = event.target.closest(\"[data-cell-date]\");\r\n\t\t\tconst date = new Date(dateCell.getAttribute(\"data-cell-date\"));\r\n\t\t\tthis.callEvent(\"onDateClick\", [date, event]);\r\n\t\t});\r\n\r\n\t\twhile(currDate.valueOf() < lastDate.valueOf()){\r\n\t\t\tconst dayElement = document.createElement('div');\r\n\t\t\tdayElement.setAttribute(\"data-cell-date\", scheduler.templates.format_date(currDate));\r\n\t\t\tdayElement.setAttribute(\"data-day\", currDate.getDay());\r\n\t\t\tdayElement.innerHTML = currDate.getDate();\r\n\r\n\t\t\tif(currDate.valueOf() < monthStart.valueOf()){\r\n\t\t\t\tdayElement.classList.add('dhx_before');\r\n\t\t\t}else if(currDate.valueOf() >= monthEnd.valueOf()){\t\r\n\t\t\t\tdayElement.classList.add('dhx_after');\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.getDay() === 0 || currDate.getDay() === 6){\r\n\t\t\t\tdayElement.classList.add(\"dhx_cal_datepicker_weekend\");\r\n\t\t\t}\r\n\r\n\t\t\tif(currDate.valueOf() == currentCalDate.valueOf()){\r\n\t\t\t\tdayElement.classList.add(\"dhx_now\");\r\n\t\t\t}\r\n\r\n\t\t\tif(minSchedulerDate && maxSchedulerDate){\r\n\t\t\t\tif(currDate.valueOf() >= minSchedulerDate.valueOf() && currDate.valueOf() < maxSchedulerDate.valueOf()){\r\n\t\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(eventDaysTable[currDate.valueOf()]){\r\n\t\t\t\tdayElement.classList.add('dhx_cal_datepicker_event');\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tdayElement.classList.add('dhx_cal_datepicker_date');\r\n\r\n\t\t\tdayGridContainer.appendChild(dayElement);\r\n\t\t\tcurrDate = scheduler.date.add(currDate, 1, 'day');\r\n\t\t}\r\n\r\n\t\tcontainer.appendChild(dayGridContainer);\r\n\r\n\t}\r\n\r\n\t_renderMonthGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_months\");\r\n\r\n\t\tconst months = [];\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tmonths.push(new Date(date.getFullYear(), i, 1));\r\n\t\t}\r\n\r\n\t\tconst formatLabel = this.scheduler.date.date_to_str(\"%M\");\r\n\t\tmonths.forEach(month => {\r\n\t\t\tconst monthElement = document.createElement('div');\r\n\t\t\tmonthElement.classList.add('dhx_cal_datepicker_month');\r\n\t\t\tif(date.getMonth() === month.getMonth()){\r\n\t\t\t\tmonthElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tmonthElement.setAttribute(\"data-month\", month.getMonth());\r\n\t\t\tmonthElement.innerHTML = formatLabel(month);\r\n\t\t\tthis._domEvents.attach(monthElement, \"click\", () => {\r\n\t\t\t\tconst newDate = new Date(month);\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: newDate,\r\n\t\t\t\t\tmode: 'days'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(monthElement);\r\n\t\t});\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'days'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\t_renderYearGrid(container) {\r\n\t\tconst {date} = this.getState();\r\n\t\tconst startYear = Math.floor(date.getFullYear() / 10) * 10;\r\n\t\t\r\n\t\tconst wrapper = document.createElement('div');\r\n\t\twrapper.classList.add(\"dhx_cal_datepicker_years\");\r\n\t\tfor (let i = startYear - 1; i <= startYear + 10; i++) {\r\n\t\t\tconst yearElement = document.createElement('div');\r\n\t\t\tyearElement.innerText = i;\r\n\t\t\tyearElement.classList.add('dhx_cal_datepicker_year');\r\n\t\t\tyearElement.setAttribute(\"data-year\", i);\r\n\t\t\tif(date.getFullYear() === i){\r\n\t\t\t\tyearElement.classList.add('dhx_cal_datepicker_current');\r\n\t\t\t}\r\n\t\t\tthis._domEvents.attach(yearElement, \"click\", () => {\r\n\t\t\t\tthis.setState({\r\n\t\t\t\t\tdate: new Date(i, date.getMonth(), 1),\r\n\t\t\t\t\tmode: 'months'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\twrapper.appendChild(yearElement);\r\n\t\t\t\r\n\t\t}\r\n\t\tcontainer.appendChild(wrapper);\r\n\r\n\t\tconst doneArea = document.createElement(\"div\");\r\n\t\tdoneArea.classList.add(\"dhx_cal_datepicker_done\");\r\n\t\tconst doneBtn = document.createElement(\"button\");\r\n\t\tdoneBtn.innerText = \"Done\";\r\n\t\tdoneBtn.classList.add(\"dhx_cal_datepicker_done_btn\");\r\n\t\tthis._domEvents.attach(doneBtn, \"click\", () => {\r\n\t\t\tthis.setState({\r\n\t\t\t\tmode: 'months'\r\n\t\t\t});\r\n\t\t});\r\n\t\tdoneArea.appendChild(doneBtn);\r\n\t\tcontainer.appendChild(doneArea);\r\n\t}\r\n\r\n\tdestructor(){\r\n\t\tthis.onStateChangeHandlers = [];\r\n\t\tif(this.element){\r\n\t\t\tthis.element.innerHTML = '';\r\n\t\t\tthis.element.remove();\r\n\t\t}\r\n\r\n\t\tthis._domEvents.detachAll();\r\n\t\tthis.callEvent(\"onDestroy\", []);\r\n\t\tthis.detachAllEvents();\r\n\r\n\t\tthis.scheduler = null;\r\n\t}\r\n}","// import \"./css/dhtmlxscheduler_terrace\";\r\n// import \"./css/dhtmlxscheduler_material\";\r\n// import \"./css/dhtmlxscheduler_material_nofont\";\r\n// import \"./css/dhtmlxscheduler_flat\";\r\n// import \"./css/dhtmlxscheduler_contrast_black\";\r\n// import \"./css/dhtmlxscheduler_contrast_white\";\r\n\r\nimport addPlugins from \"./plugins\";\r\nimport stateProvider from \"./core/state\";\r\nimport assert from \"./core/common/assert\";\r\nimport common_errors from \"./core/common_errors\";\r\nimport connector from \"./core/connector\";\r\nimport schedulerCore from \"./core/scheduler\";\r\nimport common from \"./core/common\";\r\nimport wai_aria from \"./core/wai_aria\";\r\nimport utils from \"./core/utils/utils\";\r\nimport dom_helpers from \"./core/utils/dom_helpers\";\r\nimport env from \"./utils/env\";\r\nimport destructor from \"./core/destructor\";\r\nimport ajax from \"./core/utils/ajax\";\r\nimport base from \"./core/base\";\r\nimport config from \"./core/config\";\r\nimport event from \"./core/event\";\r\nimport event_highlight from \"./core/event_highlight\";\r\nimport load from \"./core/load\";\r\nimport lightbox from \"./core/lightbox\";\r\nimport touch from \"./core/touch\";\r\nimport dhtmlx_suite_hooks from \"./core/dhtmlx/dhtmlx_suite_hooks\";\r\nimport skins from \"./core/skins\";\r\nimport jquery from \"./core/jquery\";\r\nimport delay_render from \"./core/delay_render\";\r\nimport dataProcessorExtend from \"./core/dataprocessor/dataprocessor\";\r\nimport message from \"./core/message\";\r\nimport i18nFactory from \"./locale\";\r\n\r\nimport voidFirst from \"./publish_helpers/void_script_first\";\r\nimport voidSecond from \"./publish_helpers/void_script_second\";\r\nimport voidThird from \"./publish_helpers/void_script_third\";\r\n\r\n//import datepickerHeader from \"./core/clickable_header\";\r\n\r\nimport { DatePicker } from \"./core/datepicker\";\r\n\r\nexport default function(extensionManager) {\r\n\r\n\tconst scheduler = { version: VERSION };\r\n\t\r\n\tscheduler.$stateProvider = stateProvider();\r\n\r\n\tscheduler.getState = scheduler.$stateProvider.getState;\r\n\tcommon_errors(scheduler);\r\n\tcommon(scheduler);\r\n\tschedulerCore(scheduler);\r\n\twai_aria(scheduler);\r\n\t//utils(scheduler);\r\n\r\n\tscheduler.utils = utils;\r\n\tscheduler.$domHelpers = dom_helpers;\r\n\tscheduler.utils.dom = dom_helpers;\r\n\tscheduler.uid = utils.uid;\r\n\tscheduler.mixin = utils.mixin;\r\n\tscheduler.defined = utils.defined;\r\n\tscheduler.assert = assert(scheduler);\r\n\tscheduler.copy = utils.copy;\r\n\r\n\tscheduler._createDatePicker = function(container, config){\r\n\t\treturn new DatePicker(scheduler, container, config);\r\n\t};\r\n\r\n\t//datepickerHeader(scheduler);\r\n\r\n\r\n\t//old api compatibility\r\n\tscheduler._getFocusableNodes = dom_helpers.getFocusableNodes;\r\n\tscheduler._getClassName = dom_helpers.getClassName;\r\n\tscheduler._locate_css = dom_helpers.locateCss;\r\n\r\n\tconst messageApi = message(scheduler);\r\n\tscheduler.utils.mixin(scheduler, messageApi);\r\n\r\n\tscheduler.env = scheduler.$env = env;\r\n\tscheduler.Promise = window.Promise;\r\n\tdestructor(scheduler);\r\n\tajax(scheduler);\r\n\tvoidFirst(scheduler);\r\n\tbase(scheduler);\r\n\tconfig(scheduler);\r\n\tevent(scheduler);\r\n\tevent_highlight(scheduler);\r\n\tload(scheduler);\r\n\tlightbox(scheduler);\r\n\ttouch(scheduler);\r\n\tdhtmlx_suite_hooks(scheduler);\r\n\tvoidSecond(scheduler);\r\n\tskins(scheduler);\r\n\tjquery(scheduler);\r\n\tdelay_render(scheduler);\r\n\tdataProcessorExtend(scheduler);\r\n\tvoidThird(scheduler);\r\n\tconnector(scheduler);\r\n\tconst i18n = i18nFactory();\r\n\tscheduler.i18n = {\r\n\t\taddLocale: i18n.addLocale,\r\n\t\tsetLocale: function(locale){\r\n\t\t\tif(typeof locale === \"string\"){\r\n\t\t\t\tvar localeObject = i18n.getLocale(locale);\r\n\t\t\t\tif(!localeObject){\r\n\t\t\t\t\tlocaleObject = i18n.getLocale(\"en\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.locale = localeObject;\r\n\t\t\t}else if(locale){\r\n\t\t\t\tif(!scheduler.locale){\r\n\t\t\t\t\tscheduler.locale = locale;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfor(var i in locale){\r\n\t\t\t\t\t\tif(locale[i] && typeof locale[i] === \"object\"){\r\n\t\t\t\t\t\t\tif(!scheduler.locale[i]){\r\n\t\t\t\t\t\t\t\tscheduler.locale[i] = {};\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tscheduler.mixin(scheduler.locale[i], locale[i], true);\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.locale[i] = locale[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar labels = scheduler.locale.labels;\r\n\t\t\tlabels.dhx_save_btn \t= labels.icon_save;\r\n\t\t\tlabels.dhx_cancel_btn \t= labels.icon_cancel;\r\n\t\t\tlabels.dhx_delete_btn \t= labels.icon_delete;\r\n\r\n\t\t\tif(scheduler.$container){\r\n\t\t\t\tscheduler.get_elements();\r\n\t\t\t}\r\n\t\t\t\r\n\t\t},\r\n\t\tgetLocale: i18n.getLocale\r\n\t};\r\n\tscheduler.i18n.setLocale(\"en\");\r\n\taddPlugins(scheduler);\r\n\tscheduler.ext = {};\r\n\r\n\tconst activePlugins = {};\r\n\tscheduler.plugins = function(config){\r\n\t\tconst extensionList = getExtensionList(config, {\r\n\t\t\t\ttreetimeline: [\"timeline\"],\r\n\t\t\t\tdaytimeline: [\"timeline\"],\r\n\t\t\t\touterdrag: [\"legacy\"]\r\n\t\t\t}, {\r\n\t\t\t\tlegacy: 1,\r\n\t\t\t\tlimit: 1,\r\n\t\t\t\ttimeline: 2,\r\n\t\t\t\tdaytimeline: 3,\r\n\t\t\t\ttreetimeline: 3,\r\n\t\t\t\touterdrag:6\r\n\t\t\t});\r\n\r\n\t\textensionList.forEach(function(name){\r\n\t\t\tif(!activePlugins[name]){\r\n\t\t\t\tconst plugin = extensionManager.getExtension(name);\r\n\t\t\t\tif(plugin){\r\n\t\t\t\t\tplugin(scheduler);\r\n\t\t\t\t\tactivePlugins[name] = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthrow new Error(\"unknown plugin \" + name);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\tfunction getExtensionList(config, dependencies, priorities){\r\n\t\tconst result = [];\r\n\r\n\t\tfor(const i in config){\r\n\t\t\tif(config[i]){\r\n\t\t\t\tconst extension = i.toLowerCase();\r\n\t\t\t\tif(dependencies[extension]){\r\n\t\t\t\t\tdependencies[extension].forEach(function(dep){\r\n\t\t\t\t\t\tconst dependencyName = dep.toLowerCase();\r\n\t\t\t\t\t\tif(!config[dependencyName]){\r\n\t\t\t\t\t\t\tresult.push(dependencyName);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tresult.push(extension);\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\tresult.sort(function(a, b){\r\n\t\t\tconst orderA = priorities[a] || 0;\r\n\t\t\tconst orderB = priorities[b] || 0;\r\n\t\t\tif(orderA > orderB){\r\n\t\t\t\treturn 1;\r\n\t\t\t}else if(orderA < orderB){\r\n\t\t\t\treturn -1;\r\n\t\t\t}else{\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\treturn scheduler;\r\n\r\n}","export default class ExtensionsManager{\r\n\tconstructor(config){\r\n\t\tthis._extensions = {};\r\n\t\tfor(const i in config){\r\n\t\t\tthis._extensions[i] = config[i];\r\n\t\t}\r\n\t}\r\n\r\n\taddExtension(name, ext) {\r\n\t\tthis._extensions[name] = ext;\r\n\t}\r\n\r\n\tgetExtension(name) {\r\n\t\treturn this._extensions[name];\r\n\t}\r\n}","\r\n\r\nimport dhtmlxHook from \"./dhtmlx_hook\";\r\nimport \"./css/theme.less\";\r\ndhtmlxHook();\r\n\r\nimport global from \"./global\";\r\n\r\nimport factoryMethod from \"./scheduler_factory_method\";\r\nimport ExtensionsManager from \"./ext/extension_manager\";\r\n\r\nclass SchedulerFactory {\r\n\r\n\tconstructor (extensions) {\r\n\t\tthis._seed = 0;\r\n\t\tthis._schedulerPlugins = [];\r\n\t\tthis._bundledExtensions = extensions;\r\n\t\tthis._extensionsManager = new ExtensionsManager(extensions);\r\n\t}\r\n\r\n\tplugin(code) {\r\n\t\tthis._schedulerPlugins.push(code);\r\n\r\n\t\tif(global.scheduler){\r\n\t\t\tcode(global.scheduler);\r\n\t\t}\r\n\t}\r\n\t\r\n\tgetSchedulerInstance(initConfig) {\r\n\t\tvar scheduler = factoryMethod(this._extensionsManager);\r\n\r\n\t\tfor (var i = 0; i < this._schedulerPlugins.length; i++) {\r\n\t\t\tthis._schedulerPlugins[i](scheduler);\r\n\t\t}\r\n\t\tscheduler._internal_id = this._seed++;\r\n\t\r\n\t\tif (this.$syncFactory){\r\n\t\t\tthis.$syncFactory(scheduler);\r\n\t\t}\r\n\r\n\t\tif(initConfig){\r\n\t\t\tthis._initFromConfig(scheduler, initConfig);\r\n\t\t}\r\n\r\n\t\treturn scheduler;\r\n\t}\r\n\r\n\t_initFromConfig(scheduler, initConfig){\r\n\t\tif(initConfig.plugins){\r\n\t\t\tscheduler.plugins(initConfig.plugins);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.config){\r\n\t\t\tscheduler.mixin(scheduler.config, initConfig.config, true);\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.templates){\r\n\t\t\tscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\t\t\t\tscheduler.mixin(scheduler.templates, initConfig.templates, true);\r\n\t\t\t}, {once: true});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.events){\r\n\t\t\tfor(const event in initConfig.events){\r\n\t\t\t\tscheduler.attachEvent(event, initConfig.events[event]);\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.locale){\r\n\t\t\tscheduler.i18n.setLocale(initConfig.locale);\r\n\t\t}\r\n\t\r\n\t\tif(Array.isArray(initConfig.calendars)){\r\n\t\t\tinitConfig.calendars.forEach(function(calendar){\r\n\t\t\t\tscheduler.addCalendar(calendar);\r\n\t\t\t});\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.container){\r\n\t\t\tscheduler.init(initConfig.container);\r\n\t\t} else {\r\n\t\t\tscheduler.init();\r\n\t\t}\r\n\t\r\n\t\tif(initConfig.data){\r\n\t\t\tif(typeof initConfig.data === \"string\"){\r\n\t\t\t\tscheduler.load(initConfig.data);\r\n\t\t\t}else{\r\n\t\t\t\tscheduler.parse(initConfig.data);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\r\n}\r\n\r\nexport default SchedulerFactory;","export default function(scheduler){\r\n\r\nscheduler.config.active_link_view = \"day\";\r\nscheduler._active_link_click = function(e){\r\n\tvar start = e.target;\r\n\tvar to = start.getAttribute(\"data-link-date\");\r\n\tvar s_d = scheduler.date.str_to_date(scheduler.config.api_date, false, true);\r\n\tif (to) {\r\n\t\tscheduler.setCurrentView(s_d(to), scheduler.config.active_link_view);\r\n\t\tif (e && e.preventDefault)\r\n\t\t\te.preventDefault();\r\n\t\treturn false;\r\n\t}\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar do_wrapper = function(key, fullname){\r\n\t\tfullname = fullname || (key+\"_scale_date\");\r\n\r\n\t\tif(!scheduler.templates['_active_links_old_'+ fullname]){\r\n\t\t\tscheduler.templates['_active_links_old_'+ fullname] = scheduler.templates[fullname];\r\n\t\t}\r\n\t\tvar week_x = scheduler.templates['_active_links_old_'+ fullname];\r\n\t\tvar d_s = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\t\tscheduler.templates[fullname] = function(date) {\r\n\t\t\treturn \"\" + week_x(date) + \"\";\r\n\t\t};\r\n\t};\r\n\r\n\tdo_wrapper(\"week\");\r\n\tdo_wrapper(\"\", \"month_day\");\r\n\tif (this.matrix){\r\n\t\tfor (var key in this.matrix)\r\n\t\t\tdo_wrapper(key);\r\n\t}\r\n\r\n\tthis._detachDomEvent(this._obj, \"click\", scheduler._active_link_click);\r\n\tscheduler.event(this._obj, \"click\", scheduler._active_link_click);\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.date.add_agenda_legacy = function(date){\r\n\treturn scheduler.date.add(date, 1, \"year\");\r\n};\r\n\r\nscheduler.templates.agenda_legacy_time = function(start,end,ev){\r\n\tif (ev._timed)\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev)+\" \"+this.event_date(start);\r\n\telse\r\n\t\treturn scheduler.templates.day_date(start)+\" – \"+scheduler.templates.day_date(end);\r\n};\r\nscheduler.templates.agenda_legacy_text = function(start,end,event){\r\n\treturn event.text;\r\n};\r\nscheduler.templates.agenda_legacy_date = function(){ return \"\"; };\r\n\r\nscheduler.date.agenda_legacy_start=function(){ return scheduler.date.date_part(scheduler._currentDate()); };\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\tif (this._mode == \"agenda_legacy\") {\r\n\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\tthis.addEventNow();\r\n\t\t} else {\r\n\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data=function(evs){\r\n\t\tif (this._mode == \"agenda_legacy\")\r\n\t\t\tfill_agenda_tab();\r\n\t\telse\r\n\t\t\treturn old.apply(this,arguments);\r\n\t};\r\n\r\n\tvar old_render_view_data = scheduler.render_view_data;\r\n\tscheduler.render_view_data = function(){\r\n\t\tif(this._mode == \"agenda_legacy\") {\r\n\t\t\tscheduler._agendaScrollTop = scheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop;\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = 0;\r\n\t\t}\r\n\t\treturn old_render_view_data.apply(this,arguments);\r\n\t};\r\n\r\n\r\n\r\n\tfunction set_full_view(mode){\r\n\t\tif (mode){\r\n\t\t\tvar l = scheduler.locale.labels;\r\n\r\n\t\t\tvar rowAttr = scheduler._waiAria.agendaHeadAttrString();\r\n\t\t\tvar dateHeader = scheduler._waiAria.agendaHeadDateString(l.date);\r\n\t\t\tvar descriptionHeader = scheduler._waiAria.agendaHeadDescriptionString(l.description);\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML=\"
\" +\r\n\t\t\t\t\"
\"+l.date+\"
\" +\r\n\t\t\t\t\"\"+l.description+\"\" +\r\n\t\t\t\t\"
\";\r\n\t\t\tscheduler._table_view=true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fill_agenda_tab(){\r\n\t\t//select events for which data need to be printed\r\n\r\n\t\tvar events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\tvar tableAttr = scheduler._waiAria.agendaDataAttrString();\r\n\t\tvar agendaEventAttrString;\r\n\t\t//generate html for the view\r\n\t\tvar html=\"
\";\r\n\t\tfor (var i=0; i
\"+\r\n\t\t\t\t\t(scheduler.config.rtl ? scheduler.templates.agenda_time(ev.end_date,ev.start_date, ev):scheduler.templates.agenda_time(ev.start_date, ev.end_date,ev))+\r\n\t\t\t\t\t\"
\";\r\n\t\t\thtml+=`
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml+=\"\"+scheduler.templates.agenda_text(ev.start_date, ev.end_date, ev)+\"
\";\r\n\t\t}\r\n\t\thtml+=\"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].childNodes[0].scrollTop = scheduler._agendaScrollTop||0;\r\n\r\n\t\t// setting up dhx_v_border size\r\n\t\tvar agenda_area = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\tvar v_border = agenda_area.childNodes[agenda_area.childNodes.length-1];\r\n\t\tv_border.style.height = (agenda_area.offsetHeight < scheduler._els[\"dhx_cal_data\"][0].offsetHeight) ? \"100%\" : (agenda_area.offsetHeight+\"px\");\r\n\r\n\t\tvar t=scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tvar dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates.agenda_date(scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered=[];\r\n\t\tfor (var i=0; i < t.length-1; i++)\r\n\t\t\tscheduler._rendered[i]=t[i];\r\n\r\n\t}\r\n\r\n\tscheduler.agenda_legacy_view=function(mode){\r\n\t\tscheduler._min_date = scheduler.config.agenda_start||scheduler.date.agenda_legacy_start(scheduler._date);\r\n\t\tscheduler._max_date = scheduler.config.agenda_end||scheduler.date.add_agenda_legacy(scheduler._min_date, 1);\r\n\r\n\t\tset_full_view(mode);\r\n\t\tif (mode){\r\n\t\t\tscheduler._cols = null;\r\n\t\t\tscheduler._colsS = null;\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\t//agenda tab activated\r\n\t\t\tfill_agenda_tab();\r\n\t\t} else {\r\n\t\t\tscheduler._table_view = false;\r\n\t\t\t//agenda tab de-activated\r\n\t\t}\r\n\t};\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.date.add_agenda = function(date, inc){\r\n\t\treturn scheduler.date.add(date, 1*inc, \"month\");\r\n\t};\r\n\t\r\n\tscheduler.templates.agenda_time = function(start,end,ev){\r\n\t\tif (ev._timed){\r\n\t\t\treturn `${this.event_date(start)} - ${this.event_date(end)}`;\r\n\t\t}else{\r\n\t\t\treturn scheduler.locale.labels.full_day;\r\n\t\t}\r\n\t};\r\n\tscheduler.templates.agenda_text = function(start,end,ev){\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst dayDateToStr = scheduler.date.date_to_str(\"%F %j\");\r\n\tconst dayDowToStr = scheduler.date.date_to_str(\"%l\");\r\n\r\n\tscheduler.templates.agenda_day = function(date){ \r\n\t\treturn `
${dayDateToStr(date)}
\r\n\t\t
${dayDowToStr(date)}
`;\r\n\t};\r\n\tscheduler.templates.agenda_date = function(start, end){ \r\n\t\treturn scheduler.templates.month_date(scheduler.getState().date); \r\n\t};\r\n\t\r\n\tscheduler.date.agenda_start=function(date){\r\n\t\treturn scheduler.date.month_start(new Date(date));\r\n\t};\r\n\r\n\tlet scrollTop = 0;\r\n\t\r\n\tscheduler.attachEvent(\"onTemplatesReady\",function() {\r\n\t\tvar old_dblclick_dhx_cal_data = scheduler.dblclick_dhx_cal_data;\r\n\t\tscheduler.dblclick_dhx_cal_data = function() {\r\n\t\t\tif (this._mode == \"agenda\") {\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create)\r\n\t\t\t\t\tthis.addEventNow();\r\n\t\t\t} else {\r\n\t\t\t\tif (old_dblclick_dhx_cal_data)\r\n\t\t\t\t\treturn old_dblclick_dhx_cal_data.apply(this, arguments);\r\n\t\t\t}\r\n\t\t};\r\n\t\r\n\t\r\n\t\tvar old = scheduler.render_data;\r\n\t\tscheduler.render_data=function(evs){\r\n\t\t\tif (this._mode == \"agenda\")\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\telse\r\n\t\t\t\treturn old.apply(this,arguments);\r\n\t\t};\r\n\t\r\n\t\tvar old_render_view_data = scheduler.render_view_data;\r\n\t\tscheduler.render_view_data = function(){\r\n\t\t\tif(this._mode == \"agenda\") {\r\n\t\t\t\tscrollTop = scheduler._els[\"dhx_cal_data\"][0].scrollTop;\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0;\r\n\t\t\t}\r\n\t\t\treturn old_render_view_data.apply(this,arguments);\r\n\t\t};\r\n\r\n\t\tfunction fill_agenda_tab(){\r\n\t\t\tconst events = scheduler.get_visible_events();\r\n\t\t\tevents.sort(function(a,b){ return a.start_date>b.start_date?1:-1;});\r\n\r\n\t\t\tconst eventsInDays = {};\r\n\t\t\tlet currDate = scheduler.getState().min_date;\r\n\t\t\tconst maxDate = scheduler.getState().max_date;\r\n\t\t\twhile(currDate.valueOf() < maxDate.valueOf()){\r\n\t\t\t\teventsInDays[currDate.valueOf()] = [];\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\r\n\t\t\tlet anyEvents = false;\r\n\r\n\t\t\tevents.forEach((ev) => {\r\n\t\t\t\tlet eventStart = scheduler.date.day_start(new Date(ev.start_date)); \r\n\t\t\t\twhile (eventStart.valueOf() < ev.end_date.valueOf()) {\r\n\t\t\t\t\tif (eventsInDays[eventStart.valueOf()]) {\r\n\t\t\t\t\t\teventsInDays[eventStart.valueOf()].push(ev);\r\n\t\t\t\t\t\tanyEvents = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventStart = scheduler.date.day_start(scheduler.date.add(eventStart, 1, \"day\"));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tif(!anyEvents){\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = renderEmptyView();\r\n\t\t\t}else{\r\n\t\t\t\tlet html = \"\";\r\n\t\t\t\tfor(let day in eventsInDays){\r\n\t\t\t\t\thtml += renderDay(new Date(day*1), eventsInDays[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = scrollTop;\r\n\t\t\t\r\n\t\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].querySelectorAll(\".dhx_cal_agenda_event_line\");\r\n\t\t\tscheduler._rendered = [];\r\n\t\t\tfor (var i = 0; i < t.length - 1; i++) {\r\n\t\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\r\n\r\n\t\tfunction renderEmptyView(){\r\n\t\t\treturn `
${scheduler.locale.labels.agenda_tab}
`;\r\n\t\t}\r\n\r\n\t\tfunction renderDay(day, events) {\r\n\t\t\tif(!events.length){\r\n\t\t\t\treturn \"\";\r\n\t\t\t}\r\n\t\t\tlet html = `\r\n
\r\n\t
${scheduler.templates.agenda_day(day)}
\r\n\t
\r\n`;\r\n\r\n\t\t\tevents.forEach((calendarEvent) => {\r\n\t\t\t\thtml += renderOneEvent(day, calendarEvent);\r\n\t\t\t});\r\n\r\n\t\t\thtml += `
`;\r\n\t\t\treturn html;\r\n\t\t}\r\n\r\n\t\tfunction renderOneEvent(day, calendarEvent){\r\n\t\t\tconst dates = scheduler.templates.agenda_time(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst selectedId = scheduler.getState().select_id;\r\n\t\t\tconst cls = scheduler.templates.event_class(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\t\t\tconst description = scheduler.templates.agenda_text(calendarEvent.start_date, calendarEvent.end_date, calendarEvent);\r\n\r\n\t\t\tlet style = \"\";\r\n\t\t\tif(calendarEvent.color || calendarEvent.textColor){\r\n\t\t\t\tconst bg = (calendarEvent.color ? (\"--dhx-scheduler-event-background:\" + calendarEvent.color + \";\") : \"\");\r\n\t\t\t\tconst color = (calendarEvent.textColor ? (\"--dhx-scheduler-event-color:\" + calendarEvent.textColor + \";\") : \"\");\r\n\t\t\t\tstyle = ` style=\"${bg}${color}\" `;\r\n\t\t\t}\r\n\r\n\t\t\treturn `
\r\n\t
\r\n\t
${dates}
\r\n\t
${description}
\r\n
`;\r\n\t\t}\r\n\t\r\n\t\tscheduler.agenda_view=function(mode){\r\n\t\t\tif (mode){\r\n\t\t\t\tscheduler._min_date = scheduler.config.agenda_start || scheduler.date.agenda_start(scheduler._date);\r\n\t\t\t\tscheduler._max_date = scheduler.config.agenda_end || scheduler.date.add_agenda(scheduler._min_date, 1);\r\n\t\t\t\tscheduler._cols = null;\r\n\t\t\t\tscheduler._colsS = null;\r\n\t\t\t\tscheduler._table_view = true;\r\n\r\n\t\t\t\tconst dateHeader = scheduler._getNavDateElement();\r\n\t\t\t\tdateHeader.innerHTML = scheduler.templates.agenda_date(scheduler._date);\r\n\t\t\t\t//agenda tab activated\r\n\t\t\t\tfill_agenda_tab();\r\n\t\t\t} else {\r\n\t\t\t\tscheduler._table_view = false;\r\n\t\t\t\t//agenda tab de-activated\r\n\t\t\t}\r\n\t\t};\r\n\t});\r\n\r\n\t// scheduler.attachEvent(\"onEventSelected\", function(id){\r\n\t// \tconst oldSelected = scheduler.$container.querySelectorAll(\".dhx_cal_agenda_event_line_selected\");\r\n\t// \toldSelected.forEach((el) => {\r\n\t// \t\tel.classList.remove(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t});\r\n\r\n\t// \tconst selected = scheduler.$container.querySelector(`[${scheduler.config.event_attribute}=\"${id}\"]`);\r\n\t// \tif(selected){\r\n\t// \t\tselected.classList.add(\"dhx_cal_agenda_event_line_selected\");\r\n\t// \t}\r\n\t// });\r\n\t\r\n\t\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.all_timed = \"short\";\r\n\tscheduler.config.all_timed_month = false;\r\n\r\n\tvar is_event_short = function (ev) {\r\n\t\tif(!((ev.end_date - ev.start_date)/(1000*60*60) >= 24)){\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// short event shouldn't disappear to multiday area during dnd-resize\r\n\t\tif(scheduler._drag_mode == \"resize\" && scheduler._drag_id == ev.id){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn \tfalse;\r\n\t};\r\n\r\n\t// copy of usual events and recurring instances;\r\n\t// regular copy causes problems with recurrings which have series event as a prototype\r\n\tscheduler._safe_copy = function(event){\r\n\t\tvar proto = null,\r\n\t\t\tcopy = scheduler._copy_event(event);\r\n\t\tif(event.event_pid){\r\n\t\t\tproto = scheduler.getEvent(event.event_pid);\r\n\t\t}\r\n\r\n\t\tif (proto && proto.isPrototypeOf(event)) {\r\n\t\t\tdelete copy.event_length;\r\n\t\t\tdelete copy.event_pid;\r\n\t\t\tdelete copy.rec_pattern;\r\n\t\t\tdelete copy.rec_type;\r\n\t\t}\r\n\r\n\t\treturn copy;\r\n\t};\r\n\r\n\tvar old_prerender_events_line = scheduler._pre_render_events_line;\r\n\tvar old_prerender_events_table = scheduler._pre_render_events_table;\r\n\r\n\tvar prerender_events = function (evs, hold) {\r\n\t\tif (!this._table_view) {\r\n\t\t\treturn old_prerender_events_line.call(this, evs, hold);\r\n\t\t}\r\n\r\n\t\treturn old_prerender_events_table.call(this, evs, hold);\r\n\t};\r\n\r\n\tscheduler._pre_render_events_line = scheduler._pre_render_events_table = function(evs, hold){\r\n\t\tif (!this.config.all_timed ||\r\n\t\t\t(this._table_view && this._mode != \"month\") ||\r\n\t\t\t(this._mode == \"month\" && !this.config.all_timed_month))\r\n\t\t\treturn prerender_events.call(this, evs, hold);\r\n\r\n\t\tfor (var i=0; i < evs.length; i++) {\r\n\t\t\tvar ev=evs[i];\r\n\r\n\t\t\tif (ev._timed)\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tif (this.config.all_timed == \"short\") {\r\n\t\t\t\tif (!is_event_short(ev)) {\r\n\t\t\t\t\tif (this._mode != \"month\") {\r\n\t\t\t\t\t\tevs.splice(i--, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar ce = this._safe_copy(ev); // current event (event for one specific day) is copy of original with modified dates\r\n\t\t\tif(!ev._virtual){\r\n\t\t\t\tce._first_chunk = true;\r\n\t\t\t}else{\r\n\t\t\t\tce._first_chunk = false;\r\n\t\t\t}\r\n\t\t\tce._drag_resize = false;\r\n\t\t\tce._virtual = true;\r\n\t\t\tce.start_date = new Date(ce.start_date); // as lame copy doesn't copy date objects\r\n\r\n\t\t\tif (!isOvernightEvent(ev)) {\r\n\t\t\t\tce.end_date = new Date(ev.end_date);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tce.end_date = getNextDay(ce.start_date);\r\n\t\t\t\tif (this.config.last_hour != 24) { // if specific last_hour was set (e.g. 20)\r\n\t\t\t\t\tce.end_date = setDateTime(ce.start_date, this.config.last_hour);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar event_changed = false;\r\n\t\t\tif (ce.start_date < this._max_date && ce.end_date > this._min_date && ce.start_date < ce.end_date) {\r\n\t\t\t\tevs[i] = ce; // adding another event in collection\r\n\t\t\t\tevent_changed = true;\r\n\t\t\t}\r\n\t\t//\tif (ce.start_date > ce.end_date) {\r\n\t\t//\t\tevs.splice(i--,1);\r\n\t\t//\t}\r\n\r\n\t\t\tvar re = this._safe_copy(ev); // remaining event, copy of original with modified start_date (making range more narrow)\r\n\t\t\tre._virtual = true;\r\n\t\t\tre.end_date = new Date(re.end_date);\r\n\t\t\tif (re.start_date < this._min_date)\r\n\t\t\t\tre.start_date = setDateTime(this._min_date, this.config.first_hour);// as we are starting only with whole hours\r\n\t\t\telse\r\n\t\t\t\tre.start_date = setDateTime(getNextDay(ev.start_date), this.config.first_hour);\r\n\r\n\t\t\tif (re.start_date < this._max_date && re.start_date < re.end_date) {\r\n\t\t\t\tif (event_changed){\r\n\t\t\t\t\tevs.splice(i+1,0,re);//insert part\r\n\t\t\t\t}else {\r\n\t\t\t\t\tevs[i--] = re;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tre._last_chunk = false;\r\n\t\t\t}else{\r\n\t\t\t\tce._last_chunk = true;\r\n\t\t\t\tce._drag_resize = true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t// in case of all_timed pre_render is not applied to the original event\r\n\t\t// so we need to force redraw in case of dnd\r\n\t\tvar redraw = (this._drag_mode == 'move')?false:hold;\r\n\t\treturn prerender_events.call(this, evs, redraw);\r\n\r\n\r\n\t\tfunction isOvernightEvent(ev){\r\n\t\t\tvar next_day = getNextDay(ev.start_date);\r\n\t\t\treturn (+ev.end_date > +next_day);\r\n\t\t}\r\n\t\tfunction getNextDay(date){\r\n\t\t\tvar next_day = scheduler.date.add(date, 1, \"day\");\r\n\t\t\tnext_day = scheduler.date.date_part(next_day);\r\n\t\t\treturn next_day;\r\n\t\t}\r\n\t\tfunction setDateTime(date, hours){\r\n\t\t\tvar val = scheduler.date.date_part(new Date(date));\r\n\t\t\tval.setHours(hours);\r\n\t\t\treturn val;\r\n\t\t}\r\n\t};\r\n\tvar old_get_visible_events = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function(only_timed){\r\n\t\tif (!(this.config.all_timed && this.config.multi_day))\r\n\t\t\treturn old_get_visible_events.call(this, only_timed);\r\n\t\treturn old_get_visible_events.call(this, false); // only timed = false\r\n\t};\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (old_mode, old_date, mode, date) {\r\n\t\tscheduler._allow_dnd = (mode == \"day\" || mode == \"week\" || scheduler.getView(mode));\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler._is_main_area_event = function(ev){\r\n\t\treturn !!(ev._timed || this.config.all_timed === true || (this.config.all_timed == \"short\" && is_event_short(ev)) );\r\n\t};\r\n\r\n\tvar oldUpdate = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\t// full redraw(update_render=true) messes events order while dnd.\r\n\t\t// individual redraw(update_render=false) of multiday event, which happens on select/unselect, expands event to full width of the cell and can be fixes only with full redraw.\r\n\t\t// so for now full redraw is always enabled for not-dnd updates\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tvar fullRedrawNeeded;\r\n\t\tvar initial;\r\n\t\tif(ev) {\r\n\t\t\tfullRedrawNeeded = (scheduler.config.all_timed && !(scheduler.isOneDayEvent(scheduler._events[id]) || scheduler.getState().drag_id));\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tinitial = scheduler.config.update_render;\r\n\t\t\t\tscheduler.config.update_render = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\toldUpdate.apply(scheduler, arguments);\r\n\r\n\t\tif(ev) {\r\n\t\t\tif (fullRedrawNeeded) {\r\n\t\t\t\tscheduler.config.update_render = initial;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nvar temp_section;\r\nvar before;\r\n\r\nscheduler.config.collision_limit = 1;\r\n\r\nfunction _setTempSection(event_id) { // for custom views (matrix, timeline, units)\r\n\tvar checked_mode = scheduler._get_section_view();\r\n\tif(checked_mode && event_id){\r\n\t\ttemp_section = scheduler.getEvent(event_id)[scheduler._get_section_property()];\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tbefore = [ev.start_date, ev.end_date];\r\n\t_setTempSection(id);\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\tif (!id || !scheduler.getEvent(id)) return true;\r\n\tvar ev = scheduler.getEvent(id);\r\n\tif (!scheduler.checkCollision(ev)){\r\n\t\tif (!before) return false;\r\n\t\tev.start_date = before[0];\r\n\t\tev.end_date = before[1];\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onBeforeEventChanged\",function(ev,e,is_new){\r\n\treturn scheduler.checkCollision(ev);\r\n});\r\nscheduler.attachEvent(\"onEventAdded\",function(id,ev) {\r\n\tvar result = scheduler.checkCollision(ev);\r\n\tif (!result)\r\n\t\tscheduler.deleteEvent(id);\r\n});\r\nscheduler.attachEvent(\"onEventSave\",function(id, edited_ev, is_new){\r\n\tedited_ev = scheduler._lame_clone(edited_ev);\r\n\tedited_ev.id = id;\r\n\r\n\t//lightbox may not have 'time' section\r\n\tif(!(edited_ev.start_date && edited_ev.end_date)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tedited_ev.start_date = new Date(ev.start_date);\r\n\t\tedited_ev.end_date = new Date(ev.end_date);\r\n\t}\r\n\r\n\tif(edited_ev.rec_type){\r\n\t\tscheduler._roll_back_dates(edited_ev);\r\n\t}\r\n\treturn scheduler.checkCollision(edited_ev); // in case user creates event on one date but then edited it another\r\n});\r\n\r\nscheduler._check_sections_collision = function(first, second){\r\n\tvar map_to = scheduler._get_section_property();\r\n\tif (first[map_to] == second[map_to] && first.id != second.id)\r\n\t\treturn true;\r\n\treturn false;\r\n};\r\n\r\nscheduler.checkCollision = function(ev) {\r\n\tvar evs = [];\r\n\tvar collision_limit = scheduler.config.collision_limit;\r\n\r\n\tif (ev.rec_type) {\r\n\t\tvar evs_dates = scheduler.getRecDates(ev);\r\n\t\tfor(var k=0; k= collision_limit) {\r\n\r\n\t\t\tsingle = false;\r\n\t\t}\r\n\t}\r\n\telse {\r\n\t\tif ( evs.length >= collision_limit )\r\n\t\t\tsingle = false;\r\n\t}\r\n\tif (!single) {\r\n\t\tvar res = !scheduler.callEvent(\"onEventCollision\",[ev,evs]);\r\n\t\tif (!res) {\r\n\t\t\tev[map_to] = temp_section||ev[map_to]; // from _setTempSection for custom views\r\n\t\t}\r\n\t\treturn res;\r\n\t}\r\n\treturn single;\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\tscheduler.config.container_autoresize = true;\r\n\tscheduler.config.month_day_min_height = 90;\r\n\tscheduler.config.min_grid_size = 25;\r\n\tscheduler.config.min_map_size = 400;\r\n\r\n\tvar old_pre_render_event = scheduler._pre_render_events;\r\n\r\n\t//need for temporary disabling without modifying public config\r\n\tvar active = true;\r\n\tvar total_height = 0;\r\n\tvar multiday_height = 0;\r\n\r\n\tscheduler._pre_render_events = function(evs, hold) {\r\n\t\tif (!(scheduler.config.container_autoresize && active)) {\r\n\t\t\treturn old_pre_render_event.apply(this, arguments);\r\n\t\t}\r\n\r\n\t\tvar hb = this.xy.bar_height;\r\n\t\tvar h_old = this._colsS.heights;\r\n\t\tvar h = this._colsS.heights = [0, 0, 0, 0, 0, 0, 0];\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tif (!this._table_view)\r\n\t\t\tevs = this._pre_render_events_line(evs, hold); //ignore long events for now\r\n\t\telse\r\n\t\t\tevs = this._pre_render_events_table(evs, hold);\r\n\r\n\t\tif (this._table_view) {\r\n\t\t\tif (hold){\r\n\t\t\t\tthis._colsS.heights = h_old;\r\n\t\t\t} else {\r\n\t\t\t\tvar evl = data.firstChild;\r\n\t\t\t\tconst rows = evl.querySelectorAll(\".dhx_cal_month_row\");\r\n\t\t\t\tif (rows && rows.length) {\r\n\t\t\t\t\tfor (var i = 0; i < rows.length; i++) {\r\n\t\t\t\t\t\th[i]++;\r\n\r\n\t\t\t\t\t\tif ((h[i]) * hb > this._colsS.height - this.xy.month_head_height) { // 22 - height of cell's header\r\n\t\t\t\t\t\t\t//we have overflow, update heights\r\n\t\t\t\t\t\t\tvar cells = rows[i].querySelectorAll(\".dhx_cal_month_cell\");\r\n\r\n\t\t\t\t\t\t\tvar cHeight = this._colsS.height - this.xy.month_head_height;\r\n\t\t\t\t\t\t\tif(this.config.max_month_events*1 !== this.config.max_month_events || h[i] <= this.config.max_month_events){\r\n\t\t\t\t\t\t\t\tcHeight = h[i] * hb;\r\n\t\t\t\t\t\t\t}else if( (this.config.max_month_events + 1) * hb > this._colsS.height - this.xy.month_head_height){\r\n\t\t\t\t\t\t\t\tcHeight = (this.config.max_month_events + 1) * hb;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\trows[i].style.height = (cHeight + this.xy.month_head_height) + \"px\";\r\n\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < cells.length; j++) {\r\n\t\t\t\t\t\t\t\tcells[j].childNodes[1].style.height = cHeight + \"px\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\th[i] = (h[i - 1] || 0) + cells[0].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\th[i] = (h[i - 1] || 0) + rows[i].querySelectorAll(\".dhx_cal_month_cell\")[0].offsetHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\th.unshift(0);\r\n\t\t\t\t\tif (evl.parentNode.offsetHeight < evl.parentNode.scrollHeight && !evl._h_fix) {\r\n\t\t\t\t\t\t//we have v-scroll, decrease last day cell\r\n\r\n\t\t\t\t\t\t// NO CHECK SHOULD BE MADE ON VERTICAL SCROLL\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (!evs.length && this._els[\"dhx_multi_day\"][0].style.visibility == \"visible\")\r\n\t\t\t\t\t\th[0] = -1;\r\n\t\t\t\t\tif (evs.length || h[0] == -1) {\r\n\t\t\t\t\t\t//shift days to have space for multiday events\r\n\t\t\t\t\t\t//var childs = evl.parentNode.childNodes;\r\n\t\t\t\t\t\tvar dh = ((h[0] + 1) * hb + 1); // +1 so multiday events would have 2px from top and 2px from bottom by default\r\n\t\t\t\t\t\tif(multiday_height != dh + 1) {\r\n\t\t\t\t\t\t\tthis._obj.style.height = (total_height - multiday_height + dh - 1) + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdh += \"px\";\r\n\t\t\t\t\t\tconst navHeight = this._els[\"dhx_cal_navline\"][0].offsetHeight;\r\n\t\t\t\t\t\tconst headerHeight = this._els[\"dhx_cal_header\"][0].offsetHeight;\r\n\t\t\t\t\t\tdata.style.height = (this._obj.offsetHeight - navHeight - headerHeight - (this.xy.margin_top || 0)) + 'px';\r\n\t\t\t\t\t\tvar last = this._els[\"dhx_multi_day\"][0];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\t\t\t\t\t\tlast = this._els[\"dhx_multi_day\"][1];\r\n\t\t\t\t\t\tlast.style.height = dh;\r\n\t\t\t\t\t\tlast.style.visibility = (h[0] == -1 ? \"hidden\" : \"visible\");\r\n\t\t\t\t\t\tlast.style.display = (h[0] == -1 ? \"none\" : \"\");\r\n\r\n\t\t\t\t\t\tlast.className = h[0] ? \"dhx_multi_day_icon\" : \"dhx_multi_day_icon_small\";\r\n\t\t\t\t\t\tthis._dy_shift = (h[0] + 1) * hb;\r\n\t\t\t\t\t\th[0] = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn evs;\r\n\t};\r\n\r\n\tvar checked_divs = [\"dhx_cal_navline\", \"dhx_cal_header\", \"dhx_multi_day\", \"dhx_cal_data\"];\r\n\tvar updateContainterHeight = function(is_repaint) {\r\n\t\ttotal_height = 0;\r\n\t\tfor (var i = 0; i < checked_divs.length; i++) {\r\n\r\n\t\t\tvar className = checked_divs[i];\r\n\t\t\tvar checked_div = (scheduler._els[className]) ? scheduler._els[className][0] : null;\r\n\t\t\tvar height = 0;\r\n\t\t\tswitch (className) {\r\n\t\t\t\tcase \"dhx_cal_navline\":\r\n\t\t\t\tcase \"dhx_cal_header\":\r\n\t\t\t\t\theight = checked_div.offsetHeight;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_multi_day\":\r\n\t\t\t\t\theight = (checked_div) ? checked_div.offsetHeight - 1 : 0;\r\n\t\t\t\t\tmultiday_height = height;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"dhx_cal_data\":\r\n\t\t\t\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\t\t\t\tif(checked_div.childNodes[1] && mode != \"month\") {\r\n\t\t\t\t\t\tlet maxHeight = 0;\r\n\t\t\t\t\t\tfor(let i = 0; i < checked_div.childNodes.length; i++){\r\n\t\t\t\t\t\t\tif(checked_div.childNodes[i].offsetHeight > maxHeight){\r\n\t\t\t\t\t\t\t\tmaxHeight = checked_div.childNodes[i].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight = maxHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\theight = Math.max(checked_div.offsetHeight - 1, checked_div.scrollHeight);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"month\") {\r\n\t\t\t\t\t\tif (scheduler.config.month_day_min_height && !is_repaint) {\r\n\t\t\t\t\t\t\tvar rows_length = checked_div.querySelectorAll(\".dhx_cal_month_row\").length;\r\n\t\t\t\t\t\t\theight = rows_length * scheduler.config.month_day_min_height;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"year\"){\r\n\t\t\t\t\t\theight = 190 * scheduler.config.year_y;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"agenda\"){\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tif(checked_div.childNodes && checked_div.childNodes.length){\r\n\t\t\t\t\t\t\tfor(var j = 0; j < checked_div.childNodes.length; j++){\r\n\t\t\t\t\t\t\t\theight += checked_div.childNodes[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif(height + 2 < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (mode == \"week_agenda\"){\r\n\t\t\t\t\t\tvar min_height = scheduler.xy.week_agenda_scale_height + scheduler.config.min_grid_size,\r\n\t\t\t\t\t\t\tcur_height;\r\n\r\n\t\t\t\t\t\tvar column;\r\n\t\t\t\t\t\tfor(var k = 0; k < checked_div.childNodes.length; k++){\r\n\t\t\t\t\t\t\tcolumn = checked_div.childNodes[k];\r\n\t\t\t\t\t\t\tfor(var j = 0; j < column.childNodes.length; j++) {\r\n\t\t\t\t\t\t\t\tvar innerHeight = 0,\r\n\t\t\t\t\t\t\t\t\teventsContainer = column.childNodes[j].childNodes[1];\r\n\r\n\t\t\t\t\t\t\t\tfor(var g =0; g < eventsContainer.childNodes.length; g++){\r\n\t\t\t\t\t\t\t\t\tinnerHeight += eventsContainer.childNodes[g].offsetHeight;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tcur_height = innerHeight + scheduler.xy.week_agenda_scale_height;\r\n\t\t\t\t\t\t\t\tcur_height = (k == 1 && (j == 2 || j == 3)) ? cur_height * 2 : cur_height; // for last two cells;\r\n\r\n\t\t\t\t\t\t\t\tif (cur_height > min_height) {\r\n\t\t\t\t\t\t\t\t\tmin_height = cur_height;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\theight = min_height * 3;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(mode == \"map\") {\r\n\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\tvar evs = checked_div.querySelectorAll(\".dhx_map_line\");\r\n\r\n\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (height + 2 < scheduler.config.min_map_size) {\r\n\t\t\t\t\t\t\theight = scheduler.config.min_map_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(scheduler._gridView) {\r\n\t\t\t\t\t\theight = 0;\r\n\r\n\t\t\t\t\t\tif (checked_div.childNodes[1].childNodes[0].childNodes && checked_div.childNodes[1].childNodes[0].childNodes.length) {\r\n\t\t\t\t\t\t\tvar evs = checked_div.childNodes[1].childNodes[0].childNodes[0].childNodes;\r\n\r\n\t\t\t\t\t\t\tfor (var j = 0; j < evs.length; j++) {\r\n\t\t\t\t\t\t\t\theight += evs[j].offsetHeight;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\theight += 2;\r\n\r\n\t\t\t\t\t\t\tif(height < scheduler.config.min_grid_size){\r\n\t\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\theight = scheduler.config.min_grid_size;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\t\t\t\tif (is_repaint) {\r\n\t\t\t\t\t\t\theight += 0;\r\n\t\t\t\t\t\t\tchecked_div.style.height = height + \"px\";\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\theight = 0;\r\n\t\t\t\t\t\t\tvar cfg = scheduler.matrix[mode];\r\n\t\t\t\t\t\t\tvar rows = cfg.y_unit;\r\n\t\t\t\t\t\t\tfor(var r=0; r < rows.length; r++){\r\n\t\t\t\t\t\t\t\theight += cfg.getSectionHeight(rows[r].key);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// Check and add extra height to avoid events hiding by the horizontal scrollbar\r\n\t\t\t\t\t\t\tif(scheduler.$container.clientWidth != scheduler.$container.scrollWidth){\r\n\t\t\t\t\t\t\t\theight += getScrollSize();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\theight -= 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (mode == \"day\" || mode == \"week\" || (scheduler._props && scheduler._props[mode])) {\r\n\t\t\t\t\t\theight += 2;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\theight += 1;\r\n\t\t\ttotal_height += height;\r\n\t\t}\r\n\t\tscheduler._obj.style.height = (total_height) + \"px\";\r\n\r\n\t\tif (!is_repaint)\r\n\t\t\tscheduler.updateView();\r\n\t};\r\n\r\n\tfunction callUpdate(){\r\n\t\tactive = false;\r\n\t\tscheduler.callEvent(\"onAfterSchedulerResize\", []);\r\n\t\tactive = true;\r\n\t}\r\n\r\n\tvar conditionalUpdateContainerHeight = function() {\r\n\t\tif(!(scheduler.config.container_autoresize && active))\r\n\t\t\treturn true;\r\n\r\n\t\tvar mode = scheduler.getState().mode;\r\n\r\n\t\tif(!mode) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar asyncRepaint = window.requestAnimationFrame || window.setTimeout;\r\n\t\tvar scrollTop = document.documentElement.scrollTop;\r\n\r\n\t\tasyncRepaint(function() {\r\n\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tupdateContainterHeight();\r\n\t\t});\r\n\r\n\t\tif ( (scheduler.matrix && scheduler.matrix[mode]) || mode == \"month\") {\r\n\t\t\tasyncRepaint(function() {\r\n\t\t\t\tif(scheduler.$destroyed || !scheduler.$initialized){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tupdateContainterHeight(true);\r\n\t\t\t\tdocument.documentElement.scrollTop = scrollTop;\r\n\t\t\t\tcallUpdate();\r\n\t\t\t}, 1);\r\n\t\t}else{\r\n\t\t\tcallUpdate();\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function(){\r\n\t\tvar autosizeEnabled = scheduler.config.container_autoresize;\r\n\t\tif(!scheduler.xy.$original_scroll_width){\r\n\t\t\tscheduler.xy.$original_scroll_width = scheduler.xy.scroll_width;\r\n\t\t}\r\n\r\n\t\tscheduler.xy.scroll_width = autosizeEnabled ? 0 : scheduler.xy.$original_scroll_width;\r\n\r\n\t\tif(scheduler.matrix){\r\n\t\t\tfor(var i in scheduler.matrix){\r\n\t\t\t\tvar timeline = scheduler.matrix[i];\r\n\t\t\t\tif(!timeline.$original_section_autoheight){\r\n\t\t\t\t\ttimeline.$original_section_autoheight = timeline.section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t\tif(autosizeEnabled){\r\n\t\t\t\t\ttimeline.section_autoheight = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttimeline.section_autoheight = timeline.$original_section_autoheight;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onXLE\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventChanged\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventCreated\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventAdded\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onEventDeleted\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", conditionalUpdateContainerHeight);\r\n\tscheduler.attachEvent(\"onClearAll\", conditionalUpdateContainerHeight);\r\n\r\n\t//disable container autoresize when expanded\r\n\tscheduler.attachEvent(\"onBeforeExpand\", function(){\r\n\t\tactive = false;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeCollapse\", function(){\r\n\t\tactive = true;\r\n\t\treturn true;\r\n\t});\r\n\t// helper function\r\n\tfunction getScrollSize() {\r\n\t\tvar div = document.createElement(\"div\");\r\n\t\tdiv.style.cssText = \"visibility:hidden;position:absolute;left:-1000px;width:100px;padding:0px;margin:0px;height:110px;min-height:100px;overflow-y:scroll;\";\r\n\r\n\t\tdocument.body.appendChild(div);\r\n\t\tvar size = div.offsetWidth - div.clientWidth;\r\n\t\tdocument.body.removeChild(div);\r\n\t\treturn size;\r\n\t}\r\n\r\n\r\n}","export default function(scheduler){\r\n\tfunction setCookie(name,cookie_param,value) {\r\n\t\tvar str = name + \"=\" + value + (cookie_param?(\"; \"+cookie_param):\"\");\r\n\t\tdocument.cookie = str;\r\n\t}\r\n\tfunction getCookie(name) {\r\n\t\tvar search = name + \"=\";\r\n\t\tif (document.cookie.length > 0) {\r\n\t\t\tvar offset = document.cookie.indexOf(search);\r\n\t\t\tif (offset != -1) {\r\n\t\t\t\toffset += search.length;\r\n\t\t\t\tvar end = document.cookie.indexOf(\";\", offset);\r\n\t\t\t\tif (end == -1)\r\n\t\t\t\t\tend = document.cookie.length;\r\n\t\t\t\treturn document.cookie.substring(offset, end);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\tfunction getCookieName(scheduler) {\r\n\t\treturn (scheduler._obj.id || \"scheduler\") + \"_settings\";\r\n\t}\r\n\r\n\tvar first = true;\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(oldMode,oldDate,mode,date){\r\n\t\t// if Url plugin is enabled - explicit url values should have more priority than cookies\r\n\t\tif (first && scheduler._get_url_nav){\r\n\t\t\tvar urlNavigationPlugin = scheduler._get_url_nav();\r\n\t\t\tif(urlNavigationPlugin.date || urlNavigationPlugin.mode || urlNavigationPlugin.event){\r\n\t\t\t\tfirst = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\r\n\t\tif (first){\r\n\t\t\tfirst = false;\r\n\t\t\tvar schedulerCookie = getCookie(cookie);\r\n\t\t\tif (schedulerCookie){\r\n\r\n\t\t\t\tif(!scheduler._min_date){\r\n\t\t\t\t\t//otherwise scheduler will have incorrect date until timeout\r\n\t\t\t\t\t//it can cause js error with 'onMouseMove' handler of key_nav.js\r\n\t\t\t\t\tscheduler._min_date = date;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tschedulerCookie = unescape(schedulerCookie).split(\"@\");\r\n\t\t\t\tschedulerCookie[0] = this._helpers.parseDate(schedulerCookie[0]);\r\n\t\t\t\tvar view = this.isViewExists(schedulerCookie[1]) ? schedulerCookie[1] : mode,\r\n\t\t\t\t\tdate = !isNaN(+schedulerCookie[0]) ? schedulerCookie[0] : date;\r\n\r\n\t\t\t\twindow.setTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tscheduler.setCurrentView(date,view);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function (newMode , newDate){\r\n\t\tvar cookie = getCookieName(scheduler);\r\n\t\tvar text = escape(this._helpers.formatDate(newDate)+\"@\"+(newMode));\r\n\t\tsetCookie(cookie,\"expires=Sun, 31 Jan 9999 22:00:00 GMT\",text);\r\n\t});\r\n\r\n\t// As we are blocking first render above there could be a problem in case of dynamic loading and rendering of visible data in general ('from'/'to' won't be defined)\r\n\tvar old_load = scheduler._load;\r\n\tscheduler._load = function() {\r\n\t\tvar args = arguments;\r\n\r\n\t\tif (!scheduler._date) {\r\n\t\t\tvar that = this;\r\n\t\t\twindow.setTimeout(function() {\r\n\t\t\t\told_load.apply(that, args);\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\told_load.apply(this, args);\r\n\t\t}\r\n\t};\r\n}","export default {\r\n\talert: (extension, assert) => {\r\n\t\tassert(false, `The ${extension} extension is not included in this version of dhtmlxScheduler.
\r\n\t\tYou may need a Professional version of the component.
\r\n\t\tContact us at https://dhtmlx.com/docs/contact.shtml if you have any questions.`);\r\n\t}\r\n};","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Day Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Drag Between\", scheduler.assert);\r\n}","export default function(scheduler){\r\n/* global dhtmlXCombo */\r\nscheduler.form_blocks['combo']={\r\n\trender:function(sns) {\r\n\t\tif (!sns.cached_options)\r\n\t\t\tsns.cached_options = {};\r\n\t\tvar res = '';\r\n\t\tres += \"
\";\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\t(function(){\r\n\t\t\tresetCombo();\r\n\t\t\tvar id = scheduler.attachEvent(\"onAfterLightbox\",function(){\r\n\t\t\t\t// otherwise destructor will never be called after form reset(e.g. in readonly event mode)\r\n\t\t\t\tresetCombo();\r\n\t\t\t\tscheduler.detachEvent(id);\r\n\t\t\t});\r\n\t\t\tfunction resetCombo(){\r\n\t\t\t\tif(node._combo && node._combo.DOMParent) {\r\n\t\t\t\t\tvar combo = node._combo;\r\n\t\t\t\t\tif(combo.unload){\r\n\t\t\t\t\t\tcombo.unload();\r\n\t\t\t\t\t}else if(combo.destructor){\r\n\t\t\t\t\t\tcombo.destructor();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// dhtmlxCombo 4.1.0 bug\r\n\t\t\t\t\tcombo.DOMParent = combo.DOMelem = null;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})();\r\n\t\twindow.dhx_globalImgPath = config.image_path||'/';\r\n\t\tnode._combo = new dhtmlXCombo(node, config.name, node.offsetWidth-8);\r\n\t\tif (config.onchange)\r\n\t\t\tnode._combo.attachEvent(\"onChange\", config.onchange);\r\n\r\n\t\tif (config.options_height)\r\n\t\t\tnode._combo.setOptionHeight(config.options_height);\r\n\t\tvar combo = node._combo;\r\n\t\tcombo.enableFilteringMode(config.filtering, config.script_path||null, !!config.cache);\r\n\r\n\t\tif (!config.script_path) { // script-side filtration is used\r\n\t\t\tvar all_options = [];\r\n\t\t\tfor (var i = 0; i < config.options.length; i++) {\r\n\t\t\t\tvar option = config.options[i];\r\n\t\t\t\tvar single_option = [\r\n\t\t\t\t\toption.key,\r\n\t\t\t\t\toption.label,\r\n\t\t\t\t\toption.css\r\n\t\t\t\t];\r\n\t\t\t\tall_options.push(single_option);\r\n\t\t\t}\r\n\t\t\tcombo.addOption(all_options);\r\n\t\t\tif (ev[config.map_to]) {\r\n\t\t\t\tvar index = combo.getIndexByValue(ev[config.map_to]);\r\n\t\t\t\tcombo.selectOption(index);\r\n\t\t\t}\r\n\t\t} else { // server-side filtration is used\r\n\t\t\tvar selected_id = ev[config.map_to];\r\n\t\t\tif (selected_id) {\r\n\t\t\t\tif (config.cached_options[selected_id]) {\r\n\t\t\t\t\tcombo.addOption(selected_id, config.cached_options[selected_id]);\r\n\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscheduler.ajax.get(config.script_path+\"?id=\"+selected_id+\"&uid=\"+scheduler.uid(), function(result){\r\n\t\t\t\t\t\tvar responseText = result.xmlDoc.responseText;\r\n\t\t\t\t\t\tvar label;\r\n\t\t\t\t\t\ttry{\r\n\t\t\t\t\t\t\tvar res = JSON.parse(responseText);\r\n\t\t\t\t\t\t\tlabel = res.options[0].text;\r\n\t\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\t\tvar option = scheduler.ajax.xpath(\"//option\", result.xmlDoc)[0];\r\n\t\t\t\t\t\t\tlabel = option.childNodes[0].nodeValue;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tconfig.cached_options[selected_id] = label;\r\n\t\t\t\t\t\tcombo.addOption(selected_id, label);\r\n\t\t\t\t\t\tcombo.disable(1);\r\n\t\t\t\t\t\tcombo.selectOption(0);\r\n\t\t\t\t\t\tcombo.disable(0);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcombo.setComboValue(\"\");\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config) {\r\n\t\tvar selected_id = node._combo.getSelectedValue(); // value = key\r\n\t\tif (config.script_path) {\r\n\t\t\tconfig.cached_options[selected_id] = node._combo.getSelectedText();\r\n\t\t}\r\n\t\treturn selected_id;\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\nscheduler.form_blocks['radio']={\r\n\trender:function(sns) {\r\n\t\tvar res = '';\r\n\t\tres += `
`;\r\n\t\tfor (var i=0; i\"+\" \"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\tres += \"
\";\r\n\r\n\t\treturn res;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor (var i = 0; i < radiobuttons.length; i++) {\r\n\t\t\tradiobuttons[i].checked = false;\r\n\t\t\tvar checked_value = ev[config.map_to]||value;\r\n\t\t\tif (radiobuttons[i].value == checked_value) {\r\n\t\t\t\tradiobuttons[i].checked = true;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar radiobuttons = node.getElementsByTagName('input');\r\n\t\tfor(var i=0; i
';\r\n\t\telse\r\n\t\t\treturn '';\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar id = scheduler.uid();\r\n\t\tvar isChecked = (typeof config.checked_value != \"undefined\") ? value == config.checked_value : !!value;\r\n\t\tnode.className += \" dhx_cal_checkbox\";\r\n\t\tvar check_html = \"\";\r\n\t\tvar label_html = \"\";\r\n\t\tif (scheduler.config.wide_form){\r\n\t\t\tnode.innerHTML = label_html;\r\n\t\t\tnode.nextSibling.innerHTML=check_html;\r\n\t\t} else\r\n\t\t\tnode.innerHTML=check_html+label_html;\r\n\r\n\t\tif (config.handler) {\r\n\t\t\tvar checkbox = node.getElementsByTagName('input')[0];\r\n\t\t\tif(checkbox.$_eventAttached){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tcheckbox.$_eventAttached = true;\r\n\t\t\tscheduler.event(checkbox, \"click\", config.handler);\r\n\t\t\t//checkbox.onclick = config.handler;\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tnode=scheduler._lightbox.querySelector(`#${config.id}`);\r\n\t\tvar checkbox = node.getElementsByTagName('input')[0]; // moved to the header\r\n\t\tif (!checkbox)\r\n\t\t\tcheckbox = node.nextSibling.getElementsByTagName('input')[0];\r\n\t\treturn (checkbox.checked)?(config.checked_value||true):(config.unchecked_value||false);\r\n\t},\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.ext.fullscreen = {\r\n\ttoggleIcon: null\r\n};\r\n\r\nscheduler.expand = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeExpand\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt._position = t.style.position || \"\";\r\n\t\tt.style.position = \"static\";\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.position = \"absolute\";\r\n\tt._width = t.style.width;\r\n\tt._height = t.style.height;\r\n\tt.style.width = t.style.height = \"100%\";\r\n\tt.style.top = t.style.left = \"0px\";\r\n\r\n\tvar top = document.body;\r\n\ttop.scrollTop = 0;\r\n\r\n\ttop = top.parentNode;\r\n\tif (top)\r\n\t\ttop.scrollTop = 0;\r\n\tdocument.body._overflow = document.body.style.overflow || \"\";\r\n\tdocument.body.style.overflow = \"hidden\";\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onExpand\", []);\r\n};\r\nscheduler.collapse = function() {\r\n\tif(!scheduler.callEvent(\"onBeforeCollapse\", []))\r\n\t\treturn;\r\n\tvar t = scheduler._obj;\r\n\tdo {\r\n\t\tt.style.position = t._position;\r\n\t} while ((t = t.parentNode) && t.style);\r\n\tt = scheduler._obj;\r\n\tt.style.width = t._width;\r\n\tt.style.height = t._height;\r\n\tdocument.body.style.overflow = document.body._overflow;\r\n\tscheduler._maximize();\r\n\tscheduler.callEvent(\"onCollapse\", []);\r\n};\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar t = document.createElement(\"div\");\r\n\tt.className = \"dhx_expand_icon\";\r\n\tscheduler.ext.fullscreen.toggleIcon = t;\r\n\tt.innerHTML = `\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t`;\r\n\tscheduler._obj.appendChild(t);\r\n\tscheduler.event(t, \"click\", function() {\r\n\t\tif (!scheduler.expanded)\r\n\t\t\tscheduler.expand(); else\r\n\t\t\tscheduler.collapse();\r\n\t});\r\n});\r\nscheduler._maximize = function() {\r\n\tthis.expanded = !this.expanded;\r\n\tif(this.expanded){\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.add(\"dhx_expand_icon--expanded\");\r\n\t\t\r\n\t}else{\r\n\t\tthis.ext.fullscreen.toggleIcon.classList.remove(\"dhx_expand_icon--expanded\");\r\n\t}\r\n\t\r\n\t//scheduler.ext.fullscreen.toggleIcon.style.backgroundPosition = \"0 \" + (this.expanded ? \"0\" : \"18\") + \"px\";\r\n\r\n\tvar directions = ['left', 'top'];\r\n\tfor (var i = 0; i < directions.length; i++) {\r\n\t\t//var margin = scheduler.xy['margin_' + directions[i]];\r\n\t\tvar prev_margin = scheduler['_prev_margin_' + directions[i]];\r\n\t\tif (scheduler.xy['margin_' + directions[i]]) {\r\n\t\t\tscheduler['_prev_margin_' + directions[i]] = scheduler.xy['margin_' + directions[i]];\r\n\t\t\tscheduler.xy['margin_' + directions[i]] = 0;\r\n\t\t} else {\r\n\t\t\tif (prev_margin) {\r\n\t\t\t\tscheduler.xy['margin_' + directions[i]] = scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t\tdelete scheduler['_prev_margin_' + directions[i]];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.setCurrentView();\r\n};\r\n\r\n\r\n}\r\n","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Grid\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tvar els = document.body.getElementsByTagName(\"DIV\");\r\n\tfor (var i=0; i < els.length; i++) {\r\n\t\tvar cs = els[i].className||\"\";\r\n\t\tcs = cs.split(\":\");\r\n\t\tif (cs.length == 2 && cs[0] == \"template\"){\r\n\t\t\tvar code = \"return \\\"\"+(els[i].innerHTML||\"\").replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g,\"\\\\\\\"\").replace(/[\\n\\r]+/g,\"\")+\"\\\";\";\r\n\t\t\tcode = unescape(code).replace(/\\{event\\.([a-z]+)\\}/g,function(all,mask){\r\n\t\t\t\treturn '\"+ev.'+mask+'+\"';\r\n\t\t\t});\r\n\t\t\tscheduler.templates[cs[1]]=Function(\"start\",\"end\",\"ev\",code);\r\n\t\t\tels[i].style.display='none';\r\n\t\t}\r\n\t}\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.shortcuts = {\r\n\tcreateCommand: function(){\r\n\t\treturn {\r\n\t\t\tmodifiers:{\r\n\t\t\t\t\"shift\": false,\r\n\t\t\t\t\"alt\": false,\r\n\t\t\t\t\"ctrl\": false,\r\n\t\t\t\t\"meta\": false\r\n\t\t\t},\r\n\t\t\tkeyCode: null\r\n\t\t};\r\n\t},\r\n\tparse: function(shortcut){\r\n\t\tvar commands = [];\r\n\r\n\t\tvar expr = this.getExpressions(this.trim(shortcut));\r\n\t\tfor(var i = 0; i < expr.length; i++){\r\n\t\t\tvar words = this.getWords(expr[i]);\r\n\r\n\t\t\tvar command = this.createCommand();\r\n\r\n\t\t\tfor(var j = 0; j < words.length; j++){\r\n\t\t\t\tif(this.commandKeys[words[j]]){\r\n\t\t\t\t\tcommand.modifiers[words[j]] = true;\r\n\t\t\t\t}else if(this.specialKeys[words[j]]){\r\n\t\t\t\t\tcommand.keyCode = this.specialKeys[words[j]];\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcommand.keyCode = words[j].charCodeAt(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcommands.push(command);\r\n\t\t}\r\n\t\treturn commands;\r\n\t},\r\n\r\n\tgetCommandFromEvent: function(domEvent){\r\n\t\tvar command = this.createCommand();\r\n\t\tcommand.modifiers.shift = !!domEvent.shiftKey;\r\n\t\tcommand.modifiers.alt = !!domEvent.altKey;\r\n\t\tcommand.modifiers.ctrl = !!domEvent.ctrlKey;\r\n\t\tcommand.modifiers.meta = !!domEvent.metaKey;\r\n\t\tcommand.keyCode = domEvent.which || domEvent.keyCode;\r\n\r\n\t\tif(command.keyCode >= 96 && command.keyCode <= 105){\r\n\t\t\t// numpad keys 96-105 -> 48-57\r\n\t\t\tcommand.keyCode -= 48;//convert numpad number code to regular number code\r\n\t\t}\r\n\r\n\t\tvar printableKey = String.fromCharCode(command.keyCode );\r\n\t\tif(printableKey){\r\n\t\t\tcommand.keyCode = printableKey.toLowerCase().charCodeAt(0);\r\n\t\t}\r\n\t\treturn command;\r\n\t},\r\n\r\n\tgetHashFromEvent: function(domEvent){\r\n\t\treturn this.getHash(this.getCommandFromEvent(domEvent));\r\n\t},\r\n\r\n\tgetHash: function(command){\r\n\t\tvar parts = [];\r\n\t\tfor(var i in command.modifiers){\r\n\t\t\tif(command.modifiers[i]){\r\n\t\t\t\tparts.push(i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tparts.push(command.keyCode);\r\n\r\n\t\treturn parts.join(this.junctionChar);\r\n\t},\r\n\r\n\tgetExpressions: function(shortcut){\r\n\t\treturn shortcut.split(this.junctionChar);\r\n\t},\r\n\tgetWords: function(term){\r\n\t\treturn term.split(this.combinationChar);\r\n\t},\r\n\ttrim: function(shortcut){\r\n\t\treturn shortcut.replace(/\\s/g, \"\");\r\n\t},\r\n\tjunctionChar:\",\",\r\n\tcombinationChar:\"+\",\r\n\tcommandKeys:{\r\n\t\t\"shift\": 16,\r\n\t\t\"alt\": 18,\r\n\t\t\"ctrl\": 17,\r\n\t\t\"meta\": true\r\n\t},\r\n\tspecialKeys:{\r\n\t\t\"backspace\": 8,\r\n\t\t\"tab\": 9,\r\n\t\t\"enter\": 13,\r\n\t\t\"esc\": 27,\r\n\t\t\"space\": 32,\r\n\t\t\"up\": 38,\r\n\t\t\"down\": 40,\r\n\t\t\"left\": 37,\r\n\t\t\"right\": 39,\r\n\t\t\"home\": 36,\r\n\t\t\"end\": 35,\r\n\t\t\"pageup\": 33,\r\n\t\t\"pagedown\": 34,\r\n\t\t\"delete\": 46,\r\n\t\t\"insert\": 45,\r\n\t\t\"plus\":107,\r\n\t\t\"f1\": 112,\r\n\t\t\"f2\": 113,\r\n\t\t\"f3\": 114,\r\n\t\t\"f4\": 115,\r\n\t\t\"f5\": 116,\r\n\t\t\"f6\": 117,\r\n\t\t\"f7\": 118,\r\n\t\t\"f8\": 119,\r\n\t\t\"f9\": 120,\r\n\t\t\"f10\": 121,\r\n\t\t\"f11\": 122,\r\n\t\t\"f12\": 123\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.EventHandler = {\r\n\t_handlers: null,\r\n\tfindHandler: function(command){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\t\tvar hash = shortcuts.getHash(command);\r\n\r\n\t\treturn this._handlers[hash];\r\n\t},\r\n\r\n\tdoAction: function(command, e){\r\n\t\tvar handler = this.findHandler(command);\r\n\t\tif(handler){\r\n\t\t\thandler.call(this, e);\r\n\r\n\t\t\tif (e.preventDefault) e.preventDefault();\r\n\t\t\telse e.returnValue = false;\r\n\r\n\t\t}\r\n\t},\r\n\tbind: function(shortcut, handler){\r\n\t\tif(!this._handlers) this._handlers = {};\r\n\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tthis._handlers[shortcuts.getHash(commands[i])] = handler;\r\n\t\t}\r\n\t},\r\n\tunbind: function(shortcut){\r\n\t\tvar shortcuts = scheduler.$keyboardNavigation.shortcuts;\r\n\r\n\t\tvar commands = shortcuts.parse(shortcut);\r\n\t\tfor(var i = 0; i < commands.length; i++){\r\n\t\t\tif(this._handlers[shortcuts.getHash(commands[i])]){\r\n\t\t\t\tdelete this._handlers[shortcuts.getHash(commands[i])];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tbindAll: function(map){\r\n\t\tfor(var i in map){\r\n\t\t\tthis.bind(i, map[i]);\r\n\t\t}\r\n\t},\r\n\tinitKeys: function(){\r\n\t\tif(!this._handlers)\r\n\t\t\tthis._handlers = {};\r\n\t\tif(this.keys){\r\n\t\t\tthis.bindAll(this.keys);\r\n\t\t}\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n(function(){\r\n\tscheduler.$keyboardNavigation.getFocusableNodes = scheduler._getFocusableNodes;\r\n\r\n\tscheduler.$keyboardNavigation.trapFocus = function trapFocus(root, e){\r\n\t\tif(e.keyCode != 9) return false;\r\n\r\n\t\tvar focusable = scheduler.$keyboardNavigation.getFocusableNodes(root);\r\n\t\tvar currentFocus = document.activeElement;\r\n\t\tvar currentIndex = -1;\r\n\t\tfor(var i = 0; i < focusable.length; i++){\r\n\t\t\tif(focusable[i] == currentFocus){\r\n\t\t\t\tcurrentIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar nextIndex, nextItem;\r\n\t\tif(e.shiftKey){\r\n\r\n\t\t\t// back tab\r\n\t\t\t// go to the last element if we focused on the first\r\n\t\t\tnextIndex = (currentIndex <= 0) ? (focusable.length - 1) : (currentIndex - 1);\r\n\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\t// forward tab\r\n\t\t\t// forward tab from last element should go back to the first element\r\n\t\t\tnextIndex = (currentIndex >= focusable.length - 1) ? 0 : (currentIndex + 1);\r\n\t\t\tnextItem = focusable[nextIndex];\r\n\t\t\tif(nextItem){\r\n\t\t\t\tnextItem.focus();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.marker = {\r\n\tclear: function(){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_focus_slot\");\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].parentNode.removeChild(divs[i]);\r\n\t\t}\r\n\t},\r\n\tcreateElement: function(){\r\n\t\tvar element = document.createElement(\"div\");\r\n\t\telement.setAttribute(\"tabindex\", -1);\r\n\t\telement.className = \"dhx_focus_slot\";\r\n\t\treturn element;\r\n\t},\r\n\r\n\trenderMultiple: function(start, end, method){\r\n\t\tvar divs = [];\r\n\t\tvar currentStart = new Date(start);\r\n\t\tvar currentEnd = new Date(Math.min(end.valueOf(), scheduler.date.add(scheduler.date.day_start(new Date(start)), 1, \"day\").valueOf()));\r\n\t\twhile(currentStart.valueOf() < end.valueOf()){\r\n\r\n\t\t\tdivs = divs.concat(method.call(this, currentStart, new Date(Math.min(currentEnd.valueOf(), end.valueOf()))));\r\n\t\t\tcurrentStart = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\r\n\t\t\tcurrentEnd = scheduler.date.day_start(scheduler.date.add(currentStart, 1, \"day\"));\r\n\t\t\tcurrentEnd = new Date(Math.min(currentEnd.valueOf(), end.valueOf()));\r\n\t\t}\r\n\r\n\t\treturn divs;\r\n\t},\r\n\r\n\r\n\trender: function(start, end, section){\r\n\t\tthis.clear();\r\n\t\tvar divs = [];\r\n\r\n\t\tvar modes = scheduler.$keyboardNavigation.TimeSlot.prototype._modes;\r\n\t\tvar view = scheduler.$keyboardNavigation.TimeSlot.prototype._getMode();\r\n\t\tswitch (view){\r\n\t\t\tcase modes.units:\r\n\t\t\t\tdivs = this.renderVerticalMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.timeline:\r\n\t\t\t\tdivs = this.renderTimelineMarker(start, end, section);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.year:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderYearMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.month:\r\n\t\t\t\tdivs = this.renderMonthMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.weekAgenda:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderWeekAgendaMarker));\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.list:\r\n\t\t\t\tdivs = this.renderAgendaMarker(start, end);\r\n\t\t\t\tbreak;\r\n\t\t\tcase modes.dayColumns:\r\n\t\t\t\tdivs = divs.concat(this.renderMultiple(start, end, this.renderVerticalMarker));\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.addWaiAriaLabel(divs, start, end, section);\r\n\t\tthis.addDataAttributes(divs, start, end, section);\r\n\r\n\t\tfor(var i = divs.length - 1; i >= 0; i--){\r\n\t\t\tif(divs[i].offsetWidth){\r\n\t\t\t\treturn divs[i];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t},\r\n\r\n\taddDataAttributes: function(divs, start, end, section){\r\n\t\tvar dateToStr = scheduler.date.date_to_str(scheduler.config.api_date);\r\n\r\n\t\tvar from = dateToStr(start),\r\n\t\t\tto = dateToStr(end);\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tdivs[i].setAttribute(\"data-start-date\", from);\r\n\t\t\tdivs[i].setAttribute(\"data-end-date\", to);\r\n\t\t\tif(section){\r\n\t\t\t\tdivs[i].setAttribute(\"data-section\", section);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\taddWaiAriaLabel: function(divs, start, end, section){\r\n\t\tvar label = \"\";\r\n\t\tvar state = scheduler.getState();\r\n\t\tvar mode = state.mode;\r\n\r\n\t\tvar dateTimeLabel = false;\r\n\r\n\t\tlabel += scheduler.templates.day_date(start);\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != start.valueOf())){\r\n\t\t\tlabel += \" \" + scheduler.templates.hour_scale(start);\r\n\t\t\tdateTimeLabel = true;\r\n\t\t}\r\n\r\n\t\tif((scheduler.date.day_start(new Date(start)).valueOf() != scheduler.date.day_start(new Date(end)).valueOf())){\r\n\r\n\t\t\tlabel += \" - \" + scheduler.templates.day_date(end);\r\n\t\t\tif(dateTimeLabel || (scheduler.date.day_start(new Date(end)).valueOf() != end.valueOf())){\r\n\t\t\t\tlabel += \" \" + scheduler.templates.hour_scale(end);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(section){\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tconst timeline = scheduler.matrix[mode];\r\n\t\t\t\tconst sectionObject = timeline.y_unit[timeline.order[section]];\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_label\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tconst units = scheduler._props[mode];\r\n\t\t\t\tconst sectionObject = units.options[units.order[section]];\r\n\r\n\t\t\t\tlabel += \", \" + scheduler.templates[mode + \"_scale_text\"](sectionObject.key, sectionObject.label, sectionObject);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tscheduler._waiAria.setAttributes(divs[i], {\r\n\t\t\t\t\"aria-label\": label,\r\n\t\t\t\t\"aria-live\": \"polite\"\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\trenderWeekAgendaMarker: function(start_date, end_date){\r\n\t\tvar divs = scheduler.$container.querySelectorAll(\".dhx_wa_day_cont .dhx_wa_scale_bar\");\r\n\r\n\t\tvar currDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(start_date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(index != -1) return this._wrapDiv(divs[index]);\r\n\t\treturn [];\r\n\t},\r\n\r\n\t_wrapDiv: function(cell){\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = cell.offsetTop + \"px\";\r\n\t\tmarker.style.left = cell.offsetLeft + \"px\";\r\n\t\tmarker.style.width = cell.offsetWidth + \"px\";\r\n\t\tmarker.style.height = cell.offsetHeight + \"px\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\trenderYearMarker: function(start_date, end_date){\r\n\t\tvar cell = scheduler._get_year_cell(start_date);\r\n\t\tcell.style.position = \"relative\";\r\n\t\tvar marker = this.createElement();\r\n\t\tmarker.style.top = \"0px\";\r\n\t\tmarker.style.left = \"0px\";\r\n\t\tmarker.style.width = \"100%\";\r\n\t\tmarker.style.height = \"100%\";\r\n\t\tcell.appendChild(marker);\r\n\t\treturn [marker];\r\n\t},\r\n\r\n\trenderAgendaMarker: function(start_date, end_date){\r\n\t\tvar block = this.createElement();\r\n\t\tblock.style.height = \"1px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tblock.style.opacity = 1;\r\n\t\tblock.style.top = \"0px\";\r\n\t\tblock.style.left = \"0px\";\r\n\t\tscheduler.$container.querySelector(\".dhx_cal_data\").appendChild(block);\r\n\t\treturn [block];\r\n\t},\r\n\r\n\trenderTimelineMarker: function(start_date, end_date, section){\r\n\t\tvar view_opts = scheduler._lame_copy({}, scheduler.matrix[scheduler._mode]);\r\n\t\tvar areas = view_opts._scales;\r\n\t\t//timespans must always use actual position, not rounded\r\n\t\tview_opts.round_position = false;\r\n\t\tvar blocks = [];\r\n\r\n\t\tvar min_date = start_date ? new Date(start_date) : scheduler._min_date;\r\n\t\tvar max_date = end_date ? new Date(end_date) : scheduler._max_date;\r\n\r\n\t\tif(min_date.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\tmin_date = new Date(scheduler._min_date);\r\n\t\tif(max_date.valueOf() > scheduler._max_date.valueOf())\r\n\t\t\tmax_date = new Date(scheduler._max_date);\r\n\r\n\t\tif(!view_opts._trace_x) return blocks;\r\n\r\n\t\tfor(var i = 0; i < view_opts._trace_x.length; i++){\r\n\t\t\tif(scheduler._is_column_visible(view_opts._trace_x[i]))\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\tif(i == view_opts._trace_x.length)\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar area = areas[section];\r\n\r\n\t\tif (!(min_date < end_date && max_date > start_date))\r\n\t\t\treturn blocks;\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\tlet start_pos;\r\n\t\tlet end_pos;\r\n\r\n\t\tfunction set_date_part(source, target) {\r\n\t\t\t// reset to start of the month in order to prevent month change when target is on 31th day, and source month has only 30 days\r\n\t\t\ttarget.setDate(1);\r\n\r\n\t\t\ttarget.setFullYear(source.getFullYear());\r\n\t\t\ttarget.setMonth(source.getMonth());\r\n\t\t\ttarget.setDate(source.getDate());\r\n\t\t}\r\n\r\n\t\tif(!scheduler.getView().days){\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: start_date}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: end_date}, false, view_opts);\r\n\t\t}else{\r\n\t\t\t// daytimeline\r\n\t\t\tconst tempStart = new Date(start_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempStart);\r\n\t\t\tconst tempEnd = new Date(end_date);\r\n\t\t\tset_date_part(scheduler._min_date, tempEnd);\r\n\t\t\tstart_pos = scheduler._timeline_getX({start_date: tempStart}, false, view_opts);\r\n\t\t\tend_pos = scheduler._timeline_getX({start_date: tempEnd}, false, view_opts);\r\n\t\t}\r\n\r\n\t\tvar height = ((view_opts._section_height[section]-1) || (view_opts.dy - 1));\r\n\r\n\t\tvar top = 0;\r\n\t\tif (scheduler._isRender('cell')){\r\n\t\t\ttop = area.offsetTop;\r\n\t\t\tstart_pos += view_opts.dx;\r\n\t\t\tend_pos += view_opts.dx;\r\n\t\t\tarea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}else{\r\n\r\n\t\t}\r\n\t\tvar width = Math.max(1, end_pos - start_pos - 1);\r\n\t\tlet direction = \"left\";\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tdirection = \"right\";\r\n\t\t}\r\n\t\tblock.style.cssText = `height:${height}px; ${direction}:${start_pos}px; width:${width}px; top:${top}px;`;\r\n\r\n\t\tif(area){\r\n\t\t\tarea.appendChild(block);\r\n\t\t\tblocks.push(block);\r\n\t\t}\r\n\r\n\t\treturn blocks;\r\n\t},\r\n\r\n\trenderMonthCell: function(date){\r\n\t\tvar cells = scheduler.$container.querySelectorAll(\".dhx_month_head\");\r\n\r\n\t\tvar divs = [];\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tdivs.push(cells[i].parentNode);\r\n\t\t}\r\n\r\n\t\tvar firstDate = scheduler.date.week_start(new Date(scheduler.getState().min_date));\r\n\r\n\t\tvar index = -1;\r\n\t\tvar weekNumber = 0;\r\n\t\tvar dayIndex = -1;\r\n\t\tvar currDate = firstDate;\r\n\t\tvar markerDate = scheduler.date.day_start(new Date(date));\r\n\t\tfor(var i = 0; i < divs.length; i++){\r\n\t\t\tindex++;\r\n\r\n\t\t\tif(dayIndex == 6){\r\n\t\t\t\tweekNumber++;\r\n\t\t\t\tdayIndex = 0;\r\n\t\t\t}else{\r\n\t\t\t\tdayIndex++;\r\n\t\t\t}\r\n\r\n\t\t\tif(scheduler.date.day_start(new Date(currDate)).valueOf() == markerDate.valueOf()){\r\n\t\t\t\tbreak;\r\n\t\t\t}else{\r\n\t\t\t\tcurrDate = scheduler.date.add(currDate, 1, \"day\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(index == -1){\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar left = scheduler._colsS[dayIndex];\r\n\t\tvar top = scheduler._colsS.heights[weekNumber];\r\n\r\n\t\tvar div = this.createElement();\r\n\t\tdiv.style.top = top + \"px\";\r\n\t\tdiv.style.left = left + \"px\";\r\n\t\tdiv.style.width = scheduler._cols[dayIndex] + \"px\";\r\n\t\tdiv.style.height = ((scheduler._colsS.heights[weekNumber + 1] - top) || scheduler._colsS.height) + \"px\" ;\r\n\r\n\r\n\t\tvar container = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\r\n\t\tvar datatable = container.querySelector(\".dhx_cal_month_table\");\r\n\t\tif(datatable.nextSibling){\r\n\t\t\tcontainer.insertBefore(div, datatable.nextSibling);\r\n\t\t}else{\r\n\t\t\tcontainer.appendChild(div);\r\n\t\t}\r\n\t\treturn div;\r\n\t},\r\n\trenderMonthMarker: function(start_date, end_date){\r\n\t\tvar res = [];\r\n\t\tvar currentDate = start_date;\r\n\t\twhile(currentDate.valueOf() < end_date.valueOf()){\r\n\t\t\tres.push(this.renderMonthCell(currentDate));\r\n\t\t\tcurrentDate = scheduler.date.add(currentDate, 1, \"day\");\r\n\t\t}\r\n\t\treturn res;\r\n\t},\r\n\r\n\trenderVerticalMarker: function(start_date, end_date, section){\r\n\t\tvar index = scheduler.locate_holder_day(start_date);\r\n\r\n\t\tvar divs = [];\r\n\t\tvar area = null;\r\n\r\n\t\tvar c = scheduler.config;\r\n\t\tif(scheduler._ignores[index]) return divs;\r\n\r\n\t\tif (scheduler._props && scheduler._props[scheduler._mode] && section) {\r\n\t\t\tvar view = scheduler._props[scheduler._mode];\r\n\t\t\tindex = view.order[section];\r\n\r\n\t\t\tvar inner_index = view.order[section];\r\n\t\t\tif(!(view.days > 1)){\r\n\t\t\t\tindex = inner_index;\r\n\t\t\t\tif (view.size && (index > view.position+view.size)) {\r\n\t\t\t\t\tindex = 0;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\t//var units_l = view.size || view.options.length;\r\n\r\n\t\t\t\tindex = scheduler.locate_holder_day(start_date) + inner_index;\r\n\t\t\t\t//index = index*units_l + inner_index;\r\n\t\t\t}\r\n\t\t}\r\n\t\tarea = scheduler.locate_holder(index);\r\n\t\tif(!area || area.querySelector(\".dhx_scale_hour\")){\r\n\t\t\t// hour scale instead of date column\r\n\t\t\treturn document.createElement(\"div\");\r\n\t\t}\r\n\r\n\t\tvar start = Math.max((start_date.getHours()*60 + start_date.getMinutes()), c.first_hour*60);\r\n\r\n\r\n\t\tvar end = Math.min((end_date.getHours()*60 + end_date.getMinutes()), c.last_hour*60);\r\n\t\tif(!end && (scheduler.date.day_start(new Date(end_date)).valueOf() > scheduler.date.day_start(new Date(start_date)).valueOf())){\r\n\t\t\tend = c.last_hour*60;\r\n\t\t}\r\n\r\n\t\tif (end <= start) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tvar block = this.createElement();\r\n\r\n\t\t// +1 for working with section which really takes up whole height (as % would be == 0)\r\n\t\tvar all_hours_height = scheduler.config.hour_size_px*c.last_hour + 1;\r\n\t\tvar hour_ms = 60*60*1000;\r\n\t\tblock.style.top = (Math.round((start*60*1000-scheduler.config.first_hour*hour_ms)*scheduler.config.hour_size_px/hour_ms) % all_hours_height) + \"px\";\r\n\t\tblock.style.lineHeight = block.style.height = Math.max((Math.round(((end-start)*60*1000)*scheduler.config.hour_size_px/hour_ms)) % all_hours_height, 1)+\"px\";\r\n\t\tblock.style.width = \"100%\";\r\n\t\tarea.appendChild(block);\r\n\t\tdivs.push(block);\r\n\t\treturn divs[0];\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tgetDefaultNode: function(){\r\n\t\t\tvar node = new scheduler.$keyboardNavigation.TimeSlot();\r\n\r\n\t\t\tif(!node.isValid()){\r\n\t\t\t\tnode = node.fallback();\r\n\t\t\t}\r\n\t\t\treturn node;\r\n\t\t},\r\n\r\n\t\t_modes:{\r\n\t\t\tmonth: \"month\",\r\n\t\t\tyear: \"year\",\r\n\t\t\tdayColumns: \"dayColumns\",\r\n\t\t\ttimeline:\"timeline\",\r\n\t\t\tunits:\"units\",\r\n\t\t\tweekAgenda: \"weekAgenda\",\r\n\t\t\tlist: \"list\"\r\n\t\t},\r\n\t\tgetMode: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar mode = state.mode;\r\n\t\t\tif((scheduler.matrix && scheduler.matrix[mode])){\r\n\t\t\t\treturn this._modes.timeline;\r\n\t\t\t} else if((scheduler._props && scheduler._props[mode])){\r\n\t\t\t\treturn this._modes.units;\r\n\t\t\t}else if(mode == \"month\"){\r\n\t\t\t\treturn this._modes.month;\r\n\t\t\t}else if(mode == \"year\"){\r\n\t\t\t\treturn this._modes.year;\r\n\t\t\t}else if(mode == \"week_agenda\"){\r\n\t\t\t\treturn this._modes.weekAgenda;\r\n\t\t\t}else if(mode == \"map\" || mode == \"agenda\" || (scheduler._grid && scheduler[\"grid_\" + mode])){\r\n\t\t\t\treturn this._modes.list;\r\n\t\t\t}else{\r\n\t\t\t\treturn this._modes.dayColumns;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.focus();\r\n\t\t},\r\n\r\n\t\tblur: function(){\r\n\r\n\t\t},\r\n\r\n\t\tdisable: function(){\r\n\t\t\tscheduler.$container.setAttribute(\"tabindex\", \"0\");\r\n\t\t},\r\n\t\tenable: function(){\r\n\t\t\tif(scheduler.$container)\r\n\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t},\r\n\t\tisEnabled: function(){\r\n\t\t\treturn scheduler.$container.hasAttribute(\"tabindex\");\r\n\t\t},\r\n\r\n\r\n\t\t_compareEvents: function(a, b){\r\n\t\t\tif (a.start_date.valueOf() == b.start_date.valueOf())\r\n\t\t\t\treturn a.id > b.id ? 1 : -1;\r\n\t\t\treturn a.start_date.valueOf() > b.start_date.valueOf() ? 1 : -1;\r\n\t\t},\r\n\r\n\t\t_pickEvent: function(from, to, startId, reverse){\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tfrom = new Date(Math.max(range.min_date.valueOf(), from.valueOf()));\r\n\t\t\tto = new Date(Math.min(range.max_date.valueOf(), to.valueOf()));\r\n\r\n\t\t\tvar evs = scheduler.getEvents(from, to);\r\n\t\t\tevs.sort(this._compareEvents);\r\n\t\t\tif(reverse){\r\n\t\t\t\tevs = evs.reverse();\r\n\t\t\t}\r\n\r\n\t\t\tvar trim = !!startId;\r\n\t\t\tfor(var i =0; i < evs.length && trim; i++){\r\n\t\t\t\tif(evs[i].id == startId){\r\n\t\t\t\t\ttrim = false;\r\n\t\t\t\t}\r\n\t\t\t\tevs.splice(i, 1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\r\n\t\t\tfor(var i = 0; i < evs.length; i++){\r\n\t\t\t\tvar eventElement = new scheduler.$keyboardNavigation.Event(evs[i].id);\r\n\t\t\t\tif(eventElement.getNode())\r\n\t\t\t\t\treturn evs[i];\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tnextEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tcurrEvent.start_date,\r\n\t\t\t\t\tscheduler.date.add(currEvent.start_date, 1, \"year\"),\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tvisibleDates.min_date,\r\n\t\t\t\t\tscheduler.date.add(visibleDates.min_date, 1, \"year\"),\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\tfalse\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.nextEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tprevEventHandler: function(id){\r\n\t\t\tvar activeNode = scheduler.$keyboardNavigation.dispatcher.activeNode;\r\n\r\n\t\t\tvar startId = id || (activeNode && activeNode.eventId);\r\n\r\n\t\t\tvar nextEvent = null;\r\n\t\t\tif(startId && scheduler.getEvent(startId)){\r\n\t\t\t\tvar currEvent = scheduler.getEvent(startId);\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(currEvent.end_date, -1, \"year\"),\r\n\t\t\t\t\tcurrEvent.end_date,\r\n\t\t\t\t\tcurrEvent.id,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tif(!nextEvent && !id){\r\n\t\t\t\tvar visibleDates = scheduler.getState();\r\n\r\n\t\t\t\tnextEvent = scheduler.$keyboardNavigation.SchedulerNode.prototype._pickEvent(\r\n\t\t\t\t\tscheduler.date.add(visibleDates.max_date, -1, \"year\"),\r\n\t\t\t\t\tvisibleDates.max_date,\r\n\t\t\t\t\tnull,\r\n\t\t\t\t\ttrue\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tif(nextEvent){\r\n\t\t\t\tvar nextEv = new scheduler.$keyboardNavigation.Event(nextEvent.id);\r\n\t\t\t\tif(!nextEv.isValid()){// not visible event\r\n\t\t\t\t\tthis.prevEventHandler(nextEvent.id);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(activeNode){activeNode.blur();}\r\n\t\t\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(nextEv);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\r\n\t\t\t\"alt+1, alt+2, alt+3, alt+4, alt+5, alt+6, alt+7, alt+8, alt+9\": function(e){\r\n\t\t\t\tvar tabs = scheduler.$keyboardNavigation.HeaderCell.prototype.getNodes(\".dhx_cal_navline .dhx_cal_tab\");\r\n\t\t\t\tvar key = e.key;\r\n\t\t\t\tif(key === undefined){\r\n\t\t\t\t\tkey = e.keyCode - 48;\r\n\t\t\t\t}\r\n\t\t\t\tif(tabs[key*1 - 1]){\r\n\t\t\t\t\ttabs[key*1 - 1].click();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+left,meta+left\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_prev_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+right,meta+right\": function(e){\r\n\t\t\t\tscheduler._click.dhx_cal_next_button();\r\n\t\t\t},\r\n\t\t\t\"ctrl+up,meta+up\":function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop -= 20;\r\n\t\t\t},\r\n\t\t\t\"ctrl+down,meta+down\": function(e){\r\n\t\t\t\tvar dataArea = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\tdataArea.scrollTop += 20;\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"e\": function(){\r\n\t\t\t\tthis.nextEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"home\": function(){\r\n\t\t\t\tscheduler.setCurrentView(new Date());\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+e\": function(){\r\n\t\t\t\tthis.prevEventHandler();\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+enter,meta+enter\": function(){\r\n\t\t\t\tscheduler.addEventNow({start_date: new Date(scheduler.getState().date)});\r\n\t\t\t},\r\n\r\n\t\t\t\"ctrl+c,meta+c\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+v,meta+v\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t},\r\n\t\t\t\"ctrl+x,meta+x\": function(e){\r\n\t\t\t\tscheduler._key_nav_copy_paste(e);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.SchedulerNode.prototype.bindAll(scheduler.$keyboardNavigation.SchedulerNode.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode = function(){};\r\n\r\nscheduler.$keyboardNavigation.KeyNavNode.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.EventHandler,\r\n\t{\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\treturn null;\r\n\t\t},\r\n\r\n\t\tmoveTo: function (element) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.setActiveNode(element);\r\n\t\t},\r\n\r\n\t\tcompareTo: function(b){\r\n\t\t\t// good enough comparison of two random objects\r\n\t\t\tif(!b) return false;\r\n\t\t\tfor(var i in this){\r\n\t\t\t\tif(!!this[i] != !!b[i]) return false;\r\n\r\n\t\t\t\tvar canStringifyThis = !!(this[i] && this[i].toString);\r\n\t\t\t\tvar canStringifyThat = !!(b[i] && b[i].toString);\r\n\t\t\t\tif(canStringifyThat != canStringifyThis) return false;\r\n\t\t\t\tif(!(canStringifyThat && canStringifyThis)) {\r\n\t\t\t\t\tif(b[i] != this[i]) return false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tif(b[i].toString() != this[i].toString())\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){},\r\n\t\tfocus: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className += \" scheduler_focused\";\r\n\t\t\t\tif(node.focus) node.focus();\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif(node){\r\n\t\t\t\tnode.setAttribute(\"tabindex\", \"-1\");\r\n\t\t\t\t//node.className = (node.className || \"\").replace(/ ?scheduler_focused/g, \"\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.HeaderCell = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\tindex = index || this.index || 0;\r\n\t\t\tvar nodes = this.getNodes();\r\n\t\t\tif(nodes[index]) return nodes[index];\r\n\t\t},\r\n\r\n\t\tgetNodes: function(selector){\r\n\t\t\tselector = selector || [\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_prev_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_next_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_today_button\",\r\n\t\t\t\t\t\".dhx_cal_navline .dhx_cal_tab\"\r\n\t\t\t\t].join(\", \");\r\n\r\n\t\t\tvar nodes = Array.prototype.slice.call(scheduler.$container.querySelectorAll(selector));\r\n\t\t\tnodes.sort(function(a, b){\r\n\t\t\t\treturn a.offsetLeft - b.offsetLeft;\r\n\t\t\t});\r\n\t\t\treturn nodes;\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn !!this.getNode(this.index);\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\tvar defaultCell = this.getNode(0);\r\n\t\t\tif(!defaultCell){\r\n\t\t\t\tdefaultCell = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t\treturn defaultCell;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tvar newIndex = this.index - 1;\r\n\t\t\t\tif(newIndex < 0){\r\n\t\t\t\t\tnewIndex = this.getNodes().length - 1;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tvar newIndex = this.index + 1;\r\n\t\t\t\tif(newIndex >= this.getNodes().length){\r\n\t\t\t\t\tnewIndex = 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.HeaderCell(newIndex));\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t},\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.HeaderCell.prototype.bindAll(scheduler.$keyboardNavigation.HeaderCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.Event = function(id){\r\n\tthis.eventId = null;\r\n\tif(scheduler.getEvent(id)){\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tthis.start = new Date(ev.start_date);\r\n\t\tthis.end = new Date(ev.end_date);\r\n\r\n\t\tthis.section = this._getSection(ev);\r\n\t\tthis.eventId = id;\r\n\t}\r\n};\r\n\r\nscheduler.$keyboardNavigation.Event.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_getNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\"[\"+scheduler.config.event_attribute+\"]\"));\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\tgetMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\t_handlers: null,\r\n\t\tisValid: function(){\r\n\t\t\treturn !!(scheduler.getEvent(this.eventId) && this.getNode());\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar eventNode = this._getNodes()[0];\r\n\t\t\tvar defaultElement = null;\r\n\t\t\tif(!eventNode || !(scheduler._locate_event(eventNode))){\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}else{\r\n\t\t\t\tvar id = scheduler._locate_event(eventNode);\r\n\t\t\t\tdefaultElement = new scheduler.$keyboardNavigation.Event(id);\r\n\t\t\t}\r\n\r\n\t\t\treturn defaultElement;\r\n\t\t},\r\n\r\n\t\tisScrolledIntoView: function (el) {\r\n\t\t\tvar eventBox = el.getBoundingClientRect();\r\n\t\t\tvar viewPort = scheduler.$container.querySelector(\".dhx_cal_data\").getBoundingClientRect();\r\n\t\t\t\r\n\t\t\tif(eventBox.bottom < viewPort.top || eventBox.top > viewPort.bottom){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\tgetNode: function(){\r\n\r\n\t\t\tvar idSelector = \"[\"+scheduler.config.event_attribute+\"='\"+this.eventId+\"']\";\r\n\r\n\t\t\tvar inlineEditor = scheduler.$keyboardNavigation.dispatcher.getInlineEditor(this.eventId);\r\n\t\t\tif(inlineEditor){// is inline editor visible\r\n\t\t\t\treturn inlineEditor;\r\n\t\t\t}else{\r\n\t\t\t\tif(scheduler.isMultisectionEvent && scheduler.isMultisectionEvent(scheduler.getEvent(this.eventId))){\r\n\t\t\t\t\tvar nodes = scheduler.$container.querySelectorAll(idSelector);\r\n\t\t\t\t\tfor(var i = 0; i < nodes.length; i++){\r\n\t\t\t\t\t\tif(this.isScrolledIntoView(nodes[i])){\r\n\t\t\t\t\t\t\treturn nodes[i];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn nodes[0];\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn scheduler.$container.querySelector(idSelector);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tvar event = scheduler.getEvent(this.eventId);\r\n\r\n\t\t\tvar calendar = scheduler.getState();\r\n\t\t\tif(event.start_date.valueOf() > calendar.max_date.valueOf() || event.end_date.valueOf() <= calendar.min_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(event.start_date);\r\n\t\t\t}\r\n\r\n\t\t\tvar node = this.getNode();\r\n\t\t\tif (this.isScrolledIntoView(node)) {\r\n\t\t\t\tscheduler.$keyboardNavigation.dispatcher.keepScrollPosition((function(){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t\t}).bind(this));\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\r\n\r\n\t\t_getSection: function(ev){\r\n\t\t\tvar section = null;\r\n\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\tsection = ev[timeline.y_property];\r\n\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\tsection = ev[unit.map_to];\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\t\t_moveToSlot: function(dir){\r\n\t\t\tvar ev = scheduler.getEvent(this.eventId);\r\n\t\t\tif(ev){\r\n\t\t\t\tvar section =this._getSection(ev);\r\n\t\t\t\tvar slot = new scheduler.$keyboardNavigation.TimeSlot(ev.start_date, null, section);\r\n\t\t\t\tthis.moveTo(slot.nextSlot(slot, dir));\r\n\t\t\t}else{\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis._moveToSlot(\"left\");\r\n\t\t\t},\r\n\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis._moveToSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"down\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"space\": function(){\r\n\t\t\t\tvar node = this.getNode();\r\n\t\t\t\tif(node && node.click){\r\n\t\t\t\t\tnode.click();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tif(this.getMode() == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else {\r\n\t\t\t\t\tthis._moveToSlot(\"up\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t\"delete\": function(){\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler._click.buttons[\"delete\"](this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// open lightbox\r\n\t\t\t\"enter\": function () {\r\n\t\t\t\tif(scheduler.getEvent(this.eventId)) {\r\n\t\t\t\t\tscheduler.showLightbox(this.eventId);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\nscheduler.$keyboardNavigation.Event.prototype.bindAll(scheduler.$keyboardNavigation.Event.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.TimeSlot = function(from, to, section, movingDate){\r\n\tvar state = scheduler.getState();\r\n\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\r\n\tif(!from){\r\n\t\tfrom = this.getDefaultDate();\r\n\t}\r\n\r\n\tif(!to){\r\n\r\n\t\tif(timeline){\r\n\t\t\tto = scheduler.date.add(from, timeline.x_step, timeline.x_unit);\r\n\t\t}else{\r\n\t\t\tto = scheduler.date.add(from, scheduler.config.key_nav_step, \"minute\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tthis.section = section || this._getDefaultSection();\r\n\tthis.start_date = new Date(from);\r\n\tthis.end_date = new Date(to);\r\n\tthis.movingDate = movingDate || null;\r\n};\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\t_handlers:null,\r\n\r\n\t\tgetDefaultDate: function(){\r\n\t\t\tvar from;\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar visibleTime = new Date(state.date);\r\n\t\t\tvisibleTime.setSeconds(0);\r\n\t\t\tvisibleTime.setMilliseconds(0);\r\n\r\n\t\t\tvar nowTime = new Date();\r\n\t\t\tnowTime.setSeconds(0);\r\n\t\t\tnowTime.setMilliseconds(0);\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[state.mode];\r\n\t\t\tvar showNowTime = false;\r\n\t\t\tif(visibleTime.valueOf() === nowTime.valueOf()){\r\n\t\t\t\tshowNowTime = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(timeline){\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tif(timeline.x_unit === \"day\"){\r\n\t\t\t\t\t\tnowTime.setHours(0);\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}else if(timeline.x_unit === \"hour\"){\r\n\t\t\t\t\t\tnowTime.setMinutes(0);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfrom = scheduler.date[timeline.name + \"_start\"](new Date(state.date));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t}else{\r\n\t\t\t\tfrom = new Date(scheduler.getState().min_date);\r\n\t\t\t\tif(showNowTime){\r\n\t\t\t\t\tfrom = nowTime;\r\n\t\t\t\t}\r\n\t\t\t\tfrom = this.findVisibleColumn(from);\r\n\t\t\t\tif(!showNowTime){\r\n\t\t\t\t\tfrom.setHours(scheduler.config.first_hour);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!scheduler._table_view){\r\n\t\t\t\t\tvar dataContainer = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t\t\t\tif(dataContainer.scrollTop){\r\n\t\t\t\t\t\tfrom.setHours(scheduler.config.first_hour + Math.ceil(dataContainer.scrollTop / scheduler.config.hour_size_px));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn from;\r\n\t\t},\r\n\r\n\t\tclone: function(timeslot){\r\n\t\t\treturn new scheduler.$keyboardNavigation.TimeSlot(timeslot.start_date, timeslot.end_date, timeslot.section, timeslot.movingDate);\r\n\t\t},\r\n\t\t_getMultisectionView: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view;\r\n\t\t\tif(scheduler._props && scheduler._props[state.mode]) {\r\n\t\t\t\tview = scheduler._props[state.mode];\r\n\t\t\t}else if(scheduler.matrix && scheduler.matrix[state.mode]){\r\n\t\t\t\tview = scheduler.matrix[state.mode];\r\n\t\t\t}\r\n\t\t\treturn view;\r\n\t\t},\r\n\r\n\t\t_getDefaultSection: function(){\r\n\t\t\tvar section = null;\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tif(view && !section){\r\n\t\t\t\tsection = this._getNextSection();\r\n\t\t\t}\r\n\t\t\treturn section;\r\n\t\t},\r\n\r\n\t\t_getNextSection: function(sectionId, dir){\r\n\t\t\tvar view = this._getMultisectionView();\r\n\t\t\tvar currentIndex = view.order[sectionId];\r\n\t\t\tvar nextIndex = currentIndex;\r\n\t\t\tif(currentIndex !== undefined){\r\n\t\t\t\tnextIndex = currentIndex + dir;\r\n\t\t\t}else{\r\n\t\t\t\tnextIndex = (view.size && view.position) ? view.position : 0;\r\n\t\t\t}\r\n\r\n\t\t\tif(nextIndex < 0){\r\n\t\t\t\tnextIndex = 0;\r\n\t\t\t}\r\n\t\t\tvar options = view.options || view.y_unit;\r\n\r\n\t\t\tif(nextIndex >= options.length){\r\n\t\t\t\tnextIndex = options.length - 1;\r\n\t\t\t}\r\n\t\t\t//nextIndex = nextIndex < 0 ? nextIndex = (view.options || view.y_unit).length -1 : nextIndex;\r\n\r\n\t\t\tif(options[nextIndex]){\r\n\t\t\t\treturn options[nextIndex].key;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar isInRange = !(this.start_date.valueOf() < state.min_date.valueOf() || this.start_date.valueOf() >= state.max_date.valueOf());\r\n\r\n\t\t\tif(!isInRange) return false;\r\n\r\n\r\n\t\t\tif(!this.isVisible(this.start_date, this.end_date)) return false;\r\n\r\n\t\t\tvar view = this._getMultisectionView();\r\n\r\n\t\t\tif(view){\r\n\t\t\t\treturn (view.order[this.section] !== undefined);\r\n\t\t\t}else{\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfallback:function(){\r\n\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(!defaultSlot.isValid()){\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}else{\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tgetNodes: function(){\r\n\t\t\treturn Array.prototype.slice.call(scheduler.$container.querySelectorAll(\".dhx_focus_slot\"));\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this.getNodes()[0];\r\n\t\t},\r\n\r\n\t\tfocus: function(){\r\n\t\t\tif(this.section && scheduler.getView() && scheduler.getView().smart_rendering && scheduler.getView().scrollTo && !scheduler.$container.querySelector(`[data-section-id=\"${this.section}\"]`)){\r\n\t\t\t\tscheduler.getView().scrollTo({section: this.section});\r\n\t\t\t}\r\n\t\t\tscheduler.$keyboardNavigation.marker.render(this.start_date, this.end_date, this.section);\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation._pasteDate = this.start_date;\r\n\t\t\tscheduler.$keyboardNavigation._pasteSection = this.section;\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t\tscheduler.$keyboardNavigation.marker.clear();\r\n\t\t},\r\n\r\n\t\t_modes: scheduler.$keyboardNavigation.SchedulerNode.prototype._modes,\r\n\r\n\t\t_getMode: scheduler.$keyboardNavigation.SchedulerNode.prototype.getMode,\r\n\r\n\t\taddMonthDate: function(date, dir, extend){\r\n\t\t\tvar res;\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tres = scheduler.date.add(date, -1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tres = scheduler.date.add(date, 1, \"week\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, -1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tres = scheduler.date.day_start(scheduler.date.add(date, 1, \"day\"));\r\n\t\t\t\t\tres = this.findVisibleColumn(res, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tres = scheduler.date.day_start(new Date(date));\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tif(date.valueOf() < state.min_date.valueOf() || (!extend && date.valueOf() >= state.max_date.valueOf())){\r\n\t\t\t\tres = new Date(state.min_date);\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t},\r\n\r\n\t\tnextMonthSlot: function(slot, dir, extend){\r\n\r\n\t\t\tvar start, end;\r\n\t\t\tstart = this.addMonthDate(slot.start_date, dir, extend);\r\n\r\n\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\r\n\t\t_alignTimeSlot: function(date, minDate, unit, step){\r\n\t\t\tvar currentDate = new Date(minDate);\r\n\t\t\twhile(currentDate.valueOf() < date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, step, unit);\r\n\t\t\t}\r\n\r\n\t\t\tif(currentDate.valueOf() > date.valueOf()){\r\n\t\t\t\tcurrentDate = scheduler.date.add(currentDate, -step, unit);\r\n\t\t\t}\r\n\r\n\t\t\treturn currentDate;\r\n\t\t},\r\n\r\n\t\tnextTimelineSlot: function(slot, dir, extend){\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler.matrix[state.mode];\r\n\r\n\t\t\tvar startDate = this._alignTimeSlot(slot.start_date, scheduler.date[view.name + \"_start\"](new Date(slot.start_date)), view.x_unit, view.x_step);\r\n\t\t\tvar endDate = this._alignTimeSlot(slot.end_date, scheduler.date[view.name + \"_start\"](new Date(slot.end_date)), view.x_unit, view.x_step);\r\n\r\n\t\t\tif(endDate.valueOf() <= startDate.valueOf()){\r\n\t\t\t\tendDate = scheduler.date.add(startDate, view.x_step, view.x_unit);\r\n\t\t\t}\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.start_date = startDate;\r\n\t\t\tnewPos.end_date = endDate;\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tnewPos.section = this._getNextSection(slot.section, +1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, -view.x_step, view.x_unit), -1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tnewPos.start_date = this.findVisibleColumn(scheduler.date.add(newPos.start_date, view.x_step, view.x_unit), 1);\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(newPos.start_date.valueOf() < state.min_date.valueOf() || newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tif(extend && newPos.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\t\tnewPos.start_date = new Date(state.max_date);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tnewPos.start_date = scheduler.date[state.mode + \"_start\"](scheduler.date.add(state.date, dir == \"left\" ? -1 : 1, state.mode));\r\n\t\t\t\t\tnewPos.end_date = scheduler.date.add(newPos.start_date, view.x_step, view.x_unit);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\tnextUnitsSlot: function(slot, dir, extend){\r\n\t\t\tvar newPos = this.clone(slot);\r\n\t\t\tnewPos.section = slot.section || this._getNextSection();\r\n\r\n\t\t\tvar section = slot.section || this._getNextSection();\r\n\t\t\tvar state = scheduler.getState();\r\n\t\t\tvar view = scheduler._props[state.mode];\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, -1);\r\n\t\t\t\t\tvar optionsCount = view.size ? (view.size - 1) : view.options.length;\r\n\r\n\t\t\t\t\tif(view.days > 1 && (view.order[section] == optionsCount - 1)){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, -1, \"day\").valueOf() >= state.min_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tsection = this._getNextSection(slot.section, 1);\r\n\t\t\t\t\tif(view.days > 1 && !view.order[section]){\r\n\t\t\t\t\t\tif(scheduler.date.add(slot.start_date, 1, \"day\").valueOf() < state.max_date.valueOf()){\r\n\t\t\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnewPos = this.nextDaySlot(slot, dir, extend);\r\n\t\t\t\t\tsection = slot.section;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnewPos.section = section;\r\n\t\t\treturn newPos;\r\n\t\t},\r\n\r\n\t\t_moveDate: function(oldDate, dir){\r\n\t\t\tvar newDate = this.findVisibleColumn(scheduler.date.add(oldDate, dir, \"day\"), dir);\r\n\t\t\tnewDate.setHours(oldDate.getHours());\r\n\t\t\tnewDate.setMinutes(oldDate.getMinutes());\r\n\t\t\treturn newDate;\r\n\t\t},\r\n\r\n\t\tisBeforeLastHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours < last_hour || (!isStartDate && ((last_hour == 24 || hours == last_hour) && !minutes)));\r\n\t\t},\r\n\t\tisAfterFirstHour: function(date, isStartDate){\r\n\t\t\tvar minutes = date.getMinutes(),\r\n\t\t\t\thours = date.getHours(),\r\n\t\t\t\tfirst_hour = scheduler.config.first_hour,\r\n\t\t\t\tlast_hour = scheduler.config.last_hour;\r\n\t\t\treturn (hours >= first_hour || (!isStartDate && (!minutes && ((!hours && last_hour == 24) || (hours == last_hour)))));\r\n\t\t},\r\n\t\tisInVisibleDayTime: function(date, isStartDate){\r\n\t\t\treturn (this.isBeforeLastHour(date, isStartDate) && this.isAfterFirstHour(date, isStartDate));\r\n\t\t},\r\n\r\n\t\tnextDaySlot: function(slot, dir, extend){\r\n\t\t\tvar start, end;\r\n\r\n\t\t\tvar key_nav_step = scheduler.config.key_nav_step;\r\n\r\n\t\t\tvar date = this._alignTimeSlot(slot.start_date, scheduler.date.day_start(new Date(slot.start_date)), \"minute\", key_nav_step);\r\n\r\n\r\n\t\t\tvar oldStart = slot.start_date;\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, -key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(start, true)){\r\n\t\t\t\t\t\tif (!extend || this.isInVisibleDayTime(oldStart, true)) {\r\n\r\n\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\tif(extend && scheduler.date.date_part(new Date(start)).valueOf() != scheduler.date.date_part(new Date(oldStart)).valueOf())\r\n\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\tif(toNextDay)\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, -1, \"day\"), -1);\r\n\r\n\t\t\t\t\t\t\tstart.setHours(scheduler.config.last_hour);\r\n\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\tstart = scheduler.date.add(start, -key_nav_step, \"minute\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\t\tstart = scheduler.date.add(date, key_nav_step, \"minute\");\r\n\r\n\t\t\t\t\tvar testEnd = extend ? start : scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tif(!this.isInVisibleDayTime(testEnd, false)){\r\n\t\t\t\t\t\tif(!extend || this.isInVisibleDayTime(oldStart, false)) {\r\n\t\t\t\t\t\t\tif (!extend) {\r\n\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar toNextDay = true;\r\n\t\t\t\t\t\t\t\tif (scheduler.date.date_part(new Date(oldStart)).valueOf() == oldStart.valueOf()) {\r\n\t\t\t\t\t\t\t\t\ttoNextDay = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tif (toNextDay) {\r\n\t\t\t\t\t\t\t\t\tstart = this.findVisibleColumn(scheduler.date.add(slot.start_date, 1, \"day\"), 1);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tstart.setHours(scheduler.config.first_hour);\r\n\t\t\t\t\t\t\t\tstart.setMinutes(0);\r\n\t\t\t\t\t\t\t\tstart = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, -1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = this._moveDate(slot.start_date, 1);\r\n\t\t\t\t\tend = this._moveDate(slot.end_date, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = date;\r\n\t\t\t\t\tend = scheduler.date.add(start, key_nav_step, \"minute\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextWeekAgendaSlot: function(slot, dir){\r\n\t\t\tvar start, end;\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tswitch (dir){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"left\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, -1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, -1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\tcase \"right\":\r\n\t\t\t\t\tstart = scheduler.date.day_start(scheduler.date.add(slot.start_date, 1, \"day\"));\r\n\t\t\t\t\tstart = this.findVisibleColumn(start, 1);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tstart = scheduler.date.day_start(slot.start_date);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tstart = new Date(state.min_date);\r\n\r\n\t\t\t}\r\n\t\t\tend = new Date(start);\r\n\t\t\tend.setHours(scheduler.config.last_hour);\r\n\t\t\treturn {start_date: start, end_date: end};\r\n\t\t},\r\n\t\tnextAgendaSlot: function(slot, dir){\r\n\t\t\treturn {start_date: slot.start_date, end_date: slot.end_date};\r\n\t\t},\r\n\r\n\r\n\t\tisDateVisible: function(date){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar index;\r\n\t\t\tif(timeline){\r\n\t\t\t\tindex = scheduler._get_date_index(timeline, date);\r\n\t\t\t}else{\r\n\t\t\t\tindex = scheduler.locate_holder_day(date);\r\n\t\t\t}\r\n\r\n\t\t\treturn !scheduler._ignores[index];\r\n\t\t},\r\n\r\n\t\tfindVisibleColumn: function(start, dir){\r\n\t\t\tvar date = start;\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar range = scheduler.getState();\r\n\r\n\t\t\twhile(!this.isDateVisible(date) && ((dir > 0 && date.valueOf() <= range.max_date.valueOf()) || (dir < 0 && date.valueOf() >= range.min_date.valueOf()))){\r\n\t\t\t\tdate = this.nextDateColumn(date, dir);\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tnextDateColumn: function(start, dir){\r\n\t\t\tdir = dir || 1;\r\n\t\t\tvar timeline = scheduler.matrix && scheduler.matrix[scheduler.getState().mode];\r\n\r\n\t\t\tvar date;\r\n\t\t\tif(timeline){\r\n\t\t\t\tdate = scheduler.date.add(start, dir * timeline.x_step, timeline.x_unit);\r\n\t\t\t}else{\r\n\t\t\t\tdate = scheduler.date.day_start(scheduler.date.add(start, dir, \"day\"));\r\n\t\t\t}\r\n\r\n\t\t\treturn date;\r\n\t\t},\r\n\r\n\t\tisVisible:function(from, to){\r\n\t\t\tif(!scheduler._ignores_detected)\r\n\t\t\t\treturn true;\r\n\r\n\t\t\tvar current = new Date(from);\r\n\r\n\t\t\twhile(current.valueOf() < to.valueOf()){\r\n\t\t\t\tif(this.isDateVisible(current)) return true;\r\n\t\t\t\tcurrent = this.nextDateColumn(current);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t},\r\n\r\n\t\tnextSlot: function(slot, dir, view, extend){\r\n\t\t\tvar next;\r\n\t\t\tview = view || this._getMode();\r\n\r\n\t\t\tvar tempSlot = scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tnext = this.nextUnitsSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tnext = this.nextTimelineSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.nextMonthSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.nextWeekAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.list:\r\n\t\t\t\t\tnext = this.nextAgendaSlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.nextDaySlot(tempSlot, dir, extend);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif(next.start_date.valueOf() >= next.end_date.valueOf()){\r\n\t\t\t\tnext = this.nextSlot(next, dir, view);\r\n\t\t\t}\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\r\n\t\t},\r\n\r\n\t\textendSlot: function(slot, dir){\r\n\t\t\tvar view = this._getMode();\r\n\t\t\tvar next;\r\n\t\t\tswitch (view){\r\n\t\t\t\tcase this._modes.units:\r\n\t\t\t\t\tif(dir == \"left\" || dir == \"right\"){\r\n\t\t\t\t\t\tnext = this.nextUnitsSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendUnitsSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.timeline:\r\n\t\t\t\t\tif(dir == \"down\" || dir == \"up\"){\r\n\t\t\t\t\t\tnext = this.nextTimelineSlot(slot, dir);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnext = this.extendTimelineSlot(slot, dir);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.year:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.month:\r\n\t\t\t\t\tnext = this.extendMonthSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.dayColumns:\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase this._modes.weekAgenda:\r\n\t\t\t\t\tnext = this.extendWeekAgendaSlot(slot, dir);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tvar range = scheduler.getState();\r\n\t\t\tif(next.start_date.valueOf() < range.min_date.valueOf()){\r\n\t\t\t\tnext.start_date = this.findVisibleColumn(range.min_date);\r\n\t\t\t\tnext.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\t}\r\n\r\n\t\t\tif(next.end_date.valueOf() > range.max_date.valueOf()){\r\n\t\t\t//\tnext.end_date = new Date(slot.end_date);\r\n\t\t\t\tnext.end_date = this.findVisibleColumn(range.max_date, -1);\r\n\t\t\t}\r\n\r\n\r\n\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(next);\r\n\t\t},\r\n\r\n\t\textendTimelineSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"timeline\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendWeekAgendaSlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"weekAgenda\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\textendGenericSlot: function(allowedDirections, slot, direction, type){\r\n\t\t\tvar next;\r\n\t\t\tvar moveDate = slot.movingDate;\r\n\r\n\t\t\tif(!moveDate){\r\n\t\t\t\tmoveDate = allowedDirections[direction];\r\n\t\t\t}\r\n\r\n\t\t\tif(!moveDate || !allowedDirections[direction]){\r\n\t\t\t\treturn slot;\r\n\t\t\t}\r\n\r\n\t\t\tif(direction){\r\n\t\t\t\tnext = this.nextSlot({start_date: slot[moveDate], section: slot.section}, direction, type, true);\r\n\r\n\t\t\t\tif(next.start_date.valueOf() == slot.start_date.valueOf()){\r\n\t\t\t\t\tnext = this.nextSlot({start_date: next.start_date, section:next.section}, direction, type, true);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnext.movingDate = moveDate;\r\n\t\t\t}else{\r\n\t\t\t\treturn scheduler.$keyboardNavigation.TimeSlot.prototype.clone(slot);\r\n\t\t\t}\r\n\r\n\t\t\tvar newDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tif(newDates.end_date.valueOf() <= newDates.start_date.valueOf()){\r\n\t\t\t\tnext.movingDate = next.movingDate == \"end_date\" ? \"start_date\" : \"end_date\";\r\n\t\t\t}\r\n\t\t\tnewDates = this.extendSlotDates(slot, next, next.movingDate);\r\n\r\n\t\t\tnext.start_date = newDates.start_date;\r\n\t\t\tnext.end_date = newDates.end_date;\r\n\t\t\treturn next;\r\n\t\t},\r\n\r\n\t\textendSlotDates: function(oldSlot, newSlot, dateDirection){\r\n\t\t\tvar res = {start_date:null, end_date:null};\r\n\r\n\t\t\tif(dateDirection == \"start_date\"){\r\n\t\t\t\tres.start_date = newSlot.start_date;\r\n\t\t\t\tres.end_date = oldSlot.end_date;\r\n\t\t\t}else{\r\n\t\t\t\tres.start_date = oldSlot.start_date;\r\n\t\t\t\tres.end_date = newSlot.start_date;\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\r\n\t\t},\r\n\r\n\t\textendMonthSlot: function(slot, direction){\r\n\t\t\tvar slot = this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"month\"\r\n\t\t\t);\r\n\r\n\t\t\tslot.start_date.setHours(scheduler.config.first_hour);\r\n\t\t\tslot.end_date = scheduler.date.add(slot.end_date, -1, \"day\");\r\n\t\t\tslot.end_date.setHours(scheduler.config.last_hour);\r\n\t\t\treturn slot;\r\n\t\t},\r\n\r\n\t\textendUnitsSlot: function(slot, direction){\r\n\t\t\tvar next;\r\n\r\n\t\t\tswitch (direction){\r\n\t\t\t\tcase \"down\":\r\n\t\t\t\tcase \"up\":\r\n\t\t\t\t\tnext = this.extendDaySlot(slot, direction);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tnext = slot;\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tnext.section = slot.section;\r\n\t\t\treturn next;\r\n\t\t},\r\n\t\textendDaySlot: function(slot, direction){\r\n\t\t\treturn this.extendGenericSlot({\r\n\t\t\t\t\t\"up\":\"start_date\",\r\n\t\t\t\t\t\"down\":\"end_date\",\r\n\t\t\t\t\t\"left\":\"start_date\",\r\n\t\t\t\t\t\"right\":\"end_date\"\r\n\t\t\t\t},\r\n\t\t\t\tslot,\r\n\t\t\t\tdirection,\r\n\t\t\t\t\"dayColumns\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tscrollSlot: function(dir){\r\n\t\t\tvar state = scheduler.getState();\r\n\r\n\t\t\tvar slot = this.nextSlot(this, dir);\r\n\t\t\tif(slot.start_date.valueOf() < state.min_date.valueOf() || slot.start_date.valueOf() >= state.max_date.valueOf()){\r\n\t\t\t\tscheduler.setCurrentView(new Date(slot.start_date));\r\n\t\t\t}\r\n\r\n\t\t\tthis.moveTo(slot);\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"left\": function(){\r\n\t\t\t\tthis.scrollSlot(\"left\");\r\n\t\t\t},\r\n\t\t\t\"right\": function () {\r\n\t\t\t\tthis.scrollSlot(\"right\");\r\n\t\t\t},\r\n\t\t\t\"down\": function () {\r\n\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.nextEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"down\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"up\": function () {\r\n\t\t\t\tvar mode = this._getMode();\r\n\t\t\t\tif(mode == this._modes.list){\r\n\t\t\t\t\tscheduler.$keyboardNavigation.SchedulerNode.prototype.prevEventHandler();\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.scrollSlot(\"up\");\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\"shift+down\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"down\"));\r\n\t\t\t},\r\n\t\t\t\"shift+up\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"up\"));\r\n\t\t\t},\r\n\t\t\t\"shift+right\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"right\"));\r\n\t\t\t},\r\n\t\t\t\"shift+left\":function(){\r\n\t\t\t\tthis.moveTo(this.extendSlot(this, \"left\"));\r\n\t\t\t},\r\n\r\n\r\n\t\t\t\"enter\": function(){\r\n\t\t\t\tvar obj = {start_date: new Date(this.start_date), end_date: new Date(this.end_date)};\r\n\r\n\t\t\t\tvar mode = scheduler.getState().mode;\r\n\t\t\t\tif(scheduler.matrix && scheduler.matrix[mode]){\r\n\r\n\t\t\t\t\tvar timeline = scheduler.matrix[scheduler.getState().mode];\r\n\t\t\t\t\tobj[timeline.y_property] = this.section;\r\n\t\t\t\t}else if(scheduler._props && scheduler._props[mode]){\r\n\t\t\t\t\tvar unit = scheduler._props[mode];\r\n\t\t\t\t\tobj[unit.map_to] = this.section;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscheduler.addEventNow(obj);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.TimeSlot.prototype.bindAll(scheduler.$keyboardNavigation.TimeSlot.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalButton = function(div, index){\r\n\tthis.container = div;\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar container = this.container;\r\n\t\t\treturn !!container.offsetWidth;// valid if container is visible\r\n\t\t},\r\n\r\n\t\tfallback: function(){\r\n\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\treturn defaultSlot;\r\n\t\t\t}else{\r\n\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t}\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\tif(!this.index){\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_prev_button\");\r\n\t\t\t}else{\r\n\t\t\t\treturn this.container.querySelector(\".dhx_cal_next_button\");\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, this.index ? 0 : 1));\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, 0, 0);\r\n\t\t\t\tif(next && !next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalButton.prototype.bindAll(scheduler.$keyboardNavigation.MinicalButton.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.MinicalCell = function(div, row, col){\r\n\tthis.container = div;\r\n\tthis.row = row || 0;\r\n\tthis.col = col || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\r\n\t\tisValid: function(){\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\treturn !!(grid[this.row] && grid[this.row][this.col]);\r\n\t\t},\r\n\t\tfallback: function(){\r\n\t\t\tvar row = this.row;\r\n\t\t\tvar col = this.col;\r\n\t\t\tvar grid = this._getGrid();\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\trow = 0;\r\n\t\t\t}\r\n\t\t\tvar dir = true;\r\n\t\t\tif(row > grid.length / 2){\r\n\t\t\t\tdir = false;\r\n\t\t\t}\r\n\r\n\t\t\tif(!grid[row]){\r\n\t\t\t\tvar defaultSlot = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t\tif(defaultSlot.isValid()){\r\n\t\t\t\t\treturn defaultSlot;\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn new scheduler.$keyboardNavigation.DataArea();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(dir){\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c++){\r\n\t\t\t\t\tif(!grid[row][c] && c == grid[row].length - 1){\r\n\t\t\t\t\t\trow++;\r\n\t\t\t\t\t\tcol = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tfor(var c = col; grid[row] && c < grid[row].length; c--){\r\n\t\t\t\t\tif(!grid[row][c] && !c){\r\n\t\t\t\t\t\trow--;\r\n\t\t\t\t\t\tcol = grid[row].length - 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(grid[row][c]){\r\n\t\t\t\t\t\treturn new scheduler.$keyboardNavigation.MinicalCell(this.container, row, c);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn new scheduler.$keyboardNavigation.MinicalButton(this.container, 0);\r\n\t\t},\r\n\t\tfocus: function(){\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.globalNode.disable();\r\n\r\n\t\t\tthis.container.removeAttribute(\"tabindex\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.focus.apply(this);\r\n\t\t},\r\n\t\tblur: function(){\r\n\t\t\tthis.container.setAttribute(\"tabindex\", \"0\");\r\n\t\t\tscheduler.$keyboardNavigation.KeyNavNode.prototype.blur.apply(this);\r\n\t\t},\r\n\t\t_getNode: function(row, col){\r\n\t\t\treturn this.container.querySelector(\".dhx_year_body tr:nth-child(\"+(row + 1) + \") td:nth-child(\"+(col + 1)+\")\");\r\n\t\t},\r\n\t\tgetNode: function(){\r\n\t\t\treturn this._getNode(this.row, this.col);\r\n\t\t},\r\n\r\n\t\t_getGrid: function(){\r\n\t\t\tvar rows = this.container.querySelectorAll(\".dhx_year_body tr\");\r\n\t\t\tvar grid = [];\r\n\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\tgrid[i] = [];\r\n\t\t\t\tvar row = rows[i];\r\n\t\t\t\tvar cells = row.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var c = 0; c < cells.length; c++){\r\n\t\t\t\t\tvar cell = cells[c];\r\n\t\t\t\t\tvar enabled = true;\r\n\t\t\t\t\tvar css = scheduler._getClassName(cell);\r\n\t\t\t\t\tif(css.indexOf(\"dhx_after\") > -1 || css.indexOf(\"dhx_before\") > -1 || css.indexOf(\"dhx_scale_ignore\") > -1){\r\n\t\t\t\t\t\tenabled = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgrid[i][c] = enabled;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn grid;\r\n\t\t},\r\n\r\n\r\n\t\tkeys: {\r\n\t\t\t\"right\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col + 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow + 1]){\r\n\t\t\t\t\t\tnewRow = newRow + 1;\r\n\t\t\t\t\t\tnewCol = 0;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"left\": function(e){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row;\r\n\t\t\t\tvar newCol = this.col - 1;\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tif(grid[newRow - 1]){\r\n\t\t\t\t\t\tnewRow = newRow - 1;\r\n\t\t\t\t\t\tnewCol = grid[newRow].length - 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tnewCol = this.col;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"down\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row + 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tnewRow = this.row;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.moveTo(next);\r\n\t\t\t},\r\n\t\t\t\"up\": function(){\r\n\t\t\t\tvar grid = this._getGrid();\r\n\t\t\t\tvar newRow = this.row - 1;\r\n\t\t\t\tvar newCol = this.col;\r\n\r\n\t\t\t\tif(!grid[newRow] || !grid[newRow][newCol]){\r\n\t\t\t\t\tvar index = 0;\r\n\t\t\t\t\tif(this.col > grid[this.row].length / 2){\r\n\t\t\t\t\t\tindex = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.MinicalButton(this.container, index));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar next = new scheduler.$keyboardNavigation.MinicalCell(this.container, newRow, newCol);\r\n\t\t\t\t\tif(!next.isValid()){\r\n\t\t\t\t\t\tnext = next.fallback();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.moveTo(next);\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\t\"enter\": function(e){\r\n\t\t\t\tthis.getNode().querySelector(\".dhx_month_head\").click();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.MinicalCell.prototype.bindAll(scheduler.$keyboardNavigation.MinicalCell.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.DataArea = function(index){\r\n\tthis.index = index || 0;\r\n};\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype = scheduler._compose(\r\n\tscheduler.$keyboardNavigation.KeyNavNode,\r\n\t{\r\n\t\tgetNode: function(index){\r\n\t\t\treturn scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t},\r\n\r\n\t\t_handlers:null,\r\n\r\n\t\tisValid: function(){\r\n\t\t\treturn true;\r\n\t\t},\r\n\t\tfallback:function(){\r\n\t\t\treturn this;\r\n\t\t},\r\n\r\n\t\tkeys: {\r\n\t\t\t\"up,down,right,left\":function(){\r\n\t\t\t\tthis.moveTo(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n);\r\n\r\nscheduler.$keyboardNavigation.DataArea.prototype.bindAll(scheduler.$keyboardNavigation.DataArea.prototype.keys);\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\r\n(function(){\r\n\tvar modalsStack = [];\r\n\r\n\tfunction isModal(){\r\n\t\treturn !!(modalsStack.length);\r\n\t}\r\n\r\n\tfunction isChildOf(child, parent){\r\n\t\twhile(child && child != parent){\r\n\t\t\tchild = child.parentNode;\r\n\t\t}\r\n\r\n\t\treturn !!(child == parent);\r\n\t}\r\n\r\n\tfunction afterPopup(box){\r\n\t\tsetTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!isModal() && !(isChildOf(document.activeElement, scheduler.$container))) {\r\n\t\t\t\tscheduler.focus();\r\n\t\t\t}\r\n\t\t}, 1);\r\n\t}\r\n\tfunction startModal(box){\r\n\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\tmodalsStack.push(box);\r\n\t\t//scheduler.$keyboardNavigation.dispatcher.disable();\r\n\t}\r\n\r\n\tfunction endModal(){\r\n\t\tvar box = modalsStack.pop();\r\n\t\tif(box) {\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t}\r\n\t\tafterPopup(box);\r\n\r\n\t}\r\n\r\n\tfunction isTopModal(box){\r\n\t//\tif(dhtmlx._modalsStack.length){\r\n\t//\t\treturn box == dhtmlx._modalsStack[dhtmlx._modalsStack.length - 1];\r\n\t//\t}else{\r\n\t\t\treturn box == modalsStack[modalsStack.length - 1];\r\n\t//\t}\r\n\r\n\t}\r\n\r\n\tfunction trapFocus(event){\r\n\t\tvar event = event || window.event;\r\n\t\tvar target = event.currentTarget;\r\n\t\tif(!isTopModal(target)) return;\r\n\r\n\t\tscheduler.$keyboardNavigation.trapFocus(target, event);\r\n\t}\r\n\r\n\tfunction traceLightbox(){\r\n\t\tstartModal(scheduler.getLightbox());\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", traceLightbox);\r\n\tscheduler.attachEvent(\"onAfterLightbox\", endModal);\r\n\r\n\tscheduler.attachEvent(\"onAfterQuickInfo\", function(){afterPopup();});\r\n\r\n\tif(!scheduler._keyNavMessagePopup) {\r\n\t\tscheduler._keyNavMessagePopup = true;\r\n\r\n\t\tvar focusElement = null;\r\n\t\tvar backupFocus = null;\r\n\t\tconst modalsStack = [];\r\n\t\tscheduler.attachEvent(\"onMessagePopup\", function(box){\r\n\t\t\tfocusElement = document.activeElement;\r\n\t\t\tbackupFocus = focusElement;\r\n\r\n\t\t\twhile(backupFocus && scheduler._getClassName(backupFocus).indexOf(\"dhx_cal_data\") < 0){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\t\t\tif(backupFocus){\r\n\t\t\t\tbackupFocus = backupFocus.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\tscheduler.event(box, \"keydown\", trapFocus);\r\n\t\t\tmodalsStack.push(box);\r\n\t\t});\r\n\r\n\r\n\t\tscheduler.attachEvent(\"onAfterMessagePopup\", function () {\r\n\t\t\tvar box = modalsStack.pop();\r\n\t\t\tif(box) {\r\n\t\t\t\tscheduler.eventRemove(box, \"keydown\", trapFocus);\r\n\t\t\t}\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tvar currentTarget = document.activeElement;\r\n\t\t\t\twhile(currentTarget && scheduler._getClassName(currentTarget).indexOf(\"dhx_cal_light\") < 0){\r\n\t\t\t\t\tcurrentTarget = currentTarget.parentNode;\r\n\t\t\t\t}\r\n\t\t\t\tif(currentTarget)\r\n\t\t\t\t\treturn;\r\n\r\n\r\n\t\t\t\tif(focusElement && focusElement.parentNode){\r\n\t\t\t\t\tfocusElement.focus();\r\n\r\n\t\t\t\t}else if(backupFocus && backupFocus.parentNode){\r\n\t\t\t\t\tbackupFocus.focus();\r\n\t\t\t\t}\r\n\t\t\t\tfocusElement = null;\r\n\t\t\t\tbackupFocus = null;\r\n\r\n\t\t\t}, 1);\r\n\t\t});\r\n\t}\r\n\r\n\tscheduler.$keyboardNavigation.isModal = isModal;\r\n\r\n\r\n})();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.dispatcher = {\r\n\tisActive: false,\r\n\tactiveNode: null,\r\n\tglobalNode: new scheduler.$keyboardNavigation.SchedulerNode(),\r\n\r\n\tkeepScrollPosition: function (callback) {\r\n\t\tvar top, left;\r\n\r\n\t\tvar scrollable = scheduler.$container.querySelector(\".dhx_timeline_scrollable_data\");\r\n\t\tif(!scrollable){\r\n\t\t\tscrollable = scheduler.$container.querySelector(\".dhx_cal_data\");\r\n\t\t}\r\n\r\n\t\tif(scrollable){\r\n\t\t\ttop = scrollable.scrollTop;\r\n\t\t\tleft = scrollable.scrollLeft;\r\n\t\t}\r\n\r\n\t\tcallback();\r\n\r\n\t\tif(scrollable){\r\n\t\t\tscrollable.scrollTop = top;\r\n\t\t\tscrollable.scrollLeft = left;\r\n\t\t}\r\n\t},\r\n\tenable: function(){\r\n\t\tif(!scheduler.$container){\r\n\t\t\t// do nothing if not initialized\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.isActive = true;\r\n\t\tvar self = this;\r\n\t\tthis.keepScrollPosition(function () {\r\n\t\t\tself.globalNode.enable();\r\n\t\t\tself.setActiveNode(self.getActiveNode());\r\n\t\t});\r\n\t},\r\n\r\n\tdisable: function(){\r\n\t\tthis.isActive = false;\r\n\t\tthis.globalNode.disable();\r\n\t},\r\n\r\n\tisEnabled: function(){\r\n\t\treturn !!this.isActive;\r\n\t},\r\n\r\n\tgetDefaultNode: function(){\r\n\t\treturn this.globalNode.getDefaultNode();\r\n\t},\r\n\r\n\tsetDefaultNode: function() {\r\n\t\tthis.setActiveNode(this.getDefaultNode());\r\n\t},\r\n\r\n\tgetActiveNode: function(){\r\n\t\tvar node = this.activeNode;\r\n\t\tif(node && !node.isValid()){\r\n\t\t\tnode = node.fallback();\r\n\t\t}\r\n\t\treturn node;\r\n\t},\r\n\r\n\tfocusGlobalNode: function(){\r\n\t\tthis.blurNode(this.globalNode);\r\n\t\tthis.focusNode(this.globalNode);\r\n\t},\r\n\r\n\tsetActiveNode: function(el){\r\n\t\tif(!el || !el.isValid())\r\n\t\t\treturn;\r\n\r\n\t\tif(this.activeNode){\r\n\t\t\tif(this.activeNode.compareTo(el)){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(this.isEnabled()){\r\n\t\t\tthis.blurNode(this.activeNode);\r\n\t\t\tthis.activeNode = el;\r\n\t\t\tthis.focusNode(this.activeNode);\r\n\t\t}\r\n\t},\r\n\r\n\tfocusNode: function(el){\r\n\t\tif(el && el.focus){\r\n\t\t\tel.focus();\r\n\t\t\tif(el.getNode && document.activeElement != el.getNode()){\r\n\t\t\t\tthis.setActiveNode(new scheduler.$keyboardNavigation.DataArea());\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\tblurNode: function(el){\r\n\t\tif(el && el.blur){\r\n\t\t\tel.blur();\r\n\t\t}\r\n\t},\r\n\r\n\tgetInlineEditor: function(id){\r\n\t\tvar editor = scheduler.$container.querySelector(\".dhx_cal_editor[\"+scheduler.config.event_attribute+\"='\"+id+\"'] textarea\");\r\n\t\tif(editor && editor.offsetWidth){\r\n\t\t\t// if exists and visible\r\n\t\t\treturn editor;\r\n\t\t}\r\n\t\treturn null;\r\n\t},\r\n\r\n\tkeyDownHandler: function (e) {\r\n\r\n\t\tif(e.defaultPrevented){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar activeElement = this.getActiveNode();\r\n\r\n\t\tif(scheduler.$keyboardNavigation.isModal() &&\r\n\t\t\t!(activeElement && activeElement.container && scheduler.utils.dom.locateCss({target:activeElement.container}, \"dhx_minical_popup\", false)))\r\n\t\t\treturn;\r\n\r\n\t\tif(scheduler.getState().editor_id && this.getInlineEditor(scheduler.getState().editor_id))\r\n\t\t\treturn;\r\n\r\n\t\tif (!this.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\te = e || window.event;\r\n\r\n\t\tvar schedulerNode = this.globalNode;\r\n\r\n\t\tvar command = scheduler.$keyboardNavigation.shortcuts.getCommandFromEvent(e);\r\n\r\n\t\tif(!activeElement){\r\n\t\t\tthis.setDefaultNode();\r\n\t\t}else if(activeElement.findHandler(command)){\r\n\t\t\tactiveElement.doAction(command, e);\r\n\t\t}else if(schedulerNode.findHandler(command)){\r\n\t\t\tschedulerNode.doAction(command, e);\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_timeout: null,\r\n\tdelay: function(callback, delay){\r\n\r\n\t\tclearTimeout(this._timeout);\r\n\t\tthis._timeout = setTimeout(callback, delay || 1);\r\n\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n//Initial idea and implementation by Steve MC\r\nscheduler._temp_key_scope = function (){\r\n\r\n\tscheduler.config.key_nav = true;\r\n\r\n\tscheduler.$keyboardNavigation._pasteDate = null; // used for copy and paste operations\r\n\tscheduler.$keyboardNavigation._pasteSection = null; // used for copy and paste operations\r\n\tvar isCopy = null;\r\n\r\n\tvar pos = {};\r\n\r\n\tif(!document.body){\r\n\t\tscheduler.event(window, \"load\", function(){\r\n\t\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t\t});\r\n\t}else{\r\n\t\tscheduler.event(document.body, \"mousemove\", trackMousePosition);\r\n\t}\r\n\r\n\tfunction trackMousePosition(event){\r\n\t\tevent = event || window.event;\r\n\t\tpos.x = event.clientX;\r\n\t\tpos.y = event.clientY;\r\n\t}\r\n\tfunction currentTarget(){\r\n\r\n\t\tvar mousePointer = false;\r\n\t\tvar keyNavPointer = false;\r\n\r\n\t\tvar target = document.elementFromPoint(pos.x, pos.y);\r\n\t\twhile(target && target != scheduler._obj){\r\n\t\t\ttarget = target.parentNode;\r\n\t\t}\r\n\t\tmousePointer = !!(target == scheduler._obj);\r\n\r\n\t\tkeyNavPointer = scheduler.$keyboardNavigation.dispatcher.isEnabled();\r\n\r\n\t\treturn mousePointer || keyNavPointer;\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onMouseMove\", function(id,e){\r\n\t\tvar state = scheduler.getState();\r\n\r\n\t\t// make sure scheduler is fully initialized before calling scheduler.getActionData\r\n\t\tif(!(state.mode && state.min_date)){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar position = scheduler.getActionData(e);\r\n\t\tscheduler.$keyboardNavigation._pasteDate = position.date;\r\n\t\tscheduler.$keyboardNavigation._pasteSection = position.section;\r\n\t});\r\n\r\n\tfunction clear_event_after(ev){\r\n\t\tdelete ev.rec_type; delete ev.rec_pattern;\r\n\t\tdelete ev.event_pid; delete ev.event_length;\r\n\t}\r\n\r\n\tfunction copyEvent(ev){\r\n\t\treturn scheduler._lame_copy({}, ev);\r\n\t}\r\n\r\n\tscheduler._make_pasted_event = function(ev){\r\n\t\tvar date = scheduler.$keyboardNavigation._pasteDate;\r\n\t\tvar section = scheduler.$keyboardNavigation._pasteSection;\r\n\r\n\t\tvar event_duration = ev.end_date-ev.start_date;\r\n\r\n\t\tvar copy = copyEvent(ev);\r\n\t\tclear_event_after(copy);\r\n\t\tcopy.start_date = new Date(date);\r\n\t\tcopy.end_date = new Date(copy.start_date.valueOf() + event_duration);\r\n\r\n\t\tif(section){\r\n\t\t\tvar property = scheduler._get_section_property();\r\n\r\n\t\t\tif(scheduler.config.multisection)\r\n\t\t\t\tcopy[property] = ev[property]; // save initial set of resources for multisection view\r\n\t\t\telse\r\n\t\t\t\tcopy[property] = section;\r\n\t\t}\r\n\t\treturn copy;\r\n\t};\r\n\tscheduler._do_paste = function(is_copy, modified_ev, original_ev){\r\n\t\tif(scheduler.callEvent(\"onBeforeEventPasted\", [is_copy, modified_ev, original_ev]) === false){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tscheduler.addEvent(modified_ev);\r\n\t\tscheduler.callEvent(\"onEventPasted\", [is_copy, modified_ev, original_ev]);\r\n\t};\r\n\r\n\tscheduler._is_key_nav_active = function(){\r\n\t\tif(this._is_initialized() && !this._is_lightbox_open() && this.config.key_nav){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t};\r\n\r\n\tfunction getSelectedEvent(){\r\n\t\tvar node = scheduler.$keyboardNavigation.dispatcher.getActiveNode();\r\n\t\tif(node && node.eventId) return node.eventId;\r\n\t\treturn scheduler._select_id;\r\n\t}\r\n\r\n\tscheduler.event(document, \"keydown\", function(e){\r\n\t\t// compatibility fix - scheduler focus on ctrl+v on mouse hover\r\n\t\tif(((e.ctrlKey || e.metaKey) && e.keyCode == 86) && scheduler._buffer_event && !scheduler.$keyboardNavigation.dispatcher.isEnabled()) {\r\n\t\t\tscheduler.$keyboardNavigation.dispatcher.isActive = currentTarget();\r\n\t\t}\r\n\t});\r\n\r\n\tscheduler._key_nav_copy_paste = function(e){\r\n\t\tif(!scheduler._is_key_nav_active()) return true;\r\n\r\n\t\tif (e.keyCode == 37 || e.keyCode == 39) { // Left, Right arrows\r\n\t\t\te.cancelBubble = true;\r\n\r\n\t\t\tvar next = scheduler.date.add(scheduler._date,(e.keyCode == 37 ? -1 : 1 ),scheduler._mode);\r\n\t\t\tscheduler.setCurrentView(next);\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tvar select_id = getSelectedEvent();\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 67) { // CTRL+C\r\n\t\t\tif (select_id) {\r\n\t\t\t\tscheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\t\t\t\tisCopy = true;\r\n\t\t\t\tscheduler.callEvent(\"onEventCopied\", [scheduler.getEvent(select_id)]);\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 88) { // CTRL+X\r\n\t\t\tif (select_id) {\r\n\t\t\t\tisCopy = false;\r\n\t\t\t\tvar ev = scheduler._buffer_event = copyEvent(scheduler.getEvent(select_id));\r\n\r\n\t\t\t\tscheduler.updateEvent(ev.id);\r\n\t\t\t\tscheduler.callEvent(\"onEventCut\", [ev]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ((e.ctrlKey || e.metaKey) && e.keyCode == 86 && currentTarget(e)) { // CTRL+V\r\n\t\t\tvar ev = scheduler._buffer_event ? scheduler.getEvent(scheduler._buffer_event.id) : scheduler._buffer_event;\r\n\t\t\tev = ev || scheduler._buffer_event;\r\n\r\n\t\t\tif (ev) {\r\n\t\t\t\tvar new_ev = scheduler._make_pasted_event(ev);\r\n\t\t\t\tif (isCopy) {\r\n\t\t\t\t\tnew_ev.id = scheduler.uid();\r\n\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t}\r\n\t\t\t\telse { // cut operation\r\n\t\t\t\t\tvar res = scheduler.callEvent(\"onBeforeEventChanged\",[new_ev, e, false, ev]);\r\n\t\t\t\t\tif (res) {\r\n\t\t\t\t\t\tscheduler._do_paste(isCopy, new_ev, ev);\r\n\t\t\t\t\t\tisCopy = true; // switch to copy after first paste operation\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}\r\n\t};\r\n};\r\nscheduler._temp_key_scope();\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation.attachSchedulerHandlers = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tvar keyDownHandler = function(e){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\treturn dispatcher.keyDownHandler(e);\r\n\t};\r\n\r\n\tvar focusHandler = function () {\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tdispatcher.focusGlobalNode();\r\n\t\t});\r\n\t};\r\n\r\n\tvar waitCall;\r\n\tscheduler.attachEvent(\"onDataRender\", function(){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!(dispatcher.isEnabled() && !scheduler.getState().editor_id)) return;\r\n\r\n\t\tclearTimeout(waitCall);\r\n\t\twaitCall = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tif(!dispatcher.isEnabled())\r\n\t\t\t\tdispatcher.enable();\r\n\t\t\treFocusActiveNode();\r\n\t\t});\r\n\t});\r\n\r\n\tvar reFocusActiveNode = function(){\r\n\t\tif(!dispatcher.isEnabled())\r\n\t\t\treturn;\r\n\r\n\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\tif(!activeNode)\r\n\t\t\treturn;\r\n\r\n\t\tif(!activeNode.isValid()){\r\n\t\t\tactiveNode = activeNode.fallback();\r\n\t\t}\r\n\r\n\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell)\r\n\t\t\treturn;\r\n\r\n\t\tdispatcher.keepScrollPosition(function () {\r\n\t\t\tactiveNode.focus(true);\r\n\t\t});\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\tvar container = scheduler.$container;\r\n\t\tscheduler.eventRemove(document, \"keydown\", keyDownHandler);\r\n\t\tscheduler.eventRemove(container, \"mousedown\", mousedownHandler);\r\n\t\tscheduler.eventRemove(container, \"focus\", focusHandler);\r\n\r\n\r\n\t\tif(scheduler.config.key_nav){\r\n\r\n\t\t\tscheduler.event(document, \"keydown\", keyDownHandler);\r\n\t\t\tscheduler.event(container, \"mousedown\", mousedownHandler);\r\n\t\t\tscheduler.event(container, \"focus\", focusHandler);\r\n\r\n\t\t\tcontainer.setAttribute(\"tabindex\", \"0\");\r\n\r\n\t\t}else{\r\n\t\t\tcontainer.removeAttribute(\"tabindex\");\r\n\t\t}\r\n\t});\r\n\r\n\tfunction mousedownHandler(e){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\r\n\t\tconst view = scheduler.getView();\r\n\t\tlet dataAreaClick = false;\r\n\t\tif (scheduler.getState().mode === \"month\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_cal_month_table\"));\r\n\t\t} else if (view && view.layout === \"timeline\") {\r\n\t\t\tdataAreaClick = scheduler.$keyboardNavigation.isChildOf(e.target || e.srcElement, scheduler.$container.querySelector(\".dhx_timeline_data_col\"));\r\n\t\t} else {\r\n\t\t\tconst listOfScales = scheduler.$container.querySelectorAll(\".dhx_scale_holder\");\r\n\t\t\tconst arrOfScales = Array.from(listOfScales);\r\n\t\t\tdataAreaClick = arrOfScales.some(scale => scale === e.target.parentNode);\r\n\t\t}\r\n\r\n\t\tvar pos = scheduler.getActionData(e);\r\n\r\n\t\tvar focusNode;\r\n\t\tif(scheduler._locate_event(e.target || e.srcElement)){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.Event(scheduler._locate_event(e.target || e.srcElement));\r\n\t\t}else if(dataAreaClick){\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\tif(pos.date && dataAreaClick){\r\n\t\t\t\tfocusNode = focusNode.nextSlot(new scheduler.$keyboardNavigation.TimeSlot(pos.date, null, pos.section));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(focusNode) {\r\n\t\t\tif (!dispatcher.isEnabled()) {\r\n\t\t\t\tdispatcher.activeNode = focusNode;\r\n\r\n\t\t\t} else {\r\n\t\t\t\tif (pos.date && dataAreaClick) {\r\n\t\t\t\t\tdispatcher.delay(function () {\r\n\t\t\t\t\t\tdispatcher.setActiveNode(focusNode);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction focusEvent(evNode){\r\n\t\tif(!scheduler.config.key_nav) return;\r\n\t\tif(!dispatcher.isEnabled()) return;\r\n\r\n\r\n\t\tvar prevState = evNode;\r\n\t\tvar focusNode = new scheduler.$keyboardNavigation.Event(prevState.eventId);\r\n\t\tif(!focusNode.isValid()){\r\n\t\t\tvar lastStart = focusNode.start || prevState.start;\r\n\t\t\tvar lastEnd = focusNode.end || prevState.end;\r\n\t\t\tvar lastSection = focusNode.section || prevState.section;\r\n\r\n\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot(lastStart, lastEnd, lastSection);\r\n\t\t\tif(!focusNode.isValid()){\r\n\t\t\t\tfocusNode = new scheduler.$keyboardNavigation.TimeSlot();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdispatcher.setActiveNode(focusNode);\r\n\t\tvar node = dispatcher.getActiveNode();\r\n\t\tif(node && node.getNode && document.activeElement != node.getNode()){\r\n\t\t\tdispatcher.focusNode(dispatcher.getActiveNode());\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tvar updateEvent = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id){\r\n\t\tvar res = updateEvent.apply(this, arguments);\r\n\t\tif(scheduler.config.key_nav && dispatcher.isEnabled()){\r\n\t\t\tif(scheduler.getState().select_id == id){\r\n\t\t\t\tvar element = new scheduler.$keyboardNavigation.Event(id);\r\n\r\n\t\t\t\tif(!scheduler.getState().lightbox_id){\r\n\t\t\t\t\tfocusEvent(element);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id) {\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tvar activeNode = dispatcher.getActiveNode();\r\n\t\t\tif(activeNode.eventId == id){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function(){\r\n\t\tif(!scheduler.config.key_nav) return true;\r\n\t\tif(dispatcher.isEnabled()){\r\n\t\t\tif(dispatcher.getActiveNode() instanceof scheduler.$keyboardNavigation.Event){\r\n\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.TimeSlot());\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.$keyboardNavigation._minicalendars = [];\r\n\r\nscheduler.$keyboardNavigation.isMinical = function(node){\r\n\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\tif(this.isChildOf(node, minicalendars[i]))\r\n\t\t\treturn true;\r\n\t}\r\n\treturn false;\r\n};\r\n\r\nscheduler.$keyboardNavigation.isChildOf = function(child, parent){\r\n\twhile(child && child !== parent){\r\n\t\tchild = child.parentNode;\r\n\t}\r\n\r\n\treturn !!(child === parent);\r\n};\r\n\r\nscheduler.$keyboardNavigation.patchMinicalendar = function(){\r\n\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\tfunction focusMinical(e){\r\n\t\tvar target = e.target;\r\n\r\n\t\tdispatcher.enable();\r\n\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(target, 0));\r\n\t}\r\n\r\n\tfunction minicalClick(e){\r\n\t\tvar target = e.target || e.srcElement;\r\n\r\n\t\tvar prev = scheduler.utils.dom.locateCss(e, \"dhx_cal_prev_button\", false);\r\n\t\tvar next = scheduler.utils.dom.locateCss(e, \"dhx_cal_next_button\", false);\r\n\t\tvar cell = scheduler.utils.dom.locateCss(e, \"dhx_year_body\", false);\r\n\r\n\t\tvar rowIndex = 0;\r\n\t\tvar cellIndex = 0;\r\n\t\tif(cell){\r\n\t\t\tvar tr;\r\n\t\t\tvar td;\r\n\t\t\tvar current = target;\r\n\t\t\twhile(current && current.tagName.toLowerCase() != \"td\"){\r\n\t\t\t\tcurrent = current.parentNode;\r\n\t\t\t}\r\n\t\t\tif(current){\r\n\t\t\t\ttd = current;\r\n\t\t\t\ttr = td.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tif(tr && td){\r\n\t\t\t\tvar rows = tr.parentNode.querySelectorAll(\"tr\");\r\n\t\t\t\tfor(var i = 0; i < rows.length; i++){\r\n\t\t\t\t\tif(rows[i] == tr){\r\n\t\t\t\t\t\trowIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tvar cells = tr.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\t\t\tif(cells[i] == td){\r\n\t\t\t\t\t\tcellIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tvar root = e.currentTarget;\r\n\t\tdispatcher.delay(function(){\r\n\t\t\tif(prev || next || cell){\r\n\r\n\t\t\t\tvar element;\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 0);\r\n\t\t\t\t\tdispatcher.setActiveNode(new scheduler.$keyboardNavigation.MinicalButton(root, 0));\r\n\t\t\t\t}else if(next){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalButton(root, 1);\r\n\t\t\t\t}else if(cell){\r\n\t\t\t\t\telement = new scheduler.$keyboardNavigation.MinicalCell(root, rowIndex, cellIndex);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(element){\r\n\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t\tif(element.isValid()){\r\n\t\t\t\t\t\tdispatcher.activeNode = null;\r\n\t\t\t\t\t\tdispatcher.setActiveNode(element);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tif(scheduler.renderCalendar){\r\n\t\tvar renderMinical = scheduler.renderCalendar;\r\n\t\tscheduler.renderCalendar = function(){\r\n\t\t\tvar cal = renderMinical.apply(this, arguments);\r\n\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"click\", minicalClick);\r\n\t\t\tscheduler.event(cal, \"click\", minicalClick);\r\n\r\n\t\t\tscheduler.eventRemove(cal, \"focus\", focusMinical);\r\n\t\t\tscheduler.event(cal, \"focus\", focusMinical);\r\n\r\n\t\t\tvar added = false;\r\n\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\tadded = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif(!added)\r\n\t\t\t\tminicalendars.push(cal);\r\n\r\n\t\t\tif(dispatcher.isEnabled()){\r\n\t\t\t\tvar node = dispatcher.getActiveNode();\r\n\t\t\t\tif(node && node.container == cal){\r\n\t\t\t\t\tdispatcher.focusNode(node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tcal.setAttribute(\"tabindex\", \"0\");\r\n\t\t\t}\r\n\t\t\treturn cal;\r\n\t\t};\r\n\t}\r\n\r\n\tif(scheduler.destroyCalendar){\r\n\t\tvar destroyMinical = scheduler.destroyCalendar;\r\n\t\tscheduler.destroyCalendar = function(cal, force){\r\n\t\t\tcal = cal || (scheduler._def_count ? scheduler._def_count.firstChild : null);\r\n\t\t\tvar res = destroyMinical.apply(this, arguments);\r\n\r\n\t\t\tif(!cal || !cal.parentNode){\r\n\t\t\t\tvar minicalendars = scheduler.$keyboardNavigation._minicalendars;\r\n\t\t\t\tfor(var i = 0; i < minicalendars.length; i++){\r\n\t\t\t\t\tif(minicalendars[i] == cal){\r\n\t\t\t\t\t\tscheduler.eventRemove(minicalendars[i], \"focus\", focusMinical);\r\n\t\t\t\t\t\tminicalendars.splice(i, 1);\r\n\t\t\t\t\t\ti--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn res;\r\n\t\t};\r\n\t}\r\n};\r\n\r\n}","import keyboard_shortcuts from \"./keyboard_navigation/common/keyboard_shortcuts\";\r\nimport eventhandler from \"./keyboard_navigation/common/eventhandler\";\r\nimport trap_modal_focus from \"./keyboard_navigation/common/trap_modal_focus\";\r\nimport marker from \"./keyboard_navigation/marker\";\r\nimport scheduler_node from \"./keyboard_navigation/elements/scheduler_node\";\r\nimport nav_node from \"./keyboard_navigation/elements/nav_node\";\r\nimport header_cell from \"./keyboard_navigation/elements/header_cell\";\r\nimport event from \"./keyboard_navigation/elements/event\";\r\nimport time_slot from \"./keyboard_navigation/elements/time_slot\";\r\nimport minical_button from \"./keyboard_navigation/elements/minical_button\";\r\nimport minical_cell from \"./keyboard_navigation/elements/minical_cell\";\r\nimport data_area from \"./keyboard_navigation/elements/data_area\";\r\nimport modals from \"./keyboard_navigation/modals\";\r\nimport core from \"./keyboard_navigation/core\";\r\nimport key_nav_legacy from \"./keyboard_navigation/key_nav_legacy\";\r\n\r\n\r\nimport scheduler_handlers from \"./keyboard_navigation/scheduler_handlers\";\r\nimport minical_handlers from \"./keyboard_navigation/minical_handlers\";\r\n\r\nexport default function(scheduler){\r\n\t\tscheduler.config.key_nav = true;\r\n\t\tscheduler.config.key_nav_step = 30;\r\n\t\tscheduler.addShortcut = function(shortcut, handler, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.bind(shortcut, handler);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.getShortcutHandler = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tvar commands = scheduler.$keyboardNavigation.shortcuts.parse(shortcut);\r\n\t\t\t\tif(commands.length){\r\n\t\t\t\t\treturn scopeObject.prototype.findHandler(commands[0]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.removeShortcut = function(shortcut, scope){\r\n\t\t\tvar scopeObject = getScope(scope);\r\n\t\t\tif(scopeObject){\r\n\t\t\t\tscopeObject.prototype.unbind(shortcut);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tscheduler.focus = function(){\r\n\t\t\tif(!scheduler.config.key_nav){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tvar disp = scheduler.$keyboardNavigation.dispatcher;\r\n\t\t\tdisp.enable();\r\n\t\t\tvar activeNode = disp.getActiveNode();\r\n\t\t\tif(!activeNode || activeNode instanceof scheduler.$keyboardNavigation.MinicalButton || activeNode instanceof scheduler.$keyboardNavigation.MinicalCell){\r\n\t\t\t\tdisp.setDefaultNode();\r\n\t\t\t}else{\r\n\t\t\t\tdisp.focusNode(disp.getActiveNode());\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction getScope(mode){\r\n\t\t\tvar scopes = {\r\n\t\t\t\t\"minicalButton\":scheduler.$keyboardNavigation.MinicalButton,\r\n\t\t\t\t\"minicalDate\":scheduler.$keyboardNavigation.MinicalCell,\r\n\t\t\t\t\"scheduler\":scheduler.$keyboardNavigation.SchedulerNode,\r\n\t\t\t\t\"dataArea\": scheduler.$keyboardNavigation.DataArea,\r\n\t\t\t\t\"timeSlot\": scheduler.$keyboardNavigation.TimeSlot,\r\n\t\t\t\t\"event\": scheduler.$keyboardNavigation.Event\r\n\t\t\t};\r\n\r\n\t\t\tvar searchMap = {};\r\n\t\t\tfor(var i in scopes)\r\n\t\t\t\tsearchMap[i.toLowerCase()] = scopes[i];\r\n\r\n\t\t\tmode = (mode + \"\").toLowerCase();\r\n\r\n\t\t\treturn searchMap[mode] || scopes.scheduler;\r\n\t\t}\r\n\r\n\t\tscheduler.$keyboardNavigation = {};\r\n\r\n\t\tscheduler._compose = function(){\r\n\t\t\tvar parts = Array.prototype.slice.call(arguments, 0);\r\n\t\t\tvar res = {};\r\n\t\t\tfor(var i = 0; i < parts.length; i++){\r\n\t\t\t\tvar obj = parts[i];\r\n\t\t\t\tif(typeof obj == \"function\"){\r\n\t\t\t\t\tobj = new obj();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor(var p in obj){\r\n\t\t\t\t\tres[p] = obj[p];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn res;\r\n\t\t};\r\n\r\n\t\tkeyboard_shortcuts(scheduler);\r\n\t\teventhandler(scheduler);\r\n\t\ttrap_modal_focus(scheduler);\r\n\t\tmarker(scheduler);\r\n\t\tscheduler_node(scheduler);\r\n\t\tnav_node(scheduler);\r\n\t\theader_cell(scheduler);\r\n\t\tevent(scheduler);\r\n\t\ttime_slot(scheduler);\r\n\t\tminical_button(scheduler);\r\n\t\tminical_cell(scheduler);\r\n\t\tdata_area(scheduler);\r\n\t\tmodals(scheduler);\r\n\t\tcore(scheduler);\r\n\t\tkey_nav_legacy(scheduler);\r\n\r\n\t\t(function(){\r\n\t\t\tscheduler_handlers(scheduler);\r\n\t\t\tminical_handlers(scheduler);\r\n\r\n\t\t\tvar dispatcher = scheduler.$keyboardNavigation.dispatcher;\r\n\r\n\t\t\tscheduler.$keyboardNavigation.attachSchedulerHandlers();\r\n\r\n\t\t\tif(scheduler.renderCalendar){\r\n\t\t\t\t// if minical ext loaded before key nav ext - patch it now\r\n\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t}else{\r\n\t\t\t\t// otherwise - wait until everything is loaded and try again\r\n\t\t\t\tvar attachOnce = scheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\t\t\t\t\tscheduler.detachEvent(attachOnce);\r\n\t\t\t\t\tscheduler.$keyboardNavigation.patchMinicalendar();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction isSchedulerSelected(){\r\n\t\t\t\tif(!scheduler.config.key_nav) return;\r\n\r\n\t\t\t\tvar enable;\r\n\t\t\t\tvar focusElement = document.activeElement;\r\n\t\t\t\t// halt key nav when focus is outside scheduler or in quick info popup\r\n\t\t\t\tif(!focusElement || scheduler.utils.dom.locateCss(focusElement, \"dhx_cal_quick_info\", false)){\r\n\t\t\t\t\tenable = false;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tenable = scheduler.$keyboardNavigation.isChildOf(focusElement, scheduler.$container) || scheduler.$keyboardNavigation.isMinical(focusElement);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn enable;\r\n\t\t\t}\r\n\r\n\r\n\r\n\t\t\tfunction changeState(enable){\r\n\t\t\t\tif(enable && !dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.enable();\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tdispatcher.disable();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst intervalId = setInterval(function(){\r\n\t\t\t\tif(!scheduler.$container || !scheduler.$keyboardNavigation.isChildOf(scheduler.$container, document.body)){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar enable = isSchedulerSelected();\r\n\r\n\t\t\t\tif(enable){\r\n\t\t\t\t\tchangeState(enable);\r\n\t\t\t\t}else if(!enable && dispatcher.isEnabled()){\r\n\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// doublecheck in case checking is done in handler before focus element is repainted\r\n\t\t\t\t\t\tif(scheduler.config.key_nav){\r\n\t\t\t\t\t\t\tchangeState(isSchedulerSelected());\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tscheduler.$container.removeAttribute(\"tabindex\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t}, 500);\r\n\t\t\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\t\t\tclearInterval(intervalId);\r\n\t\t\t});\r\n\t\t})();\r\n\t}\r\n\r\n\r\n","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\r\n\tthis.layers.sort(function(a, b){\r\n\t\treturn a.zIndex - b.zIndex;\r\n\t});\r\n\r\n\tscheduler._dp_init=function(dp){\r\n\t\tdp._methods=[\"_set_event_text_style\",\"\",\"changeEventId\",\"deleteEvent\"];\r\n\r\n\t\tthis.attachEvent(\"onEventAdded\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"inserted\");\r\n\t\t});\r\n\t\tthis.attachEvent(\"onBeforeEventDelete\",function(id){\r\n\t\t\tif(this.getEvent(id) && this.getEvent(id).layer == dp.layer) {\r\n\t\t\t\tif (!this.validId(id)) return;\r\n\t\t\t\tvar z=dp.getState(id);\r\n\r\n\t\t\t\tif (z==\"inserted\" || this._new_event) { dp.setUpdated(id,false);\t\treturn true; }\r\n\t\t\t\tif (z==\"deleted\") return false;\r\n\t\t\t\tif (z==\"true_deleted\") return true;\r\n\r\n\t\t\t\tdp.setUpdated(id,true,\"deleted\");\r\n\t\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\telse return true;\r\n\t\t});\r\n\t\tthis.attachEvent(\"onEventChanged\",function(id){\r\n\t\t\tif (!this._loading && this.validId(id) && this.getEvent(id) && this.getEvent(id).layer == dp.layer)\r\n\t\t\t\tdp.setUpdated(id,true,\"updated\");\r\n\t\t});\r\n\r\n\t\tdp._getRowData=function(id,pref){\r\n\t\t\tvar ev=this.obj.getEvent(id);\r\n\t\t\tvar data = {};\r\n\r\n\t\t\tfor (var a in ev){\r\n\t\t\t\tif (a.indexOf(\"_\")===0) continue;\r\n\t\t\t\tif (ev[a] && ev[a].getUTCFullYear) //not very good, but will work\r\n\t\t\t\t\tdata[a] = this.obj._helpers.formatDate(ev[a]);\r\n\t\t\t\telse\r\n\t\t\t\t\tdata[a] = ev[a];\r\n\t\t\t}\r\n\t\t\treturn data;\r\n\t\t};\r\n\t\tdp._clearUpdateFlag=function(){};\r\n\r\n\t\tdp.attachEvent(\"insertCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"updateCallback\", scheduler._update_callback);\r\n\t\tdp.attachEvent(\"deleteCallback\", function(upd, id) {\r\n\t\t\tthis.obj.setUserData(id, this.action_param, \"true_deleted\");\r\n\t\t\tthis.obj.deleteEvent(id);\r\n\t\t});\r\n\t};\r\n\r\n\t(function() {\r\n var _cloneObj = function(obj){\r\n if(obj === null || typeof(obj) != 'object')\r\n return obj;\r\n var temp = new obj.constructor();\r\n for(var key in obj)\r\n temp[key] = _cloneObj(obj[key]);\r\n return temp;\r\n };\r\n\r\n\t\tscheduler._dataprocessors = [];\r\n\t\tscheduler._layers_zindex = {};\r\n\t\tfor(var i=0; i= scheduler.config.collision_limit);\r\n\t});\r\n\r\n\tscheduler.addEvent=function(start_date,end_date,text,id,extra_data){\r\n\t\tvar ev=start_date;\r\n\t\tif (arguments.length!=1){\r\n\t\t\tev=extra_data||{};\r\n\t\t\tev.start_date=start_date;\r\n\t\t\tev.end_date=end_date;\r\n\t\t\tev.text=text;\r\n\t\t\tev.id=id;\r\n\t\t\tev.layer = this.defaultLayer;\r\n\t\t}\r\n\t\tev.id = ev.id||scheduler.uid();\r\n\t\tev.text = ev.text||\"\";\r\n\r\n\r\n\t\tif (typeof ev.start_date == \"string\") ev.start_date=this.templates.api_date(ev.start_date);\r\n\t\tif (typeof ev.end_date == \"string\") ev.end_date=this.templates.api_date(ev.end_date);\r\n\t\tev._timed=this.isOneDayEvent(ev);\r\n\r\n\t\tvar is_new=!this._events[ev.id];\r\n\t\tthis._events[ev.id]=ev;\r\n\t\tthis.event_updated(ev);\r\n\t\tif (!this._loading)\r\n\t\t\tthis.callEvent(is_new?\"onEventAdded\":\"onEventChanged\",[ev.id,ev]);\r\n\t};\r\n\r\n\tthis._evs_layer = {};\r\n\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t}\r\n\r\n\tscheduler.addEventNow=function(start,end,e){\r\n\t\tvar base = {};\r\n\t\tif (typeof start == \"object\"){\r\n\t\t\tbase = start;\r\n\t\t\tstart = null;\r\n\t\t}\r\n\r\n\t\tvar d = (this.config.event_duration||this.config.time_step)*60000;\r\n\t\tif (!start) start = Math.round((scheduler._currentDate()).valueOf()/d)*d;\r\n\t\tvar start_date = new Date(start);\r\n\t\tif (!end){\r\n\t\t\tvar start_hour = this.config.first_hour;\r\n\t\t\tif (start_hour > start_date.getHours()){\r\n\t\t\t\tstart_date.setHours(start_hour);\r\n\t\t\t\tstart = start_date.valueOf();\r\n\t\t\t}\r\n\t\t\tend = start+d;\r\n\t\t}\r\n\r\n\r\n\t\tbase.start_date = base.start_date||start_date;\r\n\t\tbase.end_date = base.end_date||new Date(end);\r\n\t\tbase.text = base.text||this.locale.labels.new_event;\r\n\t\tbase.id = this._drag_id = this.uid();\r\n\t\tbase.layer = this.defaultLayer;\r\n\t\tthis._drag_mode=\"new-size\";\r\n\r\n\t\tthis._loading=true;\r\n\t\tthis.addEvent(base);\r\n\t\tthis.callEvent(\"onEventCreated\",[this._drag_id,e]);\r\n\t\tthis._loading=false;\r\n\r\n\t\tthis._drag_event={}; //dummy , to trigger correct event updating logic\r\n\t\tthis._on_mouse_up(e);\r\n\t};\r\n\r\n\tscheduler._t_render_view_data = function(events) { // helper\r\n\t\tif (this.config.multi_day && !this._table_view) {\r\n\t\t\tvar tvs = [];\r\n\t\t\tvar tvd = [];\r\n\t\t\tfor (var k = 0; k < events.length; k++) {\r\n\t\t\t\tif (events[k]._timed)\r\n\t\t\t\t\ttvs.push(events[k]);\r\n\t\t\t\telse\r\n\t\t\t\t\ttvd.push(events[k]);\r\n\t\t\t}\r\n\t\t\tthis._table_view = true;\r\n\t\t\tthis.render_data(tvd);\r\n\t\t\tthis._table_view = false;\r\n\t\t\tthis.render_data(tvs);\r\n\t\t}\r\n\t\telse\r\n\t\t\tthis.render_data(events);\r\n\t};\r\n\r\n\tscheduler.render_view_data = function(){\r\n\t\tif (this._not_render) {\r\n\t\t\tthis._render_wait = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._render_wait = false;\r\n\r\n\t\tthis.clear_view();\r\n\r\n\t\tthis._evs_layer = {};\r\n\t\tfor (var i = 0; i < this.layers.length; i++) { // array in object for each layer\r\n\t\t\tthis._evs_layer[this.layers[i].name] = [];\r\n\t\t}\r\n\r\n\t\tvar evs = this.get_visible_events();\r\n\t\tfor (var i = 0; i < evs.length; i++) { // filling layer arrays with events\r\n\t\t\tif(this._evs_layer[evs[i].layer])\r\n\t\t\t\tthis._evs_layer[evs[i].layer].push(evs[i]);\r\n\t\t}\r\n\r\n\t\tif(this._mode == 'month') { // old logic is used\r\n\t\t\tvar tevs = [];\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible)\r\n\t\t\t\t\ttevs = tevs.concat(this._evs_layer[this.layers[i].name]);\r\n\t\t\t}\r\n\t\t\tthis._t_render_view_data(tevs);\r\n\t\t}\r\n\t\telse { // week, day; should use new logic\r\n\t\t\tfor (var i = 0; i < this.layers.length; i++) {\r\n\t\t\t\tif (this.layers[i].visible) {\r\n\t\t\t\t\tvar evs_layer = this._evs_layer[this.layers[i].name];\r\n\t\t\t\t\tthis._t_render_view_data(evs_layer);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._render_v_bar=function(ev,x,y,w,h,style,contentA,contentB,bottom){\r\n\t\tvar id = ev.id;\r\n\r\n\t\tif(contentA.indexOf('
';\r\n\t\thtml+='
 
';\r\n\t\thtml+='
'+contentA+'
';\r\n\t\thtml+='
'+contentB+'
';\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\t\td.style.zIndex = 100;\r\n\t\treturn d.firstChild;\r\n\t};\r\n\r\n\tscheduler.render_event_bar=function(ev){\r\n\t\tvar parent=this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar x=this._colsS[ev._sday];\r\n\t\tvar x2=this._colsS[ev._eday];\r\n\t\tif (x2==x) x2=this._colsS[ev._eday+1];\r\n\t\tvar hb = this.xy.bar_height;\r\n\r\n\t\tvar y=this._colsS.heights[ev._sweek]+(this._colsS.height?(this.xy.month_scale_height+2):2)+ev._sorder*hb;\r\n\r\n\t\tvar d=document.createElement(\"div\");\r\n\t\tvar cs = ev._timed?\"dhx_cal_event_clear\":\"dhx_cal_event_line\";\r\n\t\tvar cse = (scheduler.templates['event_class_'+ev.layer])?scheduler.templates['event_class_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_class(ev.start_date,ev.end_date,ev);\r\n\t\tif (cse) cs=cs+\" \"+cse;\r\n\r\n\t\tvar html='
';\r\n\r\n\t\tif (ev._timed)\r\n\t\t\thtml+=(scheduler.templates['event_bar_date_'+ev.layer])?scheduler.templates['event_bar_date_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_date(ev.start_date,ev.end_date,ev);\r\n\t\thtml+=( (scheduler.templates['event_bar_text_'+ev.layer])?scheduler.templates['event_bar_text_'+ev.layer](ev.start_date,ev.end_date,ev):scheduler.templates.event_bar_text(ev.start_date,ev.end_date,ev) + '
)');\r\n\t\thtml+='
';\r\n\r\n\t\td.innerHTML=html;\r\n\r\n\t\tthis._rendered.push(d.firstChild);\r\n\t\tparent.appendChild(d.firstChild);\r\n\t};\r\n\r\n\tscheduler.render_event=function(ev){\r\n\t\tvar menu = scheduler.xy.menu_width;\r\n\t\tif(scheduler.getLayer(ev.layer).noMenu)\r\n\t\t\tmenu = 0;\r\n\r\n\t\tif (ev._sday<0) return; //can occur in case of recurring event during time shift\r\n\t\tvar parent=scheduler.locate_holder(ev._sday);\r\n\t\tif (!parent) return; //attempt to render non-visible event\r\n\t\tvar sm = ev.start_date.getHours()*60+ev.start_date.getMinutes();\r\n\t\tvar em = (ev.end_date.getHours()*60+ev.end_date.getMinutes())||(scheduler.config.last_hour*60);\r\n\r\n\t\tvar top = (Math.round((sm*60*1000-this.config.first_hour*60*60*1000)*this.config.hour_size_px/(60*60*1000)))%(this.config.hour_size_px*24)+1; //42px/hour\r\n\t\tvar height = Math.max(scheduler.xy.min_event_height,(em-sm)*this.config.hour_size_px/60)+1; //42px/hour\r\n\t\t\r\n\t\tvar width=Math.floor((parent.clientWidth-menu)/ev._count);\r\n\t\tvar left=ev._sorder*width+1;\r\n\t\tif (!ev._inner) width=width*(ev._count-ev._sorder);\r\n\r\n\r\n\r\n\t\tvar d=this._render_v_bar(ev.id,menu+left,top,width,height,ev._text_style,scheduler.templates.event_header(ev.start_date,ev.end_date,ev),scheduler.templates.event_text(ev.start_date,ev.end_date,ev));\r\n\r\n\t\tthis._rendered.push(d);\r\n\t\tparent.appendChild(d);\r\n\r\n\t\tleft=left+parseInt(parent.style.left,10)+menu;\r\n\r\n\t\ttop+=this._dy_shift; //corrupt top, to include possible multi-day shift\r\n\t\td.style.zIndex = this._layers_zindex[ev.layer];\r\n\r\n\t\tif (this._edit_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar new_zIndex = d.style.zIndex;\r\n\t\t\twidth=Math.max(width-4,scheduler.xy.editor_width);\r\n\t\t\tvar d=document.createElement(\"div\");\r\n\t\t\td.setAttribute(\"event_id\",ev.id); // for backward compatibility\r\n\t\t\td.setAttribute(this.config.event_attribute,ev.id);\r\n\t\t\tthis.set_xy(d,width,height-20,left,top+14);\r\n\t\t\td.className=\"dhx_cal_editor\";\r\n\t\t\td.style.zIndex = new_zIndex;\r\n\t\t\tvar d2=document.createElement(\"div\");\r\n\t\t\tthis.set_xy(d2,width-6,height-26);\r\n\t\t\td2.style.cssText+=\";margin:2px 2px 2px 2px;overflow:hidden;\";\r\n\r\n\r\n\t\t\td2.style.zIndex = new_zIndex;\r\n\t\t\td.appendChild(d2);\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(d);\r\n\t\t\tthis._rendered.push(d);\r\n\r\n\t\t\td2.innerHTML=\"\";\r\n\r\n\t\t\tthis._editor=d2.firstChild;\r\n\t\t\tthis._editor.addEventListener(\"keypress\", function(e){\r\n\t\t\t\tif (e.shiftKey) return true;\r\n\t\t\t\tvar code= e.keyCode;\r\n\t\t\t\tif (code==scheduler.keys.edit_save) scheduler.editStop(true);\r\n\t\t\t\tif (code==scheduler.keys.edit_cancel) scheduler.editStop(false);\r\n\t\t\t});\r\n\t\t\tthis._editor.addEventListener(\"selectstart\", function(e){ e.cancelBubble=true; return true; });\r\n\t\t\td2.firstChild.focus();\r\n\t\t\t//IE and opera can add x-scroll during focusing\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].scrollLeft=0;\r\n\t\t\td2.firstChild.select();\r\n\t\t}\r\n\t\tif (this._select_id==ev.id){\r\n\t\t\td.style.zIndex = parseInt(d.style.zIndex)+1; //fix overlapping issue\r\n\t\t\tvar icons=this.config[\"icons_\"+((this._edit_id==ev.id)?\"edit\":\"select\")];\r\n\t\t\tvar icons_str=\"\";\r\n\t\t\tfor (var i=0; i
\";\r\n\t\t\tvar obj = this._render_v_bar(ev.id,left-menu+1,top,menu,icons.length*20+26,\"\",\"
\",icons_str,true);\r\n\t\t\tobj.style.left=left-menu+1;\r\n\t\t\tobj.style.zIndex = d.style.zIndex;\r\n\t\t\tthis._els[\"dhx_cal_data\"][0].appendChild(obj);\r\n\t\t\tthis._rendered.push(obj);\r\n\t\t}\r\n\r\n\t};\r\n\r\n scheduler.filter_agenda = function(id, event) {\r\n var layer = scheduler.getLayer(event.layer);\r\n return (layer && layer.visible);\r\n };\r\n});\r\n\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.limit_start = null;\r\nscheduler.config.limit_end = null;\r\nscheduler.config.limit_view = false;\r\nscheduler.config.check_limits = true;\r\n\r\nscheduler._temp_limit_scope = function(){\r\n\tvar before = null;\r\n\tvar dhx_time_block = \"dhx_time_block\";\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\",function(om,od,nm,nd){\r\n\r\n\t\tfunction isBlocked(date, mode){\r\n\t\t\tvar limit_start = scheduler.config.limit_start,\r\n\t\t\t\tlimit_end = scheduler.config.limit_end,\r\n\t\t\t\tdate_end = scheduler.date.add(date,1,mode);\r\n\r\n\t\t\treturn (date.valueOf() > limit_end.valueOf() || date_end <= limit_start.valueOf());\r\n\t\t}\r\n\r\n\t\tif (scheduler.config.limit_view){\r\n\t\t\tnd = nd||od; nm = nm||om;\r\n\t\t\tif (isBlocked(nd, nm) && !(od.valueOf() == nd.valueOf())){\r\n\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar resetDate = !isBlocked(od, nm) ? od : scheduler.config.limit_start;\r\n\r\n\t\t\t\t\tscheduler.setCurrentView(!isBlocked(resetDate, nm) ? resetDate : null, nm);\r\n\t\t\t\t},1);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onMouseDown\", function(classname) {\r\n\t\treturn !(classname == dhx_time_block);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeDrag\",function(id){\r\n\t\tif (!id) return true;\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(id));\r\n\t});\r\n\tscheduler.attachEvent(\"onClick\", function (event_id, native_event_object){\r\n\t\treturn scheduler.checkLimitViolation(scheduler.getEvent(event_id));\r\n });\r\n\tscheduler.attachEvent(\"onBeforeLightbox\",function(id){\r\n\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tbefore = [ev.start_date, ev.end_date];\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\r\n\t\t//lightbox may not have 'time' section\r\n\t\tif(!(data.start_date && data.end_date)){\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\t\t\tdata.start_date = new Date(ev.start_date);\r\n\t\t\tdata.end_date = new Date(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif(data.rec_type){\r\n\t\t\t//_roll_back_dates modifies start_date of recurring event, need to check limits after modification\r\n\t\t\t// use a copy to keep original event unchanged\r\n\t\t\tvar data_copy = scheduler._lame_clone(data);\r\n\t\t\tscheduler._roll_back_dates(data_copy);\r\n\t\t\treturn scheduler.checkLimitViolation(data_copy);\r\n\t\t}\r\n\t\treturn scheduler.checkLimitViolation(data);\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev) && scheduler.config.limit_start && scheduler.config.limit_end) {\r\n\t\t\t//if newly created event is outside of limited time - crop it, leaving only allowed time\r\n\t\t\tif (ev.start_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.start_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.start_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.end_date < scheduler.config.limit_start) {\r\n\t\t\t\tev.end_date = new Date(scheduler.config.limit_start);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date.valueOf() >= scheduler.config.limit_end.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(scheduler.config.limit_end, -1, \"day\");\r\n\t\t\t}\r\n\t\t\tif (ev.start_date.valueOf() >= ev.end_date.valueOf()) {\r\n\t\t\t\tev.end_date = this.date.add(ev.start_date, (this.config.event_duration||this.config.time_step), \"minute\");\r\n\t\t\t}\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\",function(id){\r\n\t\tif (!id) return true;\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif (!scheduler.checkLimitViolation(ev)){\r\n\t\t\tif (!before) return false;\r\n\t\t\tev.start_date = before[0];\r\n\t\t\tev.end_date = before[1];\r\n\t\t\tev._timed=this.isOneDayEvent(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventChanged\",function(ev, native_object, is_new){\r\n\t\treturn scheduler.checkLimitViolation(ev);\r\n\t});\r\n\tscheduler.attachEvent(\"onBeforeEventCreated\", function(ev) { // native event\r\n\t\tvar start_date = scheduler.getActionData(ev).date;\r\n\t\tvar event = {\r\n\t\t\t_timed: true,\r\n\t\t\tstart_date: start_date,\r\n\t\t\tend_date: scheduler.date.add(start_date, scheduler.config.time_step, \"minute\")\r\n\t\t};\r\n\t\treturn scheduler.checkLimitViolation(event);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", function(){\r\n\t\tscheduler._mark_now();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onAfterSchedulerResize\", function(){\r\n\t\twindow.setTimeout(function(){ \r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler._mark_now(); \r\n\t\t}, 1);\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tscheduler._mark_now_timer = window.setInterval(function() {\r\n\t\t\tif(!scheduler._is_initialized())\r\n\t\t\t\treturn;\r\n\t\t\tscheduler._mark_now();\r\n\t\t}, 60000);\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tclearInterval(scheduler._mark_now_timer);\r\n\t});\r\n\r\n};\r\nscheduler._temp_limit_scope();\r\n\r\n\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\ndeclare let google: any;\r\n\r\nexport class GoogleMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tprivate infoWindow: any;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tlet zoom = this.settings.zoom_after_resolve || this.settings.initial_zoom;\r\n\t\t\t\t\tif (event.lat && event.lng){\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: event.lat, \r\n\t\t\t\t\t\t\tlng: event.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t} else {\t\t\t\t\t\t\r\n\t\t\t\t\t\tthis.map.setCenter({\r\n\t\t\t\t\t\t\tlat: this.settings.error_position.lat, \r\n\t\t\t\t\t\t\tlng: this.settings.error_position.lng,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis.map.setZoom(zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tgoogle.maps.event.trigger(this._markers[i].marker, 'click');\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tthis.settings = options;\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapOptions = {\r\n\t\t\tcenter: { lat: options.initial_position.lat, lng: options.initial_position.lng },\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tmapId: container.id,\r\n\t\t\tscrollwheel: true,\r\n\t\t\tmapTypeId: options.type\r\n\t\t}\r\n\t\t// we need to reuse the google map to avoid leak memory\r\n\t\tif (this.map === null) {\r\n\t\t\tthis.map = new google.maps.Map(container, mapOptions);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet map = this.map;\r\n\t\t\tcontainer.appendChild(this.map.__gm.messageOverlay);\r\n\t\t\tcontainer.appendChild(this.map.__gm.outerContainer);\r\n\t\t\tsetTimeout(function() {\r\n\t\t\t\tmap.setOptions({container: container.id});\r\n\t\t\t}, 500);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(this.map, \"dblclick\", function(event) {\r\n\t\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\r\n\t\t\tif (!scheduler.config.readonly && scheduler.config.dblclick_create) {\r\n\t\t\t\tlet point = event.latLng;\r\n\t\t\t\tgeocoder.geocode(\r\n\t\t\t\t\t{ 'latLng': point },\r\n\t\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\t\tpoint = results[0].geometry.location;\r\n\t\t\t\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\t\t\t\tlat: point.lat(),\r\n\t\t\t\t\t\t\t\tlng: point.lng(),\r\n\t\t\t\t\t\t\t\tevent_location: results[0].formatted_address,\r\n\t\t\t\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tgoogle.maps.event.clearInstanceListeners(window);\r\n\t\tgoogle.maps.event.clearInstanceListeners(document);\r\n\t\tgoogle.maps.event.clearInstanceListeners(container);\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\tasync addEventMarker(event: ICalendarEvent): Promise {\r\n\t\tlet config = {\r\n\t\t\ttitle: event.text,\r\n\t\t\tposition: {},\r\n\t\t\tmap: {}\r\n\t\t}\r\n\t\t\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tconfig.position = { lat: event.lat, lng: event.lng };\r\n\t\t} else {\r\n\t\t\tconfig.position = { lat: this.settings.error_position.lat, lng: this.settings.error_position.lng }\r\n\t\t}\r\n\t\tconst { AdvancedMarkerElement } = await google.maps.importLibrary(\"marker\");\r\n\t\tlet marker;\r\n\t\tif (this.scheduler.ext.mapView.createMarker) {\r\n\t\t\tconfig.map = this.map;\r\n\t\t\tmarker = this.scheduler.ext.mapView.createMarker(config);\r\n\t\t} else {\r\n\t\t\tmarker = new AdvancedMarkerElement(config);\r\n\t\t\tmarker.map = this.map;\r\n\t\t}\r\n\t\tmarker.setMap(this.map);\r\n\t\t//case for markeks which were deleted with DataProcessor\r\n\t\tif (event[\"!nativeeditor_status\"] == \"true_deleted\"){\r\n\t\t\tmarker.setMap(null);\r\n\t\t}\r\n\t\tgoogle.maps.event.addListener(marker, \"click\", () => {\r\n\t\t\tif (this.infoWindow) {\r\n\t\t\t\tthis.infoWindow.close();\r\n\t\t\t}\r\n\t\t\tthis.infoWindow = new google.maps.InfoWindow({maxWidth: this.settings.info_window_max_width});\r\n\t\t\tthis.infoWindow.setContent(this.scheduler.templates.map_info_content(event));\r\n\t\t\tthis.infoWindow.open({\r\n\t\t\t\tanchor: marker,\r\n\t\t\t\tmap: this.map,\r\n\t\t\t});\r\n\t\t});\r\n\t\tlet markerInfo = {event, ...config, marker};\r\n\t\tthis._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.setVisible(false);\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t\tthis._markers[i].marker.setPosition(null);\r\n\t\t\t\tthis._markers[i].marker = null;\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tthis._markers[i].position.lat = event.lat;\r\n\t\t\t\tthis._markers[i].position.lng = event.lng;\r\n\t\t\t\tthis._markers[i].text = event.text;\r\n\t\t\t\tlet latlng = new google.maps.LatLng(event.lat, event.lng);\r\n\t\t\t\tthis._markers[i].marker.setPosition(latlng);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif (this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis._markers[i].marker.setMap(null);\r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setCenter({\r\n\t\t\tlat: latitude, \r\n\t\t\tlng: longitude,\r\n\t\t});\r\n\t\tthis.map.setZoom(zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst geocoder = new google.maps.Geocoder();\r\n\t\tlet position: any = await new Promise((resolve) => {\r\n\t\t\tgeocoder.geocode(\r\n\t\t\t\t{ 'address': string },\r\n\t\t\t\tfunction(results, status) {\r\n\t\t\t\t\tif (status == google.maps.GeocoderStatus.OK) {\r\n\t\t\t\t\t\tresolve({\r\n\t\t\t\t\t\t lat: results[0].geometry.location.lat(),\r\n\t\t\t\t\t\t lng: results[0].geometry.location.lng()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.error('Geocode was not successful for the following reason: ' + status);\r\n\t\t\t\t\t\tresolve({});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn position;\r\n\t}\r\n\t\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let L: any\r\n\r\nexport class OpenStreetMapAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate _markers: any[];\r\n\tprivate settings: IMapSettings;\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.openPopup();\r\n\t\t\t\t\tthis._markers[i].marker.closeTooltip();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n\t\tlet scheduler = this.scheduler;\r\n\t\tlet mapWrapper = document.createElement('div');\r\n\t\tmapWrapper.className = 'mapWrapper';\r\n\t\tmapWrapper.id = 'mapWrapper';\r\n\t\tmapWrapper.style.width = container.style.width;\r\n\t\tmapWrapper.style.height = container.style.height;\r\n\t\tcontainer.appendChild(mapWrapper);\r\n\r\n\t\tlet map = L.map(mapWrapper, {\r\n\t\t\tcenter: L.latLng(options.initial_position.lat, options.initial_position.lng),\r\n\t\t\tzoom: options.initial_zoom,\r\n\t\t\tkeyboard: false // need to set false, due to bug with moving window\r\n\t\t});\r\n\t\tL.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);\r\n\t\tmap.on(\"dblclick\", async function(e){\r\n\t\t\tconst settings = {\r\n\t\t\t\t\"method\": \"GET\",\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t\t},\r\n\t\t\t};\r\n\t\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/reverse?lat=${e.latlng.lat}&lon=${e.latlng.lng}&format=json`, settings).then(response => response.json());\r\n\t\t\tif (response.address) {\r\n\t\t\t\tlet address = response.address.country;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.latlng.lat,\r\n\t\t\t\t\tlng: e.latlng.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\", response.error);\r\n\t\t\t}\r\n\t\t});\r\n\t\tthis.map = map;\r\n\t\tthis.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n\t\twhile (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n\t\tcontainer.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n\t\tconst myIcon = L.icon({\r\n\t\t\ticonUrl: 'https://unpkg.com/leaflet@1.0.3/dist/images/marker-icon.png',\r\n\t\t\ticonSize: [25, 41],\r\n\t\t\tshadowSize: [30, 65],\r\n\t\t\ticonAnchor: [12, 41],\r\n\t\t\tshadowAnchor: [7, 65]\r\n\t\t});\r\n\t\tlet popupConfig = {\r\n\t\t\tminWidth: 180,\r\n\t\t\tmaxWidth: this.settings.info_window_max_width,\r\n\t\t}\r\n\t\tconst markerPopup = L.popup(popupConfig).setContent(this.scheduler.templates.map_info_content(event));\r\n\t\tconst tooltip = L.tooltip().setContent(event.text);\r\n\r\n\t\tlet markerConfig = [\r\n\t\t\tevent.lat,\r\n\t\t\tevent.lng\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tmarkerConfig = [this.settings.error_position.lat, this.settings.error_position.lng];\r\n\t\t}\r\n\t\tconst marker = L.marker(markerConfig, {\r\n\t\t\ticon: myIcon\r\n\t\t}).bindPopup(markerPopup).bindTooltip(tooltip).addTo(this.map);\r\n\t\tconst markerInfo = {event, marker};\r\n\t\tthis._markers.push(markerInfo);\t\t\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker);\r\n\t\t\t\tthis._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([this.settings.error_position.lat, this.settings.error_position.lng]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLatLng([event.lat, event.lng]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tif(this._markers) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\t\tthis.map.removeLayer(this._markers[i].marker); \r\n\t\t\t}\r\n\t\t\tthis._markers = [];\r\n\t\t}\r\n\t}\r\n\r\n\tsetView(latitude: number, longitude: number, zoom: number): void {\r\n\t\tthis.map.setView([latitude, longitude], zoom);\r\n\t}\r\n\r\n\tasync resolveAddress(string: string): Promise {\r\n\t\tconst settings = {\r\n\t\t\t\"method\": \"GET\",\r\n\t\t\theaders: {\r\n\t\t\t\t\"Accept-Language\": \"en\",\r\n\t\t\t},\r\n\t\t};\r\n\t\tlet position:any = {};\r\n\t\tlet response = await fetch(`https://nominatim.openstreetmap.org/search?q=${string}&format=json`, settings).then(response => response.json());\r\n\t\tif (response && response.length) {\r\n\t\t\tposition.lat = +response[0].lat;\r\n\t\t\tposition.lng = +response[0].lon;\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { IMapAdapter, ICalendarEvent, IMapSettings, IMapPosition} from \"./types\";\r\n\r\ndeclare let mapboxgl: any;\r\ndeclare let MapboxGeocoder: any;\r\n\r\nexport class MapboxAdapter implements IMapAdapter {\r\n\tprivate map: any;\r\n\tprivate scheduler: any;\r\n\tprivate settings: IMapSettings;\r\n\tprivate _markers: any[];\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.map = null;\r\n\t\tthis._markers = [];\r\n\t\tthis.scheduler = scheduler;\r\n\t}\r\n\tonEventClick(event: ICalendarEvent): void {\r\n\t\tif (this._markers && this._markers.length > 0) {\r\n\t\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n const popup = this._markers[i].marker.getPopup();\r\n if (popup.isOpen()){\r\n popup.remove();\r\n }\r\n\t\t\t\tif (event.id == this._markers[i].event.id) {\r\n\t\t\t\t\tthis._markers[i].marker.togglePopup();\r\n\t\t\t\t\tif (event.lat && event.lng) {\r\n\t\t\t\t\t\tthis.setView(event.lat, event.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.setView(this.settings.error_position.lat, this.settings.error_position.lng, this.settings.zoom_after_resolve || this.settings.initial_zoom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\t\r\n\t\t\t}\r\n\t\t} \r\n\t}\r\n\r\n\tinitialize(container: HTMLElement, options: IMapSettings): void {\r\n let scheduler = this.scheduler;\r\n\r\n\t\tmapboxgl.accessToken = options.accessToken;\r\n const map = new mapboxgl.Map({\r\n container: container, \r\n center: [options.initial_position.lng, options.initial_position.lat], \r\n zoom: options.initial_zoom + 1, // problems with coordinates if zoom = 1\r\n });\r\n map.on(\"dblclick\",async function(e){\r\n\t\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${e.lngLat.lng},${ e.lngLat.lat}.json?access_token=${options.accessToken}`).then(response => response.json());\r\n\t\t\tif (response.features){\r\n\t\t\t\tlet address = response.features[0].place_name;\r\n\t\t\t\tscheduler.addEventNow({\r\n\t\t\t\t\tlat: e.lngLat.lat,\r\n\t\t\t\t\tlng: e.lngLat.lng,\r\n\t\t\t\t\tevent_location: address,\r\n\t\t\t\t\tstart_date: scheduler.getState().date,\r\n\t\t\t\t\tend_date: scheduler.date.add(scheduler.getState().date, scheduler.config.time_step, \"minute\")\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tconsole.error(\"unable recieve a position of the event\");\r\n\t\t\t}\r\n\t\t});\r\n this.map = map;\r\n this.settings = options;\r\n\t}\r\n\r\n\tdestroy(container: HTMLElement): void {\r\n\t\tthis.map.remove();\r\n while (container.firstChild) {\r\n\t\t\tcontainer.firstChild.remove();\r\n\t\t}\r\n container.innerHTML = \"\";\r\n\t}\r\n\r\n\taddEventMarker(event: ICalendarEvent): void {\r\n let config = [\r\n\t\t\tevent.lng,\r\n\t\t\tevent.lat\r\n\t\t]\r\n\t\t\r\n\t\tif (!event.lat || !event.lng) {\r\n\t\t\tconfig = [this.settings.error_position.lng, this.settings.error_position.lat];\r\n\t\t} \r\n\r\n\t\tconst popup = new mapboxgl.Popup({ offset: 25, focusAfterOpen: false})\r\n .setMaxWidth(`${this.settings.info_window_max_width}px`) \r\n .setHTML(this.scheduler.templates.map_info_content(event));\r\n const marker = new mapboxgl.Marker()\r\n .setLngLat(config)\r\n .setPopup(popup)\r\n .addTo(this.map);\r\n const markerInfo = {event, marker}; \r\n this._markers.push(markerInfo);\r\n\t}\r\n\r\n\tremoveEventMarker(eventId: string): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif (eventId == this._markers[i].event.id) {\r\n\t\t\t\tthis._markers[i].marker.remove();\r\n this._markers.splice(i,1);\r\n\t\t\t\ti--;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateEventMarker(event: ICalendarEvent): void {\r\n\t\tfor (let i = 0; i < this._markers.length; i++) {\r\n\t\t\tif(this._markers[i].event.id == event.id) {\r\n\t\t\t\tthis._markers[i].event = event;\r\n\t\t\t\tif (!event.lat || !event.lng){\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([this.settings.error_position.lng, this.settings.error_position.lat]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._markers[i].marker.setLngLat([event.lng, event.lat]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tclearEventMarkers(): void {\r\n\t\tfor (let i = 0; i {\r\n\t\tlet response = await fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${string}.json?access_token=${this.settings.accessToken}`).then(response => response.json());\r\n\t\tlet position:any = {};\r\n\t\tif (response && response.features.length) {\r\n\t\t\tposition.lng = response.features[0].center[0];\r\n\t\t\tposition.lat = response.features[0].center[1];\r\n\t\t} else {\r\n\t\t\tconsole.error(`Unable recieve a position of the event's location: ${string}`);\r\n\t\t}\r\n\t\treturn position;\r\n\t}\r\n}","import { GoogleMapAdapter } from \"./gMapAdapter\";\r\nimport { OpenStreetMapAdapter } from \"./osmMapAdapter\";\r\nimport { MapboxAdapter } from \"./mapboxAdapter\";\r\nimport { IMapAdapter, ICalendarEvent, IMapSettings } from \"./types\";\r\n\r\ndeclare let google: any;\r\n\r\nexport default function(scheduler: any){\r\n\t\r\nlet mapAdapter: IMapAdapter | null = null;\r\nlet eventHandlerIds: number[] = [];\r\nconst adapters: { [name:string]: IMapAdapter } = {\r\n\tgoogleMap: new GoogleMapAdapter(scheduler),\r\n\topenStreetMaps: new OpenStreetMapAdapter(scheduler),\r\n\tmapbox: new MapboxAdapter(scheduler)\r\n}\r\n\r\nif(!scheduler.ext){\r\n\tscheduler.ext = {};\r\n}\r\nscheduler.ext.mapView = {\r\n\tcreateAdapter: function():IMapAdapter{\r\n\t\treturn adapters[scheduler.config.map_view_provider];\r\n\t},\r\n\tcreateMarker: function(config){\r\n\t\treturn new google.maps.Marker(config);\r\n\t},\r\n\tcurrentAdapter: null,\r\n\tadapters\r\n};\r\nscheduler._latLngUpdate = false; // flag for updating events which don't have event.lat and event.lng\r\nscheduler._eventLocationChanged = false; // flag for checking if the location of the event is changed\r\nscheduler.config.map_view_provider = \"googleMap\";\r\nscheduler.config.map_settings = {\r\n\tinitial_position: {\r\n\t lat: 48.724,\r\n\t lng: 8.215\r\n\t},\r\n\terror_position: {\r\n\t lat: 15,\r\n\t lng: 15\r\n\t},\r\n\tinitial_zoom: 1,\r\n\tzoom_after_resolve: 15,\r\n\tinfo_window_max_width: 300,\r\n\tresolve_user_location: true,\r\n\tresolve_event_location: true,\r\n\tview_provider: \"googleMap\"\r\n}\r\nif (scheduler.config.map_initial_position) {\r\n\tscheduler.config.map_settings.initial_position = {\r\n\t\tlat: scheduler.config.map_initial_position.lat(),\r\n\t\tlng: scheduler.config.map_initial_position.lng(), \r\n\t};\r\n}\r\n\r\nif (scheduler.config.map_error_position) {\r\n\tscheduler.config.map_settings.error_position = {\r\n\t\tlat: scheduler.config.map_error_position.lat(),\r\n\t\tlng: scheduler.config.map_error_position.lng(), \r\n\t};\r\n}\r\n\r\nscheduler.xy.map_date_width = 188; // date column width\r\nscheduler.xy.map_icon_width = 25; // event details icon width\r\nscheduler.xy.map_description_width = 400; // description column width\r\nscheduler.date.add_map = function(date, inc, mode) {\r\n\treturn (new Date(date.valueOf()));\r\n};\r\nscheduler.templates.map_date = function(dd, ed, mode) {\r\n\treturn '';\r\n};\r\nscheduler.templates.map_time = function(start, end, ev) {\r\n\tif (scheduler.config.rtl && !ev._timed) {\r\n\t\treturn scheduler.templates.day_date(end) + \" – \" + scheduler.templates.day_date(start);\r\n\t} else if (ev._timed) {\r\n\t\treturn this.day_date(ev.start_date, ev.end_date, ev) + \" \" + this.event_date(start);\r\n\t} else {\r\n\t\treturn scheduler.templates.day_date(start) + \" – \" + scheduler.templates.day_date(end);\r\n\t}\r\n};\r\nscheduler.templates.map_text = function(start, end, ev) {\r\n\treturn ev.text;\r\n};\r\nscheduler.templates.map_info_content = function(event){\r\n return `
Event's text: ${event.text}\r\n\t\t\t\t
Location: ${event.event_location}
\r\n\t\t\t\t
Starts: ${scheduler.templates.tooltip_date_format(event.start_date)}
\r\n\t\t\t\t
Ends: ${scheduler.templates.tooltip_date_format(event.end_date)}
\r\n\t\t\t
`;\r\n};\r\nscheduler.date.map_start = function(d) {\r\n\treturn d;\r\n};\r\n\r\nfunction setupMapView(scheduler) {\r\n\t// Initialization logic, possibly including creation of a new mapAdapter\r\n\tmapAdapter = scheduler.ext.mapView.createAdapter();\r\n\tattachSchedulerEvents();\r\n}\r\nasync function addEventWithLocation(event: ICalendarEvent, mapAdapter: IMapAdapter){\r\n\tlet coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\tevent.lat = coordinates.lat;\r\n\tevent.lng = coordinates.lng;\r\n\tmapAdapter.removeEventMarker(String(event.id));\r\n\tmapAdapter.addEventMarker(event);\r\n\treturn event;\r\n}\r\nfunction setUserLocation(options: IMapSettings, adapter: IMapAdapter): void{\r\n\tif (options.resolve_user_location) {\r\n\t\tif (navigator.geolocation) {\r\n\t\t\tnavigator.geolocation.getCurrentPosition(function(position) {\r\n\t\t\t\tadapter.setView(position.coords.latitude, position.coords.longitude, options.zoom_after_resolve || options.initial_zoom);\r\n\t\t\t});\r\n\t\t}\r\n\t} else {\r\n\t\tadapter.setView(options.initial_position.lat, options.initial_position.lng, options.initial_zoom);\r\n\t}\r\n}\r\nscheduler.dblclick_dhx_map_area = function(e) {\r\n\tlet eventNode = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\tif (eventNode){\r\n\t\tlet eventId = eventNode.getAttribute(`${scheduler.config.event_attribute}`);\r\n\t\tscheduler.showLightbox(eventId);\r\n\t}\r\n\tif (!this.config.readonly && this.config.dblclick_create && !eventNode) {\r\n\t\tthis.addEventNow({\r\n\t\t\tstart_date: scheduler.config.map_start,\r\n\t\t\tend_date: scheduler.date.add( scheduler.config.map_start, scheduler.config.time_step, \"minute\"),\r\n\t\t});\r\n\t}\t\r\n};\r\n\r\nfunction attachSchedulerEvents() { \r\n eventHandlerIds.push(\r\n\tscheduler.attachEvent(\"onEventSave\",function(id,ev,is_new){\r\n\t\tlet unmodifiedEvent = scheduler.getEvent(id);\r\n\t\tif (unmodifiedEvent && unmodifiedEvent.event_location != ev.event_location) {\r\n\t\t\tscheduler._eventLocationChanged = true;\r\n\t\t}\r\n\t\treturn true;\r\n\t}),\r\n scheduler.attachEvent(\"onEventChanged\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !scheduler._latLngUpdate ) {\r\n\t\t\t\t \taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.updateEventMarker(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._latLngUpdate = false;\r\n\t\treturn true;\r\n }),\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(old_id,new_id){\r\n\t\tlet newIdEvent = scheduler.getEvent(new_id);\r\n\t\tmapAdapter?.removeEventMarker(old_id);\r\n\t\tmapAdapter?.addEventMarker(newIdEvent);\r\n\t}),\r\n scheduler.attachEvent(\"onEventAdded\", (id, event) => {\r\n\t\tconst {start_date, end_date} = event;\r\n\t\tconst {min_date, max_date} = scheduler.getState();\r\n\t\tif(start_date.valueOf() < max_date.valueOf() && end_date.valueOf() > min_date.valueOf()){\r\n \t\tif (mapAdapter) {\r\n\t\t\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && scheduler._eventLocationChanged) {\r\n\t\t\t\t\taddEventWithLocation(event, mapAdapter);\r\n\t\t\t\t\tscheduler._eventLocationChanged = false;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tmapAdapter.addEventMarker(event);\r\n\t\t\t\t\tmapAdapter.onEventClick(event);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n }),\r\n scheduler.attachEvent(\"onClick\", function (id, e){\r\n\t\tconst event = scheduler.getEvent(id);\r\n\t\tif (mapAdapter && event) mapAdapter.onEventClick(event);\r\n\t\treturn false;\r\n }),\r\n scheduler.attachEvent(\"onBeforeEventDelete\", (id, event) => {\r\n\t\tif (mapAdapter) {\r\n\t\t\tmapAdapter.removeEventMarker(id);\r\n\t\t}\r\n\t\treturn true;\r\n })\r\n );\r\n}\r\nfunction detachSchedulerEvents() {\r\n\teventHandlerIds.forEach(id => scheduler.detachEvent(id));\r\n\teventHandlerIds = [];\r\n}\r\n\r\nscheduler.attachEvent(\"onSchedulerReady\", function() {\r\n\r\n\tif(scheduler.config.map_initial_zoom !== undefined){\r\n\t\tscheduler.config.map_settings.initial_zoom = scheduler.config.map_initial_zoom;\r\n\t}\r\n\tif(scheduler.config.map_zoom_after_resolve !== undefined){\r\n\t\tscheduler.config.map_settings.zoom_after_resolve = scheduler.config.map_zoom_after_resolve;\r\n\t}\r\n\tif(scheduler.config.map_infowindow_max_width !== undefined){\r\n\t\tscheduler.config.map_settings.info_window_max_width = scheduler.config.map_infowindow_max_width;\r\n\t}\r\n\tif(scheduler.config.map_resolve_user_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_user_location = scheduler.config.map_resolve_user_location;\r\n\t}\r\n\tif(scheduler.config.map_view_provider !== undefined){\r\n\t\tscheduler.config.map_settings.view_provider = scheduler.config.map_view_provider;\r\n\t}\r\n\tif(scheduler.config.map_type !== undefined){\r\n\t\tscheduler.config.map_settings.type = scheduler.config.map_type;\r\n\t}\r\n\tif(scheduler.config.map_resolve_event_location !== undefined){\r\n\t\tscheduler.config.map_settings.resolve_event_location = scheduler.config.map_resolve_event_location;\r\n\t}\r\n\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\r\n\tlet map = document.createElement('div');\r\n\tmap.className = 'mapContainer';\r\n\tmap.id = 'mapContainer';\r\n\tmap.style.display = \"none\";\r\n\tmap.style.zIndex = \"1\";\r\n\tscheduler._obj.appendChild(map);\r\n\r\n\tconst old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs, hold) {\r\n\t\tif (this._mode == \"map\") {\r\n\t\t\tfill_map_tab();\r\n\t\t\tlet events = scheduler.get_visible_events();\r\n\t\t\tif (mapAdapter) {\r\n\t\t\t\tmapAdapter.clearEventMarkers();\r\n\t\t\t\tevents.forEach((event) => mapAdapter?.addEventMarker(event));\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\treturn old.apply(this, arguments);\r\n\t};\r\n\r\n\tscheduler.map_view = function(mode) {\r\n\t\tscheduler._els.dhx_cal_data[0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\tscheduler._min_date = scheduler.config.map_start || (scheduler._currentDate());\r\n\t\tscheduler._max_date = scheduler.config.map_end || scheduler.date.add(scheduler._currentDate(), 1, \"year\");\r\n\t\tscheduler._table_view = true;\r\n\t\tset_full_view(mode);\r\n\t\tlet mapContainer = document.getElementById('mapContainer');\r\n\t\t_setMapSize('mapContainer');\r\n\r\n\t\t// creating the new logic\r\n\t\tif (mode && mapContainer) {\r\n\t\t\tmap.style.display = 'block';\r\n\t\t\tfill_map_tab();\r\n\t\t\t// case to display several maps and has the opportunity to switch between them\r\n\t\t\tif (scheduler.config.map_view_provider == scheduler.ext.mapView.currentAdapter) {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t} else {\r\n\t\t\t\tmapAdapter?.destroy(mapContainer);\r\n\t\t\t\tsetupMapView(scheduler);\r\n\t\t\t\tmapAdapter?.initialize(mapContainer, scheduler.config.map_settings);\r\n\t\t\t \tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t\t}\r\n\t\t\tif(mapAdapter) {\r\n\t\t\t\tsetUserLocation(scheduler.config.map_settings, mapAdapter);\r\n\t\t\t}\t\r\n\t\t} else {\r\n\t\t\tmap.style.display = 'none';\r\n\t\t\tscheduler._els.dhx_cal_data[0].style.width = \"100%\";\r\n\t\t \tif (mapAdapter && mapContainer ) {\r\n\t\t\t\tmapAdapter.destroy(mapContainer);\r\n\t\t\t\tmapAdapter = null;\r\n\t\t\t\tscheduler.ext.mapView.currentAdapter = scheduler.config.map_view_provider;\r\n\t\t }\r\n\t\t \tdetachSchedulerEvents();\r\n\t\t}\r\n\t};\r\n\r\n\tfunction _setMapSize(elem_id) { //input - map's div id\r\n\t\tlet map = document.getElementById(elem_id);\r\n\t\tif (map) {\r\n\t\t\tconst nav_height = scheduler.$container.querySelector(\".dhx_cal_navline\").offsetHeight;\r\n\t\t\tlet height = scheduler.$container.querySelector(\".dhx_cal_data\").offsetHeight + scheduler.$container.querySelector(\".dhx_cal_header\").offsetHeight;\r\n\t\t\tif (height < 0)\r\n\t\t\t\theight = 0;\r\n\t\t\tlet width = scheduler._x - scheduler.xy.map_date_width - scheduler.xy.map_description_width - 1;\r\n\t\t\tif (width < 0)\r\n\t\t\t\twidth = 0;\r\n\t\t\tmap.style.height = height + 'px';\r\n\t\t\tmap.style.width = width + 'px';\r\n\t\t\tmap.style.position = \"absolute\";\r\n\t\t\tmap.style.top = nav_height + \"px\";\r\n\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\tmap.style.marginRight = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t} else {\r\n\t\t\t\tmap.style.marginLeft = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\t\t\t}\r\n\t\t\tmap.style.marginTop = (scheduler.xy.nav_height + 2) + 'px';\r\n\t\t}\r\n\t}\t\r\n\tfunction fill_map_tab() {\r\n\t\t//select events for which data need to be printed\r\n\t\tlet events = scheduler.get_visible_events();\r\n\t\tevents.sort(function(a, b) {\r\n\t\t\tif(a.start_date.valueOf()==b.start_date.valueOf())\r\n\t\t\t\treturn a.id>b.id?1:-1;\r\n\t\t\treturn a.start_date>b.start_date?1:-1;\r\n\t\t});\r\n\r\n\t\t//generate html for the view\r\n\t\tlet ariaAttr = scheduler._waiAria.mapAttrString();\r\n\r\n\t\tlet html = \"
\";\r\n\t\tfor (let i = 0; i < events.length; i++) {\r\n\t\t\tlet ev = events[i];\r\n\t\t\tlet event_class = (ev.id == scheduler._selected_event_id) ? 'dhx_map_line highlight' : 'dhx_map_line';\r\n\t\t\tlet bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tlet color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\tlet ariaAttr = scheduler._waiAria.mapRowAttrString(ev);\r\n\t\t\tlet ariaButtonAttr = scheduler._waiAria.mapDetailsBtnString();\r\n\r\n\t\t\thtml += \"
\" + scheduler.templates.map_time(ev.start_date, ev.end_date, ev) + \"
\";\r\n\t\t\thtml += `
\r\n\t\t\t\r\n\t\t\t
`;\r\n\t\t\thtml += \"
\" + scheduler.templates.map_text(ev.start_date, ev.end_date, ev) + \"
\"; // -25 = icon size 20 and padding 5\r\n\t\t}\r\n\t\thtml += \"
\";\r\n\r\n\t\t//render html\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].scrollTop = 0; //fix flickering in FF\r\n\t\tscheduler._els[\"dhx_cal_data\"][0].innerHTML = html;\r\n\t//\tscheduler._els[\"dhx_cal_data\"][0].style.width = (scheduler.xy.map_date_width + scheduler.xy.map_description_width + 1) + 'px';\r\n\r\n\t\tlet t = scheduler._els[\"dhx_cal_data\"][0].firstChild.childNodes;\r\n\r\n\t\tlet dateElement = scheduler._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML=scheduler.templates[scheduler._mode + \"_date\"](scheduler._min_date, scheduler._max_date, scheduler._mode);\r\n\t\t}\r\n\r\n\t\tscheduler._rendered = [];\r\n\t\tfor (let i = 0; i < t.length - 2; i++) {\r\n\t\t\tscheduler._rendered[i] = t[i];\r\n\t\t}\r\n\t}\r\n\tfunction set_full_view(mode) {\r\n\t\tif (mode) {\r\n\t\t\tconst l = scheduler.locale.labels;\r\n\t\t\tscheduler._els[\"dhx_cal_header\"][0].innerHTML = \"
\" + l.date + \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"
\" + l.description + \"
\";\r\n\t\t\tscheduler._table_view = true;\r\n\t\t\tscheduler.set_sizes();\r\n\t\t}\r\n\t}\r\n\t\r\n\tscheduler.attachEvent(\"onLocationError\", function (id){\r\n\t\talert(\"Location can't be found\");\r\n\t\treturn google.maps.LatLng(51.477840, -0.001492); \r\n\t\t//the coordinates of the Greenwich Royal Observatory\r\n\t})\r\n\tlet _updateEventLocation = async function(event) {\r\n\t\tif (mapAdapter){\r\n\t\t\tconst coordinates = await mapAdapter.resolveAddress(event.event_location);\r\n\t\t\tif (coordinates.lat && coordinates.lng) {\r\n\t\t\t\tevent.lat = +coordinates.lat;\r\n\t\t\t\tevent.lng = +coordinates.lng;\r\n\t\t\t} else {\r\n\t\t\t\tscheduler.callEvent(\"onLocationError\", [event.id]);\r\n\t\t\t\tevent.lng = scheduler.config.map_settings.error_position.lng;\r\n\t\t\t\tevent.lat = scheduler.config.map_settings.error_position.lat;\r\n\t\t\t}\r\n\t\t\tscheduler._latLngUpdate = true;\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [event.id, event]);\r\n\t\t}\r\n\t};\r\n\tlet _delay = function(method, object, params, delay) {\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tlet ret = method.apply(object, params);\r\n\t\t\tmethod = object = params = null;\r\n\t\t\treturn ret;\r\n\t\t}, delay || 1);\r\n\t};\r\n\tscheduler._event_resolve_delay = 1500;\r\n\tscheduler.attachEvent(\"onEventLoading\", function(event) {\r\n\t\tif (event.lat && event.lng) {\r\n\t\t\tevent.lat = +event.lat;\r\n\t\t\tevent.lng = +event.lng;\r\n\t\t}\r\n\t\tif (scheduler.config.map_settings.resolve_event_location && event.event_location && !event.lat && !event.lng) { // don't delete !event.lat && !event.lng as location could change\r\n\t\t\tscheduler._event_resolve_delay += 1500;\r\n\t\t\t_delay(_updateEventLocation, this, [event], scheduler._event_resolve_delay);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n})\r\n\r\n}","export default function(scheduler){\r\n\r\nconst minicalDomEvents = scheduler._createDomEventScope();\r\n\t\r\n\r\nscheduler.config.minicalendar = {\r\n\tmark_events: true\r\n};\r\nscheduler._synced_minicalendars = [];\r\nscheduler.renderCalendar = function(obj, _prev, is_refresh) {\r\n\tvar cal = null;\r\n\tvar date = obj.date || (scheduler._currentDate());\r\n\tif (typeof date == \"string\")\r\n\t\tdate = this.templates.api_date(date);\r\n\r\n\tif (!_prev) {\r\n\t\tvar cont = obj.container;\r\n\t\tvar pos = obj.position;\r\n\r\n\t\tif (typeof cont == \"string\")\r\n\t\t\tcont = document.getElementById(cont);\r\n\r\n\t\tif (typeof pos == \"string\")\r\n\t\t\tpos = document.getElementById(pos);\r\n\t\tif (pos && (typeof pos.left == \"undefined\" && typeof pos.right == \"undefined\")) {\r\n\t\t\tvar tpos = scheduler.$domHelpers.getOffset(pos);\r\n\t\t\tpos = {\r\n\t\t\t\ttop: tpos.top + pos.offsetHeight,\r\n\t\t\t\tleft: tpos.left\r\n\t\t\t};\r\n\t\t}\r\n\t\tif (!cont)\r\n\t\t\tcont = scheduler._get_def_cont(pos);\r\n\r\n\t\tcal = this._render_calendar(cont, date, obj);\r\n\t\r\n\t\tif (!cal.$_eventAttached) {\r\n\t\t\tcal.$_eventAttached = true;\r\n\t\t\tminicalDomEvents.attach(cal, \"click\", (function(e) {\r\n\t\t\t\tvar src = e.target || e.srcElement;\r\n\r\n\t\t\t\tvar $dom = scheduler.$domHelpers;\r\n\t\t\t\tif ($dom.closest(src, \".dhx_month_head\")) {\r\n\t\t\t\t\tif (!$dom.closest(src, \".dhx_after\") && !$dom.closest(src, \".dhx_before\")) {\r\n\r\n\t\t\t\t\t\tvar cellRoot = $dom.closest(src, \"[data-cell-date]\");\r\n\t\t\t\t\t\tvar dateAttribute = cellRoot.getAttribute(\"data-cell-date\");\r\n\t\t\t\t\t\tvar newDate = scheduler.templates.parse_date(dateAttribute);\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tscheduler.unmarkCalendar(this);\r\n\t\t\t\t\t\tscheduler.markCalendar(this, newDate, \"dhx_calendar_click\");\r\n\t\t\t\t\t\tthis._last_date = newDate;\r\n\t\t\t\t\t\tif (this.conf.handler) this.conf.handler.call(scheduler, newDate, this);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}).bind(cal));\r\n\t\t}\r\n\t\r\n\t} else {\r\n\t\tcal = this._render_calendar(_prev.parentNode, date, obj, _prev);\r\n\t\tscheduler.unmarkCalendar(cal);\r\n\t}\r\n\r\n\tif (scheduler.config.minicalendar.mark_events) {\r\n\t\tvar start = scheduler.date.month_start(date);\r\n\t\tvar end = scheduler.date.add(start, 1, \"month\");\r\n\t\tvar evs = this.getEvents(start, end);\r\n\t\tvar filter = this[\"filter_\" + this._mode];\r\n\t\tvar markedDates = {};\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif (filter && !filter(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\t\t\tvar d = ev.start_date;\r\n\t\t\tif (d.valueOf() < start.valueOf())\r\n\t\t\t\td = start;\r\n\t\t\td = scheduler.date.date_part(new Date(d.valueOf()));\r\n\t\t\twhile (d < ev.end_date) {\r\n\t\t\t\tif(!markedDates[+d]) {\r\n\t\t\t\t\tmarkedDates[+d] = true;\r\n\t\t\t\t\tthis.markCalendar(cal, d, \"dhx_year_event\");\r\n\t\t\t\t}\r\n\t\t\t\td = this.date.add(d, 1, \"day\");\r\n\t\t\t\tif (d.valueOf() >= end.valueOf())\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthis._markCalendarCurrentDate(cal);\r\n\r\n\tcal.conf = obj;\r\n\tif (obj.sync && !is_refresh)\r\n\t\tthis._synced_minicalendars.push(cal);\r\n\r\n\tif(!cal.conf._on_xle_handler){\r\n\t\tcal.conf._on_xle_handler = scheduler.attachEvent(\"onXLE\", function refreshOnLoad(){\r\n\t\t\tscheduler.updateCalendar(cal, cal.conf.date);\r\n\t\t});\r\n\t}\r\n\r\n\tif(this.config.wai_aria_attributes && this.config.wai_aria_application_role){\r\n\t\tcal.setAttribute(\"role\", \"application\");\r\n\t}\r\n\r\n\treturn cal;\r\n};\r\nscheduler._get_def_cont = function(pos) {\r\n\tif (!this._def_count) {\r\n\t\tthis._def_count = document.createElement(\"div\");\r\n\t\tthis._def_count.className = \"dhx_minical_popup\";\r\n\t\tscheduler.event(this._def_count, \"click\", function(e) { e.cancelBubble = true; });\r\n\t\tdocument.body.appendChild(this._def_count);\r\n\t}\r\n\r\n\tif(pos.left){\r\n\t\tthis._def_count.style.left = pos.left + \"px\";\r\n\t}\r\n\tif(pos.right){\r\n\t\tthis._def_count.style.right = pos.right + \"px\";\r\n\t}\r\n\tif(pos.top){\r\n\t\tthis._def_count.style.top = pos.top + \"px\";\r\n\t}\r\n\tif(pos.bottom){\r\n\t\tthis._def_count.style.bottom = pos.bottom + \"px\";\r\n\t}\r\n\r\n\tthis._def_count._created = new Date();\r\n\r\n\treturn this._def_count;\r\n};\r\nscheduler._locateCalendar = function(cal, date) {\r\n\tif (typeof date == \"string\")\r\n\t\tdate = scheduler.templates.api_date(date);\r\n\r\n\tif(+date > +cal._max_date || +date < +cal._min_date)\r\n\t\treturn null;\r\n\r\n\tvar table = cal.querySelector(\".dhx_year_body\").childNodes[0];\r\n\r\n\tvar weekNum = 0;\r\n\tvar dat = new Date(cal._min_date);\r\n\twhile(+this.date.add(dat, 1, \"week\") <= +date){\r\n\t\tdat = this.date.add(dat, 1, \"week\");\r\n\t\tweekNum++;\r\n\t}\r\n\r\n\tvar sm = scheduler.config.start_on_monday;\r\n\tvar day = (date.getDay() || (sm ? 7 : 0)) - (sm ? 1 : 0);\r\n\r\n\tconst dayCell = table.querySelector(`.dhx_cal_month_row:nth-child(${weekNum + 1}) .dhx_cal_month_cell:nth-child(${day + 1})`);\r\n\tif(dayCell) {\r\n\t\treturn dayCell.firstChild;\r\n\t} else {\r\n\t\treturn null;\r\n\t}\r\n};\r\nscheduler.markCalendar = function(cal, date, css) {\r\n\tvar div = this._locateCalendar(cal, date);\r\n\tif(!div)\r\n\t\treturn;\r\n\r\n\tdiv.className += \" \" + css;\r\n};\r\nscheduler.unmarkCalendar = function(cal, date, css) {\r\n\tdate = date || cal._last_date;\r\n\tcss = css || \"dhx_calendar_click\";\r\n\tif (!date) return;\r\n\tvar el = this._locateCalendar(cal, date);\r\n\tif(!el)\r\n\t\treturn;\r\n\tel.className = (el.className || \"\").replace(RegExp(css, \"g\"));\r\n};\r\nscheduler._week_template = function(width) {\r\n\tvar summ = (width || 250);\r\n\tvar left = 0;\r\n\r\n\tvar week_template = document.createElement(\"div\");\r\n\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\tfor (var i = 0; i < 7; i++) {\r\n\t\tthis._cols[i] = Math.floor(summ / (7 - i));\r\n\t\tthis._render_x_header(i, left, dummy_date, week_template);\r\n\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\tsumm -= this._cols[i];\r\n\t\tleft += this._cols[i];\r\n\t}\r\n\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\treturn week_template;\r\n};\r\nscheduler.updateCalendar = function(obj, sd) {\r\n\tobj.conf.date = sd;\r\n\tthis.renderCalendar(obj.conf, obj, true);\r\n};\r\nscheduler._mini_cal_arrows = [\" \", \" \"];\r\nscheduler._render_calendar = function(obj, sd, conf, previous) {\r\n\t/*store*/\r\n\tvar ts = scheduler.templates;\r\n\tvar temp = this._cols;\r\n\tthis._cols = [];\r\n\tvar temp2 = this._mode;\r\n\tthis._mode = \"calendar\";\r\n\tvar temp3 = this._colsS;\r\n\tthis._colsS = {height: 0};\r\n\tvar temp4 = new Date(this._min_date);\r\n\tvar temp5 = new Date(this._max_date);\r\n\tvar temp6 = new Date(scheduler._date);\r\n\tvar temp7 = ts.month_day;\r\n\tvar temp8 = this._ignores_detected; this._ignores_detected = 0;\r\n\tts.month_day = ts.calendar_date;\r\n\r\n\tsd = this.date.month_start(sd);\r\n\tvar week_template = this._week_template(obj.offsetWidth - 1 - this.config.minicalendar.padding );\r\n\r\n\tvar d;\r\n\tif (previous){\r\n\t\td = previous;\r\n\t} else {\r\n\t\td = document.createElement(\"div\");\r\n\t\td.className = \"dhx_cal_container dhx_mini_calendar\";\r\n\t}\r\n\td.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\td.innerHTML = \"
\" +\r\n\t\t\t\"
\" : \"'>\") +\r\n\t\t\t\"
\"+(week_template ? week_template.innerHTML : \"\")+\"
\" +\r\n\t\t\t\"
\" +\r\n\t\t\"
\";\r\n\tvar header = d.querySelector(\".dhx_year_month\");\r\n\tvar weekHeader = d.querySelector(\".dhx_year_week\");\r\n\tvar body = d.querySelector(\".dhx_year_body\");\r\n\r\n\theader.innerHTML = this.templates.calendar_month(sd);\r\n\tif (conf.navigation) {\r\n\t\tvar move_minicalendar_date = function(calendar, diff) {\r\n\t\t\tvar date = scheduler.date.add(calendar._date, diff, \"month\");\r\n\t\t\tscheduler.updateCalendar(calendar, date);\r\n\t\t\tif (scheduler._date.getMonth() == calendar._date.getMonth() && scheduler._date.getFullYear() == calendar._date.getFullYear()) {\r\n\t\t\t\tscheduler._markCalendarCurrentDate(calendar);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tvar css_classnames = [\"dhx_cal_prev_button\", \"dhx_cal_next_button\"];\r\n\t\tvar css_texts = [\"left:1px;top:4px;position:absolute;\", \"left:auto; right:1px;top:4px;position:absolute;\"];\r\n\t\tvar diffs = [-1, 1];\r\n\t\tvar handler = function(diff) {\r\n\t\t\treturn function() {\t\r\n\t\t\t\tif (conf.sync) {\r\n\t\t\t\t\tvar calendars = scheduler._synced_minicalendars;\r\n\t\t\t\t\tfor (var k = 0; k < calendars.length; k++) {\r\n\t\t\t\t\t\tmove_minicalendar_date(calendars[k], diff);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (scheduler.config.rtl) {\r\n\t\t\t\t\t\tdiff = -diff;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmove_minicalendar_date(d, diff);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t\tvar labels = [scheduler.locale.labels.prev, scheduler.locale.labels.next];\r\n\t\tfor (var j = 0; j < 2; j++) {\r\n\t\t\tvar arrow = document.createElement(\"div\");\r\n\t\t\t//var diff = diffs[j];\r\n\t\t\tarrow.className = css_classnames[j];\r\n\r\n\t\t\tscheduler._waiAria.headerButtonsAttributes(arrow, labels[j]);\r\n\r\n\t\t\tarrow.style.cssText = css_texts[j];\r\n\t\t\tarrow.innerHTML = this._mini_cal_arrows[j];\r\n\t\t\theader.appendChild(arrow);\r\n\t\t\tminicalDomEvents.attach(arrow, \"click\", handler(diffs[j]));\r\n\t\t}\r\n\t}\r\n\td._date = new Date(sd);\r\n\r\n\td.week_start = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\r\n\tvar dd = d._min_date = this.date.week_start(sd);\r\n\td._max_date = this.date.add(d._min_date, 6, \"week\");\r\n\r\n\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\tif (!previous)\r\n\t\tobj.appendChild(d);\r\n\r\n\tweekHeader.style.height = (weekHeader.childNodes[0].offsetHeight - 1) + \"px\"; // dhx_year_week should have height property so that day dates would get correct position. dhx_year_week height = height of it's child (with the day name)\r\n\r\n\tvar headerId = scheduler.uid();\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\tscheduler._waiAria.minicalGrid(d.querySelector(\".dhx_year_grid\"), headerId);\r\n\tscheduler._waiAria.minicalRow(weekHeader);\r\n\r\n\tvar dayHeaders = weekHeader.querySelectorAll(\".dhx_scale_bar\");\r\n\tfor(var i = 0; i < dayHeaders.length; i++){\r\n\t\tscheduler._waiAria.minicalHeadCell(dayHeaders[i]);\r\n\t}\r\n\tvar dayCells = body.querySelectorAll(\".dhx_cal_month_cell\");\r\n\tvar firstDate = new Date(dd);\r\n\tfor(var i = 0; i < dayCells.length; i++){\r\n\r\n\t\tscheduler._waiAria.minicalDayCell(dayCells[i], new Date(firstDate));\r\n\t\tfirstDate = scheduler.date.add(firstDate, 1, \"day\");\r\n\t}\r\n\r\n\tscheduler._waiAria.minicalHeader(header, headerId);\r\n\r\n\t/*restore*/\r\n\tthis._cols = temp;\r\n\tthis._mode = temp2;\r\n\tthis._colsS = temp3;\r\n\tthis._min_date = temp4;\r\n\tthis._max_date = temp5;\r\n\tscheduler._date = temp6;\r\n\tts.month_day = temp7;\r\n\tthis._ignores_detected = temp8;\r\n\treturn d;\r\n};\r\nscheduler.destroyCalendar = function(cal, force) {\r\n\tif (!cal && this._def_count && this._def_count.firstChild) {\r\n\t\tif (force || (new Date()).valueOf() - this._def_count._created.valueOf() > 500)\r\n\t\t\tcal = this._def_count.firstChild;\r\n\t}\r\n\tif (!cal) return;\r\n\tminicalDomEvents.detachAll();\r\n\t//cal.onclick = null;\r\n\tcal.innerHTML = \"\";\r\n\tif (cal.parentNode)\r\n\t\tcal.parentNode.removeChild(cal);\r\n\tif (this._def_count)\r\n\t\tthis._def_count.style.top = \"-1000px\";\r\n\r\n\tif(cal.conf && cal.conf._on_xle_handler)\r\n\t\tscheduler.detachEvent(cal.conf._on_xle_handler);\r\n};\r\nscheduler.isCalendarVisible = function() {\r\n\tif (this._def_count && parseInt(this._def_count.style.top, 10) > 0)\r\n\t\treturn this._def_count;\r\n\treturn false;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tscheduler.event(document.body, \"click\", function() { scheduler.destroyCalendar(); });\r\n}, {once: true});\r\n\r\n\r\n\r\nscheduler.form_blocks.calendar_time = {\r\n\trender: function(sns) {\r\n\t\tvar html = \"\";\r\n\r\n\t\tvar cfg = scheduler.config;\r\n\t\tvar dt = this.date.date_part(scheduler._currentDate());\r\n\r\n\t\tvar last = 24 * 60, first = 0;\r\n\t\tif (cfg.limit_time_select) {\r\n\t\t\tfirst = 60 * cfg.first_hour;\r\n\t\t\tlast = 60 * cfg.last_hour + 1; // to include \"17:00\" option if time select is limited\r\n\t\t}\r\n\t\tdt.setHours(first / 60);\r\n\r\n\t\tsns._time_values = [];\r\n\t\thtml += \" \";\r\n\r\n\t\t//var full_day = scheduler.config.full_day;\r\n\r\n\t\treturn \"
\" + html + \"  –  \" + html + \"
\";\r\n\t},\r\n\tset_value: function(node, value, ev, config) {\r\n\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\t\tvar start_date,\r\n\t\t\tend_date;\r\n\r\n\t\tvar _init_once = function(inp, date, number) {\r\n\t\t\tscheduler.event(inp, \"click\", function() {\r\n\t\t\t\tscheduler.destroyCalendar(null, true);\r\n\t\t\t\tscheduler.renderCalendar({\r\n\t\t\t\t\tposition: inp,\r\n\t\t\t\t\tdate: new Date(this._date),\r\n\t\t\t\t\tnavigation: true,\r\n\t\t\t\t\thandler: function(new_date) {\r\n\t\t\t\t\t\tinp.value = scheduler.templates.calendar_time(new_date);\r\n\t\t\t\t\t\tinp._date = new Date(new_date);\r\n\t\t\t\t\t\tscheduler.destroyCalendar();\r\n\t\t\t\t\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date && number === 0) { //first element = start date\r\n\t\t\t\t\t\t\t_update_minical_select();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tif (scheduler.config.full_day) {\r\n\t\t\tif (!node._full_day) {\r\n\t\t\t\tvar html = \"\";\r\n\t\t\t\tif (!scheduler.config.wide_form)\r\n\t\t\t\t\thtml = node.previousSibling.innerHTML + html;\r\n\t\t\t\tnode.previousSibling.innerHTML = html;\r\n\t\t\t\tnode._full_day = true;\r\n\t\t\t}\r\n\t\t\tvar input = node.previousSibling.getElementsByTagName(\"input\")[0];\r\n\r\n\t\t\tvar isFulldayEvent = (scheduler.date.time_part(ev.start_date) === 0 && scheduler.date.time_part(ev.end_date) === 0);\r\n\t\t\tinput.checked = isFulldayEvent;\r\n\r\n\t\t\tselects[0].disabled = input.checked;\r\n\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\tif (!input.$_eventAttached) {\r\n\t\t\t\tinput.$_eventAttached = true;\r\n\t\t\t\tscheduler.event(input, \"click\", function() {\r\n\t\t\t\t\tif (input.checked === true) {\r\n\t\t\t\t\t\tvar obj = {};\r\n\t\t\t\t\t\tscheduler.form_blocks.calendar_time.get_value(node, obj);\r\n\r\n\t\t\t\t\t\tstart_date = scheduler.date.date_part(obj.start_date);\r\n\t\t\t\t\t\tend_date = scheduler.date.date_part(obj.end_date);\r\n\r\n\t\t\t\t\t\tif (+end_date == +start_date || (+end_date >= +start_date && (ev.end_date.getHours() !== 0 || ev.end_date.getMinutes() !== 0)))\r\n\t\t\t\t\t\t\tend_date = scheduler.date.add(end_date, 1, \"day\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar start = start_date || ev.start_date;\r\n\t\t\t\t\tvar end = end_date || ev.end_date;\r\n\t\t\t\t\t_attach_action(inputs[0], start);\r\n\t\t\t\t\t_attach_action(inputs[1], end);\r\n\t\t\t\t\tselects[0].value = start.getHours() * 60 + start.getMinutes();\r\n\t\t\t\t\tselects[1].value = end.getHours() * 60 + end.getMinutes();\r\n\r\n\t\t\t\t\tselects[0].disabled = input.checked;\r\n\t\t\t\t\tselects[1].disabled = input.checked;\r\n\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (scheduler.config.event_duration && scheduler.config.auto_end_date) {\r\n\r\n\t\t\tvar _update_minical_select = function () {\r\n\t\t\t\tif (!(scheduler.config.auto_end_date && scheduler.config.event_duration)){\r\n\t\t\t\t\t// setting may be disabled after the handler is attached\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tstart_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\t\t\tend_date = new Date(start_date.getTime() + (scheduler.config.event_duration * 60 * 1000));\r\n\r\n\t\t\t\tinputs[1].value = scheduler.templates.calendar_time(end_date);\r\n\t\t\t\tinputs[1]._date = scheduler.date.date_part(new Date(end_date));\r\n\r\n\t\t\t\tselects[1].value = end_date.getHours() * 60 + end_date.getMinutes();\r\n\t\t\t};\r\n\r\n\t\t\tif(!selects[0].$_eventAttached){\r\n\t\t\t\tselects[0].addEventListener(\"change\", _update_minical_select); // only update on first select should trigger update so user could define other end date if he wishes too\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfunction _attach_action(inp, date, number) {\r\n\t\t\t_init_once(inp, date, number);\r\n\t\t\tinp.value = scheduler.templates.calendar_time(date);\r\n\t\t\tinp._date = scheduler.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\t_attach_action(inputs[0], ev.start_date, 0);\r\n\t\t_attach_action(inputs[1], ev.end_date, 1);\r\n\t\t_init_once = function() {};\r\n\r\n\t\tfunction _round_minutes(date) {\r\n\t\t\tvar time_values = config._time_values;\r\n\t\t\tvar direct_value = date.getHours() * 60 + date.getMinutes();\r\n\t\t\tvar fixed_value = direct_value;\r\n\t\t\tvar value_found = false;\r\n\r\n\t\t\tfor (var k = 0; k < time_values.length; k++) {\r\n\t\t\t\tvar t_v = time_values[k];\r\n\t\t\t\tif (t_v === direct_value) {\r\n\t\t\t\t\tvalue_found = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif (t_v < direct_value)\r\n\t\t\t\t\tfixed_value = t_v;\r\n\t\t\t}\r\n\r\n\t\t\tif(!(value_found || fixed_value))\r\n\t\t\t\treturn -1;\r\n\r\n\t\t\treturn (value_found) ? direct_value : fixed_value;\r\n\t\t}\r\n\r\n\t\tselects[0].value = _round_minutes(ev.start_date);\r\n\t\tselects[1].value = _round_minutes(ev.end_date);\r\n\r\n\t},\r\n\tget_value: function(node, ev) {\r\n\t\tvar inputs = node.getElementsByTagName(\"input\");\r\n\t\tvar selects = node.getElementsByTagName(\"select\");\r\n\r\n\t\tev.start_date = scheduler.date.add(inputs[0]._date, selects[0].value, \"minute\");\r\n\t\tev.end_date = scheduler.date.add(inputs[1]._date, selects[1].value, \"minute\");\r\n\r\n\t\tif (ev.end_date <= ev.start_date)\r\n\t\t\tev.end_date = scheduler.date.add(ev.start_date, scheduler.config.time_step, \"minute\");\r\n\t\treturn {\r\n\t\t\tstart_date: new Date(ev.start_date),\r\n\t\t\tend_date: new Date(ev.end_date)\r\n\t\t};\r\n\t},\r\n\tfocus: function(node) {\r\n\t}\r\n};\r\nscheduler.linkCalendar = function(calendar, datediff) {\r\n\tvar action = function() {\r\n\t\tvar date = scheduler._date;\r\n\t\tvar dateNew = new Date(date.valueOf());\r\n\t\tif (datediff) dateNew = datediff(dateNew);\r\n\t\tdateNew.setDate(1);\r\n\t\tscheduler.updateCalendar(calendar, dateNew);\r\n\t\treturn true;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onViewChange\", action);\r\n\tscheduler.attachEvent(\"onXLE\", action);\r\n\tscheduler.attachEvent(\"onEventAdded\", action);\r\n\tscheduler.attachEvent(\"onEventChanged\", action);\r\n\tscheduler.attachEvent(\"onEventDeleted\", action);\r\n\taction();\r\n};\r\n\r\nscheduler._markCalendarCurrentDate = function(calendar) {\r\n\tvar state = scheduler.getState();\r\n\tvar from = state.min_date;\r\n\tvar to = state.max_date;\r\n\tvar mode = state.mode;\r\n\r\n\tvar month_start = scheduler.date.month_start(new Date(calendar._date));\r\n\tvar month_end = scheduler.date.add(month_start, 1, \"month\");\r\n\r\n\tvar noHighlight = {\r\n\t\t\"month\":true,\r\n\t\t\"year\":true,\r\n\t\t\"agenda\":true,\r\n\t\t\"grid\":true\r\n\t};\r\n\t// no need to highlight current dates for a large range views - agenda, year, etc.\r\n\tif(noHighlight[mode] || (from.valueOf() <= month_start.valueOf() && to.valueOf() >= month_end.valueOf())){\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar current = from;\r\n\twhile(current.valueOf() < to.valueOf()){\r\n\t\tif (month_start.valueOf() <= current.valueOf() && month_end > current) {\r\n\t\t\tscheduler.markCalendar(calendar, current, \"dhx_calendar_click\");\r\n\t\t}\r\n\t\tcurrent = scheduler.date.add(current, 1, \"day\");\r\n\t}\r\n};\r\n\r\nscheduler.attachEvent(\"onEventCancel\", function(){\r\n\tscheduler.destroyCalendar(null, true);\r\n});\r\n\r\nscheduler.attachEvent(\"onDestroy\", function(){\r\n\tscheduler.destroyCalendar();\r\n});\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\",function(){\r\n\tscheduler.xy.scroll_width = 0;\r\n\r\n\tvar old = scheduler.render_view_data;\r\n\tscheduler.render_view_data=function(){\r\n\t\tvar data = this._els[\"dhx_cal_data\"][0];\r\n\t\tdata.firstChild._h_fix = true;\r\n\r\n\t\told.apply(scheduler,arguments);\r\n\r\n\r\n\r\n\t\tvar height = parseInt(data.style.height);\r\n\t\tdata.style.height=\"1px\";\r\n\t\tdata.style.height=data.scrollHeight+\"px\";\r\n\r\n\t\tthis._obj.style.height = this._obj.clientHeight + data.scrollHeight - height + \"px\";\r\n\t};\r\n\r\n\tvar old_s=scheduler._reset_month_scale;\r\n\tscheduler._reset_month_scale=function(a,b,c,d){\r\n\t\tvar dummy = {clientHeight:100};\r\n\t\told_s.apply(scheduler,[dummy,b,c,d]);\r\n\t\ta.innerHTML = dummy.innerHTML;\r\n\t};\r\n\r\n});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Multisection\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\n\r\nfunction parseXMLOptions(loader, config){\r\n\tvar items = scheduler.ajax.xpath(\"//data/item\", loader.xmlDoc);\r\n\tvar ids = {};\r\n\tfor (var i = 0; i < items.length; i++) {\r\n\t\tids[items[i].getAttribute(config.map_to)] = true;\r\n\t}\r\n\treturn ids;\r\n}\r\n\r\nfunction parseJSONOptions(loader, config){\r\n\ttry{\r\n\t\tvar items = JSON.parse(loader.xmlDoc.responseText);\r\n\t\tvar ids = {};\r\n\t\tfor (var i = 0; i < items.length; i++) {\r\n\t\t\tvar option = items[i];\r\n\r\n\t\t\tids[option.value || option.key || option.id] = true;\r\n\t\t}\r\n\t\treturn ids;\r\n\t}catch(e){\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\nscheduler.form_blocks[\"multiselect\"]={\r\n\trender:function(sns) {\r\n\t\tvar css = \"dhx_multi_select_control dhx_multi_select_\"+sns.name;\r\n\t\tif(!!sns.vertical){\r\n\t\t\tcss += \" dhx_multi_select_control_vertical\";\r\n\t\t}\r\n\r\n\t\tvar _result = \"
\";\r\n\t\tfor (var i=0; i\"+sns.options[i].label+\"\";\r\n\t\t}\r\n\t\t_result += \"
\";\r\n\t\treturn _result;\r\n\t},\r\n\tset_value:function(node,value,ev,config){\r\n\r\n\t\tvar _children = node.getElementsByTagName('input');\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\t_children[i].checked = false; //unchecking all inputs on the form\r\n\t\t}\r\n\r\n\t\tfunction _mark_inputs(ids) { // ids = [ 0: undefined, 1: undefined, 2: true, 'custom_name': false ... ]\r\n\t\t\tvar _children = node.getElementsByTagName('input');\r\n\t\t\tfor(var i=0;i<_children.length; i++) {\r\n\t\t\t\t_children[i].checked = !! ids[_children[i].value];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar _ids = {};\r\n\t\tif (ev[config.map_to]) {\r\n\t\t\tvar results = (ev[config.map_to] + \"\").split(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t\t\tfor (var i = 0; i < results.length; i++) {\r\n\t\t\t\t_ids[results[i]] = true;\r\n\t\t\t}\r\n\t\t\t_mark_inputs(_ids);\r\n\t\t} else {\r\n\t\t\tif (scheduler._new_event || !config.script_url)\r\n\t\t\t\treturn;\r\n\t\t\tvar divLoading = document.createElement('div');\r\n\t\t\tdivLoading.className = 'dhx_loading';\r\n\t\t\tdivLoading.style.cssText = \"position: absolute; top: 40%; left: 40%;\";\r\n\t\t\tnode.appendChild(divLoading);\r\n\r\n\t\t\tvar url = [\r\n\t\t\t\tconfig.script_url,\r\n\t\t\t\t(config.script_url.indexOf(\"?\") == -1 ? \"?\" : \"&\"),\r\n\t\t\t\t'dhx_crosslink_' + config.map_to + '=' + ev.id + '&uid=' + scheduler.uid()\r\n\t\t\t].join(\"\");\r\n\r\n\t\t\tscheduler.ajax.get(url, function(loader) {\r\n\t\t\t\tvar options = parseJSONOptions(loader, config);\r\n\t\t\t\tif(!options){\r\n\t\t\t\t\toptions = parseXMLOptions(loader, config);\r\n\t\t\t\t}\r\n\t\t\t\t_mark_inputs(options);\r\n\t\t\t\tnode.removeChild(divLoading);\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\tget_value:function(node,ev,config){\r\n\t\tvar _result = [];\r\n\t\tvar _children = node.getElementsByTagName(\"input\");\r\n\t\tfor(var i=0;i<_children.length;i++) {\r\n\t\t\tif(_children[i].checked)\r\n\t\t\t\t_result.push(_children[i].value);\r\n\t\t}\r\n\t\treturn _result.join(config.delimiter || scheduler.config.section_delimiter || \",\");\r\n\t},\r\n\r\n\tfocus:function(node){\r\n\t}\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\r\n\tfunction backup(obj){\r\n\t\tvar t = function(){};\r\n\t\tt.prototype = obj;\r\n\t\treturn t;\r\n\t}\r\n\r\n\tvar old = scheduler._load;\r\n\tscheduler._load=function(url,from){\r\n\t\turl=url||this._load_url;\r\n\t\tif (typeof url == \"object\"){\r\n\t\t\tvar t = backup(this._loaded);\r\n\t\t\tfor (var i=0; i < url.length; i++) {\r\n\t\t\t\tthis._loaded=new t();\r\n\t\t\t\told.call(this,url[i],from);\r\n\t\t\t}\r\n\t\t} else\r\n\t\t\told.apply(this,arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\t/* global Backbone */\r\n\tvar cfg = {\r\n\t\tuse_id : false\r\n\t};\r\n\r\n\t//remove private properties\r\n\tfunction sanitize(ev){\r\n\t\tvar obj = {};\r\n\t\tfor (var key in ev)\r\n\t\t\tif (key.indexOf(\"_\") !== 0)\r\n\t\t\t\tobj[key] = ev[key];\r\n\r\n\t\tif (!cfg.use_id)\r\n\t\t\tdelete obj.id;\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\tvar update_timer;\r\n\tfunction update_view(){\r\n\t\tclearTimeout(update_timer);\r\n\t\tupdate_timer = setTimeout(function(){\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.updateView();\r\n\t\t},1);\r\n\t}\r\n\r\n\tfunction _start_ext_load(cal){\r\n\t\tcal._loading = true;\r\n\t\tcal._not_render = true;\r\n\r\n\t\tcal.callEvent(\"onXLS\", []);\r\n\t}\r\n\tfunction _finish_ext_load(cal){\r\n\t\tcal._not_render = false;\r\n\t\tif (cal._render_wait)\r\n\t\t\tcal.render_view_data();\r\n\t\tcal._loading = false;\r\n\r\n\t\tcal.callEvent(\"onXLE\", []);\r\n\t}\r\n\r\n\r\n\tfunction _get_id(model){\r\n\t\treturn cfg.use_id ? model.id : model.cid;\r\n\t}\r\n\r\nscheduler.backbone = function(events, config){\r\n\tif (config) cfg = config;\r\n\r\n\tevents.bind(\"change\", function(model, info){\r\n\t\tvar cid = _get_id(model);\r\n\t\tvar ev = scheduler._events[cid] = model.toJSON();\r\n\t\tev.id = cid;\r\n\r\n\t\tscheduler._init_event(ev);\r\n\t\tupdate_view();\r\n\t});\r\n\tevents.bind(\"remove\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (scheduler._events[cid])\r\n\t\t\tscheduler.deleteEvent(cid);\r\n\t});\r\n\r\n\tvar queue = [];\r\n\tfunction add_from_queue(){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif (queue.length){\r\n\t\t\tscheduler.parse(queue, \"json\");\r\n\t\t\tqueue = [];\r\n\t\t}\r\n\t}\r\n\r\n\tevents.bind(\"add\", function(model, changes){\r\n\t\tvar cid = _get_id(model);\r\n\t\tif (!scheduler._events[cid]){\r\n\t\t\tvar ev = model.toJSON();\r\n\t\t\tev.id = cid;\r\n\t\t\tscheduler._init_event(ev);\r\n\r\n\t\t\tqueue.push(ev);\r\n\t\t\tif (queue.length == 1)\r\n\t\t\t\tsetTimeout(add_from_queue,1);\r\n\t\t}\r\n\t});\r\n\r\n\tevents.bind(\"request\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_start_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"sync\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\tevents.bind(\"error\", function(obj){\r\n\t\tif (obj instanceof Backbone.Collection)\r\n\t\t\t_finish_ext_load(scheduler);\r\n\t});\r\n\r\n\r\n\tscheduler.attachEvent(\"onEventCreated\", function(id){\r\n\t\tvar ev = new events.model(scheduler.getEvent(id));\r\n\t\tscheduler._events[id] = ev.toJSON();\r\n\t\tscheduler._events[id].id = id;\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventAdded\", function(id){\r\n\t\tif (!events.get(id)){\r\n\t\t\tvar data = sanitize(scheduler.getEvent(id));\r\n\t\t\tvar model = new events.model(data);\r\n\r\n\t\t\tvar cid = _get_id(model);\r\n\t\t\tif (cid != id)\r\n\t\t\t\tthis.changeEventId(id, cid);\r\n\t\t\tevents.add(model);\r\n\t\t\tevents.trigger(\"scheduler:add\", model);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function(id){\r\n\t\tvar ev = events.get(id);\r\n\t\tvar upd = sanitize(scheduler.getEvent(id));\r\n\r\n\t\tev.set(upd);\r\n\t\tevents.trigger(\"scheduler:change\", ev);\r\n\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function(id){\r\n\t\tvar model = events.get(id);\r\n\t\tif (model){\r\n\t\t\tevents.trigger(\"scheduler:remove\", model);\r\n\t\t\tevents.remove(id);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t/* global dhtmlDragAndDropObject, dhtmlx */\r\n// lame old code doesn't provide raw event object\r\n\tscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\t\tvar dragger = (new dhtmlDragAndDropObject());\r\n\t\tvar old = dragger.stopDrag;\r\n\t\tvar last_event;\r\n\t\tdragger.stopDrag = function(e) {\r\n\t\t\tlast_event = e;\r\n\t\t\treturn old.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tfunction on_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\r\n\t\t\tif (scheduler.checkEvent(\"onBeforeExternalDragIn\") && !scheduler.callEvent(\"onBeforeExternalDragIn\", [sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml, last_event]))\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar temp = scheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\t\t\tif (!scheduler.callEvent(\"onExternalDragIn\", [id, sourceHtmlObject, last_event])) {\r\n\t\t\t\t\tthis._drag_mode = this._drag_id = null;\r\n\t\t\t\t\tthis.deleteEvent(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tvar action_data = scheduler.getActionData(last_event);\r\n\t\t\tvar event_data = {\r\n\t\t\t\tstart_date: new Date(action_data.date)\r\n\t\t\t};\r\n\r\n\t\t\t// custom views, need to assign section id, fix dates\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\tvar view_options = scheduler.matrix[scheduler._mode];\r\n\t\t\t\tevent_data[view_options.y_property] = action_data.section;\r\n\r\n\t\t\t\tvar pos = scheduler._locate_cell_timeline(last_event);\r\n\t\t\t\tevent_data.start_date = view_options._trace_x[pos.x];\r\n\t\t\t\tevent_data.end_date = scheduler.date.add(event_data.start_date, view_options.x_step, view_options.x_unit);\r\n\t\t\t}\r\n\t\t\tif (scheduler._props && scheduler._props[scheduler._mode]) {\r\n\t\t\t\tevent_data[scheduler._props[scheduler._mode].map_to] = action_data.section;\r\n\t\t\t}\r\n\r\n\t\t\tscheduler.addEventNow(event_data);\r\n\r\n\t\t\tscheduler.detachEvent(temp);\r\n\t\t}\r\n\r\n\t\tdragger.addDragLanding(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t_drag: function(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml) {\r\n\t\t\t\ton_drop(sourceHtmlObject, dhtmlObject, targetHtmlObject, targetHtml);\r\n\t\t\t},\r\n\t\t\t_dragIn: function(htmlObject, shtmlObject) {\r\n\t\t\t\treturn htmlObject;\r\n\t\t\t},\r\n\t\t\t_dragOut: function(htmlObject) {\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(dhtmlx.DragControl) {\r\n\t\t\tdhtmlx.DragControl.addDrop(scheduler._els[\"dhx_cal_data\"][0], {\r\n\t\t\t\tonDrop: function (source, target, d, e) {\r\n\t\t\t\t\tvar sourceDhtmlx = dhtmlx.DragControl.getMaster(source);\r\n\t\t\t\t\tlast_event = e;\r\n\t\t\t\t\ton_drop(source, sourceDhtmlx, target, e.target || e.srcElement);\r\n\t\t\t\t},\r\n\r\n\t\t\t\tonDragIn: function (source, target, e) {\r\n\t\t\t\t\treturn target;\r\n\t\t\t\t}\r\n\t\t\t}, true);\r\n\t\t}\r\n\t});\r\n\r\n}","export default function(scheduler){\r\n\r\n\tvar dx, dy,\r\n\t\thtml_regexp = new RegExp(\"<[^>]*>\", \"g\"),\r\n\t\tnewline_regexp = new RegExp(\"]*>\", \"g\");\r\n\r\n\tfunction clean_html(val) {\r\n\t\treturn val.replace(newline_regexp, \"\\n\").replace(html_regexp, \"\");\r\n\t}\r\n\r\n\tfunction x_norm(x, offset) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset)) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx));\r\n\t}\r\n\r\n\tfunction x_norm_event(x, offset, is_left) {\r\n\t\tx = parseFloat(x);\r\n\t\toffset = parseFloat(offset);\r\n\t\tif (!isNaN(offset) && is_left) x -= offset;\r\n\r\n\t\tvar w = colsWidth(x);\r\n\t\tx = x - w.width + w.cols*dx;\r\n\t\treturn isNaN(x)?\"auto\":(100*x/(dx-(!isNaN(offset)?offset:0)));\r\n\t}\r\n\tfunction colsWidth(width) {\r\n\t\tvar r = 0;\r\n\t\tvar header = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\tvar els = header[1] ? header[1].childNodes : header[0].childNodes;\r\n\t\tfor (var i = 0; i < els.length; i++) {\r\n\t\t\tvar el = els[i].style ? els[i] : els[i].parentNode;\r\n\t\t\tvar w = parseFloat(el.style.width);\r\n\t\t\tif (width > w){\r\n\t\t\t\twidth -= (w+1);\r\n\t\t\t\tr+=(w+1);\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t\treturn { width: r, cols: i };\r\n\t}\r\n\r\n\tfunction y_norm(y) {\r\n\t\ty = parseFloat(y);\r\n\t\tif (isNaN(y)) return \"auto\";\r\n\t\treturn 100 * y / dy;\r\n\t}\r\n\r\n\tfunction get_style(node, style){\r\n\t\treturn (window.getComputedStyle?(window.getComputedStyle(node, null)[style]):(node.currentStyle?node.currentStyle[style]:null))||\"\";\r\n\t}\r\n\r\n\tfunction de_day(node, n) {\r\n\t\tvar x = parseInt(node.style.left, 10);\r\n\r\n\t\tfor (var dx = 0; dx < scheduler._cols.length; dx++) {\r\n\t\t\tx -= scheduler._cols[dx];\r\n\t\t\tif (x < 0) return dx;\r\n\t\t}\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction de_week(node, n) {\r\n\t\tvar y = parseInt(node.style.top, 10);\r\n\t\tfor (var dy = 0; dy < scheduler._colsS.heights.length; dy++)\r\n\t\t\tif (scheduler._colsS.heights[dy] > y) return dy;\r\n\t\treturn n;\r\n\t}\r\n\r\n\tfunction xml_start(tag) {\r\n\t\treturn tag ? \"<\"+tag+\">\" : \"\";\r\n\t}\r\n\tfunction xml_end(tag) {\r\n\t\treturn tag ? \"\" : \"\";\r\n\t}\r\n\r\n\tfunction xml_top(tag, profile, header, footer) {\r\n\t\tvar xml = \"<\"+tag+\" profile='\" + profile + \"'\";\r\n\t\tif (header)\r\n\t\t\txml += \" header='\" + header + \"'\";\r\n\t\tif (footer)\r\n\t\t\txml += \" footer='\" + footer + \"'\";\r\n\t\txml += \">\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body_header() {\r\n\t\tvar xml = \"\";\r\n\t\t// detects if current mode is timeline\r\n\t\tvar mode = scheduler._mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode])\r\n\t\t\tmode = (scheduler.matrix[scheduler._mode].render == \"cell\") ? \"matrix\" : \"timeline\";\r\n\t\txml += \"\";\r\n\r\n\t\tif (scheduler._mode == \"week_agenda\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"DIV\");\r\n\t\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\t\tif (xh[i].className == \"dhx_wa_scale_bar\")\r\n\t\t\t\t\txml += \"\" + clean_html(xh[i].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes[0].childNodes;\r\n\r\n\t\t\txml += \"\" + clean_html(xh[0].innerHTML) + \"\" + clean_html(xh[1].innerHTML) + \"\";\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\t\t\tvar xh = scheduler._els.dhx_cal_data[0].childNodes;\r\n\t\t\tfor (var i = 0; i < xh.length; i++) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\txml += xml_month_scale(xh[i].querySelector(\".dhx_year_week\").childNodes);\r\n\t\t\t\txml += xml_month(xh[i].querySelector(\".dhx_year_body\"));\r\n\t\t\t\txml += \"\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\txml += \"\";\r\n\t\t\tvar xh = scheduler._els.dhx_cal_header[0].childNodes;\r\n\t\t\txml += xml_month_scale(xh);\r\n\t\t\txml += \"\";\r\n\r\n\t\t\tvar yh = scheduler._els.dhx_cal_data[0];\r\n\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.firstChild.rows.length; i++) {\r\n\t\t\t\t\tvar el = yh.firstChild.rows[i];\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh.firstChild.rows[0].cells[0].offsetHeight;\r\n\t\t\t} else if (yh.firstChild.tagName == \"TABLE\") {\r\n\t\t\t\txml += xml_month(yh);\r\n\t\t\t} else {\r\n\t\t\t\tyh = yh.childNodes[yh.childNodes.length - 1];\r\n\t\t\t\twhile (yh.className.indexOf(\"dhx_scale_holder\") == -1)\r\n\t\t\t\t\tyh = yh.previousSibling;\r\n\t\t\t\tyh = yh.childNodes;\r\n\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tfor (var i = 0; i < yh.length; i++)\r\n\t\t\t\t\txml += \"\\n\";\r\n\t\t\t\txml += \"\";\r\n\t\t\t\tdy = yh[0].offsetHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month(yh) {\r\n\t\tvar xml = \"\";\r\n\t\tvar r = yh.querySelectorAll(\"tr\");\r\n\t\tfor (var i = 0; i < r.length; i++) {\r\n\t\t\tvar days = [];\r\n\t\t\tvar cells = r[i].querySelectorAll(\"td\");\r\n\r\n\t\t\tfor (var j = 0; j < cells.length; j++)\r\n\t\t\t\tdays.push(cells[j].querySelector(\".dhx_month_head\").innerHTML);\r\n\r\n\t\t\txml += \"\\n\";\r\n\t\t\tdy = cells[0].offsetHeight;\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_month_scale(xh) {\r\n\t\tvar xhs,\r\n\t\t\txml = \"\";\r\n\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\tif (scheduler.matrix[scheduler._mode].second_scale)\r\n\t\t\t\txhs = xh[1].childNodes;\r\n\r\n\t\t\txh = xh[0].childNodes;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < xh.length; i++)\r\n\t\t\txml += \"\\n\";\r\n\t\tdx = xh[0].offsetWidth;\r\n\r\n\t\tif (xhs) {\r\n\t\t\tvar width = 0;\r\n\t\t\tvar top_width = xh[0].offsetWidth;\r\n\t\t\tvar top_col = 1;\r\n\t\t\tfor (var i = 0; i < xhs.length; i++) {\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t\twidth += xhs[i].offsetWidth;\r\n\t\t\t\tif (width >= top_width) {\r\n\t\t\t\t\ttop_width += (xh[top_col] ? xh[top_col].offsetWidth : 0);\r\n\t\t\t\t\ttop_col++;\r\n\t\t\t\t}\r\n\t\t\t\tdx = xhs[0].offsetWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction xml_body(colors) {\r\n\t\tvar xml = \"\";\r\n\t\tvar evs = scheduler._rendered;\r\n\t\tvar matrix = scheduler.matrix && scheduler.matrix[scheduler._mode];\r\n\r\n\t\tif (scheduler._mode == \"agenda\" || scheduler._mode == \"map\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n xml += \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"week_agenda\") {\r\n\r\n\t\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\t\txml += \"\" + clean_html(evs[i].innerHTML) + \"\";\r\n\r\n\t\t} else if (scheduler._mode == \"year\") {\r\n\r\n\t\t\tvar evs = scheduler.get_visible_events();\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar d = evs[i].start_date;\r\n\t\t\t\tif (d.valueOf() < scheduler._min_date.valueOf())\r\n\t\t\t\t\td = scheduler._min_date;\r\n\r\n\t\t\t\twhile (d < evs[i].end_date) {\r\n\t\t\t\t\tvar m = d.getMonth() + 12 * (d.getFullYear() - scheduler._min_date.getFullYear()) - scheduler.week_starts._month;\r\n\t\t\t\t\tvar day = scheduler.week_starts[m] + d.getDate() - 1;\r\n\t\t\t\t\tvar text_color = colors ? get_style(scheduler._get_year_cell(d), \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(scheduler._get_year_cell(d), \"backgroundColor\") : \"\";\r\n\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t\td = scheduler.date.add(d, 1, \"day\");\r\n\t\t\t\t\tif (d.valueOf() >= scheduler._max_date.valueOf())\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (matrix && matrix.render == \"cell\") {\r\n\t\t\tvar evs = scheduler._els.dhx_cal_data[0].getElementsByTagName(\"TD\");\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\txml += \"\\n\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\t\tvar zx, zdx;\r\n\t\t\t\tif (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\t// logic for timeline view\r\n\t\t\t\t\tzx = x_norm(evs[i].style.left);\r\n\t\t\t\t\tzdx = x_norm(evs[i].offsetWidth)-1;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// we should use specific logic for day/week/units view\r\n\t\t\t\t\tvar left_norm = scheduler.config.use_select_menu_space ? 0 : 26;\r\n\t\t\t\t\tzx = x_norm_event(evs[i].style.left, left_norm, true);\r\n\t\t\t\t\tzdx = x_norm_event(evs[i].style.width, left_norm)-1;\r\n\t\t\t\t}\r\n\t\t\t\tif (isNaN(zdx * 1)) continue;\r\n\t\t\t\tvar zy = y_norm(evs[i].style.top);\r\n\t\t\t\tvar zdy = y_norm(evs[i].style.height);\r\n\r\n\t\t\t\tvar e_type = evs[i].className.split(\" \")[0].replace(\"dhx_cal_\", \"\");\r\n\t\t\t\tif (e_type === 'dhx_tooltip_line') continue;\r\n\r\n\t\t\t\tvar dets = scheduler.getEvent(evs[i].getAttribute(scheduler.config.event_attribute));\r\n if (!dets) continue;\r\n\t\t\t\tvar day = dets._sday;\r\n\t\t\t\tvar week = dets._sweek;\r\n\t\t\t\tvar length = dets._length || 0;\r\n\r\n\t\t\t\tif (scheduler._mode == \"month\") {\r\n\t\t\t\t\tzdy = parseInt(evs[i].offsetHeight, 10);\r\n\t\t\t\t\tzy = parseInt(evs[i].style.top, 10) - scheduler.xy.month_head_height;\r\n\r\n\t\t\t\t\tday = de_day(evs[i], day);\r\n\t\t\t\t\tweek = de_week(evs[i], week);\r\n\t\t\t\t} else if (scheduler.matrix && scheduler.matrix[scheduler._mode]) {\r\n\t\t\t\t\tday = 0;\r\n\t\t\t\t\tvar el = evs[i].parentNode.parentNode.parentNode;\r\n\t\t\t\t\tweek = el.rowIndex;\r\n\t\t\t\t\tvar dy_copy = dy;\r\n\t\t\t\t\tdy = evs[i].parentNode.offsetHeight;\r\n\t\t\t\t\tzy = y_norm(evs[i].style.top);\r\n\t\t\t\t\tzy -= zy * 0.2;\r\n\t\t\t\t\tdy = dy_copy;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (evs[i].parentNode == scheduler._els.dhx_cal_data[0]) continue;\r\n\t\t\t\t\tvar parent = scheduler._els[\"dhx_cal_data\"][0].childNodes[0];\r\n\t\t\t\t\tvar offset = parseFloat(parent.className.indexOf(\"dhx_scale_holder\") != -1 ? parent.style.left : 0);\r\n\t\t\t\t\tzx += x_norm(evs[i].parentNode.style.left, offset);\r\n\t\t\t\t}\r\n\r\n\t\t\t\txml += \"\\n\";\r\n\r\n\t\t\t\tif (e_type == \"event\") {\r\n\t\t\t\t\txml += \"
\";\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i].childNodes[2], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i].childNodes[2], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvar text_color = colors ? get_style(evs[i], \"color\") : \"\";\r\n\t\t\t\t\tvar bg_color = colors ? get_style(evs[i], \"backgroundColor\") : \"\";\r\n\t\t\t\t\txml += \"\";\r\n\t\t\t\t}\r\n\t\t\t\txml += \"
\";\r\n\t\t\t}\r\n\t\t\t}\r\n\r\n\t\treturn xml;\r\n\t}\r\n\r\n\tfunction toXML(start, end, view, mode, header, footer){\r\n\t\tvar colors = false;\r\n\t\tif (mode == \"fullcolor\") {\r\n\t\t\tcolors = true;\r\n\t\t\tmode = \"color\";\r\n\t\t}\r\n\r\n\t\tmode = mode || \"color\";\r\n\r\n\t\tvar xml = \"\";\r\n\t\tif (start) {\r\n\r\n\t\t\tvar original_date = scheduler._date;\r\n\t\t\tvar original_mode = scheduler._mode;\r\n\t\t\tend = scheduler.date[view+\"_start\"](end);\r\n\t\t\tend = scheduler.date[\"get_\"+view+\"_end\"] ? scheduler.date[\"get_\"+view+\"_end\"](end) : scheduler.date.add(end, 1, view);\r\n\r\n\t\t\txml = xml_top(\"pages\", mode, header, footer);\r\n\t\t\tfor (var temp_date = new Date(start); +temp_date < +end; temp_date = this.date.add(temp_date, 1, view)) {\r\n\t\t\t\tthis.setCurrentView(temp_date, view);\r\n\t\t\t\txml += xml_start(\"page\") + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"page\");\r\n\t\t\t}\r\n\t\t\txml += xml_end(\"pages\");\r\n\r\n\t\t\tthis.setCurrentView(original_date, original_mode);\r\n\t\t} else {\r\n\t\t\txml = xml_top(\"data\", mode, header, footer) + xml_body_header().replace(\"\\u2013\", \"-\") + xml_body(colors) + xml_end(\"data\");\r\n\t\t}\r\n\t\treturn xml;\r\n\t}\r\n\tscheduler.getPDFData = toXML;\r\n\tfunction send_xml(xml, url){\r\n\t\tvar uid = scheduler.uid();\r\n\t\tvar d = document.createElement(\"div\");\r\n\t\td.style.display = \"none\";\r\n\t\tdocument.body.appendChild(d);\r\n\r\n\t\td.innerHTML = '
';\r\n\t\tdocument.getElementById(uid).firstChild.value = encodeURIComponent(xml);\r\n\t\tdocument.getElementById(uid).submit();\r\n\t\td.parentNode.removeChild(d);\r\n\t}\r\n\r\n\tfunction to_pdf(start, end, view, url, mode, header, footer) {\r\n\t\tvar xml = \"\";\r\n\t\tif(typeof mode == \"object\"){\r\n\t\t\txml = schedulersToPdf(mode);\r\n\t\t}else{\r\n\t\t\txml = toXML.apply(this, [start, end, view, mode, header, footer]);\r\n\t\t}\r\n\r\n\t\tsend_xml(xml, url);\r\n\t}\r\n\r\n\tfunction schedulersToPdf(objects){\r\n\t\tvar xml = \"\";\r\n\t\tfor(var i=0; i < objects.length; i++){\r\n\t\t\txml += objects[i].source.getPDFData(objects[i].start, objects[i].end, objects[i].view, objects[i].mode, objects[i].header, objects[i].footer);\r\n\t\t}\r\n\t\txml += \"\";\r\n\t\treturn xml;\r\n\t}\r\n\r\n\t/*\r\n\t * scheduler.toPDF(url, mode, header, footer) - for a single scheduler\r\n\t * scheduler.toPDF(url, [scheduler1, scheduler2,...]) - for multiple schedulers\r\n\t * example:\r\n\t * scheduler.toPDF(\"generate.ashx\", [\r\n\t * { source: scheduler1, mode: \"color\" },\r\n\t * { source: scheduler2, mode: \"gray\", view:\"week\", start:new Date(2013, 06, 1), end:new Date(2013, 06, 28) },\r\n\t * { source: scheduler3 }\r\n\t * ]);\r\n\t *\r\n\t */\r\n\tscheduler.toPDF = function(url, mode, header, footer) {\r\n\t\treturn to_pdf.apply(this, [null, null, null, url, mode, header, footer]);\r\n\t};\r\n\tscheduler.toPDFRange = function(start, end, view, url, mode, header, footer) {\r\n\t\tif (typeof start == \"string\") {\r\n\t\t\tstart = scheduler.templates.api_date(start);\r\n\t\t\tend = scheduler.templates.api_date(end);\r\n\t\t}\r\n\r\n\t\treturn to_pdf.apply(this, arguments);\r\n\t};\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.icons_select = [\"icon_form\", \"icon_delete\"];\r\nscheduler.config.details_on_create = true;\r\nscheduler.config.show_quick_info = true;\r\nscheduler.xy.menu_width = 0;\r\n\r\n\r\n\r\nlet clickedElementPosition = null;\r\nscheduler.attachEvent(\"onSchedulerReady\", function(){\r\n\tconst container = scheduler.$container;\r\n\tif(container._$quickInfoHandler){\r\n\t\treturn;\r\n\t}else{\r\n\t\tcontainer._$quickInfoHandler = true;\r\n\t\t// store coordinates of clicked segment of an event\r\n\t\t// in case multi section events or multi-line month events\r\n\t\tscheduler.event(container, \"mousedown\", function(e){\r\n\t\t\tconst eventElement = e.target.closest(`[${scheduler.config.event_attribute}]`);\r\n\t\t\tif (eventElement) {\r\n\t\t\t\tclickedElementPosition = {\r\n\t\t\t\t\tid: eventElement.getAttribute(scheduler.config.event_attribute),\r\n\t\t\t\t\tposition: getPositionInsideScheduler(eventElement)\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\t\tscheduler.attachEvent(\"onDestroy\", () => {\r\n\t\t\tdelete container._$quickInfoHandler;\r\n\t\t});\r\n\t}\r\n});\r\n\r\nscheduler.attachEvent(\"onClick\", function(id){\r\n\tif(!scheduler.config.show_quick_info){\r\n\t\treturn;\r\n\t}\r\n\tscheduler.showQuickInfo(id);\r\n\treturn true;\r\n});\r\n\r\n(function(){\r\n\t// pass `force` argument in order to hide quick info synchronously\r\n\t// so it won't affect showQuickInfo call that can follow\r\n\tvar events = [\"onEmptyClick\", \"onViewChange\", \"onLightbox\", \"onBeforeEventDelete\", \"onBeforeDrag\"];\r\n\tvar hiding_function = function(){\r\n\t\tscheduler.hideQuickInfo(true);\r\n\t\treturn true;\r\n\t};\r\n\tfor (var i=0; i window.innerWidth){\r\n\t\t\tleft = window.innerWidth - width;\r\n\t\t}\r\n\t\tleft = Math.max(0, left);\r\n\r\n\t\tqi.style.left = left + \"px\";\r\n\t\tqi.style.top = pos.top - (pos.dy?height:-pos.height) + \"px\";\r\n\t} else {\r\n\r\n\t\tconst dataPos = scheduler.$container.querySelector('.dhx_cal_data').offsetTop;\r\n\t\tqi.style.top = dataPos + 20 + \"px\";\r\n\t\tif (pos.dx == 1){\r\n\t\t\tqi.style.right = \"auto\";\r\n\t\t\tqi.style.left = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.left = \"-10px\";\r\n\t\t\t},1);\r\n\t\t} else {\r\n\t\t\tqi.style.left = \"auto\";\r\n\t\t\tqi.style.right = -width + \"px\";\r\n\r\n\t\t\tsetTimeout(function(){\r\n\t\t\t\tqi.style.right = \"-10px\";\r\n\t\t\t},1);\r\n\t\t}\r\n\t\tqi.className = qi.className.replace(\" dhx_qi_left\",\"\").replace(\" dhx_qi_right\",\"\")+\" dhx_qi_\"+(pos.dx==1?\"left\":\"right\");\r\n\t}\r\n\r\n\tqi.ontransitionend = () => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t\tqi.ontransitionend = null;\r\n\t};\r\n\tsetTimeout(() => {\r\n\t\tfitQIInsideWindow(qi);\r\n\t}, 1);\r\n};\r\n\r\nfunction fitQIInsideWindow(quickInfoPopup){\r\n\tconst popupRect = quickInfoPopup.getBoundingClientRect();\r\n\tconst containerRect = scheduler.$container.getBoundingClientRect();\r\n\r\n\t// calculate the bottom offset of the Quick Info relative to the scheduler container\r\n\tconst offsetBottom = containerRect.bottom - popupRect.bottom;\r\n\r\n\t// If the popup extends outside the scheduler container, adjust its top position\r\n\tif (offsetBottom < 0) {\r\n\t\tquickInfoPopup.style.top = `${parseFloat(quickInfoPopup.style.top) + offsetBottom}px`;\r\n\t}\r\n}\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function(){\r\n\tscheduler.hideQuickInfo();\r\n\tif(this._quick_info_box){\r\n\t\tvar box = this._quick_info_box;\r\n\t\tif(box.parentNode){\r\n\t\t\tbox.parentNode.removeChild(box);\r\n\t\t}\r\n\t\tthis._quick_info_box = null;\r\n\t}\r\n});\r\nscheduler._quick_info_onscroll_handler = function(e){\r\n\tscheduler.hideQuickInfo();\r\n};\r\nscheduler._init_quick_info = function(){\r\n\tif (!this._quick_info_box){\r\n\r\n\r\n\t\tvar qi = this._quick_info_box = document.createElement(\"div\");\r\n\r\n\t\tthis._waiAria.quickInfoAttr(qi);\r\n\r\n\t\tqi.className = \"dhx_cal_quick_info\";\r\n\t\tif (scheduler.$testmode)\r\n\t\t\tqi.className += \" dhx_no_animate\";\r\n\t\tif (scheduler.config.rtl) qi.className += \" dhx_quick_info_rtl\";\r\n\t//title\r\n\t\tvar ariaAttr = this._waiAria.quickInfoHeaderAttrString();\r\n\t\tvar html = `\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t\t
`;\r\n\r\n\t//buttons\r\n\t\thtml += \"
\";\r\n\t\tvar buttons = scheduler.config.icons_select;\r\n\t\t\tfor (var i = 0; i < buttons.length; i++) {\r\n\t\t\t\tvar ariaAttr = this._waiAria.quickInfoButtonAttrString(this.locale.labels[buttons[i]]);\r\n\t\t\t\thtml += `
\r\n\t\t\t\t
${scheduler.locale.labels[buttons[i]]}
`;\r\n\t\t\t}\r\n\t\t// }\r\n\t\thtml += \"
\";\r\n\r\n\t\tqi.innerHTML = html;\r\n\t\tscheduler.event(qi, \"click\", function(ev){\r\n\t\t\tscheduler._qi_button_click(ev.target || ev.srcElement);\r\n\t\t});\r\n\t\tif (scheduler.config.quick_info_detached){\r\n\t\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"scroll\", scheduler._quick_info_onscroll_handler);\r\n\t\t}\r\n\t}\r\n\r\n\treturn this._quick_info_box;\r\n};\r\n\r\nscheduler._qi_button_click = function(node){\r\n\tvar box = scheduler._quick_info_box;\r\n\tif (!node || node == box) return;\r\n\r\n\tif(node.closest(\".dhx_cal_qi_close_btn\")){\r\n\t\tscheduler.hideQuickInfo();\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar mask = scheduler._getClassName(node);\r\n\tif (mask.indexOf(\"_icon\")!=-1){\r\n\t\tvar id = scheduler._quick_info_box_id;\r\n\t\tscheduler._click.buttons[mask.split(\" \")[1].replace(\"icon_\",\"\")](id);\r\n\t} else\r\n\t\tscheduler._qi_button_click(node.parentNode);\r\n};\r\n\r\nfunction getPositionInsideScheduler(element){\r\n\tlet left = 0;\r\n\tlet top = 0;\r\n\r\n\tlet node = element;\r\n\twhile (node && node != scheduler._obj){\r\n\t\tleft += node.offsetLeft;\r\n\t\ttop += node.offsetTop-node.scrollTop;\r\n\t\tnode = node.offsetParent;\r\n\t}\r\n\tif(node){\r\n\t\tlet dx = (left + element.offsetWidth/2) > (scheduler._x/2) ? 1 : 0;\r\n\t\tlet dy = (top + element.offsetHeight/2) > (scheduler._y/2) ? 1 : 0;\r\n\r\n\t\treturn { left:left, top:top, dx:dx, dy:dy,\r\n\t\t\twidth:element.offsetWidth, height:element.offsetHeight };\r\n\t}\r\n\treturn 0;\r\n}\r\n\r\nscheduler._get_event_counter_part = function(id){\r\n\tvar domEv = scheduler.getRenderedEvent(id);\r\n\treturn getPositionInsideScheduler(domEv);\r\n};\r\n\r\nscheduler._fill_quick_data = function(id){\r\n\tvar ev = scheduler.getEvent(id);\r\n\tvar qi = scheduler._quick_info_box;\r\n\r\n\tscheduler._quick_info_box_id = id;\r\n\r\n//title content\r\n\r\n\tvar header = {\r\n\t\tcontent: scheduler.templates.quick_info_title(ev.start_date, ev.end_date, ev),\r\n\t\tdate: scheduler.templates.quick_info_date(ev.start_date, ev.end_date, ev)\r\n\t};\r\n\tvar titleContent = qi.querySelector(\".dhx_cal_qi_tcontent\");\r\n\ttitleContent.innerHTML = `${header.content}`;\r\n\tvar titleDate = qi.querySelector(\".dhx_cal_qi_tdate\");\r\n\ttitleDate.innerHTML = header.date;\r\n\r\n\tscheduler._waiAria.quickInfoHeader(qi, [header.content, header.date].join(\" \"));\r\n\r\n//main content\r\n\tvar main = qi.querySelector(\".dhx_cal_qi_content\");\r\n\tconst mainContent = scheduler.templates.quick_info_content(ev.start_date, ev.end_date, ev);\r\n\tif(mainContent){\r\n\t\tmain.classList.remove(\"dhx_hidden\");\r\n\t\tmain.innerHTML = mainContent;\r\n\t}else{\r\n\t\tmain.classList.add(\"dhx_hidden\");\r\n\t}\r\n};\r\n\r\n\r\n}","export default function(scheduler){\r\n\t\r\nscheduler.attachEvent(\"onTemplatesReady\", function() {\r\n\tvar originalRecurringSetValue;\r\n\tif (scheduler.form_blocks.recurring) {\r\n\t\toriginalRecurringSetValue = scheduler.form_blocks.recurring.set_value;\r\n\t}\r\n\tvar original_left_buttons = scheduler.config.buttons_left.slice();\r\n\tvar original_right_buttons = scheduler.config.buttons_right.slice();\r\n\r\n\tscheduler.attachEvent(\"onBeforeLightbox\", function(id) {\r\n\t\tif (this.config.readonly_form || this.getEvent(id).readonly) {\r\n\t\t\tthis.config.readonly_active = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.config.readonly_active = false;\r\n\t\t\tscheduler.config.buttons_left = original_left_buttons.slice();\r\n\t\t\tscheduler.config.buttons_right = original_right_buttons.slice();\r\n\t\r\n\t\t\t// initial value\r\n\t\t\tif(scheduler.form_blocks.recurring) {\r\n\t\t\t\tscheduler.form_blocks.recurring.set_value = originalRecurringSetValue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar sns = this.config.lightbox.sections;\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tfor (var i = 0; i < sns.length; i++) {\r\n\t\t\t\tif (sns[i].type == 'recurring') {\r\n\t\t\t\t\tif (this.config.readonly_active && scheduler.form_blocks.recurring) {\r\n\t\t\t\t\t\tscheduler.form_blocks.recurring.set_value = function(node, value, ev) {\r\n\t\t\t\t\t\t\tvar wrapper = scheduler.$domHelpers.closest(node, \".dhx_wrap_section\");\r\n\t\t\t\t\t\t\tvar style = \"none\";\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_cal_lsection').display = style;\r\n\t\t\t\t\t\t\twrapper.querySelector('.dhx_form_repeat').display = style;\r\n\t\t\t\t\t\t\twrapper.style.display = style;\r\n\r\n\t\t\t\t\t\t\tscheduler.setLightboxSize();\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar forbidden_buttons = [\"dhx_delete_btn\", \"dhx_save_btn\"];\r\n\t\t\tvar button_arrays = [scheduler.config.buttons_left, scheduler.config.buttons_right];\r\n\t\t\tfor (var i = 0; i < forbidden_buttons.length; i++) {\r\n\t\t\t\tvar forbidden_button = forbidden_buttons[i];\r\n\t\t\t\tfor (var k = 0; k < button_arrays.length; k++) {\r\n\t\t\t\t\tvar button_array = button_arrays[k];\r\n\t\t\t\t\tvar index = -1;\r\n\t\t\t\t\tfor (var p = 0; p < button_array.length; p++) {\r\n\t\t\t\t\t\tif (button_array[p] == forbidden_button) {\r\n\t\t\t\t\t\t\tindex = p;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (index != -1) {\r\n\t\t\t\t\t\tbutton_array.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.resetLightbox();\r\n\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction txt_replace(tag, d, n, text) {\r\n\t\tvar txts = d.getElementsByTagName(tag);\r\n\t\tvar txtt = n.getElementsByTagName(tag);\r\n\t\tfor (var i = txtt.length - 1; i >= 0; i--) {\r\n\t\t\tvar n = txtt[i];\r\n\t\t\tif (!text){\r\n\t\t\t\tn.disabled = true;\r\n\t\t\t\t//radio and checkboxes loses state after .cloneNode in IE\r\n\t\t\t\tif(d.checked)\r\n\t\t\t\t\tn.checked = true;\r\n\t\t\t}else {\r\n\t\t\t\tvar t = document.createElement(\"span\");\r\n\t\t\t\tt.className = \"dhx_text_disabled\";\r\n\t\t\t\tt.innerHTML = text(txts[i]);\r\n\t\t\t\tn.parentNode.insertBefore(t, n);\r\n\t\t\t\tn.parentNode.removeChild(n);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tvar old = scheduler._fill_lightbox;\r\n\tscheduler._fill_lightbox = function() {\r\n\r\n\t\tvar lb = this.getLightbox();\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\tlb.style.visibility = 'hidden';\r\n\t\t\t// lightbox should have actual sizes before rendering controls\r\n\t\t\t// currently only matters for dhtmlxCombo\r\n\t\t\tlb.style.display = 'block';\r\n\t\t}\r\n\t\tvar res = old.apply(this, arguments);\r\n\t\tif (this.config.readonly_active) {\r\n\t\t\t//reset visibility and display\r\n\t\t\tlb.style.visibility = '';\r\n\t\t\tlb.style.display = 'none';\r\n\t\t}\r\n\r\n\t\tif (this.config.readonly_active) {\r\n\r\n\t\t\tvar originalForm = this.getLightbox();\r\n\t\t\tvar readonlyForm = this._lightbox_r = originalForm.cloneNode(true);\r\n\t\t\treadonlyForm.id = scheduler.uid();\r\n\t\t\treadonlyForm.className += \" dhx_cal_light_readonly\";\r\n\t\t\ttxt_replace(\"textarea\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\treturn a.value;\r\n\t\t\t});\r\n\t\t\ttxt_replace(\"input\", originalForm, readonlyForm, false);\r\n\t\t\ttxt_replace(\"select\", originalForm, readonlyForm, function(a) {\r\n\t\t\t\tif(!a.options.length) return \"\";\r\n\t\t\t\treturn a.options[Math.max((a.selectedIndex || 0), 0)].text;\r\n\t\t\t});\r\n\r\n\t\t\toriginalForm.parentNode.insertBefore(readonlyForm, originalForm);\r\n\r\n\t\t\tthis.showCover(readonlyForm);\r\n\t\t\tif (scheduler._lightbox)\r\n\t\t\t\tscheduler._lightbox.parentNode.removeChild(scheduler._lightbox);\r\n\t\t\tthis._lightbox = readonlyForm;\r\n\r\n\t\t\tif (scheduler.config.drag_lightbox)\r\n\t\t\t\tscheduler.event(readonlyForm.firstChild, \"mousedown\", scheduler._ready_to_dnd);\r\n\t\t\t\t\r\n\t\t\tscheduler._init_lightbox_events();\r\n\t\t\tthis.setLightboxSize();\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\tvar hold = scheduler.hide_lightbox;\r\n\tscheduler.hide_lightbox = function() {\r\n\t\tif (this._lightbox_r) {\r\n\t\t\tthis._lightbox_r.parentNode.removeChild(this._lightbox_r);\r\n\t\t\tthis._lightbox_r = this._lightbox = null;\r\n\t\t}\r\n\r\n\t\treturn hold.apply(this, arguments);\r\n\t};\r\n});\r\n\r\n\r\n}","// =============================================================================\n// Weekday\n// =============================================================================\nexport var ALL_WEEKDAYS = [\n 'MO',\n 'TU',\n 'WE',\n 'TH',\n 'FR',\n 'SA',\n 'SU',\n];\nvar Weekday = /** @class */ (function () {\n function Weekday(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n Weekday.fromStr = function (str) {\n return new Weekday(ALL_WEEKDAYS.indexOf(str));\n };\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n Weekday.prototype.nth = function (n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n };\n // __eq__\n Weekday.prototype.equals = function (other) {\n return this.weekday === other.weekday && this.n === other.n;\n };\n // __repr__\n Weekday.prototype.toString = function () {\n var s = ALL_WEEKDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n };\n Weekday.prototype.getJsWeekday = function () {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n };\n return Weekday;\n}());\nexport { Weekday };\n//# sourceMappingURL=weekday.js.map","// =============================================================================\n// Helper functions\n// =============================================================================\nimport { ALL_WEEKDAYS } from './weekday';\nexport var isPresent = function (value) {\n return value !== null && value !== undefined;\n};\nexport var isNumber = function (value) {\n return typeof value === 'number';\n};\nexport var isWeekdayStr = function (value) {\n return typeof value === 'string' && ALL_WEEKDAYS.includes(value);\n};\nexport var isArray = Array.isArray;\n/**\n * Simplified version of python's range()\n */\nexport var range = function (start, end) {\n if (end === void 0) { end = start; }\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n var rang = [];\n for (var i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexport var clone = function (array) {\n return [].concat(array);\n};\nexport var repeat = function (value, times) {\n var i = 0;\n var array = [];\n if (isArray(value)) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexport var toArray = function (item) {\n if (isArray(item)) {\n return item;\n }\n return [item];\n};\nexport function padStart(item, targetLength, padString) {\n if (padString === void 0) { padString = ' '; }\n var str = String(item);\n targetLength = targetLength >> 0;\n if (str.length > targetLength) {\n return String(str);\n }\n targetLength = targetLength - str.length;\n if (targetLength > padString.length) {\n padString += repeat(padString, targetLength / padString.length);\n }\n return padString.slice(0, targetLength) + String(str);\n}\n/**\n * Python like split\n */\nexport var split = function (str, sep, num) {\n var splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nexport var pymod = function (a, b) {\n var r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\n/**\n * @see: \n */\nexport var divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexport var empty = function (obj) {\n return !isPresent(obj) || obj.length === 0;\n};\n/**\n * Python-like boolean\n *\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nexport var notEmpty = function (obj) {\n return !empty(obj);\n};\n/**\n * Return true if a value is in an array\n */\nexport var includes = function (arr, val) {\n return notEmpty(arr) && arr.indexOf(val) !== -1;\n};\n//# sourceMappingURL=helpers.js.map","import { padStart } from './helpers';\nexport var datetime = function (y, m, d, h, i, s) {\n if (h === void 0) { h = 0; }\n if (i === void 0) { i = 0; }\n if (s === void 0) { s = 0; }\n return new Date(Date.UTC(y, m - 1, d, h, i, s));\n};\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nexport var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n/**\n * Number of milliseconds of one day\n */\nexport var ONE_DAY = 1000 * 60 * 60 * 24;\n/**\n * @see: \n */\nexport var MAXYEAR = 9999;\n/**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\nexport var ORDINAL_BASE = datetime(1970, 1, 1);\n/**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\nexport var PY_WEEKDAYS = [6, 0, 1, 2, 3, 4, 5];\n/**\n * py_date.timetuple()[7]\n */\nexport var getYearDay = function (date) {\n var dateNoTime = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getUTCFullYear(), 0, 1).valueOf()) /\n ONE_DAY) + 1);\n};\nexport var isLeapYear = function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n};\nexport var isDate = function (value) {\n return value instanceof Date;\n};\nexport var isValidDate = function (value) {\n return isDate(value) && !isNaN(value.getTime());\n};\n/**\n * @return {Number} the date's timezone offset in ms\n */\nexport var tzOffset = function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n};\n/**\n * @see: \n */\nexport var daysBetween = function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n var date1ms = date1.getTime();\n var date2ms = date2.getTime();\n // Calculate the difference in milliseconds\n var differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / ONE_DAY);\n};\n/**\n * @see: \n */\nexport var toOrdinal = function (date) {\n return daysBetween(date, ORDINAL_BASE);\n};\n/**\n * @see - \n */\nexport var fromOrdinal = function (ordinal) {\n return new Date(ORDINAL_BASE.getTime() + ordinal * ONE_DAY);\n};\nexport var getMonthDays = function (date) {\n var month = date.getUTCMonth();\n return month === 1 && isLeapYear(date.getUTCFullYear())\n ? 29\n : MONTH_DAYS[month];\n};\n/**\n * @return {Number} python-like weekday\n */\nexport var getWeekday = function (date) {\n return PY_WEEKDAYS[date.getUTCDay()];\n};\n/**\n * @see: \n */\nexport var monthRange = function (year, month) {\n var date = datetime(year, month + 1, 1);\n return [getWeekday(date), getMonthDays(date)];\n};\n/**\n * @see: \n */\nexport var combine = function (date, time) {\n time = time || date;\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()));\n};\nexport var clone = function (date) {\n var dolly = new Date(date.getTime());\n return dolly;\n};\nexport var cloneDates = function (dates) {\n var clones = [];\n for (var i = 0; i < dates.length; i++) {\n clones.push(clone(dates[i]));\n }\n return clones;\n};\n/**\n * Sorts an array of Date or Time objects\n */\nexport var sort = function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n};\nexport var timeToUntilString = function (time, utc) {\n if (utc === void 0) { utc = true; }\n var date = new Date(time);\n return [\n padStart(date.getUTCFullYear().toString(), 4, '0'),\n padStart(date.getUTCMonth() + 1, 2, '0'),\n padStart(date.getUTCDate(), 2, '0'),\n 'T',\n padStart(date.getUTCHours(), 2, '0'),\n padStart(date.getUTCMinutes(), 2, '0'),\n padStart(date.getUTCSeconds(), 2, '0'),\n utc ? 'Z' : '',\n ].join('');\n};\nexport var untilStringToDate = function (until) {\n var re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n var bits = re.exec(until);\n if (!bits)\n throw new Error(\"Invalid UNTIL value: \".concat(until));\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n};\nvar dateTZtoISO8601 = function (date, timeZone) {\n // date format for sv-SE is almost ISO8601\n var dateStr = date.toLocaleString('sv-SE', { timeZone: timeZone });\n // '2023-02-07 10:41:36'\n return dateStr.replace(' ', 'T') + 'Z';\n};\nexport var dateInTimeZone = function (date, timeZone) {\n var localTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n // Date constructor can only reliably parse dates in ISO8601 format\n var dateInLocalTZ = new Date(dateTZtoISO8601(date, localTimeZone));\n var dateInTargetTZ = new Date(dateTZtoISO8601(date, timeZone !== null && timeZone !== void 0 ? timeZone : 'UTC'));\n var tzOffset = dateInTargetTZ.getTime() - dateInLocalTZ.getTime();\n return new Date(date.getTime() - tzOffset);\n};\n//# sourceMappingURL=dateutil.js.map","/**\n * This class helps us to emulate python's generators, sorta.\n */\nvar IterResult = /** @class */ (function () {\n function IterResult(method, args) {\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n this.total = 0;\n this.method = method;\n this.args = args;\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n IterResult.prototype.accept = function (date) {\n ++this.total;\n var tooEarly = this.minDate && date < this.minDate;\n var tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n };\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n IterResult.prototype.add = function (date) {\n this._result.push(date);\n return true;\n };\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n *\n * @return {Date,Array?}\n */\n IterResult.prototype.getValue = function () {\n var res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n default:\n return (res.length ? res[res.length - 1] : null);\n }\n };\n IterResult.prototype.clone = function () {\n return new IterResult(this.method, this.args);\n };\n return IterResult;\n}());\nexport default IterResult;\n//# sourceMappingURL=iterresult.js.map","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { __extends } from \"tslib\";\nimport IterResult from './iterresult';\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nvar CallbackIterResult = /** @class */ (function (_super) {\n __extends(CallbackIterResult, _super);\n function CallbackIterResult(method, args, iterator) {\n var _this = _super.call(this, method, args) || this;\n _this.iterator = iterator;\n return _this;\n }\n CallbackIterResult.prototype.add = function (date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n };\n return CallbackIterResult;\n}(IterResult));\nexport default CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","// =============================================================================\n// i18n\n// =============================================================================\nvar ENGLISH = {\n dayNames: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n ],\n monthNames: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ],\n tokens: {\n SKIP: /^[ \\r\\n\\t]+|^\\.$/,\n number: /^[1-9][0-9]*/,\n numberAsText: /^(one|two|three)/i,\n every: /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n on: /^(on|in)/i,\n at: /^(at)/i,\n the: /^the/i,\n first: /^first/i,\n second: /^second/i,\n third: /^third/i,\n nth: /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n last: /^last/i,\n for: /^for/i,\n 'time(s)': /^times?/i,\n until: /^(un)?til/i,\n monday: /^mo(n(day)?)?/i,\n tuesday: /^tu(e(s(day)?)?)?/i,\n wednesday: /^we(d(n(esday)?)?)?/i,\n thursday: /^th(u(r(sday)?)?)?/i,\n friday: /^fr(i(day)?)?/i,\n saturday: /^sa(t(urday)?)?/i,\n sunday: /^su(n(day)?)?/i,\n january: /^jan(uary)?/i,\n february: /^feb(ruary)?/i,\n march: /^mar(ch)?/i,\n april: /^apr(il)?/i,\n may: /^may/i,\n june: /^june?/i,\n july: /^july?/i,\n august: /^aug(ust)?/i,\n september: /^sep(t(ember)?)?/i,\n october: /^oct(ober)?/i,\n november: /^nov(ember)?/i,\n december: /^dec(ember)?/i,\n comma: /^(,\\s*|(and|or)\\s*)+/i,\n },\n};\nexport default ENGLISH;\n//# sourceMappingURL=i18n.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\nimport { isArray, isNumber, isPresent } from '../helpers';\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nvar contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nvar defaultGetText = function (id) { return id.toString(); };\nvar defaultDateFormatter = function (year, month, day) { return \"\".concat(month, \" \").concat(day, \", \").concat(year); };\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nvar ToText = /** @class */ (function () {\n function ToText(rrule, gettext, language, dateFormatter) {\n if (gettext === void 0) { gettext = defaultGetText; }\n if (language === void 0) { language = ENGLISH; }\n if (dateFormatter === void 0) { dateFormatter = defaultDateFormatter; }\n this.text = [];\n this.language = language || ENGLISH;\n this.gettext = gettext;\n this.dateFormatter = dateFormatter;\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n var bymonthday = [].concat(this.options.bymonthday);\n var bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort(function (a, b) { return a - b; });\n bynmonthday.sort(function (a, b) { return b - a; });\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (isPresent(this.origOptions.byweekday)) {\n var byweekday = !isArray(this.origOptions.byweekday)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n var days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1,\n isEveryDay: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') !== -1 &&\n days.indexOf('SU') !== -1,\n };\n var sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n *\n * @param {RRule} rrule\n * @return {Boolean}\n */\n ToText.isFullyConvertible = function (rrule) {\n var canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (var key in rrule.origOptions) {\n if (contains(['dtstart', 'tzid', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n };\n ToText.prototype.isFullyConvertible = function () {\n return ToText.isFullyConvertible(this.rrule);\n };\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n *\n * @return {*}\n */\n ToText.prototype.toString = function () {\n var gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n this[RRule.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n var until = this.options.until;\n this.add(this.dateFormatter(until.getUTCFullYear(), this.language.monthNames[until.getUTCMonth()], until.getUTCDate()));\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n };\n ToText.prototype.HOURLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n };\n ToText.prototype.MINUTELY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minute'));\n };\n ToText.prototype.DAILY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n };\n ToText.prototype.WEEKLY = function () {\n var gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else if (this.byweekday && this.byweekday.isEveryDay) {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n };\n ToText.prototype.MONTHLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n };\n ToText.prototype.YEARLY = function () {\n var gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n }\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, undefined, gettext('and')));\n }\n };\n ToText.prototype._bymonthday = function () {\n var gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n };\n ToText.prototype._byweekday = function () {\n var gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n };\n ToText.prototype._byhour = function () {\n var gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, undefined, gettext('and')));\n };\n ToText.prototype._bymonth = function () {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n };\n ToText.prototype.nth = function (n) {\n n = parseInt(n.toString(), 10);\n var nth;\n var gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n var npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n };\n ToText.prototype.monthtext = function (m) {\n return this.language.monthNames[m - 1];\n };\n ToText.prototype.weekdaytext = function (wday) {\n var weekday = isNumber(wday) ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') +\n this.language.dayNames[weekday]);\n };\n ToText.prototype.plural = function (n) {\n return n % 100 !== 1;\n };\n ToText.prototype.add = function (s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n };\n ToText.prototype.list = function (arr, callback, finalDelim, delim) {\n var _this = this;\n if (delim === void 0) { delim = ','; }\n if (!isArray(arr)) {\n arr = [arr];\n }\n var delimJoin = function (array, delimiter, finalDelimiter) {\n var list = '';\n for (var i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n var realCallback = function (arg) {\n return callback && callback.call(_this, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n };\n return ToText;\n}());\nexport default ToText;\n//# sourceMappingURL=totext.js.map","import ENGLISH from './i18n';\nimport { RRule } from '../rrule';\n// =============================================================================\n// Parser\n// =============================================================================\nvar Parser = /** @class */ (function () {\n function Parser(rules) {\n this.done = true;\n this.rules = rules;\n }\n Parser.prototype.start = function (text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n };\n Parser.prototype.isDone = function () {\n return this.done && this.symbol === null;\n };\n Parser.prototype.nextSymbol = function () {\n var best;\n var bestSymbol;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n var rule = void 0;\n best = null;\n for (var name_1 in this.rules) {\n rule = this.rules[name_1];\n var match = rule.exec(this.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name_1;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n };\n Parser.prototype.accept = function (name) {\n if (this.symbol === name) {\n if (this.value) {\n var v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n };\n Parser.prototype.acceptNumber = function () {\n return this.accept('number');\n };\n Parser.prototype.expect = function (name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n };\n return Parser;\n}());\nexport default function parseText(text, language) {\n if (language === void 0) { language = ENGLISH; }\n var options = {};\n var ttr = new Parser(language.tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n var n = ttr.acceptNumber();\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = RRule.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = RRule.WEEKLY;\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n ttr.nextSymbol();\n AT();\n F();\n break;\n case 'week(s)':\n options.freq = RRule.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n AT();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = RRule.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = RRule.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = RRule.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = RRule.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = RRule.WEEKLY;\n var key = ttr.symbol\n .substr(0, 2)\n .toUpperCase();\n options.byweekday = [RRule[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n options.byweekday.push(RRule[wkd]);\n ttr.nextSymbol();\n }\n AT();\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = RRule.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n var m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n var on = ttr.accept('on');\n var the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n var nth = decodeNTH();\n var wkd = decodeWKD();\n var m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n options.byweekday.push(RRule[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [RRule.MO, RRule.TU, RRule.WE, RRule.TH, RRule.FR];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(parseInt(n[0], 10));\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n var at = ttr.accept('at');\n if (!at)\n return;\n do {\n var n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [parseInt(n[0], 10)];\n while (ttr.accept('comma')) {\n n = ttr.acceptNumber();\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(parseInt(n[0], 10));\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n var v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n var nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n var date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = parseInt(ttr.value[0], 10);\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\n//# sourceMappingURL=parsetext.js.map","export var Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency || (Frequency = {}));\nexport function freqIsDailyOrGreater(freq) {\n return freq < Frequency.HOURLY;\n}\n//# sourceMappingURL=types.js.map","import ToText from './totext';\nimport parseText from './parsetext';\nimport { RRule } from '../rrule';\nimport { Frequency } from '../types';\nimport ENGLISH from './i18n';\n/* !\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * - [month] (0-31(,) ([year])),\n * - (the) 0-31.(1-12.([year])),\n * - (the) 0-31/(1-12/([year])),\n * - [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nvar fromText = function (text, language) {\n if (language === void 0) { language = ENGLISH; }\n return new RRule(parseText(text, language) || undefined);\n};\nvar common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth',\n];\nToText.IMPLEMENTED = [];\nToText.IMPLEMENTED[Frequency.HOURLY] = common;\nToText.IMPLEMENTED[Frequency.MINUTELY] = common;\nToText.IMPLEMENTED[Frequency.DAILY] = ['byhour'].concat(common);\nToText.IMPLEMENTED[Frequency.WEEKLY] = common;\nToText.IMPLEMENTED[Frequency.MONTHLY] = common;\nToText.IMPLEMENTED[Frequency.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nvar toText = function (rrule, gettext, language, dateFormatter) {\n return new ToText(rrule, gettext, language, dateFormatter).toString();\n};\nvar isFullyConvertible = ToText.isFullyConvertible;\nexport { fromText, parseText, isFullyConvertible, toText };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Frequency } from './types';\nimport { pymod, divmod, empty, includes } from './helpers';\nimport { getWeekday, MAXYEAR, monthRange } from './dateutil';\nvar Time = /** @class */ (function () {\n function Time(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n Time.prototype.getHours = function () {\n return this.hour;\n };\n Time.prototype.getMinutes = function () {\n return this.minute;\n };\n Time.prototype.getSeconds = function () {\n return this.second;\n };\n Time.prototype.getMilliseconds = function () {\n return this.millisecond;\n };\n Time.prototype.getTime = function () {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n };\n return Time;\n}());\nexport { Time };\nvar DateTime = /** @class */ (function (_super) {\n __extends(DateTime, _super);\n function DateTime(year, month, day, hour, minute, second, millisecond) {\n var _this = _super.call(this, hour, minute, second, millisecond) || this;\n _this.year = year;\n _this.month = month;\n _this.day = day;\n return _this;\n }\n DateTime.fromDate = function (date) {\n return new this(date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.valueOf() % 1000);\n };\n DateTime.prototype.getWeekday = function () {\n return getWeekday(new Date(this.getTime()));\n };\n DateTime.prototype.getTime = function () {\n return new Date(Date.UTC(this.year, this.month - 1, this.day, this.hour, this.minute, this.second, this.millisecond)).getTime();\n };\n DateTime.prototype.getDay = function () {\n return this.day;\n };\n DateTime.prototype.getMonth = function () {\n return this.month;\n };\n DateTime.prototype.getYear = function () {\n return this.year;\n };\n DateTime.prototype.addYears = function (years) {\n this.year += years;\n };\n DateTime.prototype.addMonths = function (months) {\n this.month += months;\n if (this.month > 12) {\n var yearDiv = Math.floor(this.month / 12);\n var monthMod = pymod(this.month, 12);\n this.month = monthMod;\n this.year += yearDiv;\n if (this.month === 0) {\n this.month = 12;\n --this.year;\n }\n }\n };\n DateTime.prototype.addWeekly = function (days, wkst) {\n if (wkst > this.getWeekday()) {\n this.day += -(this.getWeekday() + 1 + (6 - wkst)) + days * 7;\n }\n else {\n this.day += -(this.getWeekday() - wkst) + days * 7;\n }\n this.fixDay();\n };\n DateTime.prototype.addDaily = function (days) {\n this.day += days;\n this.fixDay();\n };\n DateTime.prototype.addHours = function (hours, filtered, byhour) {\n if (filtered) {\n // Jump to one iteration before next day\n this.hour += Math.floor((23 - this.hour) / hours) * hours;\n }\n for (;;) {\n this.hour += hours;\n var _a = divmod(this.hour, 24), dayDiv = _a.div, hourMod = _a.mod;\n if (dayDiv) {\n this.hour = hourMod;\n this.addDaily(dayDiv);\n }\n if (empty(byhour) || includes(byhour, this.hour))\n break;\n }\n };\n DateTime.prototype.addMinutes = function (minutes, filtered, byhour, byminute) {\n if (filtered) {\n // Jump to one iteration before next day\n this.minute +=\n Math.floor((1439 - (this.hour * 60 + this.minute)) / minutes) * minutes;\n }\n for (;;) {\n this.minute += minutes;\n var _a = divmod(this.minute, 60), hourDiv = _a.div, minuteMod = _a.mod;\n if (hourDiv) {\n this.minute = minuteMod;\n this.addHours(hourDiv, false, byhour);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute))) {\n break;\n }\n }\n };\n DateTime.prototype.addSeconds = function (seconds, filtered, byhour, byminute, bysecond) {\n if (filtered) {\n // Jump to one iteration before next day\n this.second +=\n Math.floor((86399 - (this.hour * 3600 + this.minute * 60 + this.second)) /\n seconds) * seconds;\n }\n for (;;) {\n this.second += seconds;\n var _a = divmod(this.second, 60), minuteDiv = _a.div, secondMod = _a.mod;\n if (minuteDiv) {\n this.second = secondMod;\n this.addMinutes(minuteDiv, false, byhour, byminute);\n }\n if ((empty(byhour) || includes(byhour, this.hour)) &&\n (empty(byminute) || includes(byminute, this.minute)) &&\n (empty(bysecond) || includes(bysecond, this.second))) {\n break;\n }\n }\n };\n DateTime.prototype.fixDay = function () {\n if (this.day <= 28) {\n return;\n }\n var daysinmonth = monthRange(this.year, this.month - 1)[1];\n if (this.day <= daysinmonth) {\n return;\n }\n while (this.day > daysinmonth) {\n this.day -= daysinmonth;\n ++this.month;\n if (this.month === 13) {\n this.month = 1;\n ++this.year;\n if (this.year > MAXYEAR) {\n return;\n }\n }\n daysinmonth = monthRange(this.year, this.month - 1)[1];\n }\n };\n DateTime.prototype.add = function (options, filtered) {\n var freq = options.freq, interval = options.interval, wkst = options.wkst, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n switch (freq) {\n case Frequency.YEARLY:\n return this.addYears(interval);\n case Frequency.MONTHLY:\n return this.addMonths(interval);\n case Frequency.WEEKLY:\n return this.addWeekly(interval, wkst);\n case Frequency.DAILY:\n return this.addDaily(interval);\n case Frequency.HOURLY:\n return this.addHours(interval, filtered, byhour);\n case Frequency.MINUTELY:\n return this.addMinutes(interval, filtered, byhour, byminute);\n case Frequency.SECONDLY:\n return this.addSeconds(interval, filtered, byhour, byminute, bysecond);\n }\n };\n return DateTime;\n}(Time));\nexport { DateTime };\n//# sourceMappingURL=datetime.js.map","import { __assign } from \"tslib\";\nimport { freqIsDailyOrGreater } from './types';\nimport { includes, notEmpty, isPresent, isNumber, isArray, isWeekdayStr, } from './helpers';\nimport { RRule, defaultKeys, DEFAULT_OPTIONS } from './rrule';\nimport { getWeekday, isDate, isValidDate } from './dateutil';\nimport { Weekday } from './weekday';\nimport { Time } from './datetime';\nexport function initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n // Shallow copy for options and origOptions and check for invalid\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!includes(defaultKeys, key))\n invalid.push(key);\n if (isDate(options[key]) && !isValidDate(options[key])) {\n invalid.push(key);\n }\n }\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign({}, options);\n}\nexport function parseOptions(options) {\n var opts = __assign(__assign({}, DEFAULT_OPTIONS), initializeOptions(options));\n if (isPresent(opts.byeaster))\n opts.freq = RRule.YEARLY;\n if (!(isPresent(opts.freq) && RRule.FREQUENCIES[opts.freq])) {\n throw new Error(\"Invalid frequency: \".concat(opts.freq, \" \").concat(options.freq));\n }\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n if (!isPresent(opts.wkst)) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (isNumber(opts.wkst)) {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n if (isPresent(opts.bysetpos)) {\n if (isNumber(opts.bysetpos))\n opts.bysetpos = [opts.bysetpos];\n for (var i = 0; i < opts.bysetpos.length; i++) {\n var v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(Boolean(opts.byweekno) ||\n notEmpty(opts.byweekno) ||\n notEmpty(opts.byyearday) ||\n Boolean(opts.bymonthday) ||\n notEmpty(opts.bymonthday) ||\n isPresent(opts.byweekday) ||\n isPresent(opts.byeaster))) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getUTCMonth() + 1;\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getUTCDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (isPresent(opts.bymonth) && !isArray(opts.bymonth)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (isPresent(opts.byyearday) &&\n !isArray(opts.byyearday) &&\n isNumber(opts.byyearday)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (!isPresent(opts.bymonthday)) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (isArray(opts.bymonthday)) {\n var bymonthday = [];\n var bynmonthday = [];\n for (var i = 0; i < opts.bymonthday.length; i++) {\n var v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n // byweekno\n if (isPresent(opts.byweekno) && !isArray(opts.byweekno)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (!isPresent(opts.byweekday)) {\n opts.bynweekday = null;\n }\n else if (isNumber(opts.byweekday)) {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (isWeekdayStr(opts.byweekday)) {\n opts.byweekday = [Weekday.fromStr(opts.byweekday).weekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof Weekday) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n var byweekday = [];\n var bynweekday = [];\n for (var i = 0; i < opts.byweekday.length; i++) {\n var wday = opts.byweekday[i];\n if (isNumber(wday)) {\n byweekday.push(wday);\n continue;\n }\n else if (isWeekdayStr(wday)) {\n byweekday.push(Weekday.fromStr(wday).weekday);\n continue;\n }\n if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = notEmpty(byweekday) ? byweekday : null;\n opts.bynweekday = notEmpty(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (!isPresent(opts.byhour)) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getUTCHours()] : null;\n }\n else if (isNumber(opts.byhour)) {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (!isPresent(opts.byminute)) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getUTCMinutes()] : null;\n }\n else if (isNumber(opts.byminute)) {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (!isPresent(opts.bysecond)) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getUTCSeconds()] : null;\n }\n else if (isNumber(opts.bysecond)) {\n opts.bysecond = [opts.bysecond];\n }\n return { parsedOptions: opts };\n}\nexport function buildTimeset(opts) {\n var millisecondModulo = opts.dtstart.getTime() % 1000;\n if (!freqIsDailyOrGreater(opts.freq)) {\n return [];\n }\n var timeset = [];\n opts.byhour.forEach(function (hour) {\n opts.byminute.forEach(function (minute) {\n opts.bysecond.forEach(function (second) {\n timeset.push(new Time(hour, minute, second, millisecondModulo));\n });\n });\n });\n return timeset;\n}\n//# sourceMappingURL=parseoptions.js.map","import { __assign } from \"tslib\";\nimport { Frequency } from './types';\nimport { Weekday } from './weekday';\nimport { untilStringToDate } from './dateutil';\nimport { Days } from './rrule';\nexport function parseString(rfcString) {\n var options = rfcString\n .split('\\n')\n .map(parseLine)\n .filter(function (x) { return x !== null; });\n return __assign(__assign({}, options[0]), options[1]);\n}\nexport function parseDtstart(line) {\n var options = {};\n var dtstartWithZone = /DTSTART(?:;TZID=([^:=]+?))?(?::|=)([^;\\s]+)/i.exec(line);\n if (!dtstartWithZone) {\n return options;\n }\n var tzid = dtstartWithZone[1], dtstart = dtstartWithZone[2];\n if (tzid) {\n options.tzid = tzid;\n }\n options.dtstart = untilStringToDate(dtstart);\n return options;\n}\nfunction parseLine(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n var header = /^([A-Z]+?)[:;]/.exec(rfcString.toUpperCase());\n if (!header) {\n return parseRrule(rfcString);\n }\n var key = header[1];\n switch (key.toUpperCase()) {\n case 'RRULE':\n case 'EXRULE':\n return parseRrule(rfcString);\n case 'DTSTART':\n return parseDtstart(rfcString);\n default:\n throw new Error(\"Unsupported RFC prop \".concat(key, \" in \").concat(rfcString));\n }\n}\nfunction parseRrule(line) {\n var strippedLine = line.replace(/^RRULE:/i, '');\n var options = parseDtstart(strippedLine);\n var attrs = line.replace(/^(?:RRULE|EXRULE):/i, '').split(';');\n attrs.forEach(function (attr) {\n var _a = attr.split('='), key = _a[0], value = _a[1];\n switch (key.toUpperCase()) {\n case 'FREQ':\n options.freq = Frequency[value.toUpperCase()];\n break;\n case 'WKST':\n options.wkst = Days[value.toUpperCase()];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n var num = parseNumber(value);\n var optionKey = key.toLowerCase();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n options[optionKey] = num;\n break;\n case 'BYWEEKDAY':\n case 'BYDAY':\n options.byweekday = parseWeekday(value);\n break;\n case 'DTSTART':\n case 'TZID':\n // for backwards compatibility\n var dtstart = parseDtstart(line);\n options.tzid = dtstart.tzid;\n options.dtstart = dtstart.dtstart;\n break;\n case 'UNTIL':\n options.until = untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n });\n return options;\n}\nfunction parseNumber(value) {\n if (value.indexOf(',') !== -1) {\n var values = value.split(',');\n return values.map(parseIndividualNumber);\n }\n return parseIndividualNumber(value);\n}\nfunction parseIndividualNumber(value) {\n if (/^[+-]?\\d+$/.test(value)) {\n return Number(value);\n }\n return value;\n}\nfunction parseWeekday(value) {\n var days = value.split(',');\n return days.map(function (day) {\n if (day.length === 2) {\n // MO, TU, ...\n return Days[day]; // wday instanceof Weekday\n }\n // -1MO, +3FR, 1SO, 13TU ...\n var parts = day.match(/^([+-]?\\d{1,2})([A-Z]{2})$/);\n if (!parts || parts.length < 3) {\n throw new SyntaxError(\"Invalid weekday string: \".concat(day));\n }\n var n = Number(parts[1]);\n var wdaypart = parts[2];\n var wday = Days[wdaypart].weekday;\n return new Weekday(wday, n);\n });\n}\n//# sourceMappingURL=parsestring.js.map","import { dateInTimeZone, timeToUntilString } from './dateutil';\nvar DateWithZone = /** @class */ (function () {\n function DateWithZone(date, tzid) {\n if (isNaN(date.getTime())) {\n throw new RangeError('Invalid date passed to DateWithZone');\n }\n this.date = date;\n this.tzid = tzid;\n }\n Object.defineProperty(DateWithZone.prototype, \"isUTC\", {\n get: function () {\n return !this.tzid || this.tzid.toUpperCase() === 'UTC';\n },\n enumerable: false,\n configurable: true\n });\n DateWithZone.prototype.toString = function () {\n var datestr = timeToUntilString(this.date.getTime(), this.isUTC);\n if (!this.isUTC) {\n return \";TZID=\".concat(this.tzid, \":\").concat(datestr);\n }\n return \":\".concat(datestr);\n };\n DateWithZone.prototype.getTime = function () {\n return this.date.getTime();\n };\n DateWithZone.prototype.rezonedDate = function () {\n if (this.isUTC) {\n return this.date;\n }\n return dateInTimeZone(this.date, this.tzid);\n };\n return DateWithZone;\n}());\nexport { DateWithZone };\n//# sourceMappingURL=datewithzone.js.map","import { RRule, DEFAULT_OPTIONS } from './rrule';\nimport { includes, isPresent, isArray, isNumber, toArray } from './helpers';\nimport { Weekday } from './weekday';\nimport { timeToUntilString } from './dateutil';\nimport { DateWithZone } from './datewithzone';\nexport function optionsToString(options) {\n var rrule = [];\n var dtstart = '';\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'tzid')\n continue;\n if (!includes(defaultKeys, keys[i]))\n continue;\n var key = keys[i].toUpperCase();\n var value = options[keys[i]];\n var outValue = '';\n if (!isPresent(value) || (isArray(value) && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n outValue = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (isNumber(value)) {\n outValue = new Weekday(value).toString();\n }\n else {\n outValue = value.toString();\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n outValue = toArray(value)\n .map(function (wday) {\n if (wday instanceof Weekday) {\n return wday;\n }\n if (isArray(wday)) {\n return new Weekday(wday[0], wday[1]);\n }\n return new Weekday(wday);\n })\n .toString();\n break;\n case 'DTSTART':\n dtstart = buildDtstart(value, options.tzid);\n break;\n case 'UNTIL':\n outValue = timeToUntilString(value, !options.tzid);\n break;\n default:\n if (isArray(value)) {\n var strValues = [];\n for (var j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n outValue = strValues.toString();\n }\n else {\n outValue = String(value);\n }\n }\n if (outValue) {\n rrule.push([key, outValue]);\n }\n }\n var rules = rrule\n .map(function (_a) {\n var key = _a[0], value = _a[1];\n return \"\".concat(key, \"=\").concat(value.toString());\n })\n .join(';');\n var ruleString = '';\n if (rules !== '') {\n ruleString = \"RRULE:\".concat(rules);\n }\n return [dtstart, ruleString].filter(function (x) { return !!x; }).join('\\n');\n}\nfunction buildDtstart(dtstart, tzid) {\n if (!dtstart) {\n return '';\n }\n return 'DTSTART' + new DateWithZone(new Date(dtstart), tzid).toString();\n}\n//# sourceMappingURL=optionstostring.js.map","import IterResult from './iterresult';\nimport { clone, cloneDates } from './dateutil';\nimport { isArray } from './helpers';\nfunction argsMatch(left, right) {\n if (Array.isArray(left)) {\n if (!Array.isArray(right))\n return false;\n if (left.length !== right.length)\n return false;\n return left.every(function (date, i) { return date.getTime() === right[i].getTime(); });\n }\n if (left instanceof Date) {\n return right instanceof Date && left.getTime() === right.getTime();\n }\n return left === right;\n}\nvar Cache = /** @class */ (function () {\n function Cache() {\n this.all = false;\n this.before = [];\n this.after = [];\n this.between = [];\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n Cache.prototype._cacheAdd = function (what, value, args) {\n if (value) {\n value = value instanceof Date ? clone(value) : cloneDates(value);\n }\n if (what === 'all') {\n this.all = value;\n }\n else {\n args._value = value;\n this[what].push(args);\n }\n };\n /**\n * @return false - not in the cache\n * @return null - cached, but zero occurrences (before/after)\n * @return Date - cached (before/after)\n * @return [] - cached, but zero occurrences (all/between)\n * @return [Date1, DateN] - cached (all/between)\n */\n Cache.prototype._cacheGet = function (what, args) {\n var cached = false;\n var argsKeys = args ? Object.keys(args) : [];\n var findCacheDiff = function (item) {\n for (var i = 0; i < argsKeys.length; i++) {\n var key = argsKeys[i];\n if (!argsMatch(args[key], item[key])) {\n return true;\n }\n }\n return false;\n };\n var cachedObject = this[what];\n if (what === 'all') {\n cached = this.all;\n }\n else if (isArray(cachedObject)) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (var i = 0; i < cachedObject.length; i++) {\n var item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n var iterResult = new IterResult(what, args);\n for (var i = 0; i < this.all.length; i++) {\n if (!iterResult.accept(this.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return isArray(cached)\n ? cloneDates(cached)\n : cached instanceof Date\n ? clone(cached)\n : cached;\n };\n return Cache;\n}());\nexport { Cache };\n//# sourceMappingURL=cache.js.map","import { __spreadArray } from \"tslib\";\nimport { range, repeat } from './helpers';\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nvar M365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 28), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], repeat(1, 31), true), repeat(2, 29), true), repeat(3, 31), true), repeat(4, 30), true), repeat(5, 31), true), repeat(6, 30), true), repeat(7, 31), true), repeat(8, 31), true), repeat(9, 30), true), repeat(10, 31), true), repeat(11, 30), true), repeat(12, 31), true), repeat(1, 7), true);\nvar M28 = range(1, 29);\nvar M29 = range(1, 30);\nvar M30 = range(1, 31);\nvar M31 = range(1, 32);\nvar MDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M29, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar MDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], M31, true), M28, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31, true), M30, true), M31, true), M30, true), M31, true), M31.slice(0, 7), true);\nvar NM28 = range(-28, 0);\nvar NM29 = range(-29, 0);\nvar NM30 = range(-30, 0);\nvar NM31 = range(-31, 0);\nvar NMDAY366MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM29, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar NMDAY365MASK = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], NM31, true), NM28, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31, true), NM30, true), NM31, true), NM30, true), NM31, true), NM31.slice(0, 7), true);\nvar M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nvar M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nvar WDAYMASK = (function () {\n var wdaymask = [];\n for (var i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(range(7));\n return wdaymask;\n})();\nexport { WDAYMASK, M365MASK, M365RANGE, M366MASK, M366RANGE, MDAY365MASK, MDAY366MASK, NMDAY365MASK, NMDAY366MASK, };\n//# sourceMappingURL=masks.js.map","import { __assign } from \"tslib\";\nimport { datetime, getWeekday, isLeapYear, toOrdinal } from '../dateutil';\nimport { empty, repeat, pymod, includes } from '../helpers';\nimport { M365MASK, MDAY365MASK, NMDAY365MASK, WDAYMASK, M365RANGE, M366MASK, MDAY366MASK, NMDAY366MASK, M366RANGE, } from '../masks';\nexport function rebuildYear(year, options) {\n var firstyday = datetime(year, 1, 1);\n var yearlen = isLeapYear(year) ? 366 : 365;\n var nextyearlen = isLeapYear(year + 1) ? 366 : 365;\n var yearordinal = toOrdinal(firstyday);\n var yearweekday = getWeekday(firstyday);\n var result = __assign(__assign({ yearlen: yearlen, nextyearlen: nextyearlen, yearordinal: yearordinal, yearweekday: yearweekday }, baseYearMasks(year)), { wnomask: null });\n if (empty(options.byweekno)) {\n return result;\n }\n result.wnomask = repeat(0, yearlen + 7);\n var firstwkst;\n var wyearlen;\n var no1wkst = (firstwkst = pymod(7 - yearweekday + options.wkst, 7));\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen = result.yearlen + pymod(yearweekday - options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = yearlen - no1wkst;\n }\n var div = Math.floor(wyearlen / 7);\n var mod = pymod(wyearlen, 7);\n var numweeks = Math.floor(div + mod / 4);\n for (var j = 0; j < options.byweekno.length; j++) {\n var n = options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n var i = void 0;\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (var k = 0; k < 7; k++) {\n result.wnomask[i] = 1;\n i++;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n if (includes(options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n var i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (var j = 0; j < 7; j++) {\n result.wnomask[i] = 1;\n i += 1;\n if (result.wdaymask[i] === options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n var lnumweeks = void 0;\n if (!includes(options.byweekno, -1)) {\n var lyearweekday = getWeekday(datetime(year - 1, 1, 1));\n var lno1wkst = pymod(7 - lyearweekday.valueOf() + options.wkst, 7);\n var lyearlen = isLeapYear(year - 1) ? 366 : 365;\n var weekst = void 0;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n weekst = lyearlen + pymod(lyearweekday - options.wkst, 7);\n }\n else {\n weekst = yearlen - no1wkst;\n }\n lnumweeks = Math.floor(52 + pymod(weekst, 7) / 4);\n }\n else {\n lnumweeks = -1;\n }\n if (includes(options.byweekno, lnumweeks)) {\n for (var i = 0; i < no1wkst; i++)\n result.wnomask[i] = 1;\n }\n }\n return result;\n}\nfunction baseYearMasks(year) {\n var yearlen = isLeapYear(year) ? 366 : 365;\n var firstyday = datetime(year, 1, 1);\n var wday = getWeekday(firstyday);\n if (yearlen === 365) {\n return {\n mmask: M365MASK,\n mdaymask: MDAY365MASK,\n nmdaymask: NMDAY365MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M365RANGE,\n };\n }\n return {\n mmask: M366MASK,\n mdaymask: MDAY366MASK,\n nmdaymask: NMDAY366MASK,\n wdaymask: WDAYMASK.slice(wday),\n mrange: M366RANGE,\n };\n}\n//# sourceMappingURL=yearinfo.js.map","import { RRule } from '../rrule';\nimport { empty, repeat, pymod } from '../helpers';\nexport function rebuildMonth(year, month, yearlen, mrange, wdaymask, options) {\n var result = {\n lastyear: year,\n lastmonth: month,\n nwdaymask: [],\n };\n var ranges = [];\n if (options.freq === RRule.YEARLY) {\n if (empty(options.bymonth)) {\n ranges = [[0, yearlen]];\n }\n else {\n for (var j = 0; j < options.bymonth.length; j++) {\n month = options.bymonth[j];\n ranges.push(mrange.slice(month - 1, month + 1));\n }\n }\n }\n else if (options.freq === RRule.MONTHLY) {\n ranges = [mrange.slice(month - 1, month + 1)];\n }\n if (empty(ranges)) {\n return result;\n }\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n result.nwdaymask = repeat(0, yearlen);\n for (var j = 0; j < ranges.length; j++) {\n var rang = ranges[j];\n var first = rang[0];\n var last = rang[1] - 1;\n for (var k = 0; k < options.bynweekday.length; k++) {\n var i = void 0;\n var _a = options.bynweekday[k], wday = _a[0], n = _a[1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= pymod(wdaymask[i] - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += pymod(7 - wdaymask[i] + wday, 7);\n }\n if (first <= i && i <= last)\n result.nwdaymask[i] = 1;\n }\n }\n return result;\n}\n//# sourceMappingURL=monthinfo.js.map","export function easter(y, offset) {\n if (offset === void 0) { offset = 0; }\n var a = y % 19;\n var b = Math.floor(y / 100);\n var c = y % 100;\n var d = Math.floor(b / 4);\n var e = b % 4;\n var f = Math.floor((b + 8) / 25);\n var g = Math.floor((b - f + 1) / 3);\n var h = Math.floor(19 * a + b - d - g + 15) % 30;\n var i = Math.floor(c / 4);\n var k = c % 4;\n var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n var m = Math.floor((a + 11 * h + 22 * l) / 451);\n var month = Math.floor((h + l - 7 * m + 114) / 31);\n var day = ((h + l - 7 * m + 114) % 31) + 1;\n var date = Date.UTC(y, month - 1, day + offset);\n var yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n}\n//# sourceMappingURL=easter.js.map","import { notEmpty, repeat, range, isPresent } from '../helpers';\nimport { Frequency } from '../types';\nimport { rebuildYear } from './yearinfo';\nimport { rebuildMonth } from './monthinfo';\nimport { easter } from './easter';\nimport { Time } from '../datetime';\nimport { datetime, sort, toOrdinal } from '../dateutil';\n// =============================================================================\n// Iterinfo\n// =============================================================================\nvar Iterinfo = /** @class */ (function () {\n // eslint-disable-next-line no-empty-function\n function Iterinfo(options) {\n this.options = options;\n }\n Iterinfo.prototype.rebuild = function (year, month) {\n var options = this.options;\n if (year !== this.lastyear) {\n this.yearinfo = rebuildYear(year, options);\n }\n if (notEmpty(options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n var _a = this.yearinfo, yearlen = _a.yearlen, mrange = _a.mrange, wdaymask = _a.wdaymask;\n this.monthinfo = rebuildMonth(year, month, yearlen, mrange, wdaymask, options);\n }\n if (isPresent(options.byeaster)) {\n this.eastermask = easter(year, options.byeaster);\n }\n };\n Object.defineProperty(Iterinfo.prototype, \"lastyear\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastyear : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"lastmonth\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.lastmonth : null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearlen\", {\n get: function () {\n return this.yearinfo.yearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"yearordinal\", {\n get: function () {\n return this.yearinfo.yearordinal;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mrange\", {\n get: function () {\n return this.yearinfo.mrange;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wdaymask\", {\n get: function () {\n return this.yearinfo.wdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mmask\", {\n get: function () {\n return this.yearinfo.mmask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"wnomask\", {\n get: function () {\n return this.yearinfo.wnomask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nwdaymask\", {\n get: function () {\n return this.monthinfo ? this.monthinfo.nwdaymask : [];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nextyearlen\", {\n get: function () {\n return this.yearinfo.nextyearlen;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"mdaymask\", {\n get: function () {\n return this.yearinfo.mdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Iterinfo.prototype, \"nmdaymask\", {\n get: function () {\n return this.yearinfo.nmdaymask;\n },\n enumerable: false,\n configurable: true\n });\n Iterinfo.prototype.ydayset = function () {\n return [range(this.yearlen), 0, this.yearlen];\n };\n Iterinfo.prototype.mdayset = function (_, month) {\n var start = this.mrange[month - 1];\n var end = this.mrange[month];\n var set = repeat(null, this.yearlen);\n for (var i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n };\n Iterinfo.prototype.wdayset = function (year, month, day) {\n // We need to handle cross-year weeks here.\n var set = repeat(null, this.yearlen + 7);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n var start = i;\n for (var j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.options.wkst)\n break;\n }\n return [set, start, i];\n };\n Iterinfo.prototype.ddayset = function (year, month, day) {\n var set = repeat(null, this.yearlen);\n var i = toOrdinal(datetime(year, month, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n };\n Iterinfo.prototype.htimeset = function (hour, _, second, millisecond) {\n var _this = this;\n var set = [];\n this.options.byminute.forEach(function (minute) {\n set = set.concat(_this.mtimeset(hour, minute, second, millisecond));\n });\n sort(set);\n return set;\n };\n Iterinfo.prototype.mtimeset = function (hour, minute, _, millisecond) {\n var set = this.options.bysecond.map(function (second) { return new Time(hour, minute, second, millisecond); });\n sort(set);\n return set;\n };\n Iterinfo.prototype.stimeset = function (hour, minute, second, millisecond) {\n return [new Time(hour, minute, second, millisecond)];\n };\n Iterinfo.prototype.getdayset = function (freq) {\n switch (freq) {\n case Frequency.YEARLY:\n return this.ydayset.bind(this);\n case Frequency.MONTHLY:\n return this.mdayset.bind(this);\n case Frequency.WEEKLY:\n return this.wdayset.bind(this);\n case Frequency.DAILY:\n return this.ddayset.bind(this);\n default:\n return this.ddayset.bind(this);\n }\n };\n Iterinfo.prototype.gettimeset = function (freq) {\n switch (freq) {\n case Frequency.HOURLY:\n return this.htimeset.bind(this);\n case Frequency.MINUTELY:\n return this.mtimeset.bind(this);\n case Frequency.SECONDLY:\n return this.stimeset.bind(this);\n }\n };\n return Iterinfo;\n}());\nexport default Iterinfo;\n//# sourceMappingURL=index.js.map","import { combine, fromOrdinal, sort } from '../dateutil';\nimport { pymod, isPresent, includes } from '../helpers';\nexport function buildPoslist(bysetpos, timeset, start, end, ii, dayset) {\n var poslist = [];\n for (var j = 0; j < bysetpos.length; j++) {\n var daypos = void 0;\n var timepos = void 0;\n var pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = pymod(pos - 1, timeset.length);\n }\n var tmp = [];\n for (var k = start; k < end; k++) {\n var val = dayset[k];\n if (!isPresent(val))\n continue;\n tmp.push(val);\n }\n var i = void 0;\n if (daypos < 0) {\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n var time = timeset[timepos];\n var date = fromOrdinal(ii.yearordinal + i);\n var res = combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!includes(poslist, res))\n poslist.push(res);\n }\n sort(poslist);\n return poslist;\n}\n//# sourceMappingURL=poslist.js.map","import { freqIsDailyOrGreater } from '../types';\nimport { combine, fromOrdinal, MAXYEAR } from '../dateutil';\nimport Iterinfo from '../iterinfo/index';\nimport { RRule } from '../rrule';\nimport { buildTimeset } from '../parseoptions';\nimport { notEmpty, includes, isPresent } from '../helpers';\nimport { DateWithZone } from '../datewithzone';\nimport { buildPoslist } from './poslist';\nimport { DateTime } from '../datetime';\nexport function iter(iterResult, options) {\n var dtstart = options.dtstart, freq = options.freq, interval = options.interval, until = options.until, bysetpos = options.bysetpos;\n var count = options.count;\n if (count === 0 || interval === 0) {\n return emitResult(iterResult);\n }\n var counterDate = DateTime.fromDate(dtstart);\n var ii = new Iterinfo(options);\n ii.rebuild(counterDate.year, counterDate.month);\n var timeset = makeTimeset(ii, counterDate, options);\n for (;;) {\n var _a = ii.getdayset(freq)(counterDate.year, counterDate.month, counterDate.day), dayset = _a[0], start = _a[1], end = _a[2];\n var filtered = removeFilteredDays(dayset, start, end, ii, options);\n if (notEmpty(bysetpos)) {\n var poslist = buildPoslist(bysetpos, timeset, start, end, ii, dayset);\n for (var j = 0; j < poslist.length; j++) {\n var res = poslist[j];\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n else {\n for (var j = start; j < end; j++) {\n var currentDay = dayset[j];\n if (!isPresent(currentDay)) {\n continue;\n }\n var date = fromOrdinal(ii.yearordinal + currentDay);\n for (var k = 0; k < timeset.length; k++) {\n var time = timeset[k];\n var res = combine(date, time);\n if (until && res > until) {\n return emitResult(iterResult);\n }\n if (res >= dtstart) {\n var rezonedDate = rezoneIfNeeded(res, options);\n if (!iterResult.accept(rezonedDate)) {\n return emitResult(iterResult);\n }\n if (count) {\n --count;\n if (!count) {\n return emitResult(iterResult);\n }\n }\n }\n }\n }\n }\n if (options.interval === 0) {\n return emitResult(iterResult);\n }\n // Handle frequency and interval\n counterDate.add(options, filtered);\n if (counterDate.year > MAXYEAR) {\n return emitResult(iterResult);\n }\n if (!freqIsDailyOrGreater(freq)) {\n timeset = ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, 0);\n }\n ii.rebuild(counterDate.year, counterDate.month);\n }\n}\nfunction isFiltered(ii, currentDay, options) {\n var bymonth = options.bymonth, byweekno = options.byweekno, byweekday = options.byweekday, byeaster = options.byeaster, bymonthday = options.bymonthday, bynmonthday = options.bynmonthday, byyearday = options.byyearday;\n return ((notEmpty(bymonth) && !includes(bymonth, ii.mmask[currentDay])) ||\n (notEmpty(byweekno) && !ii.wnomask[currentDay]) ||\n (notEmpty(byweekday) && !includes(byweekday, ii.wdaymask[currentDay])) ||\n (notEmpty(ii.nwdaymask) && !ii.nwdaymask[currentDay]) ||\n (byeaster !== null && !includes(ii.eastermask, currentDay)) ||\n ((notEmpty(bymonthday) || notEmpty(bynmonthday)) &&\n !includes(bymonthday, ii.mdaymask[currentDay]) &&\n !includes(bynmonthday, ii.nmdaymask[currentDay])) ||\n (notEmpty(byyearday) &&\n ((currentDay < ii.yearlen &&\n !includes(byyearday, currentDay + 1) &&\n !includes(byyearday, -ii.yearlen + currentDay)) ||\n (currentDay >= ii.yearlen &&\n !includes(byyearday, currentDay + 1 - ii.yearlen) &&\n !includes(byyearday, -ii.nextyearlen + currentDay - ii.yearlen)))));\n}\nfunction rezoneIfNeeded(date, options) {\n return new DateWithZone(date, options.tzid).rezonedDate();\n}\nfunction emitResult(iterResult) {\n return iterResult.getValue();\n}\nfunction removeFilteredDays(dayset, start, end, ii, options) {\n var filtered = false;\n for (var dayCounter = start; dayCounter < end; dayCounter++) {\n var currentDay = dayset[dayCounter];\n filtered = isFiltered(ii, currentDay, options);\n if (filtered)\n dayset[currentDay] = null;\n }\n return filtered;\n}\nfunction makeTimeset(ii, counterDate, options) {\n var freq = options.freq, byhour = options.byhour, byminute = options.byminute, bysecond = options.bysecond;\n if (freqIsDailyOrGreater(freq)) {\n return buildTimeset(options);\n }\n if ((freq >= RRule.HOURLY &&\n notEmpty(byhour) &&\n !includes(byhour, counterDate.hour)) ||\n (freq >= RRule.MINUTELY &&\n notEmpty(byminute) &&\n !includes(byminute, counterDate.minute)) ||\n (freq >= RRule.SECONDLY &&\n notEmpty(bysecond) &&\n !includes(bysecond, counterDate.second))) {\n return [];\n }\n return ii.gettimeset(freq)(counterDate.hour, counterDate.minute, counterDate.second, counterDate.millisecond);\n}\n//# sourceMappingURL=index.js.map","import { isValidDate } from './dateutil';\nimport IterResult from './iterresult';\nimport CallbackIterResult from './callbackiterresult';\nimport { fromText, parseText, toText, isFullyConvertible } from './nlp/index';\nimport { Frequency, } from './types';\nimport { parseOptions, initializeOptions } from './parseoptions';\nimport { parseString } from './parsestring';\nimport { optionsToString } from './optionstostring';\nimport { Cache } from './cache';\nimport { Weekday } from './weekday';\nimport { iter } from './iter/index';\n// =============================================================================\n// RRule\n// =============================================================================\nexport var Days = {\n MO: new Weekday(0),\n TU: new Weekday(1),\n WE: new Weekday(2),\n TH: new Weekday(3),\n FR: new Weekday(4),\n SA: new Weekday(5),\n SU: new Weekday(6),\n};\nexport var DEFAULT_OPTIONS = {\n freq: Frequency.YEARLY,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n tzid: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null,\n};\nexport var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n/**\n *\n * @param {Options?} options - see \n * - The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nvar RRule = /** @class */ (function () {\n function RRule(options, noCache) {\n if (options === void 0) { options = {}; }\n if (noCache === void 0) { noCache = false; }\n // RFC string\n this._cache = noCache ? null : new Cache();\n // used by toString()\n this.origOptions = initializeOptions(options);\n var parsedOptions = parseOptions(options).parsedOptions;\n this.options = parsedOptions;\n }\n RRule.parseText = function (text, language) {\n return parseText(text, language);\n };\n RRule.fromText = function (text, language) {\n return fromText(text, language);\n };\n RRule.fromString = function (str) {\n return new RRule(RRule.parseString(str) || undefined);\n };\n RRule.prototype._iter = function (iterResult) {\n return iter(iterResult, this.options);\n };\n RRule.prototype._cacheGet = function (what, args) {\n if (!this._cache)\n return false;\n return this._cache._cacheGet(what, args);\n };\n RRule.prototype._cacheAdd = function (what, value, args) {\n if (!this._cache)\n return;\n return this._cache._cacheAdd(what, value, args);\n };\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n RRule.prototype.all = function (iterator) {\n if (iterator) {\n return this._iter(new CallbackIterResult('all', {}, iterator));\n }\n var result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new IterResult('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n };\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n *\n * @return Array\n */\n RRule.prototype.between = function (after, before, inc, iterator) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(after) || !isValidDate(before)) {\n throw new Error('Invalid date passed in to RRule.between');\n }\n var args = {\n before: before,\n after: after,\n inc: inc,\n };\n if (iterator) {\n return this._iter(new CallbackIterResult('between', args, iterator));\n }\n var result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new IterResult('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n };\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.before = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.before');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new IterResult('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n };\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n *\n * @return Date or null\n */\n RRule.prototype.after = function (dt, inc) {\n if (inc === void 0) { inc = false; }\n if (!isValidDate(dt)) {\n throw new Error('Invalid date passed in to RRule.after');\n }\n var args = { dt: dt, inc: inc };\n var result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new IterResult('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n };\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n RRule.prototype.count = function () {\n return this.all().length;\n };\n /**\n * Converts the rrule into its string representation\n *\n * @see \n * @return String\n */\n RRule.prototype.toString = function () {\n return optionsToString(this.origOptions);\n };\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n RRule.prototype.toText = function (gettext, language, dateFormatter) {\n return toText(this, gettext, language, dateFormatter);\n };\n RRule.prototype.isFullyConvertibleToText = function () {\n return isFullyConvertible(this);\n };\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n RRule.prototype.clone = function () {\n return new RRule(this.origOptions);\n };\n // RRule class 'constants'\n RRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY',\n ];\n RRule.YEARLY = Frequency.YEARLY;\n RRule.MONTHLY = Frequency.MONTHLY;\n RRule.WEEKLY = Frequency.WEEKLY;\n RRule.DAILY = Frequency.DAILY;\n RRule.HOURLY = Frequency.HOURLY;\n RRule.MINUTELY = Frequency.MINUTELY;\n RRule.SECONDLY = Frequency.SECONDLY;\n RRule.MO = Days.MO;\n RRule.TU = Days.TU;\n RRule.WE = Days.WE;\n RRule.TH = Days.TH;\n RRule.FR = Days.FR;\n RRule.SA = Days.SA;\n RRule.SU = Days.SU;\n RRule.parseString = parseString;\n RRule.optionsToString = optionsToString;\n return RRule;\n}());\nexport { RRule };\n//# sourceMappingURL=rrule.js.map","import { DateWithZone } from './datewithzone';\nimport { iter } from './iter';\nimport { sort } from './dateutil';\nexport function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {\n var _exdateHash = {};\n var _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n _exdate.forEach(function (date) {\n var zonedDate = new DateWithZone(date, tzid).rezonedDate();\n _exdateHash[Number(zonedDate)] = true;\n });\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (isNaN(dt))\n return _accept.call(this, date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n var dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (var i = 0; i < _rdate.length; i++) {\n var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();\n if (!iterResult.accept(new Date(zonedDate.getTime())))\n break;\n }\n _rrule.forEach(function (rrule) {\n iter(iterResult, rrule.options);\n });\n var res = iterResult._result;\n sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return ((res.length && res[res.length - 1]) || null);\n case 'after':\n default:\n return ((res.length && res[0]) || null);\n }\n}\n//# sourceMappingURL=iterset.js.map","import { __assign } from \"tslib\";\nimport { RRule } from './rrule';\nimport { RRuleSet } from './rruleset';\nimport { untilStringToDate } from './dateutil';\nimport { includes, split } from './helpers';\nimport { parseString, parseDtstart } from './parsestring';\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nvar DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n tzid: null,\n};\nexport function parseInput(s, options) {\n var rrulevals = [];\n var rdatevals = [];\n var exrulevals = [];\n var exdatevals = [];\n var parsedDtstart = parseDtstart(s);\n var dtstart = parsedDtstart.dtstart;\n var tzid = parsedDtstart.tzid;\n var lines = splitIntoLines(s, options.unfold);\n lines.forEach(function (line) {\n var _a;\n if (!line)\n return;\n var _b = breakDownLine(line), name = _b.name, parms = _b.parms, value = _b.value;\n switch (name.toUpperCase()) {\n case 'RRULE':\n if (parms.length) {\n throw new Error(\"unsupported RRULE parm: \".concat(parms.join(',')));\n }\n rrulevals.push(parseString(line));\n break;\n case 'RDATE':\n var _c = (_a = /RDATE(?:;TZID=([^:=]+))?/i.exec(line)) !== null && _a !== void 0 ? _a : [], rdateTzid = _c[1];\n if (rdateTzid && !tzid) {\n tzid = rdateTzid;\n }\n rdatevals = rdatevals.concat(parseRDate(value, parms));\n break;\n case 'EXRULE':\n if (parms.length) {\n throw new Error(\"unsupported EXRULE parm: \".concat(parms.join(',')));\n }\n exrulevals.push(parseString(value));\n break;\n case 'EXDATE':\n exdatevals = exdatevals.concat(parseRDate(value, parms));\n break;\n case 'DTSTART':\n break;\n default:\n throw new Error('unsupported property: ' + name);\n }\n });\n return {\n dtstart: dtstart,\n tzid: tzid,\n rrulevals: rrulevals,\n rdatevals: rdatevals,\n exrulevals: exrulevals,\n exdatevals: exdatevals,\n };\n}\nfunction buildRule(s, options) {\n var _a = parseInput(s, options), rrulevals = _a.rrulevals, rdatevals = _a.rdatevals, exrulevals = _a.exrulevals, exdatevals = _a.exdatevals, dtstart = _a.dtstart, tzid = _a.tzid;\n var noCache = options.cache === false;\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n var rset_1 = new RRuleSet(noCache);\n rset_1.dtstart(dtstart);\n rset_1.tzid(tzid || undefined);\n rrulevals.forEach(function (val) {\n rset_1.rrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n rdatevals.forEach(function (date) {\n rset_1.rdate(date);\n });\n exrulevals.forEach(function (val) {\n rset_1.exrule(new RRule(groomRruleOptions(val, dtstart, tzid), noCache));\n });\n exdatevals.forEach(function (date) {\n rset_1.exdate(date);\n });\n if (options.compatible && options.dtstart)\n rset_1.rdate(dtstart);\n return rset_1;\n }\n var val = rrulevals[0] || {};\n return new RRule(groomRruleOptions(val, val.dtstart || options.dtstart || dtstart, val.tzid || options.tzid || tzid), noCache);\n}\nexport function rrulestr(s, options) {\n if (options === void 0) { options = {}; }\n return buildRule(s, initializeOptions(options));\n}\nfunction groomRruleOptions(val, dtstart, tzid) {\n return __assign(__assign({}, val), { dtstart: dtstart, tzid: tzid });\n}\nfunction initializeOptions(options) {\n var invalid = [];\n var keys = Object.keys(options);\n var defaultKeys = Object.keys(DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!includes(defaultKeys, key))\n invalid.push(key);\n });\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n return __assign(__assign({}, DEFAULT_OPTIONS), options);\n}\nfunction extractName(line) {\n if (line.indexOf(':') === -1) {\n return {\n name: 'RRULE',\n value: line,\n };\n }\n var _a = split(line, ':', 1), name = _a[0], value = _a[1];\n return {\n name: name,\n value: value,\n };\n}\nfunction breakDownLine(line) {\n var _a = extractName(line), name = _a.name, value = _a.value;\n var parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n return {\n name: parms[0].toUpperCase(),\n parms: parms.slice(1),\n value: value,\n };\n}\nfunction splitIntoLines(s, unfold) {\n if (unfold === void 0) { unfold = false; }\n s = s && s.trim();\n if (!s)\n throw new Error('Invalid empty string');\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (!unfold) {\n return s.split(/\\s/);\n }\n var lines = s.split('\\n');\n var i = 0;\n while (i < lines.length) {\n // TODO\n var line = (lines[i] = lines[i].replace(/\\s+$/g, ''));\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n return lines;\n}\nfunction validateDateParm(parms) {\n parms.forEach(function (parm) {\n if (!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(parm)) {\n throw new Error('unsupported RDATE/EXDATE parm: ' + parm);\n }\n });\n}\nfunction parseRDate(rdateval, parms) {\n validateDateParm(parms);\n return rdateval.split(',').map(function (datestr) { return untilStringToDate(datestr); });\n}\n//# sourceMappingURL=rrulestr.js.map","import { __extends } from \"tslib\";\nimport { RRule } from './rrule';\nimport { sort, timeToUntilString } from './dateutil';\nimport { includes } from './helpers';\nimport { iterSet } from './iterset';\nimport { rrulestr } from './rrulestr';\nimport { optionsToString } from './optionstostring';\nfunction createGetterSetter(fieldName) {\n var _this = this;\n return function (field) {\n if (field !== undefined) {\n _this[\"_\".concat(fieldName)] = field;\n }\n if (_this[\"_\".concat(fieldName)] !== undefined) {\n return _this[\"_\".concat(fieldName)];\n }\n for (var i = 0; i < _this._rrule.length; i++) {\n var field_1 = _this._rrule[i].origOptions[fieldName];\n if (field_1) {\n return field_1;\n }\n }\n };\n}\nvar RRuleSet = /** @class */ (function (_super) {\n __extends(RRuleSet, _super);\n /**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\n function RRuleSet(noCache) {\n if (noCache === void 0) { noCache = false; }\n var _this = _super.call(this, {}, noCache) || this;\n _this.dtstart = createGetterSetter.apply(_this, ['dtstart']);\n _this.tzid = createGetterSetter.apply(_this, ['tzid']);\n _this._rrule = [];\n _this._rdate = [];\n _this._exrule = [];\n _this._exdate = [];\n return _this;\n }\n RRuleSet.prototype._iter = function (iterResult) {\n return iterSet(iterResult, this._rrule, this._exrule, this._rdate, this._exdate, this.tzid());\n };\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.rrule = function (rrule) {\n _addRule(rrule, this._rrule);\n };\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n RRuleSet.prototype.exrule = function (rrule) {\n _addRule(rrule, this._exrule);\n };\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.rdate = function (date) {\n _addDate(date, this._rdate);\n };\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n RRuleSet.prototype.exdate = function (date) {\n _addDate(date, this._exdate);\n };\n /**\n * Get list of included rrules in this recurrence set.\n *\n * @return List of rrules\n */\n RRuleSet.prototype.rrules = function () {\n return this._rrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of excluded rrules in this recurrence set.\n *\n * @return List of exrules\n */\n RRuleSet.prototype.exrules = function () {\n return this._exrule.map(function (e) { return rrulestr(e.toString()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of rdates\n */\n RRuleSet.prototype.rdates = function () {\n return this._rdate.map(function (e) { return new Date(e.getTime()); });\n };\n /**\n * Get list of included datetimes in this recurrence set.\n *\n * @return List of exdates\n */\n RRuleSet.prototype.exdates = function () {\n return this._exdate.map(function (e) { return new Date(e.getTime()); });\n };\n RRuleSet.prototype.valueOf = function () {\n var result = [];\n if (!this._rrule.length && this._dtstart) {\n result = result.concat(optionsToString({ dtstart: this._dtstart }));\n }\n this._rrule.forEach(function (rrule) {\n result = result.concat(rrule.toString().split('\\n'));\n });\n this._exrule.forEach(function (exrule) {\n result = result.concat(exrule\n .toString()\n .split('\\n')\n .map(function (line) { return line.replace(/^RRULE:/, 'EXRULE:'); })\n .filter(function (line) { return !/^DTSTART/.test(line); }));\n });\n if (this._rdate.length) {\n result.push(rdatesToString('RDATE', this._rdate, this.tzid()));\n }\n if (this._exdate.length) {\n result.push(rdatesToString('EXDATE', this._exdate, this.tzid()));\n }\n return result;\n };\n /**\n * to generate recurrence field such as:\n * DTSTART:19970902T010000Z\n * RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU\n * RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH\n */\n RRuleSet.prototype.toString = function () {\n return this.valueOf().join('\\n');\n };\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n RRuleSet.prototype.clone = function () {\n var rrs = new RRuleSet(!!this._cache);\n this._rrule.forEach(function (rule) { return rrs.rrule(rule.clone()); });\n this._exrule.forEach(function (rule) { return rrs.exrule(rule.clone()); });\n this._rdate.forEach(function (date) { return rrs.rdate(new Date(date.getTime())); });\n this._exdate.forEach(function (date) { return rrs.exdate(new Date(date.getTime())); });\n return rrs;\n };\n return RRuleSet;\n}(RRule));\nexport { RRuleSet };\nfunction _addRule(rrule, collection) {\n if (!(rrule instanceof RRule)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!includes(collection.map(String), String(rrule))) {\n collection.push(rrule);\n }\n}\nfunction _addDate(date, collection) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!includes(collection.map(Number), Number(date))) {\n collection.push(date);\n sort(collection);\n }\n}\nfunction rdatesToString(param, rdates, tzid) {\n var isUTC = !tzid || tzid.toUpperCase() === 'UTC';\n var header = isUTC ? \"\".concat(param, \":\") : \"\".concat(param, \";TZID=\").concat(tzid, \":\");\n var dateString = rdates\n .map(function (rdate) { return timeToUntilString(rdate.valueOf(), isUTC); })\n .join(',');\n return \"\".concat(header).concat(dateString);\n}\n//# sourceMappingURL=rruleset.js.map","import { RRule, rrulestr } from 'rrule';\r\n\r\nexport default function (scheduler) {\r\n\r\n\tfunction clearMilliseconds(date) {\r\n\t\treturn new Date(\r\n\t\t\tdate.getFullYear(),\r\n\t\t\tdate.getMonth(),\r\n\t\t\tdate.getDate(),\r\n\t\t\tdate.getHours(),\r\n\t\t\tdate.getMinutes(),\r\n\t\t\tdate.getSeconds(),\r\n\t\t\t0\r\n\t\t);\r\n\t}\r\n\r\n\tfunction isDeletedOccurrence(event) {\r\n\t\treturn !!event.deleted;\r\n\t}\r\n\r\n\tfunction isSeries(event) {\r\n\t\treturn !!event.rrule && !event.recurring_event_id;\r\n\t}\r\n\r\n\tfunction clearRecurringProperties(event) {\r\n\t\tevent.rrule = \"\";\r\n\t\tevent.original_start = null;\r\n\t\tevent.recurring_event_id = null;\r\n\t\tevent.duration = null;\r\n\t\tevent.deleted = null;\r\n\t}\r\n\r\n\tfunction createException(ev) {\r\n\t\tlet id = ev.id.split(\"#\");\r\n\r\n\t\tlet nid = scheduler.uid();\r\n\t\tscheduler._not_render = true;\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = id[0];\r\n\r\n\t\tlet timestamp = id[1];\r\n\r\n\t\tnev.original_start = new Date(Number(timestamp));\r\n\r\n\t\tscheduler._add_rec_marker(nev, timestamp);\r\n\t\tscheduler.addEvent(nev);\r\n\t\tscheduler._not_render = false;\r\n\t}\r\n\r\n\tscheduler._rec_temp = [];\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_markers = {};\r\n\tscheduler._add_rec_marker = function (ev, time) {\r\n\t\tev._pid_time = time;\r\n\t\tthis._rec_markers[ev.id] = ev;\r\n\t\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\t\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n\t};\r\n\tscheduler._get_rec_marker = function (time, id) {\r\n\t\tlet ch = this._rec_markers_pull[id];\r\n\t\tif (ch) return ch[time];\r\n\t\treturn null;\r\n\t};\r\n\tscheduler._get_rec_markers = function (id) {\r\n\t\treturn (this._rec_markers_pull[id] || []);\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old_add_event = scheduler.addEvent;\r\n\t\tscheduler.addEvent = function (start_date, end_date, text, id, extra_data) {\r\n\t\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\r\n\t\t\t\tif (ev.start_date) {\r\n\t\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t\t}\r\n\t\t\t\tif (ev.end_date) {\r\n\t\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn ev_id;\r\n\t\t};\r\n\t})();\r\n\r\n\tscheduler.attachEvent(\"onEventLoading\", function (event) {\r\n\r\n\t\tif (event.original_start) {\r\n\t\t\tevent.original_start = scheduler.templates.parse_date(event.original_start);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onEventIdChange\", function (id, new_id) {\r\n\t\tif (this._ignore_call) return;\r\n\t\tthis._ignore_call = true;\r\n\r\n\t\tif (scheduler._rec_markers[id]) {\r\n\t\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\t\tdelete scheduler._rec_markers[id];\r\n\t\t}\r\n\r\n\t\tif (scheduler._rec_markers_pull[id]) {\r\n\t\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\t\tdelete scheduler._rec_markers_pull[id];\r\n\t\t}\r\n\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\t\tvar tev = this._rec_temp[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (var i in this._rec_markers) {\r\n\t\t\tvar tev = this._rec_markers[i];\r\n\t\t\tif (tev.recurring_event_id == id) {\r\n\t\t\t\ttev.recurring_event_id = new_id;\r\n\t\t\t\ttev._pid_changed = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar el = scheduler._rec_markers[new_id];\r\n\t\tif (el && el._pid_changed) {\r\n\t\t\tdelete el._pid_changed;\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tif (scheduler.$destroyed) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t\t}, 1);\r\n\t\t}\r\n\r\n\t\tdelete this._ignore_call;\r\n\t});\r\n\r\n\tfunction deleteEventFromSeries(idTimestamp, ev) {\r\n\t\tlet id = idTimestamp;\r\n\t\tidTimestamp = id.split(\"#\");\r\n\t\tlet nid = scheduler.uid();\r\n\t\tlet tid = (idTimestamp[1]) ? idTimestamp[1] : (ev._pid_time);\r\n\t\tlet nev = scheduler._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.recurring_event_id = ev.recurring_event_id || idTimestamp[0];\r\n\t\tnev.original_start = new Date(Number(tid));\r\n\t\tnev.deleted = true;\r\n\t\tscheduler.addEvent(nev);\r\n\t}\r\n\r\n\tscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && !isDeletedOccurrence(ev))) {\r\n\t\t\tdeleteEventFromSeries(id, ev);\r\n\t\t} else {\r\n\t\t\tif (isSeries(ev) && this._lightbox_id)\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tid = sub[i].id;\r\n\t\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function (id, ev) {\r\n\t\tif (!this._is_virtual_event(id) && this._is_modified_occurence(ev)) {\r\n\t\t\tif (!scheduler._events[id]) {\r\n\t\t\t\tev.deleted = true;\r\n\t\t\t\tthis.setEvent(id, ev);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\tscheduler.attachEvent(\"onEventChanged\", function (id, event) {\r\n\t\tif (this._loading) return true;\r\n\r\n\t\tvar ev = this.getEvent(id);\r\n\r\n\t\tif (this._is_virtual_event(id)) {\r\n\t\t\tcreateException(ev);\r\n\r\n\t\t} else {\r\n\t\t\tif (ev.start_date) {\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif (ev.end_date) {\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev) && this._lightbox_id) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t\t//scheduler.recurrings.rollbackDates(ev);\r\n\t\t\t}\r\n\r\n\t\t\tvar sub = this._get_rec_markers(id);\r\n\t\t\tfor (var i in sub) {\r\n\t\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\t\tvar isEventFound = false;\r\n\t\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\t\tisEventFound = true;\r\n\t\t\t}\r\n\t\t\tif (!isEventFound)\r\n\t\t\t\tthis._select_id = null;\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventAdded\", function (id) {\r\n\t\tif (!this._loading) {\r\n\t\t\tvar ev = this.getEvent(id);\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventSave\", function (id, data, is_new_event) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev))\r\n\t\t\tthis._select_id = null;\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCreated\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\tclearRecurringProperties(ev);\r\n\t\t}\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventCancel\", function (id) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (isSeries(ev)) {\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\t\tthis.render_view_data();\r\n\t\t}\r\n\t});\r\n\tscheduler._roll_back_dates = function (ev) {\r\n\t\t//// !!!!! calc temp properties\r\n\t\tif (ev.start_date) {\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif (ev.end_date) {\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tev.duration = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\t\tev.end_date = ev._end_date;\r\n\t\tif (ev._start_date) {\r\n\t\t\tev.start_date.setMonth(0);\r\n\t\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._is_virtual_event = function (id) {\r\n\t\treturn id.toString().indexOf(\"#\") != -1;\r\n\t};\r\n\tscheduler._is_modified_occurence = function (ev) {\r\n\t\treturn (ev.recurring_event_id && ev.recurring_event_id != \"0\");\r\n\t};\r\n\r\n\tscheduler.showLightbox_rec = scheduler.showLightbox;\r\n\tscheduler.showLightbox = function (id) {\r\n\t\tvar locale = this.locale;\r\n\t\tvar c = scheduler.config.lightbox_recurring;\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tvar pid = ev.recurring_event_id;\r\n\t\tvar isVirtual = this._is_virtual_event(id);\r\n\t\tif (isVirtual)\r\n\t\t\tpid = id.split(\"#\")[0];\r\n\r\n\t\t// show series\r\n\t\tvar showSeries = function (id) {\r\n\t\t\tvar event = scheduler.getEvent(id);\r\n\t\t\tevent._end_date = event.end_date;\r\n\t\t\tevent.end_date = new Date(event.start_date.valueOf() + event.duration * 1000);\r\n\t\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t\t};\r\n\r\n\t\tif ((pid || pid * 1 === 0) && isSeries(ev)) {\r\n\t\t\t// direct API call on series id\r\n\t\t\treturn showSeries(id);\r\n\t\t}\r\n\t\tif (!pid || pid === '0' || ((!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual))) {\r\n\t\t\t// editing instance or non recurring event\r\n\t\t\treturn this.showLightbox_rec(id);\r\n\t\t}\r\n\t\tif (c == 'ask') {\r\n\t\t\tvar that = this;\r\n\t\t\tscheduler.modalbox({\r\n\t\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\t\twidth: \"500px\",\r\n\t\t\t\tposition: \"middle\",\r\n\t\t\t\tbuttons: [locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\t\tcallback: function (index) {\r\n\t\t\t\t\tswitch (+index) {\r\n\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tshowSeries(pid);\r\n\t\t}\r\n\t};\r\n\r\n\tfunction groupExceptions() {\r\n\t\tconst exceptions = {};\r\n\t\tfor (const i in scheduler._events) {\r\n\t\t\tconst ev = scheduler._events[i];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tif (!exceptions[ev.recurring_event_id]) {\r\n\t\t\t\t\texceptions[ev.recurring_event_id] = {};\r\n\t\t\t\t}\r\n\t\t\t\texceptions[ev.recurring_event_id][ev.original_start.valueOf()] = ev;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn exceptions;\r\n\t}\r\n\r\n\tscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\n\tscheduler.get_visible_events = function (only_timed) {\r\n\t\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\t\tdelete this._events[this._rec_temp[i].id];\r\n\t\tthis._rec_temp = [];\r\n\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tvar stack = this.get_visible_events_rec(only_timed);\r\n\t\tvar out = [];\r\n\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\tif (stack[i].deleted || stack[i].recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(stack[i])) {\r\n\t\t\t\tthis.repeat_date(stack[i], out, undefined, undefined, undefined, undefined, exceptions);\r\n\t\t\t} else {\r\n\t\t\t\tout.push(stack[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn out;\r\n\t};\r\n\r\n\t(function () {\r\n\t\tvar old = scheduler.isOneDayEvent;\r\n\t\tscheduler.isOneDayEvent = function (ev) {\r\n\t\t\tif (isSeries(ev)) return true;\r\n\t\t\treturn old.call(this, ev);\r\n\t\t};\r\n\t\tvar old_update_event = scheduler.updateEvent;\r\n\t\tscheduler.updateEvent = function (id) {\r\n\t\t\tvar ev = scheduler.getEvent(id);\r\n\r\n\t\t\tif (ev && isSeries(ev) && !this._is_virtual_event(id)) {\r\n\t\t\t\tscheduler.update_view();\r\n\t\t\t} else {\r\n\t\t\t\told_update_event.call(this, id);\r\n\t\t\t}\r\n\t\t};\r\n\t})();\r\n\r\n\tconst toIcalString = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\r\n\tscheduler.repeat_date = function (ev, stack, non_render, from, to, maxCount, exceptions) {\r\n\t\tif (!ev.rrule) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesExceptions = exceptions ? exceptions[ev.id] : groupExceptions()[ev.id];\r\n\t\tif (!seriesExceptions) {\r\n\t\t\tseriesExceptions = {};\r\n\t\t}\r\n\r\n\t\tif (!from) {\r\n\t\t\tfrom = scheduler._min_date;\r\n\t\t}\r\n\t\tif (!to) {\r\n\t\t\tto = scheduler._max_date;\r\n\t\t}\r\n\r\n\t\tconst utcStart = new Date(Date.UTC(ev.start_date.getFullYear(), ev.start_date.getMonth(), ev.start_date.getDate(), ev.start_date.getHours(), ev.start_date.getMinutes(), ev.start_date.getSeconds()));\r\n\t\tconst parsedRRule = rrulestr(`RRULE:${ev.rrule};UNTIL=${toIcalString(ev.end_date)}`, { dtstart: utcStart/*ev.start_date*/ });\r\n\r\n\t\tconst repeatedDates = parsedRRule.between(from, to).map(date => {\r\n\t\t\tconst adjustedDate = new Date(date);\r\n\t\t\tadjustedDate.setHours(ev.start_date.getHours());\r\n\t\t\tadjustedDate.setMinutes(ev.start_date.getMinutes());\r\n\t\t\tadjustedDate.setSeconds(ev.start_date.getSeconds());\r\n\t\t\treturn adjustedDate;\r\n\t\t});\r\n\t\tlet visibleCount = 0;\r\n\r\n\t\tconst eventDuration = ev.duration;\r\n\r\n\t\tfor (let i = 0; i < repeatedDates.length; i++) {\r\n\t\t\tif (maxCount && visibleCount >= maxCount) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tconst date = repeatedDates[i];\r\n\r\n\t\t\tlet exception = seriesExceptions[date.valueOf()];\r\n\t\t\tif (exception) {\r\n\t\t\t\tif (exception.deleted) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvisibleCount++;\r\n\t\t\t\t\tstack.push(exception);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tconst copy = scheduler._copy_event(ev);\r\n\t\t\t\t//copy._timed = ev._timed;\r\n\t\t\t\tcopy.text = ev.text;\r\n\t\t\t\tcopy.start_date = date;\r\n\t\t\t\tcopy.id = ev.id + \"#\" + Math.ceil(date.valueOf());\r\n\t\t\t\tcopy.end_date = new Date(date.valueOf() + eventDuration * 1000);\r\n\t\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, date, copy.end_date);\r\n\t\t\t\tcopy._timed = scheduler.isOneDayEvent(copy);\r\n\r\n\r\n\r\n\t\t\t\tif (!copy._timed && !scheduler._table_view && !scheduler.config.multi_day) continue;\r\n\t\t\t\tstack.push(copy);\r\n\r\n\t\t\t\tif (!non_render) {\r\n\t\t\t\t\tscheduler._events[copy.id] = copy;\r\n\t\t\t\t\tscheduler._rec_temp.push(copy);\r\n\t\t\t\t}\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._fix_daylight_saving_date = function (start_date, end_date, ev, counter, default_date) {\r\n\t\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\t\tif (shift) {\r\n\t\t\tif (shift > 0) {\r\n\t\t\t\t// e.g. 24h -> 23h\r\n\t\t\t\treturn new Date(counter.valueOf() + ev.duration * 1000 - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// e.g. 24h -> 25h\r\n\t\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new Date(default_date.valueOf());\r\n\t};\r\n\tscheduler.getRecDates = function (id, max) {\r\n\t\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\t\tvar recurrings = [];\r\n\t\tmax = max || 100;\r\n\r\n\t\tif (!isSeries(ev)) {\r\n\t\t\treturn [\r\n\t\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t\t];\r\n\t\t}\r\n\t\tif (ev.deleted) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\t\tvar result = [];\r\n\t\tfor (var i = 0; i < recurrings.length; i++) {\r\n\t\t\tif (!recurrings[i].deleted) {\r\n\t\t\t\tresult.push({ start_date: recurrings[i].start_date, end_date: recurrings[i].end_date });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\r\n\tscheduler.getEvents = function (from, to) {\r\n\t\tvar result = [];\r\n\t\tconst exceptions = groupExceptions();\r\n\t\tfor (var a in this._events) {\r\n\t\t\tvar ev = this._events[a];\r\n\t\t\tif (ev.recurring_event_id) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (isSeries(ev)) {\r\n\t\t\t\tif (from && to && ev.start_date < to && ev.end_date > from) {\r\n\t\t\t\t\tvar sev = [];\r\n\t\t\t\t\tthis.repeat_date(ev, sev, true, from, to, undefined, exceptions);\r\n\t\t\t\t\tsev.forEach(function(occurence){\r\n\t\t\t\t\t\tif (occurence.start_date < to && occurence.end_date > from) {\r\n\t\t\t\t\t\t\tresult.push(occurence);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}else if(!from && !to){\r\n\t\t\t\t\tresult.push(ev);\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn result;\r\n\t};\r\n\r\n\t//drop secondary attributes\r\n\tscheduler._copy_dummy = function (ev) {\r\n\t\tvar start_date = new Date(this.start_date);\r\n\t\tvar end_date = new Date(this.end_date);\r\n\t\tthis.start_date = start_date;\r\n\t\tthis.end_date = end_date;\r\n\t\tthis.duration = this.rrule = null;\r\n\t};\r\n\r\n\tscheduler.config.include_end_by = false;\r\n\tscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\tscheduler.config.recurring_workdays = [RRule.MO.weekday,RRule.TU.weekday,RRule.WE.weekday,RRule.TH.weekday,RRule.FR.weekday];\r\n\tscheduler.config.repeat_date = \"%m.%d.%Y\";\r\n\tscheduler.config.lightbox.sections = [\r\n\t\t{ name: \"description\", map_to: \"text\", type: \"textarea\", focus: true },\r\n\t\t{ name: \"recurring\", type: \"recurring\", map_to: \"rec_type\" },\r\n\t\t{ name: \"time\", height: 72, type: \"time\", map_to: \"auto\" }\r\n\t];\r\n\r\n\tscheduler.attachEvent(\"onClearAll\", function () {\r\n\t\tscheduler._rec_markers = {}; //clear recurring events data\r\n\t\tscheduler._rec_markers_pull = {};\r\n\t\tscheduler._rec_temp = [];\r\n\t});\r\n\r\n\r\n\tfunction getTopLevelOption(rruleObj, untilDate) {\r\n\t\tconst options = rruleObj.options;\r\n\t\tconst until = options.until || untilDate;\r\n\r\n\t\tconst hasEndCondition = options.count || (until && until.getFullYear() !== 9999);\r\n\r\n\t\tif (hasEndCondition) {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\r\n\t\tif (options.freq === RRule.DAILY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'DAILY';\r\n\t\t} else if (options.freq === RRule.WEEKLY && options.interval === 1 && !options.byweekday) {\r\n\t\t\treturn 'WEEKLY';\r\n\t\t} else if (options.freq === RRule.MONTHLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'MONTHLY';\r\n\t\t} else if (options.freq === RRule.YEARLY && options.interval === 1 && !options.bysetpos) {\r\n\t\t\treturn 'YEARLY';\r\n\t\t} else if (options.freq === RRule.DAILY && options.byweekday && options.byweekday.length === scheduler.config.recurring_workdays.length &&\r\n\t\t\toptions.byweekday.includes(RRule.MO) &&\r\n\t\t\toptions.byweekday.includes(RRule.TU) &&\r\n\t\t\toptions.byweekday.includes(RRule.WE) &&\r\n\t\t\toptions.byweekday.includes(RRule.TH) &&\r\n\t\t\toptions.byweekday.includes(RRule.FR)) {\r\n\t\t\treturn 'WORKDAYS';\r\n\t\t} else {\r\n\t\t\treturn 'CUSTOM';\r\n\t\t}\r\n\t}\r\n\t\r\n\tfunction getWeekdayOfMonth(date) {\r\n\t\tconst dayOfWeek = date.getDay();\r\n\t\tconst dayOfMonth = date.getDate();\r\n\t\tconst dayNumber = Math.ceil(dayOfMonth / 7);\r\n\t\treturn { dayOfWeek, dayNumber };\r\n\t}\r\n\r\n\r\n\tconst jsDaysToRRULEDays = {\r\n\t\t0: \"SU\",\r\n\t\t1: \"MO\",\r\n\t\t2: \"TU\",\r\n\t\t3: \"WE\",\r\n\t\t4: \"TH\",\r\n\t\t5: \"FR\",\r\n\t\t6: \"SA\"\r\n\t};\r\n\tconst RruleDayNumsToJs = {\r\n\t\t0: 1,\r\n\t\t1: 2,\r\n\t\t2: 3,\r\n\t\t3: 4,\r\n\t\t4: 5,\r\n\t\t5: 6,\r\n\t\t6: 0\r\n\t};\r\n\r\n\tfunction fillCustomDaily(node, rule) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\t}\r\n\r\n\tfunction fillCustomWeekly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dayCheckboxes = node.querySelectorAll(`.dhx_form_repeat_custom_week input`);\r\n\t\tdayCheckboxes.forEach((ch) => ch.checked = false);\r\n\t\tif (rule && rule.byweekday) {\r\n\t\t\trule.byweekday.forEach((day) => {\r\n\t\t\t\tconst dayNum = RruleDayNumsToJs[day.weekday];\r\n\t\t\t\tconst dayLabel = jsDaysToRRULEDays[dayNum];\r\n\t\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst dayLabel = jsDaysToRRULEDays[event.start_date.getDay()];\r\n\t\t\tnode.querySelector(`.dhx_form_repeat_custom_week input[value=\"${dayLabel}\"]`).checked = true;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction fillCustomMonthly(node, rule, event) {\r\n\t\tnode.querySelector(\"[name='repeat_interval_value']\").value = (rule ? rule.interval : 1) || 1;\r\n\r\n\t\tconst dateOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfMonth = node.querySelector(`.dhx_form_repeat_custom_month [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfMonth.innerText = scheduler.templates.repeat_monthly_date(event.start_date, event);\r\n\t\tnthWeekDayOfMonth.innerText = scheduler.templates.repeat_monthly_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_month_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction formatDayNumber(date){\r\n\t\tswitch (date) {\r\n\t\t\tcase 1:\r\n\t\t\tcase 31:\r\n\t\t\t\treturn `${date}st`;\r\n\t\t\tcase 2:\r\n\t\t\t\treturn `${date}nd`;\r\n\t\t\tcase 3:\r\n\t\t\t\treturn `${date}rd`;\r\n\t\t\tdefault:\r\n\t\t\t\treturn `${date}th`;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler.templates.repeat_monthly_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\treturn `Every ${formatDayNumber(date)}`;\r\n\t};\r\n\tscheduler.templates.repeat_monthly_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]}`;\r\n\t};\r\n\t\r\n\tscheduler.templates.repeat_yearly_month_date = function(startDate, event) {\r\n\t\tconst date = startDate.getDate();\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(date)} day of ${monthLabel}`;\r\n\t};\r\n\tscheduler.templates.repeat_yearly_month_weekday = function(startDate, event) {\r\n\t\tconst nthDayOfMonth = getWeekdayOfMonth(startDate);\r\n\t\tconst monthLabel = scheduler.locale.date.month_full[startDate.getMonth()];\r\n\t\treturn `Every ${formatDayNumber(nthDayOfMonth.dayNumber)} ${scheduler.locale.date.day_full[nthDayOfMonth.dayOfWeek]} of ${monthLabel}`;\r\n\t};\r\n\r\n\tfunction fillCustomYearly(node, rule, event) {\r\n\t\tconst dateOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_date\"]`);\r\n\t\tconst nthWeekDayOfYear = node.querySelector(`.dhx_form_repeat_custom_year [value=\"month_nth_weekday\"]`);\r\n\t\tdateOfYear.innerText = scheduler.templates.repeat_yearly_month_date(event.start_date, event);\r\n\t\tnthWeekDayOfYear.innerText = scheduler.templates.repeat_yearly_month_weekday(event.start_date, event);\r\n\r\n\t\tif (!rule || (rule.bysetpos && !(rule.byweekday && rule.byweekday.length))) {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_date\";\r\n\t\t} else {\r\n\t\t\tnode.querySelector(`[name=\"dhx_custom_year_option\"]`).value = \"month_nth_weekday\";\r\n\t\t}\r\n\t}\r\n\r\n\tfunction fillEndRule(node, rule, event) {\r\n\t\tconst countInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_after\"]`);\r\n\t\tconst ondateInput = node.querySelector(`.dhx_form_repeat_ends_extra [name=\"dhx_form_repeat_ends_ondate\"]`);\r\n\t\tconst endOptionSelect = node.querySelector(`[name='dhx_custom_repeat_ends']`);\r\n\t\tcountInput.value = 1;\r\n\r\n\t\tlet formatter = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tondateInput.value = scheduler.config.repeat_date_of_end;\r\n\r\n\t\tif (rule && rule.count) {\r\n\t\t\tendOptionSelect.value = \"AFTER\";\r\n\t\t\tcountInput.value = rule.count;\r\n\t\t} else if (event._end_date && event._end_date.getFullYear() !== 9999) {\r\n\t\t\tendOptionSelect.value = \"ON\";\r\n\t\t\tondateInput.value = formatter(event._end_date);\r\n\t\t} else {\r\n\t\t\tendOptionSelect.value = \"NEVER\";\r\n\t\t}\r\n\t\tendOptionSelect.dispatchEvent(new Event(\"change\"));\r\n\t}\r\n\r\n\tconst getRecValue = {\r\n\t\tMONTHLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.MONTHLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWEEKLY: function (dates) {\r\n\t\t\tlet day = dates.start.getDay() - 1;\r\n\t\t\tif (day == -1) day = 6;\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: [day]\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tDAILY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.DAILY,\r\n\t\t\t\tinterval: 1\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tYEARLY: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.YEARLY,\r\n\t\t\t\tbymonth: dates.start.getMonth() + 1,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbymonthday: dates.start.getDate()\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tWORKDAYS: function (dates) {\r\n\t\t\tconst rrule = {\r\n\t\t\t\tfreq: RRule.WEEKLY,\r\n\t\t\t\tinterval: 1,\r\n\t\t\t\tbyweekday: scheduler.config.recurring_workdays\r\n\t\t\t};\r\n\t\t\tconst until = new Date(9999, 1, 1);\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tCUSTOM: function (dates, node) {\r\n\t\t\tconst rrule = {};\r\n\t\t\tconst freq = node.querySelector(`[name=\"repeat_interval_unit\"]`).value;\r\n\t\t\tconst interval = Math.max(1, node.querySelector(`[name=\"repeat_interval_value\"]`).value);\r\n\t\t\tconst monthRepeat = node.querySelector(`[name=\"dhx_custom_month_option\"]`).value;\r\n\t\t\tconst yearRepeat = node.querySelector(`[name=\"dhx_custom_year_option\"]`).value;\r\n\r\n\t\t\trrule.interval = interval;\r\n\t\t\tlet days;\r\n\t\t\tlet day;\r\n\r\n\t\t\tswitch (freq) {\r\n\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\trrule.freq = RRule.DAILY;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"WEEKLY\": \r\n\t\t\t\t\trrule.freq = RRule.WEEKLY;\r\n\t\t\t\t\tdays = [];\r\n\t\t\t\t\tnode.querySelectorAll(`.dhx_form_repeat_custom_week [name=\"week_day\"]`).forEach((ch) => {\r\n\t\t\t\t\t\tif(ch.checked){\r\n\t\t\t\t\t\t\tdays.push(ch.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\trrule.byweekday = days.map((day) => {\r\n\t\t\t\t\t\tswitch (day) {\r\n\t\t\t\t\t\t\tcase \"MO\":\r\n\t\t\t\t\t\t\t\treturn RRule.MO.weekday;\r\n\t\t\t\t\t\t\tcase \"TU\":\r\n\t\t\t\t\t\t\t\treturn RRule.TU.weekday;\r\n\t\t\t\t\t\t\tcase \"WE\":\r\n\t\t\t\t\t\t\t\treturn RRule.WE.weekday;\r\n\t\t\t\t\t\t\tcase \"TH\":\r\n\t\t\t\t\t\t\t\treturn RRule.TH.weekday;\r\n\t\t\t\t\t\t\tcase \"FR\":\r\n\t\t\t\t\t\t\t\treturn RRule.FR.weekday;\r\n\t\t\t\t\t\t\tcase \"SA\":\r\n\t\t\t\t\t\t\t\treturn RRule.SA.weekday;\r\n\t\t\t\t\t\t\tcase \"SU\":\r\n\t\t\t\t\t\t\t\treturn RRule.SU.weekday;\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\trrule.freq = RRule.MONTHLY;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (monthRepeat === \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\trrule.freq = RRule.YEARLY;\r\n\t\t\t\t\trrule.bymonth = dates.start.getMonth() + 1;\r\n\t\t\t\t\t\r\n\t\t\t\t\tif (yearRepeat == \"month_date\") {\r\n\t\t\t\t\t\trrule.bymonthday = dates.start.getDate();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tday = dates.start.getDay() - 1;\r\n\t\t\t\t\t\tif (day == -1) day = 6;\r\n\t\t\t\t\t\trrule.byweekday = [day];\r\n\t\t\t\t\t\trrule.bysetpos = getWeekdayOfMonth(dates.start).dayNumber;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tlet until = new Date(9999, 1, 1);\r\n\t\t\tconst endRule = node.querySelector(`[name=\"dhx_custom_repeat_ends\"]`);\r\n\t\t\tif(endRule === \"ON\"){\r\n\t\t\t\tuntil = node.querySelector(`[name=\"dhx_form_repeat_ends_ondate\"]`).value;\r\n\t\t\t} else if(endRule === \"AFTER\") {\r\n\t\t\t\trrule.count = Math.max(1, node.querySelector(`[name=\"dhx_form_repeat_ends_after\"]`).value);\r\n\t\t\t}\r\n\r\n\t\t\treturn {rrule, until};\r\n\t\t},\r\n\t\tNEVER: function () {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction fillInDefaults(node, rule, event) {\r\n\t\tfillCustomDaily(node, rule, event);\r\n\t\tfillCustomWeekly(node, rule, event);\r\n\t\tfillCustomMonthly(node, rule, event);\r\n\t\tfillCustomYearly(node, rule, event);\r\n\t\tfillEndRule(node, rule, event);\r\n\t}\r\n\tscheduler.form_blocks[\"recurring\"] = {\r\n\t\trender: function (sns) {\r\n\t\t\tif (sns.form) {\r\n\t\t\t\tlet rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\t\tlet form = rec._get_node(sns.form);\r\n\t\t\t\tlet html = rec._outer_html(form);\r\n\t\t\t\tform.style.display = 'none';\r\n\t\t\t\treturn html;\r\n\t\t\t}\r\n\t\t\tlet loc = scheduler.locale.labels;\r\n\r\n\t\t\treturn `
\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t\t
\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t\t
\r\n\t\t\t\t
${loc.repeat_ends}
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t
\r\n\r\n\t\t
\r\n\t
`;\r\n\t\t},\r\n\r\n\t\r\n\t\t_init_set_value: function (node, value, event) {\r\n\t\t\tscheduler.form_blocks[\"recurring\"]._ds = { start: event.start_date, end: event.end_date };\r\n\t\t\tfunction hide(node) {\r\n\t\t\t\tnode.classList.add(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction show(node) {\r\n\t\t\t\tnode.classList.remove(\"dhx_hidden\");\r\n\t\t\t}\r\n\t\t\tfunction onRepeatOptionChange(value) {\r\n\t\t\t\tconst repeat = node.querySelector(\".dhx_form_repeat_custom\");\r\n\t\t\t\tif (value === \"CUSTOM\") {\r\n\t\t\t\t\tshow(repeat);\r\n\t\t\t\t} else {\r\n\t\t\t\t\thide(repeat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatIntervalChange(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tweekly: node.querySelector(\".dhx_form_repeat_custom_week\"),\r\n\t\t\t\t\tmonthly: node.querySelector(\".dhx_form_repeat_custom_month\"),\r\n\t\t\t\t\tyearly: node.querySelector(\".dhx_form_repeat_custom_year\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"DAILY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"WEEKLY\":\r\n\t\t\t\t\t\tshow(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"MONTHLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\tshow(nodes.monthly);\r\n\t\t\t\t\t\thide(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"YEARLY\":\r\n\t\t\t\t\t\thide(nodes.weekly);\r\n\t\t\t\t\t\thide(nodes.monthly);\r\n\t\t\t\t\t\tshow(nodes.yearly);\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction onCustomRepeatEndRule(value) {\r\n\t\t\t\tconst nodes = {\r\n\t\t\t\t\tafter: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_after\"),\r\n\t\t\t\t\ton: node.querySelector(\".dhx_form_repeat_ends_extra .dhx_form_repeat_ends_on\")\r\n\t\t\t\t};\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"NEVER\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"AFTER\":\r\n\t\t\t\t\t\tshow(nodes.after);\r\n\t\t\t\t\t\thide(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"ON\":\r\n\t\t\t\t\t\thide(nodes.after);\r\n\t\t\t\t\t\tshow(nodes.on);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// repeat section change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").addEventListener(\"change\", function () {\r\n\t\t\t\tonRepeatOptionChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat interval change\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_custom_interval [name='repeat_interval_unit']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatIntervalChange(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// custom repeat end rule\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_ends [name='dhx_custom_repeat_ends']\").addEventListener(\"change\", function () {\r\n\t\t\t\tonCustomRepeatEndRule(this.value);\r\n\t\t\t});\r\n\r\n\t\t\tscheduler._lightbox._rec_init_done = true;\r\n\t\t},\r\n\t\tbutton_click: function(){},\r\n\t\tset_value: function (node, value, ev) {\r\n\t\t\tlet rf = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\t\trf._init_set_value(node, value, ev);\r\n\t\t\tnode.open = !ev.rrule;\r\n\r\n\t\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\t\tlet ds = rf._ds;\r\n\t\t\tds.start = ev.start_date;\r\n\t\t\tds.end = ev._end_date;\r\n\r\n\t\t\tif (ev.rrule) {\r\n\t\t\t\tconst rruleset = rrulestr(ev.rrule);\r\n\t\t\t\tfillInDefaults(node, rruleset.origOptions, ev);\r\n\t\t\t\tconst topOption = getTopLevelOption(rruleset, ev._end_date);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = topOption;\r\n\t\t\t\tif(topOption === \"CUSTOM\"){\r\n\t\t\t\t\tlet customFreq;\r\n\t\t\t\t\tswitch (rruleset.origOptions.freq) {\r\n\t\t\t\t\t\tcase RRule.DAILY:\r\n\t\t\t\t\t\t\tcustomFreq = \"DAILY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.WEEKLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"WEEKLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.MONTHLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"MONTHLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase RRule.YEARLY:\r\n\t\t\t\t\t\t\tcustomFreq = \"YEARLY\";\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(customFreq){\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).value = customFreq;\r\n\t\t\t\t\t\tnode.querySelector(`[name=\"repeat_interval_unit\"]`).dispatchEvent(new Event(\"change\"));\r\n\t\t\t\t\t}\r\n\t\t\t\t//\trepeat_interval_unit\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}else{\r\n\t\t\t\tfillInDefaults(node, null, ev);\r\n\t\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").value = \"NEVER\";\r\n\t\t\t}\r\n\t\t\tnode.querySelector(\".dhx_form_repeat_pattern select\").dispatchEvent(new Event(\"change\"));\r\n\r\n\t\t},\r\n\t\tget_value: function (node, ev) {\r\n\t\t\t\r\n\t\t\tif(!node.blocked && node.querySelector(\".dhx_form_repeat_pattern select\").value !== \"NEVER\") {\r\n\t\t\t\tlet ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\t\tlet actual_dates = {};\r\n\r\n\t\t\t\tlet timeControl = getTimeSection();\r\n\r\n\t\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\t\tds.start = actual_dates.start_date;\r\n\t\t\t\tconst pattern = node.querySelector(\".dhx_form_repeat_pattern select\").value;\r\n\t\t\t\tconst recurrence = getRecValue[pattern](ds, node);\r\n\t\t\t\tev.rrule = new RRule(recurrence.rrule).toString().replace(\"RRULE:\", \"\");\r\n\t\t\t\tds.end = recurrence.until;\r\n\r\n\t\t\t\tev.duration = Math.floor((actual_dates.end_date - actual_dates.start_date) / 1000);\r\n\r\n\t\t\t\tif (ds._start) {\r\n\t\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\t\tds._start = false;\r\n\t\t\t\t} else\r\n\t\t\t\t\tev._start_date = null;\r\n\r\n\t\t\t\tev._end_date = ds.end;\r\n\t\t\t}else{\r\n\t\t\t\tev.rrule = ev.rrule = \"\";\r\n\t\t\t\tev._end_date = ev.end_date;\r\n\t\t\t}\r\n\r\n\t\t\treturn ev.rrule;\r\n\t\t},\r\n\r\n\t\tfocus: function (node) {\r\n\t\t}\r\n\t};\r\n\r\n\tfunction getTimeSection() {\r\n\t\tlet timeControl = scheduler.formSection('time');\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('time');\r\n\t\t}\r\n\t\tif (!timeControl) {\r\n\t\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t\t}\r\n\r\n\r\n\t\tif (!timeControl) {\r\n\t\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\t\t\t\t\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\t\t\t\t\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\t\t\t\t\"\",\r\n\t\t\t\t\"scheduler.config.lightbox.sections = [\",\r\n\t\t\t\t\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n\t\t\t\t.join(\"\\n\"));\r\n\t\t}\r\n\r\n\t\treturn timeControl;\r\n\t}\r\n\r\n\tfunction getFirstSectionOfType(type) {\r\n\t\tfor (let i = 0; i < scheduler.config.lightbox.sections.length; i++) {\r\n\t\t\tlet section = scheduler.config.lightbox.sections[i];\r\n\t\t\tif (section.type === type) {\r\n\t\t\t\treturn scheduler.formSection(section.name);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n}","export default function(scheduler){\r\n\r\nscheduler.config.occurrence_timestamp_in_utc = false;\r\nscheduler.config.recurring_workdays = [1,2,3,4,5];\r\nscheduler.form_blocks[\"recurring\"] = {\r\n\t_get_node : function(node){\r\n\t\tif (typeof node == \"string\"){\r\n\t\t\tlet element = scheduler._lightbox.querySelector(`#${node}`);\r\n\t\t\tif(!element){\r\n\t\t\t\t// form is detached from lightbox \r\n\t\t\t\t// search globally, won't work in LWC\r\n\t\t\t\telement = document.getElementById(node);\r\n\t\t\t}\r\n\t\t\tnode = element;\r\n\t\t}\r\n\t\tif (node.style.display == 'none')\r\n\t\t\tnode.style.display = \"\";\r\n\t\treturn node;\r\n\t},\r\n\t_outer_html: function(node){\r\n\t\treturn node.outerHTML || getOuterHTML(node);\r\n\r\n\t\t//probably not needed, FF v10- only\r\n\t\tfunction getOuterHTML(n){\r\n\t\t\tvar div = document.createElement('div'), h;\r\n\t\t\tdiv.appendChild( n.cloneNode(true) );\r\n\t\t\th = div.innerHTML;\r\n\t\t\tdiv = null;\r\n\t\t\treturn h;\r\n\t\t}\r\n\t},\r\n\trender:function(sns) {\r\n\t\tif(sns.form){\r\n\t\t\tvar rec = scheduler.form_blocks[\"recurring\"];\r\n\t\t\tvar form = rec._get_node(sns.form);\r\n\t\t\tvar html = rec._outer_html(form);\r\n\t\t\tform.style.display = 'none';\r\n\t\t\treturn html;\r\n\t\t}\r\n\t\tvar loc = scheduler.locale.labels;\r\n\t\treturn '
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+loc.repeat_text_week_count+'
'+\r\n\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t\t' '+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\t''+\r\n\t\t\t\t\t\t\t\tloc.select_year_day2+\r\n\t\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t''+loc.repeat_text_occurences_count+'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t\t'
'+\r\n\t\t\t\t\t'
'+\r\n\t\t\t\t'
'+\r\n\t\t\t\t'
';\r\n\t},\r\n\t_ds: {},\r\n\t_get_form_node: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return null;\r\n\t\tif(col.nodeName) return col;\r\n\r\n\t\tif(col.length){\r\n\t\t\tfor(var i=0; i < col.length; i++){\r\n\t\t\t\tif(col[i].value == value)\r\n\t\t\t\t\treturn col[i];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\t_get_node_value: function(els, name, multiselect){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return \"\";\r\n\t\tif(col.length){\r\n\t\t\tif(multiselect){\r\n\t\t\t\tvar res = [];\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) res.push(col[i].value);\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}else{\r\n\t\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\t\tif (col[i].checked) return col[i].value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(col.value)\r\n\t\t\treturn !multiselect ? col.value : [col.value];\r\n\t},\r\n\r\n\t_get_node_numeric_value: function(els, name){\r\n\t\tvar value = scheduler.form_blocks[\"recurring\"]._get_node_value(els, name);\r\n\t\treturn ((value * 1) || 0);\r\n\t},\r\n\r\n\t_set_node_value: function(els, name, value){\r\n\t\tvar col = els[name];\r\n\t\tif(!col) return;\r\n\r\n\t\tif(col.name == name){\r\n\t\t\tcol.value = value;\r\n\t\t}else if(col.length){\r\n\t\t\tvar hash_value = typeof value == \"object\";\r\n\t\t\tfor (var i = 0; i < col.length; i++)\r\n\t\t\t\tif (hash_value || col[i].value == value){\r\n\t\t\t\t\tcol[i].checked = hash_value ? !!value[col[i].value] : !!value;\r\n\t\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t_init_set_value:function(node, value, ev) {\r\n\t\tvar block = scheduler.form_blocks[\"recurring\"];\r\n\t\tvar get_value = block._get_node_value;\r\n\t\tvar set_value = block._set_node_value;\r\n\t\tscheduler.form_blocks[\"recurring\"]._ds = {start:ev.start_date, end:ev._end_date};\r\n\r\n\t\tvar str_date_format = scheduler.date.str_to_date(scheduler.config.repeat_date, false, true);\r\n\t\tvar str_date = function(str_date) {\r\n\t\t\tvar date = str_date_format(str_date);\r\n\t\t\tif (scheduler.config.include_end_by)\r\n\t\t\t\tdate = scheduler.date.add(date, 1, 'day');\r\n\t\t\treturn date;\r\n\t\t};\r\n\r\n\t\tvar date_str = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\r\n\t\tvar top = node.getElementsByTagName(\"FORM\")[0];\r\n\t\tvar els = {};\r\n\r\n\t\tfunction register_els(inps) {\r\n\t\t\tfor (var i = 0; i < inps.length; i++) {\r\n\t\t\t\tvar inp = inps[i];\r\n\r\n\t\t\t\tif(inp.name){\r\n\t\t\t\t\tif(!els[inp.name]){\r\n\t\t\t\t\t\tels[inp.name] = inp;\r\n\t\t\t\t\t}else if(els[inp.name].nodeType){\r\n\t\t\t\t\t\tvar node = els[inp.name];\r\n\t\t\t\t\t\tels[inp.name] = [node, inp];\r\n\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tels[inp.name].push(inp);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tregister_els(top.getElementsByTagName(\"INPUT\"));\r\n\t\tregister_els(top.getElementsByTagName(\"SELECT\"));\r\n\r\n\t\tif (!scheduler.config.repeat_date_of_end) {\r\n\t\t\tvar formatter = scheduler.date.date_to_str(scheduler.config.repeat_date);\r\n\t\t\tscheduler.config.repeat_date_of_end = formatter(scheduler.date.add(scheduler._currentDate(), 30, \"day\"));\r\n\t\t}\r\n\t\tset_value(els, \"date_of_end\", scheduler.config.repeat_date_of_end);\r\n\r\n\t\tvar $ = function(a) {\r\n\t\t\treturn scheduler._lightbox.querySelector(`#${a}`) || { style:{} };//return fake object if node not found\r\n\t\t};\r\n\r\n\t\tfunction change_current_view() {\r\n\t\t\t$(\"dhx_repeat_day\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_week\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_month\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_year\").style.display = \"none\";\r\n\t\t\t$(\"dhx_repeat_\" + this.value).style.display = \"\";\r\n\t\t\tscheduler.setLightboxSize();\r\n\t\t}\r\n\r\n\t\tfunction get_repeat_code(dates) {\r\n\t\t\tvar code = [get_value(els, \"repeat\")];\r\n\t\t\tget_rcode[code[0]](code, dates);\r\n\r\n\t\t\twhile (code.length < 5) code.push(\"\");\r\n\t\t\tvar repeat = \"\";\r\n\r\n\t\t\tvar end = get_end_rule(els);\r\n\r\n\t\t\tif (end == \"no\") {\r\n\t\t\t\tdates.end = new Date(9999, 1, 1);\r\n\t\t\t\trepeat = \"no\";\r\n\t\t\t}\r\n\t\t\telse if (end == \"date_of_end\") {\r\n\t\t\t\tdates.end = str_date(get_value(els, \"date_of_end\"));\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tscheduler.transpose_type(code.join(\"_\"));\r\n\t\t\t\trepeat = Math.max(1, get_value(els, \"occurences_count\"));\r\n\r\n\t\t\t\tvar transp = 0;\r\n\r\n\t\t\t\t//var transp = ((code[0] == \"week\" && code[4] && code[4].toString().indexOf(scheduler.config.start_on_monday ? 1 : 0) == -1) ? 1 : 0);\r\n\r\n\t\t\t\t// which is equal to following code, seems to produce extra instance, not clear why needed\r\n\r\n\t\t\t\t/*if(code[0] == \"week\"){\r\n\t\t\t\t\tvar days = code[4] || \"\";\r\n\t\t\t\t\tif(scheduler.config.start_on_monday){\r\n\t\t\t\t\t\tif(days.indexOf(1) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(days.indexOf(0) == -1)\r\n\t\t\t\t\t\ttransp = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/\r\n\r\n\t\t\t//\tdates.end = scheduler.date.add(new Date(dates.start), repeat + transp, code.join(\"_\"));\r\n\r\n\t\t\t\tdates.end = scheduler.date[\"add_\" + code.join(\"_\")](new Date(dates.start), repeat + transp, {start_date: dates.start}) || dates.start;\r\n\t\t\t}\r\n\r\n\t\t\treturn code.join(\"_\") + \"#\" + repeat;\r\n\t\t}\r\n\t\tfunction get_end_rule(els){\r\n\t\t\tvar end = els[\"end\"];\r\n\t\t\tif(end.length){\r\n\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\tif(end[i].checked){\r\n\t\t\t\t\t\tif(end[i].value && end[i].value != \"on\"){//seems to be default value:var input = document.createElement(\"input\"); input.type = \"radio\"; input.value\r\n\t\t\t\t\t\t\treturn end[i].value;\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\tif(!i){\r\n\t\t\t\t\t\t\t\treturn \"no\";\r\n\t\t\t\t\t\t\t}else if(i == 2){\r\n\t\t\t\t\t\t\t\treturn \"date_of_end\";\r\n\t\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\t\treturn \"occurences_count\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(end.value)\r\n\t\t\t\t\treturn end.value;\r\n\t\t\t}\r\n\t\t\treturn \"no\";\r\n\t\t}\r\n\t\tfunction set_end_rule(els, value){\r\n\t\t\tvar end = els[\"end\"];\r\n\r\n\t\t\tif(end.length){\r\n\t\t\t\tvar has_values = !!end[0].value && end[0].value != \"on\";\r\n\t\t\t\tif(has_values){\r\n\t\t\t\t\tfor(var i =0; i < end.length; i++){\r\n\t\t\t\t\t\tif(end[i].value == value)\r\n\t\t\t\t\t\t\tend[i].checked = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvar ind = 0;\r\n\t\t\t\t\tswitch(value){\r\n\t\t\t\t\t\tcase \"no\":\r\n\t\t\t\t\t\t\tind = 0;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"date_of_end\":\r\n\t\t\t\t\t\t\tind = 2;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tind = 1;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tend[ind].checked = true;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tend.value = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._get_repeat_code = get_repeat_code;\r\n\t\tvar get_rcode = {\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"month_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count\")));\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"month_day\"));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_count2\")));\r\n\t\t\t\t\tcode.push( get_value(els, \"month_day2\"));\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"month_week2\")));\r\n\t\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t},\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"week_count\")));\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tcode.push(\"\");\r\n\t\t\t\tvar t = [];\r\n\r\n\t\t\t\tvar col = get_value(els, \"week_day\", true);\r\n\t\t\t\t//var col = els[\"week_day\"];\r\n\t\t\t\tvar day = dates.start.getDay();\r\n\t\t\t\tvar start_exists = false;\r\n\r\n\t\t\t\tfor (var i = 0; i < col.length; i++){\r\n\t\t\t\t\tt.push(col[i]);\r\n\t\t\t\t\tstart_exists = start_exists || col[i] == day;\r\n\t\t\t\t}\r\n\t\t\t\tif (!t.length){\r\n\t\t\t\t\tt.push(day);\r\n\t\t\t\t\tstart_exists = true;\r\n\t\t\t\t}\r\n\t\t\t\tt.sort();\r\n\r\n\r\n\t\t\t\tif (!scheduler.config.repeat_precise){\r\n\t\t\t\t\tdates.start = scheduler.date.week_start(dates.start);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t} else if (!start_exists){\r\n\t\t\t\t\tscheduler.transpose_day_week(dates.start, t, 1, 7);\r\n\t\t\t\t\tdates._start = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcode.push(t.join(\",\"));\r\n\t\t\t},\r\n\t\t\tday:function(code) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\t\t\t\tvar get_numeric_value = scheduler.form_blocks[\"recurring\"]._get_node_numeric_value;\r\n\r\n\t\t\t\tif (get_value(els, \"day_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(Math.max(1, get_numeric_value(els, \"day_count\")));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tcode.push(\"week\");\r\n\t\t\t\t\tcode.push(1);\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(\"\");\r\n\t\t\t\t\tcode.push(scheduler.config.recurring_workdays.join(\",\"));\r\n\t\t\t\t\tcode.splice(0, 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar get_value = scheduler.form_blocks[\"recurring\"]._get_node_value;\r\n\r\n\t\t\t\tif (get_value(els, \"year_type\") == \"d\") {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tdates.start.setMonth(0);\r\n\t\t\t\t\tdates.start.setDate(get_value(els, \"year_day\"));\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month\"));\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcode.push(\"1\");\r\n\t\t\t\t\tcode.push(get_value(els, \"year_day2\"));\r\n\t\t\t\t\tcode.push(get_value(els, \"year_week2\"));\r\n\t\t\t\t\tdates.start.setDate(1);\r\n\t\t\t\t\tdates.start.setMonth(get_value(els, \"year_month2\"));\r\n\t\t\t\t}\r\n\t\t\t\tdates._start = true;\r\n\t\t\t}\r\n\t\t};\r\n\t\tvar set_rcode = {\r\n\t\t\tweek:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"week_count\", code[1]);\r\n\r\n\t\t\t\tvar t = code[4].split(\",\");\r\n\t\t\t\tvar d = {};\r\n\t\t\t\tfor (var i = 0; i < t.length; i++) d[t[i]] = true;\r\n\r\n\t\t\t\tset_value(els, \"week_day\", d);\r\n\r\n\t\t\t\t//for (var i = 0; i < col.length; i++)\r\n\t\t\t\t//\tcol[i].checked = (!!d[col[i].value]);\r\n\t\t\t},\r\n\t\t\tmonth:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"month_count\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_day\", dates.start.getDate());\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"month_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"month_count2\", code[1]);\r\n\t\t\t\t\tset_value(els, \"month_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"month_day2\", code[2]);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tday:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\t\tset_value(els, \"day_type\", \"d\");\r\n\t\t\t\tset_value(els, \"day_count\", code[1]);\r\n\t\t\t},\r\n\t\t\tyear:function(code, dates) {\r\n\t\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\r\n\t\t\t\tif (code[2] === \"\") {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"d\");\r\n\t\t\t\t\tset_value(els, \"year_day\", dates.start.getDate());\r\n\t\t\t\t\tset_value(els, \"year_month\", dates.start.getMonth());\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tset_value(els, \"year_type\", \"w\");\r\n\t\t\t\t\tset_value(els, \"year_week2\", code[3]);\r\n\t\t\t\t\tset_value(els, \"year_day2\", code[2]);\r\n\t\t\t\t\tset_value(els, \"year_month2\", dates.start.getMonth());\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tfunction set_repeat_code(code, dates) {\r\n\t\t\tvar set_value = scheduler.form_blocks[\"recurring\"]._set_node_value;\r\n\t\t\tvar data = code.split(\"#\");\r\n\t\t\tcode = data[0].split(\"_\");\r\n\t\t\tset_rcode[code[0]](code, dates);\r\n\r\n\t\t\tswitch (data[1]) {\r\n\t\t\t\tcase \"no\":\r\n\t\t\t\t\tset_end_rule(els, \"no\");\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"\":\r\n\t\t\t\t\tset_end_rule(els, \"date_of_end\");\r\n\r\n\t\t\t\t\tvar end_date = dates.end;\r\n\t\t\t\t\tif (scheduler.config.include_end_by){\r\n\t\t\t\t\t\tend_date = scheduler.date.add(end_date, -1, 'day');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tset_value(els, \"date_of_end\", date_str(end_date));\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tset_end_rule(els, \"occurences_count\");\r\n\t\t\t\t\tset_value(els, \"occurences_count\", data[1]);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tset_value(els, \"repeat\", code[0]);\r\n\t\t\t//e.checked = true;\r\n\r\n\t\t\tvar node = scheduler.form_blocks[\"recurring\"]._get_form_node(els, \"repeat\", code[0]);\r\n\t\t\tif(node.nodeName == \"SELECT\"/* && node.onchange*/){\r\n\t\t\t//\tnode.onchange();\r\n\t\t\t\tnode.dispatchEvent(new Event('change'));\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}else{\r\n\t\t\t\tnode.dispatchEvent(new MouseEvent('click'));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tscheduler.form_blocks[\"recurring\"]._set_repeat_code = set_repeat_code;\r\n\r\n\t\tfor (var i = 0; i < top.elements.length; i++) {\r\n\t\t\tvar el = top.elements[i];\r\n\t\t\tswitch (el.name) {\r\n\t\t\t\tcase \"repeat\":\r\n\t\t\t\t\tif (el.nodeName == \"SELECT\" && !el.$_eventAttached) {\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"change\", change_current_view);\r\n\t\t\t\t\t} else if(!el.$_eventAttached){\r\n\t\t\t\t\t\tel.$_eventAttached = true;\r\n\t\t\t\t\t\tel.addEventListener(\"click\", change_current_view);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._lightbox._rec_init_done = true;\r\n\t},\r\n\tset_value:function(node, value, ev) {\r\n\t\tvar rf = scheduler.form_blocks[\"recurring\"];\r\n\t\tif (!scheduler._lightbox._rec_init_done)\r\n\t\t\trf._init_set_value(node, value, ev);\r\n\t\tnode.open = !ev.rec_type;\r\n\r\n\t\tnode.blocked = this._is_modified_occurence(ev);\r\n\r\n\t\tvar ds = rf._ds;\r\n\t\tds.start = ev.start_date;\r\n\t\tds.end = ev._end_date;\r\n\r\n\t\trf._toggle_block();\r\n\r\n\t\tif (value)\r\n\t\t\trf._set_repeat_code(value, ds);\r\n\t},\r\n\tget_value:function(node, ev) {\r\n\t\tif (node.open) {\r\n\t\t\tvar ds = scheduler.form_blocks[\"recurring\"]._ds;\r\n\t\t\tvar actual_dates = {};\r\n\r\n\t\t\tvar timeControl = getTimeSection();\r\n\r\n\t\t\ttimeControl.getValue(actual_dates);\r\n\t\t\tds.start = actual_dates.start_date;\r\n\t\t\tev.rec_type = scheduler.form_blocks[\"recurring\"]._get_repeat_code(ds);\r\n\t\t\tif (ds._start) {\r\n\t\t\t\tev.start_date = new Date(ds.start);\r\n\t\t\t\tev._start_date = new Date(ds.start);\r\n\t\t\t\tds._start = false;\r\n\t\t\t} else\r\n\t\t\t\tev._start_date = null;\r\n\r\n\t\t\tev._end_date = ds.end;\r\n\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t} else {\r\n\t\t\tev.rec_type = ev.rec_pattern = \"\";\r\n\t\t\tev._end_date = ev.end_date;\r\n\t\t}\r\n\t\treturn ev.rec_type;\r\n\t},\r\n\t_get_button: function(){\r\n\t\tvar node = getRecurringSection().header;\r\n\t\treturn node.firstChild.firstChild;\r\n\t},\r\n\t_get_form: function(){\r\n\t\treturn getRecurringSection().node;\r\n\t},\r\n\topen:function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\t\tif(!cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\tclose: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form();\r\n\r\n\t\tif(cont.open)\r\n\t\t\tblock._toggle_block();\r\n\t},\r\n\t_toggle_block: function(){\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\r\n\t\tvar cont = block._get_form(),\r\n\t\t\tel = block._get_button();\r\n\t\tif (!cont.open && !cont.blocked) {\r\n\t\t\tcont.style.height = \"auto\";//reset to default value\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 0px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring_open;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tcont.style.height = \"0px\";\r\n\t\t\tif(el){\r\n\t\t\t\tel.style.backgroundPosition = \"-5px 20px\";\r\n\t\t\t\tel.nextSibling.innerHTML = scheduler.locale.labels.button_recurring;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcont.open = !cont.open;\r\n\r\n\t\tscheduler.setLightboxSize();\r\n\t},\r\n\tfocus:function(node) {\r\n\t},\r\n\tbutton_click:function(node, button, event) {\r\n\t\tvar block = scheduler.form_blocks.recurring;\r\n\t\tvar cont = block._get_form();\r\n\t\tif (!cont.blocked)\r\n\t\t\tscheduler.form_blocks.recurring._toggle_block();\r\n\t}\r\n};\r\n\r\nfunction getTimeSection(){\r\n\tvar timeControl = scheduler.formSection('time');\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('time');\r\n\t}\r\n\tif(!timeControl){\r\n\t\ttimeControl = getFirstSectionOfType('calendar_time');\r\n\t}\r\n\r\n\t\r\n\tif (!timeControl) {\r\n\t\tthrow new Error([\"Can't calculate the recurring rule, the Recurring form block can't find the Time control. Make sure you have the time control in 'scheduler.config.lightbox.sections' config.\",\r\n\"You can use either the default time control https://docs.dhtmlx.com/scheduler/time.html, or the datepicker https://docs.dhtmlx.com/scheduler/minicalendar.html, or a custom control. \",\r\n\"In the latter case, make sure the control is named \\\"time\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"{name:\\\"time\\\", height:72, type:\\\"YOU CONTROL\\\", map_to:\\\"auto\\\" }];\"]\r\n.join(\"\\n\"));\r\n\t}\r\n\r\n\treturn timeControl;\r\n}\r\n\r\nfunction getRecurringSection(){\r\n\tvar recurringSection = scheduler.formSection('recurring');\r\n\tif(!recurringSection){\r\n\t\trecurringSection = getFirstSectionOfType('recurring');\r\n\t}\r\n\r\n\tif (!recurringSection) {\r\n\t\tthrow new Error([\"Can't locate the Recurring form section.\",\r\n\t\t\"Make sure that you have the recurring control on the lightbox configuration https://docs.dhtmlx.com/scheduler/recurring_events.html#recurringlightbox \",\r\n\t\t\"and that the recurring control has name \\\"recurring\\\":\",\r\n\"\",\r\n\"scheduler.config.lightbox.sections = [\",\r\n\"\t{name:\\\"recurring\\\", ... }\",\r\n\"];\"].join(\"\\n\"));\r\n\r\n\t}\r\n\r\n\treturn recurringSection;\r\n}\r\n\r\nfunction getFirstSectionOfType(type){\r\n\tfor(var i = 0; i < scheduler.config.lightbox.sections.length; i++){\r\n\t\tvar section = scheduler.config.lightbox.sections[i];\r\n\t\tif(section.type === type){\r\n\t\t\treturn scheduler.formSection(section.name);\r\n\t\t}\r\n\t}\r\n\treturn null;\r\n}\r\n\r\n//problem may occur if we will have two repeating events in the same moment of time\r\nscheduler._rec_markers = {};\r\nscheduler._rec_markers_pull = {};\r\nscheduler._add_rec_marker = function(ev, time) {\r\n\tev._pid_time = time;\r\n\tthis._rec_markers[ev.id] = ev;\r\n\tif (!this._rec_markers_pull[ev.event_pid]) this._rec_markers_pull[ev.event_pid] = {};\r\n\tthis._rec_markers_pull[ev.event_pid][time] = ev;\r\n};\r\nscheduler._get_rec_marker = function(time, id) {\r\n\tvar ch = this._rec_markers_pull[id];\r\n\tif (ch) return ch[time];\r\n\treturn null;\r\n};\r\nscheduler._get_rec_markers = function(id) {\r\n\treturn (this._rec_markers_pull[id] || []);\r\n};\r\n\r\nfunction clearMilliseconds(date){\r\n//\treturn date;\r\n\treturn new Date(\r\n\t\tdate.getFullYear(), \r\n\t\tdate.getMonth(), \r\n\t\tdate.getDate(), \r\n\t\tdate.getHours(), \r\n\t\tdate.getMinutes(),\r\n\t\tdate.getSeconds(),\r\n\t\t0\r\n\t);\r\n}\r\n\r\nscheduler._rec_temp = [];\r\n(function() {\r\n\tvar old_add_event = scheduler.addEvent;\r\n\tscheduler.addEvent = function(start_date, end_date, text, id, extra_data) {\r\n\t\tvar ev_id = old_add_event.apply(this, arguments);\r\n\r\n\t\tif (ev_id && scheduler.getEvent(ev_id)) {\r\n\t\t\tvar ev = scheduler.getEvent(ev_id);\r\n\t\t\t\r\n\t\t\tif(ev.start_date){\r\n\t\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t\t}\r\n\t\t\tif(ev.end_date){\r\n\t\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t\t}\r\n\t\t\tif (this._is_modified_occurence(ev))\r\n\t\t\t\tscheduler._add_rec_marker(ev, ev.event_length * 1000);\r\n\t\t\tif (ev.rec_type)\r\n\t\t\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\t\t}\r\n\t\treturn ev_id;\r\n\t};\r\n})();\r\n\r\nscheduler.attachEvent(\"onEventIdChange\", function(id, new_id) {\r\n\tif (this._ignore_call) return;\r\n\tthis._ignore_call = true;\r\n\r\n\tif(scheduler._rec_markers[id]){\r\n\t\t//important for for correct work of scheduler.getEvents(from, to) and collision detection\r\n\t\tscheduler._rec_markers[new_id] = scheduler._rec_markers[id];\r\n\t\tdelete scheduler._rec_markers[id];\r\n\t}\r\n\r\n\tif(scheduler._rec_markers_pull[id]){\r\n\t\tscheduler._rec_markers_pull[new_id] = scheduler._rec_markers_pull[id];\r\n\t\tdelete scheduler._rec_markers_pull[id];\r\n\t}\r\n\r\n\tfor (var i = 0; i < this._rec_temp.length; i++) {\r\n\t\tvar tev = this._rec_temp[i];\r\n\t\tif (tev.event_pid == id) {\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\tthis.changeEventId(tev.id, new_id + \"#\" + tev.id.split(\"#\")[1]);\r\n\t\t}\r\n\t}\r\n\r\n\tfor(var i in this._rec_markers){\r\n\t\tvar tev = this._rec_markers[i];\r\n\t\tif(tev.event_pid == id){\r\n\t\t\ttev.event_pid = new_id;\r\n\t\t\ttev._pid_changed = true;\r\n\t\t}\r\n\t}\r\n\r\n\tvar el = scheduler._rec_markers[new_id];\r\n\tif(el && el._pid_changed) {\r\n\t\tdelete el._pid_changed;\r\n\t\tsetTimeout(function() {\r\n\t\t\tif(scheduler.$destroyed){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t\tscheduler.callEvent(\"onEventChanged\", [new_id, scheduler.getEvent(new_id)]);\r\n\t\t}, 1);\r\n\t}\r\n\r\n\tdelete this._ignore_call;\r\n});\r\nscheduler.attachEvent(\"onConfirmedBeforeEventDelete\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (this._is_virtual_event(id) || (this._is_modified_occurence(ev) && ev.rec_type && ev.rec_type != 'none')) {\r\n\t\tid = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tvar tid = (id[1]) ? id[1] : Math.round(ev._pid_time / 1000);\r\n\r\n\t\tvar nev = this._copy_event(ev);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = ev.event_pid || id[0];\r\n\t\tvar timestamp = tid;\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"none\";\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t} else {\r\n\t\tif (ev.rec_type && this._lightbox_id)\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tid = sub[i].id;\r\n\t\t\t\tif (this.getEvent(id))\r\n\t\t\t\t\tthis.deleteEvent(id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventDeleted\", function(id, ev){\r\n\tif(!this._is_virtual_event(id) && this._is_modified_occurence(ev)){\r\n\t\tif(!scheduler._events[id]){\r\n\t\t\tev.rec_type = ev.rec_pattern = \"none\";\r\n\t\t\tthis.setEvent(id, ev);\r\n\t\t}\r\n\t}\r\n});\r\nscheduler.attachEvent(\"onEventChanged\", function(id, event) {\r\n\tif (this._loading) return true;\r\n\r\n\tvar ev = this.getEvent(id);\r\n\r\n\tif (this._is_virtual_event(id)) {\r\n\t\tvar id = id.split(\"#\");\r\n\t\tvar nid = this.uid();\r\n\t\tthis._not_render = true;\r\n\r\n\t\tvar nev = this._copy_event(event);\r\n\t\tnev.id = nid;\r\n\t\tnev.event_pid = id[0];\r\n\t\tvar timestamp = id[1];\r\n\t\tnev.event_length = timestamp;\r\n\t\tnev.rec_type = nev.rec_pattern = \"\";\r\n\r\n\t\tthis._add_rec_marker(nev, timestamp * 1000);\r\n\t\tthis.addEvent(nev);\r\n\r\n\t\tthis._not_render = false;\r\n\r\n\t} else {\r\n\t\tif(ev.start_date){\r\n\t\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t\t}\r\n\t\tif(ev.end_date){\r\n\t\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t\t}\r\n\r\n\t\tif (ev.rec_type && this._lightbox_id){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t\tvar sub = this._get_rec_markers(id);\r\n\t\tfor (var i in sub) {\r\n\t\t\tif (sub.hasOwnProperty(i)) {\r\n\t\t\t\tdelete this._rec_markers[sub[i].id];\r\n\t\t\t\tthis.deleteEvent(sub[i].id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tdelete this._rec_markers_pull[id];\r\n\r\n\t\t// it's possible that after editing event is no longer exists, in such case we need to remove _select_id flag\r\n\t\tvar isEventFound = false;\r\n\t\tfor (var k = 0; k < this._rendered.length; k++) {\r\n\t\t\tif (this._rendered[k].getAttribute(this.config.event_attribute) == id)\r\n\t\t\t\tisEventFound = true;\r\n\t\t}\r\n\t\tif (!isEventFound)\r\n\t\t\tthis._select_id = null;\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventAdded\", function(id) {\r\n\tif (!this._loading) {\r\n\t\tvar ev = this.getEvent(id);\r\n\t\tif (ev.rec_type && !ev.event_length){\r\n\t\t\tthis._roll_back_dates(ev);\r\n\t\t}\r\n\t}\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventSave\", function(id, data, is_new_event) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type && data.rec_type && !this._is_virtual_event(id))\r\n\t\tthis._select_id = null;\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCreated\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (!ev.rec_type)\r\n\t\tev.rec_type = ev.rec_pattern = ev.event_length = ev.event_pid = \"\";\r\n\treturn true;\r\n});\r\nscheduler.attachEvent(\"onEventCancel\", function(id) {\r\n\tvar ev = this.getEvent(id);\r\n\tif (ev.rec_type) {\r\n\t\tthis._roll_back_dates(ev);\r\n\t\t// a bit expensive, but we need to be sure that event re-rendered, because view can be corrupted by resize , during edit process\r\n\t\tthis.render_view_data();\r\n\t}\r\n});\r\nscheduler._roll_back_dates = function(ev) {\r\n\tif(ev.start_date){\r\n\t\tev.start_date = clearMilliseconds(ev.start_date);\r\n\t}\r\n\tif(ev.end_date){\r\n\t\tev.end_date = clearMilliseconds(ev.end_date);\r\n\t}\r\n\tev.event_length = Math.round((ev.end_date.valueOf() - ev.start_date.valueOf()) / 1000);\r\n\tev.end_date = ev._end_date;\r\n\tif (ev._start_date) {\r\n\t\tev.start_date.setMonth(0);\r\n\t\tev.start_date.setDate(ev._start_date.getDate());\r\n\t\tev.start_date.setMonth(ev._start_date.getMonth());\r\n\t\tev.start_date.setFullYear(ev._start_date.getFullYear());\r\n\r\n\t}\r\n};\r\n\r\nscheduler._is_virtual_event = function(id){\r\n\treturn id.toString().indexOf(\"#\") != -1;\r\n};\r\nscheduler._is_modified_occurence = function(ev){\r\n\treturn (ev.event_pid && ev.event_pid != \"0\");\r\n};\r\n\r\nscheduler.showLightbox_rec = scheduler.showLightbox;\r\nscheduler.showLightbox = function(id) {\r\n\tvar locale = this.locale;\r\n\tvar c = scheduler.config.lightbox_recurring;\r\n\tvar ev = this.getEvent(id);\r\n\tvar pid = ev.event_pid;\r\n\tvar isVirtual = this._is_virtual_event(id);\r\n\tif (isVirtual)\r\n\t\tpid = id.split(\"#\")[0];\r\n\r\n\t// show series\r\n\tvar showSeries = function(id) {\r\n\t\tvar event = scheduler.getEvent(id);\r\n\t\tevent._end_date = event.end_date;\r\n\t\tevent.end_date = new Date(event.start_date.valueOf() + event.event_length * 1000);\r\n\t\treturn scheduler.showLightbox_rec(id); // editing series\r\n\t};\r\n\r\n\tif ( (pid || pid*1 === 0) && ev.rec_type) {\r\n\t\t// direct API call on series id\r\n\t\treturn showSeries(id);\r\n\t}\r\n\tif ( !pid || pid === '0' || ( (!locale.labels.confirm_recurring || c == 'instance') || (c == 'series' && !isVirtual)) ) {\r\n\t\t// editing instance or non recurring event\r\n\t\treturn this.showLightbox_rec(id);\r\n\t}\r\n\tif (c == 'ask') {\r\n\t\tvar that = this;\r\n\t\tscheduler.modalbox({\r\n\t\t\ttext: locale.labels.confirm_recurring,\r\n\t\t\ttitle: locale.labels.title_confirm_recurring,\r\n\t\t\twidth: \"500px\",\r\n\t\t\tposition: \"middle\",\r\n\t\t\tbuttons:[locale.labels.button_edit_series, locale.labels.button_edit_occurrence, locale.labels.icon_cancel],\r\n\t\t\tcallback: function(index) {\r\n\t\t\t\tswitch(+index) {\r\n\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\treturn showSeries(pid);\r\n\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\treturn that.showLightbox_rec(id);\r\n\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t} else {\r\n\t\tshowSeries(pid);\r\n\t}\r\n};\r\n\r\n\r\nscheduler.get_visible_events_rec = scheduler.get_visible_events;\r\nscheduler.get_visible_events = function(only_timed) {\r\n\tfor (var i = 0; i < this._rec_temp.length; i++)\r\n\t\tdelete this._events[this._rec_temp[i].id];\r\n\tthis._rec_temp = [];\r\n\r\n\tvar stack = this.get_visible_events_rec(only_timed);\r\n\tvar out = [];\r\n\tfor (var i = 0; i < stack.length; i++) {\r\n\t\tif (stack[i].rec_type) {\r\n\t\t\t//deleted element of series\r\n\t\t\tif (stack[i].rec_pattern != \"none\")\r\n\t\t\t\tthis.repeat_date(stack[i], out);\r\n\t\t}\r\n\t\telse out.push(stack[i]);\r\n\t}\r\n\treturn out;\r\n};\r\n\r\n\r\n(function() {\r\n\tvar old = scheduler.isOneDayEvent;\r\n\tscheduler.isOneDayEvent = function(ev) {\r\n\t\tif (ev.rec_type) return true;\r\n\t\treturn old.call(this, ev);\r\n\t};\r\n\tvar old_update_event = scheduler.updateEvent;\r\n\tscheduler.updateEvent = function(id) {\r\n\t\tvar ev = scheduler.getEvent(id);\r\n\t\tif(ev && ev.rec_type){\r\n\t\t\t//rec_type can be changed without the lightbox,\r\n\t\t\t// make sure rec_pattern updated as well\r\n\t\t\tev.rec_pattern = (ev.rec_type || \"\").split(\"#\")[0];\r\n\t\t}\r\n\t\tif (ev && ev.rec_type && !this._is_virtual_event(id)) {\r\n\t\t\tscheduler.update_view();\r\n\t\t} else {\r\n\t\t\told_update_event.call(this, id);\r\n\t\t}\r\n\t};\r\n})();\r\n\r\nscheduler.transponse_size = {\r\n\tday:1, week:7, month:1, year:12\r\n};\r\nscheduler.date.day_week = function(sd, day, week) {\r\n\tsd.setDate(1);\r\n\tvar originalMonth = scheduler.date.month_start(new Date(sd));\r\n\tweek = (week - 1) * 7;\r\n\tvar cday = sd.getDay();\r\n\tvar nday = day * 1 + week - cday + 1;\r\n\tsd.setDate(nday <= week ? (nday + 7) : nday);\r\n\tvar newMonth = scheduler.date.month_start(new Date(sd));\r\n\tif(originalMonth.valueOf() !== newMonth.valueOf()){\r\n\t\treturn false;\r\n\t}\r\n\treturn true;\r\n};\r\nscheduler.transpose_day_week = function(sd, list, cor, size, cor2) {\r\n\tvar cday = (sd.getDay() || (scheduler.config.start_on_monday ? 7 : 0)) - cor;\r\n\tfor (var i = 0; i < list.length; i++) {\r\n\t\tif (list[i] > cday)\r\n\t\t\treturn sd.setDate(sd.getDate() + list[i] * 1 - cday - (size ? cor : cor2));\r\n\t}\r\n\tthis.transpose_day_week(sd, list, cor + size, null, cor);\r\n};\r\nscheduler.transpose_type = function(type) {\r\n\tvar transposeRecurring = \"transpose_\" + type;\r\n\tif (!this.date[transposeRecurring]) {\r\n\t\tvar recurringParts = type.split(\"_\");\r\n\t\tvar dayDurationMs = 60 * 60 * 24 * 1000;\r\n\t\tvar addRecurring = \"add_\" + type;\r\n\t\tvar recurringStepDays = this.transponse_size[recurringParts[0]] * recurringParts[1];\r\n\r\n\t\tif (recurringParts[0] == \"day\" || recurringParts[0] == \"week\") {\r\n\t\t\tvar weekDays = null;\r\n\t\t\tif (recurringParts[4]) {\r\n\t\t\t\tweekDays = recurringParts[4].split(\",\");\r\n\t\t\t\tif (scheduler.config.start_on_monday) {\r\n\t\t\t\t\tfor (var i = 0; i < weekDays.length; i++)\r\n\t\t\t\t\t\tweekDays[i] = (weekDays[i] * 1) || 7;\r\n\t\t\t\t\tweekDays.sort();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td) {\r\n\t\t\t\tvar delta = Math.floor((td.valueOf() - nd.valueOf()) / (dayDurationMs * recurringStepDays));\r\n\t\t\t\tif (delta > 0)\r\n\t\t\t\t\tnd.setDate(nd.getDate() + delta * recurringStepDays);\r\n\t\t\t\tif (weekDays)\r\n\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 1, recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc) {\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tif (weekDays) {\r\n\t\t\t\t\tfor (var count = 0; count < inc; count++)\r\n\t\t\t\t\t\tscheduler.transpose_day_week(nd, weekDays, 0, recurringStepDays);\r\n\t\t\t\t} else\r\n\t\t\t\t\tnd.setDate(nd.getDate() + inc * recurringStepDays);\r\n\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t\telse if (recurringParts[0] == \"month\" || recurringParts[0] == \"year\") {\r\n\t\t\tthis.date[transposeRecurring] = function(nd, td, seriesInstance) {\r\n\t\t\t\tvar delta = Math.ceil(((td.getFullYear() * 12 + td.getMonth() * 1 + 1) - (nd.getFullYear() * 12 + nd.getMonth() * 1 + 1)) / (recurringStepDays) - 1);\r\n\r\n\t\t\t\tif (delta >= 0){\r\n\t\t\t\t\tnd.setDate(1);\r\n\t\t\t\t\tnd.setMonth(nd.getMonth() + delta * recurringStepDays);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn scheduler.date[addRecurring](nd, 0, seriesInstance);\r\n\t\t\t\t//if (str[3]){\r\n\t\t\t\t//\tscheduler.date.day_week(nd, str[2], str[3]);\r\n\t\t\t\t//}\r\n\t\t\t};\r\n\t\t\tthis.date[addRecurring] = function(sd, inc, seriesInstance, currentCount) {\r\n\t\t\t\tif(!currentCount){\r\n\t\t\t\t\tcurrentCount = 1;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tcurrentCount++;\r\n\t\t\t\t}\r\n\t\t\t\tvar maxCount = 12;\r\n\t\t\t\tif(currentCount > maxCount){\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar nd = new Date(sd.valueOf());\r\n\t\t\t\tnd.setDate(1);\r\n\r\n\r\n\t\t\t\tnd.setMonth(nd.getMonth() + inc * recurringStepDays);\r\n\t\t\t\tvar origMonth = nd.getMonth();\r\n\t\t\t\tvar origYear = nd.getFullYear();\r\n\t\t\t\tnd.setDate(seriesInstance.start_date.getDate());\r\n\t\t\t\tif (recurringParts[3]){\r\n\t\t\t\t\tscheduler.date.day_week(nd, recurringParts[2], recurringParts[3]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar correctOverflowInstances = scheduler.config.recurring_overflow_instances;\r\n\t\t\t\tif(nd.getMonth() != origMonth && correctOverflowInstances != \"none\"){\r\n\t\t\t\t\t// no such day in a month\r\n\t\t\t\t\tif(correctOverflowInstances === \"lastDay\"){\r\n\t\t\t\t\t\t// return either last day of the month\r\n\t\t\t\t\t\tnd = new Date(origYear, origMonth + 1, 0, nd.getHours(), nd.getMinutes(), nd.getSeconds(), nd.getMilliseconds());\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t// or go to the next instance\r\n\t\t\t\t\t\tnd = scheduler.date[addRecurring](new Date(origYear, origMonth + 1, 0), inc||1, seriesInstance, currentCount);\r\n\t\t\t\t\t\t// if next instance is not possible (e.g. 'repeat on 40th day of the month') null will be returned\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn nd;\r\n\t\t\t};\r\n\t\t}\r\n\t}\r\n};\r\nscheduler.repeat_date = function(ev, stack, non_render, from, to, maxCount) {\r\n\r\n\tfrom = from || this._min_date;\r\n\tto = to || this._max_date;\r\n\tvar max = maxCount || -1;\r\n\tvar td = new Date(ev.start_date.valueOf());\r\n\r\n\tvar startHour = td.getHours();\r\n\r\n\tvar visibleCount = 0;\r\n\r\n\tif (!ev.rec_pattern && ev.rec_type)\r\n\t\tev.rec_pattern = ev.rec_type.split(\"#\")[0];\r\n\r\n\tthis.transpose_type(ev.rec_pattern);\r\n\ttd = scheduler.date[\"transpose_\" + ev.rec_pattern](td, from, ev);\r\n\twhile ( td && (\r\n\t\ttd < ev.start_date ||\r\n\t\tscheduler._fix_daylight_saving_date(td,from,ev,td,new Date(td.valueOf() + ev.event_length * 1000)).valueOf() <= from.valueOf() ||\r\n\t\ttd.valueOf() + ev.event_length * 1000 <= from.valueOf())){\r\n\t\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\r\n\t}\r\n\twhile (td && (td < to && td < ev.end_date && (max < 0 || visibleCount < max))) {\r\n\t\ttd.setHours(startHour);\r\n\r\n\t\tvar timestamp = (scheduler.config.occurrence_timestamp_in_utc) ? Date.UTC(td.getFullYear(), td.getMonth(), td.getDate(), td.getHours(), td.getMinutes(), td.getSeconds()) : td.valueOf();\r\n\t\tvar ch = this._get_rec_marker(timestamp, ev.id);\r\n\t\tif (!ch) { // unmodified element of series\r\n\t\t\tvar ted = new Date(td.valueOf() + ev.event_length * 1000);\r\n\t\t\tvar copy = this._copy_event(ev);\r\n\t\t\t//copy._timed = ev._timed;\r\n\t\t\tcopy.text = ev.text;\r\n\t\t\tcopy.start_date = td;\r\n\t\t\tcopy.event_pid = ev.id;\r\n\t\t\tcopy.id = ev.id + \"#\" + Math.round(timestamp / 1000);\r\n\t\t\tcopy.end_date = ted;\r\n\r\n\t\t\tcopy.end_date = scheduler._fix_daylight_saving_date(copy.start_date, copy.end_date, ev, td, copy.end_date);\r\n\r\n\t\t\tcopy._timed = this.isOneDayEvent(copy);\r\n\r\n\t\t\tif (!copy._timed && !this._table_view && !this.config.multi_day) return;\r\n\t\t\tstack.push(copy);\r\n\r\n\t\t\tif (!non_render) {\r\n\t\t\t\tthis._events[copy.id] = copy;\r\n\t\t\t\tthis._rec_temp.push(copy);\r\n\t\t\t}\r\n\r\n\t\t\tvisibleCount++;\r\n\r\n\t\t} else\r\n\t\tif (non_render){\r\n\t\t\tif(ch.rec_type != \"none\"){\r\n\t\t\t\tvisibleCount++;\r\n\t\t\t}\r\n\t\t\tstack.push(ch);\r\n\t\t}\r\n\r\n\t\ttd = this.date[\"add_\" + ev.rec_pattern](td, 1, ev);\r\n\t//\tif(!scheduler.date[\"validate_add_\" + ev.rec_pattern](td, 1, ev.rec_pattern)){\r\n\t///\t\talert(\"detect add\")\r\n\t//\t}\r\n\t}\r\n};\r\nscheduler._fix_daylight_saving_date = function(start_date, end_date, ev, counter, default_date) {\r\n\tvar shift = start_date.getTimezoneOffset() - end_date.getTimezoneOffset();\r\n\tif (shift) {\r\n\t\tif (shift > 0) {\r\n\t\t\t// e.g. 24h -> 23h\r\n\t\t\treturn new Date(counter.valueOf() + ev.event_length * 1000 - shift * 60 * 1000);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// e.g. 24h -> 25h\r\n\t\t\treturn new Date(end_date.valueOf() - shift * 60 * 1000);\r\n\t\t}\r\n\t}\r\n\treturn new Date(default_date.valueOf());\r\n};\r\nscheduler.getRecDates = function(id, max) {\r\n\tvar ev = typeof id == \"object\" ? id : scheduler.getEvent(id);\r\n\tvar recurrings = [];\r\n\tmax = max || 100;\r\n\r\n\tif (!ev.rec_type) {\r\n\t\treturn [\r\n\t\t\t{ start_date: ev.start_date, end_date: ev.end_date }\r\n\t\t];\r\n\t}\r\n\tif (ev.rec_type == \"none\") {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tscheduler.repeat_date(ev, recurrings, true, ev.start_date, ev.end_date, max);\r\n\r\n\tvar result = [];\r\n\tfor(var i = 0; i < recurrings.length; i++){\r\n\t\tif(recurrings[i].rec_type != \"none\"){\r\n\t\t\tresult.push({start_date: recurrings[i].start_date, end_date: recurrings[i].end_date});\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n};\r\nscheduler.getEvents = function(from, to) {\r\n\tvar result = [];\r\n\tfor (var a in this._events) {\r\n\t\tvar ev = this._events[a];\r\n\t\tif (ev && ev.start_date < to && ev.end_date > from) {\r\n\t\t\tif (ev.rec_pattern) {\r\n\t\t\t\tif (ev.rec_pattern == \"none\") continue;\r\n\t\t\t\tvar sev = [];\r\n\t\t\t\tthis.repeat_date(ev, sev, true, from, to);\r\n\t\t\t\tfor (var i = 0; i < sev.length; i++) {\r\n\t\t\t\t\t// if event is in rec_markers then it will be checked by himself, here need to skip it\r\n\t\t\t\t\tif (!sev[i].rec_pattern && sev[i].start_date < to && sev[i].end_date > from && !this._rec_markers[sev[i].id]) {\r\n\t\t\t\t\t\tresult.push(sev[i]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (!this._is_virtual_event(ev.id)) { // if it's virtual event we can skip it\r\n\t\t\t\tresult.push(ev);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn result;\r\n};\r\n\r\nscheduler.config.repeat_date = \"%m.%d.%Y\";\r\nscheduler.config.lightbox.sections = [\r\n\t{name:\"description\", map_to:\"text\", type:\"textarea\" , focus:true},\r\n\t{name:\"recurring\", type:\"recurring\", map_to:\"rec_type\", button:\"recurring\"},\r\n\t{name:\"time\", height:72, type:\"time\", map_to:\"auto\"}\r\n];\r\n\r\n\r\n//drop secondary attributes\r\nscheduler._copy_dummy = function(ev) {\r\n\tvar start_date = new Date(this.start_date);\r\n\tvar end_date = new Date(this.end_date);\r\n\tthis.start_date = start_date;\r\n\tthis.end_date = end_date;\r\n\tthis.event_length = this.event_pid = this.rec_pattern = this.rec_type = null;\r\n};\r\n\r\nscheduler.config.include_end_by = false;\r\nscheduler.config.lightbox_recurring = 'ask'; // series, instance\r\n\r\nscheduler.attachEvent(\"onClearAll\", function(){\r\n\tscheduler._rec_markers = {}; //clear recurring events data\r\n\tscheduler._rec_markers_pull = {};\r\n\tscheduler._rec_temp = [];\r\n});\r\n\r\n}","import getSerializator from '../core/common/get_serializable_events';\r\nexport default function(scheduler){\r\n\r\n\t\r\nconst getSerializableData = getSerializator(scheduler);\r\n\r\n//redefine this method, if you want to provide a custom set of attributes for serialization\r\nscheduler.data_attributes=function(){\r\n\tvar attrs = [];\r\n\tvar format = scheduler._helpers.formatDate;\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\t\tfor (var name in ev)\r\n\t\t\tif (name.substr(0,1) !=\"_\")\r\n\t\t\t\tattrs.push([name,((name == \"start_date\" || name == \"end_date\")?format:null)]);\r\n\t\tbreak;\r\n\t}\r\n\treturn attrs;\r\n};\r\n\r\nscheduler.toXML = function(header){\r\n\tvar xml = [];\r\n\tvar attrs = this.data_attributes();\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\t\txml.push(\"\");\r\n\t\tfor (var i=0; i < attrs.length; i++)\r\n\t\t\txml.push(\"<\"+attrs[i][0]+\">\");\r\n\r\n\t\txml.push(\"\");\r\n\t}\r\n\treturn (header||\"\")+\"\"+xml.join(\"\\n\")+\"\";\r\n};\r\n\r\nscheduler._serialize_json_value = function(value){\r\n\tif(value === null || typeof value === \"boolean\"){\r\n\t\tvalue = \"\" + value;\r\n\t}else{\r\n\t\tif(!value && value !== 0){\r\n\t\t\tvalue = \"\";\r\n\t\t}\r\n\t\tvalue = '\"' + value.toString().\r\n\t\t\treplace(/\\n/g,\"\").\r\n\t\t\treplace(/\\\\/g,\"\\\\\\\\\").\r\n\t\t\treplace(/\"/g, '\\\\\"') + '\"';\r\n\t}\r\n\treturn value;\r\n};\r\n\r\n\r\n\r\nscheduler.toJSON = function(){\r\n\treturn JSON.stringify(this.serialize());\r\n};\r\n\r\n\r\nscheduler.toICal = function(header){\r\n\tvar start = \"BEGIN:VCALENDAR\\nVERSION:2.0\\nPRODID:-//dhtmlXScheduler//NONSGML v2.2//EN\\nDESCRIPTION:\";\r\n\tvar end = \"END:VCALENDAR\";\r\n\tvar format = scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\");\r\n\tvar full_day_format = scheduler.date.date_to_str(\"%Y%m%d\");\r\n\r\n\tvar ical = [];\r\n\tvar all_events = getSerializableData();\r\n\tfor (var a in all_events){\r\n\t\tvar ev = all_events[a];\r\n\r\n\r\n\t\tical.push(\"BEGIN:VEVENT\");\r\n\t\tif (!ev._timed || (!ev.start_date.getHours() && !ev.start_date.getMinutes()))\r\n\t\t\tical.push(\"DTSTART:\"+full_day_format(ev.start_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTSTART:\"+format(ev.start_date));\r\n\t\tif (!ev._timed || (!ev.end_date.getHours() && !ev.end_date.getMinutes()))\r\n\t\t\tical.push(\"DTEND:\"+full_day_format(ev.end_date));\r\n\t\telse\r\n\t\t\tical.push(\"DTEND:\"+format(ev.end_date));\r\n\t\tical.push(\"SUMMARY:\"+ev.text);\r\n\t\tical.push(\"END:VEVENT\");\r\n\t}\r\n\treturn start+(header||\"\")+\"\\n\"+ical.join(\"\\n\")+\"\\n\"+end;\r\n};\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Timeline\", scheduler.assert);\r\n}","interface IViewPosition{\r\n\ttop: number;\r\n\tleft: number;\r\n}\r\n\r\ninterface IViewBox extends IViewPosition{\r\n\twidth: number;\r\n\theight: number;\r\n\tbottom: number;\r\n\tright: number;\r\n}\r\n\r\nexport class Tooltip {\r\n\tprivate _root: HTMLElement;\r\n\tprivate _tooltipNode: HTMLElement | null;\r\n\tprivate _scheduler: any;\r\n\r\n\tconstructor(scheduler: any){\r\n\t\tthis._scheduler = scheduler;\r\n\t}\r\n\r\n\tgetNode() : HTMLElement {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tif (!this._tooltipNode){\r\n\t\t\tthis._tooltipNode = document.createElement(\"div\");\r\n\t\t\tthis._tooltipNode.className = \"dhtmlXTooltip scheduler_tooltip tooltip\";\r\n\r\n\t\t\tscheduler._waiAria.tooltipAttr(this._tooltipNode);\r\n\t\t}\r\n\t\tif(scheduler.config.rtl){\r\n\t\t\tthis._tooltipNode.classList.add(\"dhtmlXTooltip_rtl\");\r\n\t\t} else{\r\n\t\t\tthis._tooltipNode.classList.remove(\"dhtmlXTooltip_rtl\");\r\n\t\t}\r\n\t\treturn this._tooltipNode;\r\n\t}\r\n\r\n\tsetViewport(node: HTMLElement):Tooltip{\r\n\t\tthis._root = node;\r\n\t\treturn this;\r\n\t}\r\n\r\n\tshow(left: number, top: number): Tooltip;\r\n\tshow(event: MouseEvent): Tooltip;\r\n\tshow(left: number | MouseEvent, top?: number): Tooltip {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = document.body;\r\n\t\tconst node = this.getNode();\r\n\r\n\t\tif(!domHelpers.isChildOf(node, container)){\r\n\t\t\tthis.hide();\r\n\t\t\tcontainer.appendChild(node);\r\n\t\t}\r\n\r\n\t\tif (this._isLikeMouseEvent(left)) {\r\n\t\t\tconst position = this._calculateTooltipPosition(left as MouseEvent);\r\n\t\t\ttop = position.top;\r\n\t\t\tleft = position.left;\r\n\t\t}\r\n\r\n\t\tnode.style.top = top + \"px\";\r\n\t\tnode.style.left = left + \"px\";\r\n\r\n\t\tscheduler._waiAria.tooltipVisibleAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\thide() : Tooltip{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst node = this.getNode();\r\n\t\tif(node && node.parentNode){\r\n\t\t\tnode.parentNode.removeChild(node);\r\n\t\t}\r\n\t\tscheduler._waiAria.tooltipHiddenAttr(node);\r\n\t\treturn this;\r\n\t}\r\n\r\n\tsetContent(html: string) : Tooltip{\r\n\t\tconst node = this.getNode();\r\n\t\tnode.innerHTML = html;\r\n\t\treturn this;\r\n\t}\r\n\r\n\t// it is for salesforce, because it proxies event to it own events\r\n\tprivate _isLikeMouseEvent(event: any): boolean {\r\n\t\tif (!event || typeof event !== \"object\") {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn \"clientX\" in event && \"clientY\" in event;\r\n\t}\r\n\r\n\tprivate _getViewPort() : HTMLElement {\r\n\t\treturn this._root || document.body;\r\n\t}\r\n\r\n\r\n\tprivate _calculateTooltipPosition(event: MouseEvent): IViewPosition{\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\t// top/left coordinates inside the viewport by mouse position\r\n\t\tconst viewport = this._getViewPortSize();\r\n\t\tconst tooltipNode = this.getNode();\r\n\t\tconst tooltip: IViewBox = {\r\n\t\t\ttop:0,\r\n\t\t\tleft: 0,\r\n\t\t\twidth: tooltipNode.offsetWidth,\r\n\t\t\theight: tooltipNode.offsetHeight,\r\n\t\t\tbottom: 0,\r\n\t\t\tright: 0\r\n\t\t};\r\n\r\n\t\tconst offsetX = scheduler.config.tooltip_offset_x;\r\n\t\tconst offsetY = scheduler.config.tooltip_offset_y;\r\n\r\n\t\tconst container = document.body;\r\n\t\tconst mouse = domHelpers.getRelativeEventPosition(event, container);\r\n\t\tconst containerPos = domHelpers.getNodePosition(container);\r\n\t\tmouse.y += containerPos.y; // to fix margin collapsing\r\n\r\n\t\ttooltip.top = mouse.y;\r\n\t\ttooltip.left = mouse.x;\r\n\t\ttooltip.top += offsetY;\r\n\t\ttooltip.left += offsetX;\r\n\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\r\n\t\tconst scrollTop = window.scrollY + container.scrollTop; // to fix margin collapsing\r\n\t\t// edge cases when the tooltip element can be partially hidden by edges of the viewport\r\n\t\tif(tooltip.top < viewport.top - scrollTop){\r\n\t\t\ttooltip.top = viewport.top;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}else if(tooltip.bottom > viewport.bottom){\r\n\t\t\ttooltip.bottom = viewport.bottom;\r\n\t\t\ttooltip.top = tooltip.bottom - tooltip.height;\r\n\t\t}\r\n\r\n\t\tif(tooltip.left < viewport.left){\r\n\t\t\ttooltip.left = viewport.left;\r\n\t\t\ttooltip.right = viewport.left + tooltip.width;\r\n\t\t}else if(tooltip.right > viewport.right){\r\n\t\t\ttooltip.right = viewport.right;\r\n\t\t\ttooltip.left = tooltip.right - tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.x >= tooltip.left && mouse.x <= tooltip.right) {\r\n\t\t\ttooltip.left = mouse.x - tooltip.width - offsetX;\r\n\t\t\ttooltip.right = tooltip.left + tooltip.width;\r\n\t\t}\r\n\r\n\t\tif(mouse.y >= tooltip.top && mouse.y <= tooltip.bottom) {\r\n\t\t\ttooltip.top = mouse.y - tooltip.height - offsetY;\r\n\t\t\ttooltip.bottom = tooltip.top + tooltip.height;\r\n\t\t}\r\n\r\n\t\treturn tooltip;\r\n\t}\r\n\r\n\tprivate _getViewPortSize() : IViewBox {\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tconst container = this._getViewPort();\r\n\t\tlet viewport = container;\r\n\t\tlet scrollTop = window.scrollY + document.body.scrollTop;\r\n\t\tlet scrollLeft = window.scrollX + document.body.scrollLeft;\r\n\t\tlet pos;\r\n\t\t// support for the initial tooltip mode where the tooltip element was attached to the data area of scheduler\r\n\t\tif(container === scheduler.$event_data){\r\n\t\t\tviewport = scheduler.$event;\r\n\t\t\tscrollTop = 0;\r\n\t\t\tscrollLeft = 0;\r\n\t\t\tpos = domHelpers.getNodePosition(scheduler.$event);\r\n\t\t}else{\r\n\t\t\tpos = domHelpers.getNodePosition(viewport);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tleft:pos.x + scrollLeft,\r\n\t\t\ttop: pos.y + scrollTop,\r\n\t\t\twidth: pos.width,\r\n\t\t\theight: pos.height,\r\n\t\t\tbottom: pos.y + pos.height + scrollTop,\r\n\t\t\tright: pos.x + pos.width + scrollLeft\r\n\t\t};\r\n\t}\r\n}\r\n","import * as utils from \"../../core/utils/utils\";\r\nimport { Tooltip } from \"./tooltip\";\r\n\r\ninterface ITrackerTarget {\r\n\tselector: string;\r\n\tonmouseenter: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmousemove: (event: MouseEvent, node: HTMLElement) => void;\r\n\tonmouseleave: (event: MouseEvent, node: HTMLElement) => void;\r\n\tglobal: boolean;\r\n}\r\n\r\ninterface ITooltipConfig {\r\n\tselector: string;\r\n\thtml: (event: MouseEvent, node: HTMLElement) => string;\r\n\tglobal: boolean;\r\n}\r\n\r\nexport class TooltipManager{\r\n\ttooltip: Tooltip;\r\n\tprotected _domEvents: any;\r\n\tprivate _listeners: object = {};\r\n\tprivate _scheduler: any;\r\n\tprivate delayShow: any;\r\n\tprivate delayHide: any;\r\n\r\n\tconstructor(scheduler: any) {\r\n\t\tthis.tooltip = new Tooltip(scheduler);\r\n\t\tthis._scheduler = scheduler;\r\n\t\tthis._domEvents = scheduler._createDomEventScope();\r\n\t\tthis._initDelayedFunctions();\r\n\t}\r\n\r\n\tdestructor(): void{\r\n\t\tthis.tooltip.hide();\r\n\t\tthis._domEvents.detachAll();\r\n\t}\r\n\thideTooltip(): void{\r\n\t\tthis.delayHide();\r\n\t}\r\n\tattach(config: ITrackerTarget): void {\r\n\t\tlet root = document.body;\r\n\t\tconst scheduler = this._scheduler;\r\n\t\tconst domHelpers = scheduler.$domHelpers;\r\n\t\tif(!config.global){\r\n\t\t\troot = scheduler.$root;\r\n\t\t}\r\n\r\n\t\tlet watchableTarget = null;\r\n\t\tconst handler = (event) => {\r\n\t\t\tconst eventTarget = domHelpers.getTargetNode(event);\r\n\t\t\tconst targetNode = domHelpers.closest(eventTarget, config.selector);\r\n\t\t\tif(domHelpers.isChildOf(eventTarget, this.tooltip.getNode())){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst doOnMouseEnter = () => {\r\n\t\t\t\twatchableTarget = targetNode;\r\n\t\t\t\tconfig.onmouseenter(event, targetNode);\r\n\t\t\t};\r\n\t\t\t// GS-2377: to show tooltip after touch and hide it when touch is outside the events\r\n\t\t\tif (scheduler._mobile && scheduler.config.touch_tooltip){\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconfig.onmouseleave(event, targetNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(watchableTarget){\r\n\t\t\t\tif(targetNode && targetNode === watchableTarget){\r\n\t\t\t\t\tconfig.onmousemove(event, targetNode);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tconfig.onmouseleave(event, watchableTarget);\r\n\t\t\t\t\twatchableTarget = null;\r\n\r\n\t\t\t\t\tif(targetNode && targetNode !== watchableTarget){\r\n\t\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif(targetNode){\r\n\t\t\t\t\tdoOnMouseEnter();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.detach(config.selector);\r\n\t\tthis._domEvents.attach(root, \"mousemove\", handler);\r\n\t\tthis._listeners[config.selector] = {\r\n\t\t\tnode: root,\r\n\t\t\thandler\r\n\t\t};\r\n\t}\r\n\r\n\tdetach(selector: string): void {\r\n\t\tconst listener = this._listeners[selector];\r\n\t\tif(listener){\r\n\t\t\tthis._domEvents.detach(listener.node, \"mousemove\", listener.handler);\r\n\t\t}\r\n\t}\r\n\r\n\ttooltipFor(config: ITooltipConfig): void {\r\n\t\tconst cloneDomEvent = (event: MouseEvent) => {\r\n\t\t\tlet clone = event;\r\n\t\t\t// making events survive timeout in ie\r\n\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\tif(document[\"createEventObject\"] && !document.createEvent){\r\n\t\t\t\t// tslint:disable-next-line no-string-literal\r\n\t\t\t\tclone = document[\"createEventObject\"](event);\r\n\t\t\t}\r\n\t\t\treturn clone;\r\n\t\t};\r\n\t\tthis._initDelayedFunctions();\r\n\t\tthis.attach({\r\n\t\t\tselector: config.selector,\r\n\t\t\tglobal: config.global,\r\n\t\t\tonmouseenter:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmousemove:(event: MouseEvent, node: HTMLElement) => {\r\n\t\t\t\tconst html = config.html(event, node);\r\n\t\t\t\tif(html){\r\n\t\t\t\t\tthis.delayShow(cloneDomEvent(event), html);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\t\tthis.delayHide();\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tonmouseleave:() => {\r\n\t\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\t\tthis.delayHide();\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _initDelayedFunctions(){\r\n\t\tconst scheduler = this._scheduler;\r\n\t\t// reset delayed functions in order to apply current values of tooltip_timeout\r\n\t\tif(this.delayShow){\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t}\r\n\t\tif(this.delayHide){\r\n\t\t\tthis.delayHide.$cancelTimeout();\r\n\t\t}\r\n\t\tthis.tooltip.hide();\r\n\t\t\r\n\t\tthis.delayShow = (utils as any).default.delay((event: MouseEvent, html: string) => {\r\n\t\t\tif(scheduler.callEvent(\"onBeforeTooltip\", [event]) === false) {\r\n\t\t\t\tthis.tooltip.hide();\r\n\t\t\t} else {\r\n\t\t\t\tthis.tooltip.setContent(html);\r\n\t\t\t\tthis.tooltip.show(event);\r\n\t\t\t}\r\n\t\t}, scheduler.config.tooltip_timeout || 1);\r\n\r\n\t\tthis.delayHide = (utils as any).default.delay(() => {\r\n\t\t\tthis.delayShow.$cancelTimeout();\r\n\t\t\tthis.tooltip.hide();\r\n\t\t}, scheduler.config.tooltip_hide_timeout || 1);\r\n\t}\r\n\r\n}","import { TooltipManager } from \"./tooltipManager\";\r\n\r\nexport default function (scheduler: any) {\r\n\r\n\tscheduler.config.tooltip_timeout = 30;\r\n\tscheduler.config.tooltip_offset_y = 20;\r\n\tscheduler.config.tooltip_offset_x = 10;\r\n\tscheduler.config.tooltip_hide_timeout = 30;\r\n\r\n\tconst tooltipManager = new TooltipManager(scheduler);\r\n\r\n\tscheduler.ext.tooltips = tooltipManager;\r\n\r\n\tscheduler.attachEvent(\"onSchedulerReady\", function () {\r\n\r\n\t\ttooltipManager.tooltipFor({\r\n\t\t\tselector: \"[\" + scheduler.config.event_attribute + \"]\",\r\n\t\t\thtml: (event: MouseEvent) => {\r\n\t\t\t\tif (scheduler._mobile && !scheduler.config.touch_tooltip) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst targetEventId = scheduler._locate_event(event.target);\r\n\t\t\t\tif (scheduler.getEvent(targetEventId)) {\r\n\t\t\t\t\tconst event = scheduler.getEvent(targetEventId);\r\n\t\t\t\t\treturn scheduler.templates.tooltip_text(event.start_date, event.end_date, event);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t},\r\n\t\t\tglobal: false\r\n\t\t});\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function () {\r\n\t\ttooltipManager.destructor();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onLightbox\", function () {\r\n\t\ttooltipManager.hideTooltip();\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeDrag\", function() {\r\n\t\t// GS-2377: don't hide tooltip on mobile device when ontouchstart event occurs\r\n\t\tif (scheduler._mobile && scheduler.config.touch_tooltip) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\tscheduler.attachEvent(\"onEventDeleted\", function() {\r\n\t\ttooltipManager.hideTooltip();\r\n\t\treturn true;\r\n\t});\r\n\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Tree Timeline\", scheduler.assert);\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Units\", scheduler.assert);\r\n}","export default function(scheduler){\r\n\r\nscheduler._get_url_nav = function(){\r\n\tvar p = {};\r\n\tvar data = (document.location.hash || \"\").replace(\"#\", \"\").split(\",\");\r\n\tfor (var i = 0; i < data.length; i++) {\r\n\t\tvar s = data[i].split(\"=\");\r\n\t\tif (s.length == 2)\r\n\t\t\tp[s[0]] = s[1];\r\n\t}\r\n\treturn p;\r\n};\r\n\r\nscheduler.attachEvent(\"onTemplatesReady\", function () {\r\n\tvar first = true;\r\n\tvar s2d = scheduler.date.str_to_date(\"%Y-%m-%d\");\r\n\tvar d2s = scheduler.date.date_to_str(\"%Y-%m-%d\");\r\n\tvar select_event = scheduler._get_url_nav().event || null;\r\n\r\n\tscheduler.attachEvent(\"onAfterEventDisplay\", function(ev){\r\n\t\tselect_event = null;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tscheduler.attachEvent(\"onBeforeViewChange\", function (om, od, m, d) {\r\n\t\tif (first) {\r\n\t\t\tfirst = false;\r\n\t\t\tvar p = scheduler._get_url_nav();\r\n\r\n\t\t\tif (p.event){\r\n\t\t\t\ttry{\r\n\t\t\t\t\tif(scheduler.getEvent(p.event)){\r\n\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tvar handler = scheduler.attachEvent(\"onXLE\", function(){\r\n\t\t\t\t\t\t\tsetTimeout(function(){\r\n\t\t\t\t\t\t\t\tshowEvent(p.event);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tscheduler.detachEvent(handler);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (e){}\r\n\t\t\t}\r\n\r\n\t\t\tif (p.date || p.mode) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), (p.mode || null));\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\t//assuming that mode is not available anymore\r\n\t\t\t\t\tthis.setCurrentView((p.date ? s2d(p.date) : null), m);\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar values = [\r\n\t\t\t\"date=\" + d2s(d || od),\r\n\t\t\t\"mode=\" + (m || om)\r\n\t\t];\r\n\r\n\t\tif(select_event){\r\n\t\t\tvalues.push(\"event=\" + select_event);\r\n\t\t}\r\n\r\n\t\tvar text = \"#\" + values.join(\",\");\r\n\t\tdocument.location.hash = text;\r\n\t\treturn true;\r\n\t});\r\n\r\n\tfunction showEvent(e){\r\n\t\tif(scheduler.$destroyed){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tselect_event = e;\r\n\t\tif(scheduler.getEvent(e)){\r\n\t\t\tscheduler.showEvent(e);\r\n\t\t}\r\n\t}\r\n});\r\n}","import notImplemented from \"./not_implemented_extension\";\r\n\r\nexport default function(scheduler){\r\n\tnotImplemented.alert(\"Week Agenda\", scheduler.assert);\r\n}","export default function(scheduler){\r\nscheduler.attachEvent(\"onLightBox\",function(){\r\n\tif (this._cover){\r\n\t\ttry{\r\n\t\t\tthis._cover.style.height = this.expanded ? \"100%\" : ((document.body.parentNode||document.body).scrollHeight+\"px\");\r\n\t\t} catch(e) {\r\n\r\n\t\t}\r\n\t}\r\n});\r\n\r\nscheduler.form_blocks.select.set_value=function(node,value,ev){\r\n\tif (typeof value == \"undefined\" || value === \"\")\r\n\t\tvalue = (node.firstChild.options[0]||{}).value;\r\n\tnode.firstChild.value=value||\"\";\r\n};\r\n\r\n}","export default function(scheduler){\r\n\r\n\t// scheduler.config.year_x = 4;\r\n\t// scheduler.config.year_y = 3;\r\n\t// scheduler.xy.year_top = 0;\r\n\r\n\tscheduler.templates.year_date = function(date) {\r\n\t\treturn scheduler.date.date_to_str(scheduler.locale.labels.year_tab + \" %Y\")(date);\r\n\t};\r\n\tscheduler.templates.year_month = scheduler.date.date_to_str(\"%F\");\r\n\tscheduler.templates.year_scale_date = scheduler.date.date_to_str(\"%D\");\r\n\tscheduler.templates.year_tooltip = function(s, e, ev) {\r\n\t\treturn ev.text;\r\n\t};\r\n\r\n\tconst isYearMode = function() {\r\n\t\treturn scheduler._mode == \"year\";\r\n\t};\r\n\t\r\n\tconst getCellDate = function(node){\r\n\t\tvar day = scheduler.$domHelpers.closest(node, \"[data-cell-date]\");\r\n\t\tif(!day || !day.hasAttribute(\"data-cell-date\")) return null;\r\n\t\treturn scheduler.templates.parse_date(day.getAttribute(\"data-cell-date\"));\r\n\t};\r\n\r\n\t// dbl click hook for scheduler._on_dbl_click\r\n\tscheduler.dblclick_dhx_year_grid= function(e) {\r\n\t\tif (isYearMode()) {\r\n\t\t\tconst target = e.target;\r\n\t\t\tif(scheduler.$domHelpers.closest(target, \".dhx_before\") || scheduler.$domHelpers.closest(target, \".dhx_after\")){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst date = getCellDate(target);\r\n\t\t\t\r\n\t\t\tif(date){\r\n\t\t\t\tconst start = date;\r\n\t\t\t\tconst end = this.date.add(start, 1, \"day\");\r\n\t\t\t\tif (!this.config.readonly && this.config.dblclick_create){\r\n\t\t\t\t\tthis.addEventNow(start.valueOf(), end.valueOf(), e);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\t\r\n\tscheduler.attachEvent(\"onEventIdChange\", function(){\r\n\t\tif (isYearMode())\r\n\t\t\tthis.year_view(true);\r\n\t});\r\n\r\n\r\n\tvar old = scheduler.render_data;\r\n\tscheduler.render_data = function(evs) {\r\n\t\tif (!isYearMode()) return old.apply(this, arguments);\r\n\t\tfor (var i = 0; i < evs.length; i++)\r\n\t\t\tthis._year_render_event(evs[i]);\r\n\t};\r\n\r\n\tvar clear = scheduler.clear_view;\r\n\tscheduler.clear_view = function() {\r\n\t\tif (!isYearMode()) return clear.apply(this, arguments);\r\n\t\tvar dates = scheduler._year_marked_cells,\r\n\t\t\tdiv = null;\r\n\t\tfor (var date in dates) {\r\n\t\t\tif (dates.hasOwnProperty(date)) {\r\n\t\t\t\tdiv = dates[date];\r\n\t\t\t\tdiv.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n\t\t\t\t// div.className = \"dhx_month_head\";\r\n\t\t\t\t// div.removeAttribute(\"date\");\r\n\t\t\t\t// div.removeAttribute(\"data-year-date\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tscheduler._year_marked_cells = {};\r\n\t};\r\n\r\n\tscheduler._hideToolTip = function() {\r\n\t\tif (this._tooltip) {\r\n\t\t\tthis._tooltip.style.display = \"none\";\r\n\t\t\tthis._tooltip.date = new Date(9999, 1, 1);\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler._showToolTip = function(date, pos, e, src) {\r\n\t\tif (this._tooltip) {\r\n\t\t\tif (this._tooltip.date.valueOf() == date.valueOf()) return;\r\n\t\t\tthis._tooltip.innerHTML = \"\";\r\n\t\t} else {\r\n\t\t\tvar t = this._tooltip = document.createElement(\"div\");\r\n\t\t\tt.className = \"dhx_year_tooltip\";\r\n\t\t\tif (this.config.rtl) t.className += \" dhx_tooltip_rtl\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t\tt.addEventListener(\"click\", scheduler._click.dhx_cal_data);\r\n\t\t\tt.addEventListener(\"click\", function(e){\r\n\t\t\t\tif(e.target.closest(`[${scheduler.config.event_attribute}]`)){\r\n\t\t\t\t\tconst id = e.target.closest(`[${scheduler.config.event_attribute}]`).getAttribute(scheduler.config.event_attribute);\r\n\t\t\t\t\tscheduler.showLightbox(id);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\tvar evs = this.getEvents(date, this.date.add(date, 1, \"day\"));\r\n\t\tvar html = \"\";\r\n\r\n\t\tfor (var i = 0; i < evs.length; i++) {\r\n\t\t\tvar ev = evs[i];\r\n\t\t\tif(!this.filter_event(ev.id, ev))\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\tvar bg_color = (ev.color ? (\"--dhx-scheduler-event-background:\" + ev.color + \";\") : \"\");\r\n\t\t\tvar color = (ev.textColor ? (\"--dhx-scheduler-event-color:\" + ev.textColor + \";\") : \"\");\r\n\r\n\t\t\thtml += \"
\";\r\n\t\t\thtml += \"
\" + (evs[i]._timed ? this.templates.event_date(evs[i].start_date) : \"\") + \"
\";\r\n\t\t\thtml += \"
 
\";\r\n\t\t\thtml += this.templates.year_tooltip(evs[i].start_date, evs[i].end_date, evs[i]) + \"
\";\r\n\t\t}\r\n\r\n\t\tthis._tooltip.style.display = \"\";\r\n\t\tthis._tooltip.style.top = \"0px\";\r\n\r\n\r\n\t\tif (document.body.offsetWidth - pos.left - this._tooltip.offsetWidth < 0)\r\n\t\t\tthis._tooltip.style.left = pos.left - this._tooltip.offsetWidth + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.left = pos.left + src.offsetWidth + \"px\";\r\n\r\n\t\tthis._tooltip.date = date;\r\n\t\tthis._tooltip.innerHTML = html;\r\n\r\n\t\tif (document.body.offsetHeight - pos.top - this._tooltip.offsetHeight < 0)\r\n\t\t\tthis._tooltip.style.top = pos.top - this._tooltip.offsetHeight + src.offsetHeight + \"px\";\r\n\t\telse\r\n\t\t\tthis._tooltip.style.top = pos.top + \"px\";\r\n\t};\r\n\r\n\tscheduler._year_view_tooltip_handler = function(e){\r\n\t\tif (!isYearMode()) return;\r\n\r\n\t\tvar src = e.target || e.srcElement;\r\n\t\tif (src.tagName.toLowerCase() == 'a') // fix for active links extension (it adds links to the date in the cell)\r\n\t\t\tsrc = src.parentNode;\r\n\t\tif (scheduler._getClassName(src).indexOf(\"dhx_year_event\") != -1)\r\n\t\t\tscheduler._showToolTip(scheduler.templates.parse_date(src.getAttribute(\"data-year-date\")), scheduler.$domHelpers.getOffset(src), e, src);\r\n\t\telse\r\n\t\t\tscheduler._hideToolTip();\r\n\t};\r\n\tscheduler._init_year_tooltip = function() {\r\n\t\tscheduler._detachDomEvent(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t\tscheduler.event(scheduler._els[\"dhx_cal_data\"][0], \"mouseover\", scheduler._year_view_tooltip_handler);\r\n\t};\r\n\r\n\tscheduler._get_year_cell = function(d) {\r\n\t\tvar dateString = scheduler.templates.format_date(d);\r\n\t\tvar cells = this.$root.querySelectorAll(`.dhx_cal_data .dhx_cal_datepicker_date[data-cell-date=\"${dateString}\"]`);\r\n\t\tfor(var i = 0; i < cells.length; i++){\r\n\t\t\tif(!scheduler.$domHelpers.closest(cells[i], \".dhx_after, .dhx_before\")){\r\n\t\t\t\treturn cells[i];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n\r\n\tscheduler._year_marked_cells = {};\r\n\tscheduler._mark_year_date = function(date, event) {\r\n\t\tvar dateString = scheduler.templates.format_date(date);\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tvar ev_class = this.templates.event_class(event.start_date, event.end_date, event);\r\n\t\tif (!scheduler._year_marked_cells[dateString]) {\r\n\t\t\tcell.classList.add(\"dhx_year_event\", \"dhx_cal_datepicker_event\");// = \"dhx_month_head dhx_year_event\";\r\n\t\t\tcell.setAttribute(\"data-year-date\", dateString);\r\n\t\t\tcell.setAttribute(\"date\", dateString);\r\n\t\t\tscheduler._year_marked_cells[dateString] = cell;\r\n\t\t}\r\n\t\tif(ev_class){\r\n\t\t\tcell.classList.add(ev_class);\r\n\t\t}\r\n\t};\r\n\tscheduler._unmark_year_date = function(date) {\r\n\t\tvar cell = this._get_year_cell(date);\r\n\t\tif (!cell) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcell.classList.remove(\"dhx_year_event\", \"dhx_cal_datepicker_event\");\r\n//\t\tcell.className = \"dhx_month_head\";\r\n\t};\r\n\tscheduler._year_render_event = function(event) {\r\n\t\tvar date = event.start_date;\r\n\t\tif (date.valueOf() < this._min_date.valueOf()){\r\n\t\t\tdate = this._min_date;\r\n\t\t} else {\r\n\t\t\tdate = this.date.date_part(new Date(date));\r\n\t\t}\r\n\r\n\t\twhile (date < event.end_date) {\r\n\t\t\tthis._mark_year_date(date, event);\r\n\t\t\tdate = this.date.add(date, 1, \"day\");\r\n\t\t\tif (date.valueOf() >= this._max_date.valueOf())\r\n\t\t\t\treturn;\r\n\t\t}\r\n\t};\r\n\r\n\tscheduler.year_view = function(mode) {\r\n\r\n\t\tscheduler.set_sizes();\r\n\r\n\t\tscheduler._table_view = mode;\r\n\r\n\t\tif (this._load_mode && this._load()) return;\r\n\r\n\t\tif (mode) {\r\n\t\t\tscheduler._init_year_tooltip();\r\n\t\t\tscheduler._reset_year_scale();\r\n\t\t\tif (scheduler._load_mode && scheduler._load()){\r\n\t\t\t\tscheduler._render_wait = true;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tscheduler.render_view_data();\r\n\t\t} else {\r\n\t\t\tscheduler._hideToolTip();\r\n\t\t}\r\n\t};\r\n\tscheduler._reset_year_scale = function() {\r\n\t\tthis._cols = [];\r\n\t\tthis._colsS = {};\r\n\t\tvar week_starts = []; //start day of first week in each month\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tvar c = this.config;\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tvar dy = Math.floor((parseInt(dataArea.style.height) - scheduler.xy.year_top) / c.year_y);\r\n\t\tif (dy < 190) {\r\n\t\t\tdy = 190;\r\n\t\t}\r\n\r\n\t\tvar week_template = document.createElement(\"div\");\r\n\t\tvar dummy_date = this.date.week_start(scheduler._currentDate());\r\n\r\n\t\tthis._process_ignores(dummy_date, 7, \"day\", 1);\r\n\r\n\t\tfor (var i = 0; i < 7; i++) {\r\n\t\t\tif(!(this._ignores && this._ignores[i])) {\r\n\t\t\t\tthis._cols[i] = 'var(--dhx-scheduler-datepicker-cell-size)';\r\n\t\t\t\tthis._render_x_header(i, 0, dummy_date, week_template);\r\n\r\n\t\t\t}\r\n\t\t\tdummy_date = this.date.add(dummy_date, 1, \"day\");\r\n\t\t}\r\n\t\tweek_template.lastChild.className += \" dhx_scale_bar_last\";\r\n\r\n\t\tfor(var i = 0; i < week_template.childNodes.length; i++){\r\n\t\t\tthis._waiAria.yearHeadCell(week_template.childNodes[i]);\r\n\t\t}\r\n\r\n\t\tvar sd = this.date[this._mode + \"_start\"](this.date.copy(this._date));\r\n\t\tvar ssd = sd;\r\n\t\tvar yearBox = null;\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\t\tfor (var i = 0; i < c.year_y; i++){\r\n\t\t\tfor (var j = 0; j < c.year_x; j++) {\r\n\t\t\t\tyearBox = document.createElement(\"div\");\r\n\t\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(sd));\r\n\t\t\t\tyearBox.innerHTML = \"
\" + week_template.innerHTML + \"
\";\r\n\r\n\t\t\t\tvar header = yearBox.querySelector(\".dhx_year_month\");\r\n\t\t\t\tvar grid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\t\tvar body = yearBox.querySelector(\".dhx_year_body\");\r\n\r\n\t\t\t\tvar headerId = scheduler.uid();\r\n\t\t\t\tthis._waiAria.yearHeader(header, headerId);\r\n\t\t\t\tthis._waiAria.yearGrid(grid, headerId);\r\n\r\n\r\n\t\t\t\theader.innerHTML = this.templates.year_month(sd);\r\n\r\n\r\n\r\n\t\t\t\tvar dd = this.date.week_start(sd);\r\n\t\t\t\tthis._reset_month_scale(body, sd, dd, 6);\r\n\r\n\t\t\t\tvar days = body.querySelectorAll(\"td\");\r\n\t\t\t\tfor(var day = 0; day < days.length; day++){\r\n\t\t\t\t\tthis._waiAria.yearDayCell(days[day]);\r\n\t\t\t\t}\r\n\r\n\t\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\t\tweek_starts[i * c.year_x + j] = (sd.getDay() - (this.config.start_on_monday ? 1 : 0) + 7) % 7;\r\n\t\t\t\tsd = this.date.add(sd, 1, \"month\");\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](ssd, sd, this._mode);\r\n\t\t}\r\n\r\n\t\tthis.week_starts = week_starts;\r\n\t\tweek_starts._month = ssd.getMonth();\r\n\t\tthis._min_date = ssd;\r\n\t\tthis._max_date = sd;\r\n\t};\r\n\r\n\tscheduler._reset_year_scale = function(){\r\n\r\n\t\tvar dataArea = this._els[\"dhx_cal_data\"][0];\r\n\r\n\t\tdataArea.scrollTop = 0; //fix flickering in FF\r\n\t\tdataArea.innerHTML = \"\";\r\n\r\n\t\tlet yearStart = this.date.year_start(new Date(this._date));\r\n\t\t\r\n\t\tthis._min_date = this.date.week_start(new Date(yearStart));\r\n\r\n\t\tconst wrapper = document.createElement(\"div\");\r\n\t\twrapper.classList.add(\"dhx_year_wrapper\");\r\n\r\n\t\tlet currentDate = yearStart;\r\n\t\tfor(let i = 0; i < 12; i++){\r\n\t\t\tlet yearBox = document.createElement(\"div\");\r\n\t\t\tyearBox.className = \"dhx_year_box\";\r\n\r\n\t\t\tyearBox.setAttribute(\"date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.setAttribute(\"data-month-date\", this._helpers.formatDate(currentDate));\r\n\t\t\tyearBox.innerHTML = `
${this.templates.year_month(currentDate)}
\r\n\t\t\t
`;\r\n\r\n\t\t\tconst yearGrid = yearBox.querySelector(\".dhx_year_grid\");\r\n\t\t\tconst datepicker = scheduler._createDatePicker(null, {\r\n\t\t\t\tdate: currentDate,\r\n\t\t\t\tminWeeks: 6\r\n\t\t\t});\r\n\t\t\tdatepicker._renderDayGrid(yearGrid);\r\n\t\t\tdatepicker.destructor();\r\n\r\n\t\t\twrapper.appendChild(yearBox);\r\n\r\n\t\t\tcurrentDate = this.date.add(currentDate, 1, \"month\");\r\n\r\n\t\t}\r\n\t\tdataArea.appendChild(wrapper);\r\n\r\n\t\tlet lastDate = this.date.add(yearStart, 1, \"year\");\r\n\t\tif(lastDate.valueOf() != this.date.week_start(new Date(lastDate)).valueOf()){\r\n\t\t\tlastDate = this.date.week_start(new Date(lastDate));\r\n\t\t\tlastDate = this.date.add(lastDate, 1, \"week\");\r\n\t\t}\r\n\t\tthis._max_date = lastDate;\r\n\t\tvar dateElement = this._getNavDateElement();\r\n\t\tif(dateElement){\r\n\t\t\tdateElement.innerHTML = this.templates[this._mode + \"_date\"](yearStart, lastDate, this._mode);\r\n\t\t}\r\n\t};\r\n\r\n\tvar getActionData = scheduler.getActionData;\r\n\tscheduler.getActionData = function(n_ev) {\r\n\t\tif(!isYearMode()){\r\n\t\t\treturn getActionData.apply(scheduler, arguments);\r\n\t\t}\r\n\t\t\r\n\t\tvar date = getCellDate(n_ev.target);\r\n\t\treturn {\r\n\t\t\tdate:date,\r\n\t\t\tsection:null\r\n\t\t};\r\n\t};\r\n\r\n\tvar locateEvent = scheduler._locate_event;\r\n\tscheduler._locate_event = function(node) {\r\n\t\tvar id = locateEvent.apply(scheduler, arguments);\r\n\t\tif(!id){\r\n\t\t\t\r\n\t\t\tvar date = getCellDate(node);\r\n\t\t\tif(!date) return null;\r\n\t\t\tvar evs = scheduler.getEvents(date, scheduler.date.add(date, 1, \"day\"));\r\n\t\t\tif(!evs.length) return null;\r\n\r\n\t\t\t//can be multiple events in the cell, return any single one\r\n\t\t\tid = evs[0].id;\r\n\t\t}\r\n\t\treturn id;\r\n\t};\r\n\r\n\tscheduler.attachEvent(\"onDestroy\", function(){\r\n\t\tscheduler._hideToolTip();\r\n\t});\r\n}","export default function(scheduler){\r\n\r\n\r\n(function(){\r\n\r\nfunction defaults(obj, std){\r\n\tfor (var key in std)\r\n\t\tif (!obj[key])\r\n\t\t\tobj[key] = std[key];\r\n\treturn obj;\r\n}\r\n\r\nfunction getElementSizes(element, scheduler) {\r\n\tvar sizes = {};\r\n\telement = scheduler._els[element];\r\n\tif (element && element[0]) {\r\n\t\tsizes.x = element[0].scrollWidth;\r\n\t\tsizes.y = element[0].scrollHeight;\r\n\t} else {\r\n\t\tsizes.x = 0;\r\n\t\tsizes.y = 0;\r\n\t}\r\n\treturn sizes;\r\n}\r\n\r\n//compatibility for new versions of scheduler\r\nif(!window.dhtmlxAjax){\r\n\twindow.dhtmlxAjax = {\r\n\t\tpost: function(url, data, callback){\r\n\t\t\treturn window.dhx4.ajax.post(url, data, callback);\r\n\t\t},\r\n\t\tget: function(url, callback){\r\n\t\t\treturn window.ajax.get(url, callback);\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction add_export_methods(scheduler){\r\n\r\n\tscheduler.exportToPDF = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.pdf\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"pdf\");\r\n\t};\r\n\r\n\tscheduler.exportToPNG = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.png\",\r\n\t\t\tformat:\"A4\",\r\n\t\t\torientation:\"landscape\",\r\n\t\t\tdpi:96,\r\n\t\t\tzoom:1,\r\n\t\t\trtl: scheduler.config.rtl\r\n\t\t});\r\n\t\tconfig.html = this._export_html(config);\r\n\t\tconfig.mode = this.getState().mode;\r\n\t\tthis._send_to_export(config, \"png\");\r\n\t};\r\n\r\n\tscheduler.exportToICal = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.ical\",\r\n\t\t\tdata:this._serialize_plain(null, config)\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"ical\");\r\n\t};\r\n\r\n\tscheduler.exportToExcel = function(config){\r\n\t\tconfig = defaults((config || {}), {\r\n\t\t\tname:\"calendar.xlsx\",\r\n\t\t\ttitle:\"Events\",\r\n\t\t\tdata:this._serialize_plain( this.templates.xml_format, config),\r\n\t\t\tcolumns:this._serialize_columns()\r\n\t\t});\r\n\t\tthis._send_to_export(config, \"excel\");\r\n\t};\r\n\r\n\tscheduler._ajax_to_export = function(data, type, callback){\r\n\t\tdelete data.callback;\r\n\t\tvar url = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\r\n\t\twindow.dhtmlxAjax.post(url,\r\n\t\t\t\"type=\"+type+\"&store=1&data=\"+encodeURIComponent(JSON.stringify(data)),\r\n\t\t\tfunction(loader){\r\n\t\t\t\tvar fail = loader.xmlDoc.status > 400;\r\n\t\t\t\tvar info = null;\r\n\r\n\t\t\t\tif (!fail){\r\n\t\t\t\t\ttry{\r\n\t\t\t\t\t\tinfo = JSON.parse(loader.xmlDoc.responseText);\r\n\t\t\t\t\t}catch(e){}\r\n\t\t\t\t}\r\n\t\t\t\tcallback(info);\r\n\t\t\t}\r\n\t\t);\r\n\t};\r\n\r\n\tscheduler._plain_export_copy = function(source, format){\r\n\t\tvar target = {};\r\n\t\tfor (var key in source)\r\n\t\t\ttarget[key] = source[key];\r\n\r\n\t\ttarget.start_date = format(target.start_date);\r\n\t\ttarget.end_date = format(target.end_date);\r\n\t\ttarget.$text = this.templates.event_text(source.start_date, source.end_date, source);\r\n\r\n\t\treturn target;\r\n\t};\r\n\r\n\tscheduler._serialize_plain = function(format, config){\r\n\t\tformat = format || scheduler.date.date_to_str(\"%Y%m%dT%H%i%s\", true);\r\n\r\n\t\tvar events;\r\n\t\tif (config && config.start && config.end)\r\n\t\t\tevents = scheduler.getEvents(config.start, config.end);\r\n\t\telse\r\n\t\t\tevents = scheduler.getEvents();\r\n\r\n\t\tvar data = [];\r\n\t\tfor (var i = 0; i< events.length; i++)\r\n\t\t\tdata[i] = this._plain_export_copy(events[i], format);\r\n\r\n\t\treturn data;\r\n\t};\r\n\r\n\tscheduler._serialize_columns = function(){\r\n\t\treturn [\r\n\t\t\t{ id:\"start_date\", header:\"Start Date\", width:30 },\r\n\t\t\t{ id:\"end_date\", header:\"End Date\", width:30 },\r\n\t\t\t{ id:\"$text\", header:\"Text\", width:100 }\r\n\t\t];\r\n\t};\r\n\r\n\tscheduler._send_to_export = function(data, type){\r\n\t\tif(!data.version){\r\n\t\t\tdata.version = scheduler.version;\r\n\t\t}\r\n\r\n\t\tif(!data.skin){\r\n\t\t\tdata.skin = scheduler.skin;\r\n\t\t}\r\n\r\n\t\tif (data.callback)\r\n\t\t\t\treturn scheduler._ajax_to_export(data, type, data.callback);\r\n\r\n\t\tvar form = this._create_hidden_form();\r\n\r\n\t\tform.firstChild.action = data.server || \"https://export.dhtmlx.com/scheduler\";\r\n\t\tform.firstChild.childNodes[0].value = JSON.stringify(data);\r\n\t\tform.firstChild.childNodes[1].value = type;\r\n\t\tform.firstChild.submit();\r\n\t};\r\n\r\n\tscheduler._create_hidden_form = function(){\r\n\t\tif (!this._hidden_export_form){\r\n\t\t\tvar t = this._hidden_export_form = document.createElement(\"div\");\r\n\t\t\tt.style.display = \"none\";\r\n\t\t\tt.innerHTML = \"
\";\r\n\t\t\tdocument.body.appendChild(t);\r\n\t\t}\r\n\t\treturn this._hidden_export_form;\r\n\t};\r\n\r\n\tscheduler._get_export_size = function(format, orientation, zoom, dpi, header, footer, scales) {\r\n\r\n\t\tdpi = parseInt(dpi)/25.4 || 4;\r\n\r\n\t\tvar sizes = {\r\n\t\t\t\"A5\":{ x:148, y:210 },\r\n\t\t\t\"A4\":{ x:210, y:297 },\r\n\t\t\t\"A3\":{ x:297, y:420 },\r\n\t\t\t\"A2\":{ x:420, y:594 },\r\n\t\t\t\"A1\":{ x:594, y:841 },\r\n\t\t\t\"A0\":{ x:841, y:1189 }\r\n\t\t};\r\n\r\n\t\tvar dataX = getElementSizes(\"dhx_cal_data\", this).x;\r\n\t\tvar dataY = getElementSizes(\"dhx_cal_data\", this).y;\r\n\t\tvar headY = getElementSizes(\"dhx_cal_header\", this).y;\r\n\t\tvar multY = getElementSizes(\"dhx_multi_day\", this).y;\r\n\r\n\t\tvar cSize = {\r\n\t\t\ty: dataY + headY + multY\r\n\t\t};\r\n\r\n\t\tif (format === \"full\") {\r\n\t\t\tcSize.x = dataX;\r\n\t\t} else {\r\n\t\t\tcSize.x = Math.floor( (orientation === \"landscape\" ? sizes[format].y : sizes[format].x) * dpi );\r\n\t\t}\r\n\r\n\t\tif (scales) {\r\n\t\t\tcSize.x *= (parseFloat(scales.x) || 1);\r\n\t\t\tcSize.y *= (parseFloat(scales.y) || 1);\r\n\t\t}\r\n\r\n\t\treturn cSize;\r\n\t};\r\n\r\n\tfunction getTimeline() {\r\n\t\tvar mode = scheduler.getState().mode;\r\n\t\tif (scheduler.matrix && scheduler.matrix[mode]) {\r\n\t\t\treturn scheduler.matrix[mode];\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction getInitialSizes() {\r\n\t\tvar smartRendering = undefined,\r\n\t\t\tscrollable = undefined;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (timeline) {\r\n\t\t\tscrollable = timeline.scrollable;\r\n\t\t\tsmartRendering = timeline.smart_rendering;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tnav_height: scheduler.xy.nav_height,\r\n\t\t\tscroll_width: scheduler.xy.scroll_width,\r\n\t\t\tstyle_width: scheduler._obj.style.width,\r\n\t\t\tstyle_height: scheduler._obj.style.height,\r\n\t\t\ttimeline_scrollable: scrollable,\r\n\t\t\ttimeline_smart_rendering: smartRendering\r\n\t\t};\r\n\t}\r\n\r\n\tfunction setExportSizes(size, initialSizes) {\r\n\t\tscheduler._obj.style.width = size.x + \"px\";\r\n\t\tscheduler._obj.style.height = size.y + \"px\";\r\n\r\n\t\tscheduler.xy.nav_height = 0;\r\n\t\tscheduler.xy.scroll_width = 0;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\r\n\t\t\ttimeline.scrollable = false;\r\n\t\t\ttimeline.smart_rendering = false;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction setInitialSizes(initialSizes) {\r\n\t\tscheduler.xy.scroll_width = initialSizes.scroll_width;\r\n\t\tscheduler.xy.nav_height = initialSizes.nav_height;\r\n\t\tscheduler._obj.style.width = initialSizes.style_width;\r\n\t\tscheduler._obj.style.height = initialSizes.style_height;\r\n\r\n\t\tvar timeline = getTimeline();\r\n\t\tif (initialSizes.timeline_scrollable || initialSizes.timeline_smart_rendering) {\r\n\t\t\ttimeline.scrollable = initialSizes.timeline_scrollable;\r\n\t\t\ttimeline.smart_rendering = initialSizes.timeline_smart_rendering;\r\n\t\t}\r\n\t}\r\n\r\n\tscheduler._export_html = function (obj) {\r\n\t\tvar initialSizes = getInitialSizes();\r\n\t\tvar size = scheduler._get_export_size(obj.format, obj.orientation, obj.zoom, obj.dpi, obj.header, obj.footer, obj.scales);\r\n\r\n\t\tvar html = \"\";\r\n\t\ttry {\r\n\t\t\tsetExportSizes(size, initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t\thtml = scheduler._obj.innerHTML;\r\n\t\t} catch (e) {\r\n\r\n\t\t\t// eslint-disable-next-line no-console\r\n\t\t\tconsole.error(e);\r\n\t\t} finally {\r\n\t\t\tsetInitialSizes(initialSizes);\r\n\t\t\tscheduler.setCurrentView();\r\n\t\t}\r\n\r\n\t\treturn html;\r\n\t};\r\n\r\n}\r\n\r\nadd_export_methods(scheduler);\r\n\r\n\r\n})();\r\n\r\n}","import active_links from \"./active_links\";\r\nimport agenda_legacy from \"./agenda_legacy_view\";\r\nimport agenda_view from \"./agenda\";\r\nimport all_timed from \"./all_timed\";\r\nimport collision from \"./collision\";\r\nimport container_autoresize from \"./container_autoresize\";\r\nimport cookie from \"./cookie\";\r\nimport daytimeline_restricted from \"./restricted_extensions/daytimeline\";\r\nimport drag_between_restricted from \"./restricted_extensions/drag_between\";\r\nimport editors from \"./editors\";\r\nimport expand from \"./expand\";\r\nimport grid_view from \"./restricted_extensions/grid_view\";\r\nimport html_templates from \"./html_templates\";\r\nimport key_nav from \"./key_nav\";\r\nimport layer from \"./layer\";\r\nimport limit from \"./limit\";\r\nimport map_view from \"./map_view\";\r\nimport minical from \"./minical\";\r\nimport monthheight from \"./monthheight\";\r\nimport multisection_restricted from \"./restricted_extensions/multisection\";\r\nimport multiselect from \"./multiselect\";\r\nimport multisource from \"./multisource\";\r\nimport mvc from \"./mvc\";\r\nimport outerdrag from \"./outerdrag\";\r\nimport pdf from \"./pdf\";\r\nimport quick_info from \"./quick_info\";\r\nimport readonly from \"./readonly\";\r\nimport recurring from \"./recurring\";\r\nimport recurring_legacy from \"./recurring_legacy\";\r\nimport serialize from \"./serialize\";\r\nimport timeline_restricted from \"./restricted_extensions/timeline\";\r\nimport tooltip from \"./tooltip\";\r\nimport treetimeline_restricted from \"./restricted_extensions/treetimeline\";\r\nimport units_restricted from \"./restricted_extensions/units\";\r\nimport url from \"./url\";\r\nimport week_agenda_restricted from \"./restricted_extensions/week_agenda\";\r\nimport wp from \"./wp\";\r\nimport year_view from \"./year_view\";\r\nimport export_api from \"./export_api\";\r\n\r\nexport default {\r\n\tactive_links,\r\n\tagenda_legacy,\r\n\tagenda_view,\r\n\tall_timed,\r\n\tcollision,\r\n\tcontainer_autoresize,\r\n\tcookie,\r\n\tdaytimeline: daytimeline_restricted,\r\n\tdrag_between: drag_between_restricted,\r\n\teditors,\r\n\texpand,\r\n\texport_api,\r\n\tgrid_view,\r\n\thtml_templates,\r\n\tkey_nav,\r\n\tlayer,\r\n\tlimit,\r\n\tmap_view,\r\n\tminical,\r\n\tmonthheight,\r\n\tmultisection: multisection_restricted,\r\n\tmultiselect,\r\n\tmultisource,\r\n\tmvc,\r\n\touterdrag,\r\n\tpdf,\r\n\tquick_info,\r\n\treadonly,\r\n\trecurring,\r\n\trecurring_legacy,\r\n\tserialize,\r\n\ttimeline: timeline_restricted,\r\n\ttooltip,\r\n\ttreetimeline: treetimeline_restricted,\r\n\tunits: units_restricted,\r\n\turl,\r\n\tweek_agenda: week_agenda_restricted,\r\n\twp,\r\n\tyear_view\r\n};","import SchedulerFactory from \"./scheduler_factory\";\r\nimport gplExtensions from \"./ext/extensions_gpl\";\r\n\r\nconst factory = new SchedulerFactory(gplExtensions);\r\n\r\nconst scheduler = factory.getSchedulerInstance();\r\nconst Scheduler = {\r\n\tplugin: scheduler.bind(factory.plugin, factory)\r\n};\r\n\r\nwindow.scheduler = scheduler;\r\nwindow.Scheduler = Scheduler;\r\n\r\nif(!window.$dhx) {\r\n\twindow.$dhx = {};\r\n}\r\n\r\nwindow.$dhx.scheduler = scheduler;\r\nwindow.$dhx.Scheduler = Scheduler;\r\n\r\nexport default scheduler;export { scheduler, Scheduler };"],"names":["dhtmlxHook","dhtmlx","attaches","attachScheduler","day","mode","tabs","scheduler","obj","document","createElement","id","this","_genStr","innerHTML","body","appendChild","firstChild","attachObject","vs","av","sched","schedId","setSizes","updateView","destructor","init","_viewRestore","globalScope","window","global","global$1","dragHighlightPos","dndMarkers","dragStarted","eventNode","event","isEnabled","config","drag_highlight","markTimespan","checkViewName","viewName","viewObj","getView","layout","checkSectionPropertyName","y_property","map_to","setRequiredStylesToMarker","style","top","left","marginLeft","createMarkerConfig","configSettings","sectionId","sections","markerObject","start_date","end_date","css","html","date","add","createViewMarker","settings","markerConfigs","getMonthViewMarkers","getTimelineAndUnitsViewMarkers","getColumnViewMarkers","forEach","cfg","push","columnViewMarkersArray","eventNodes","$container","querySelectorAll","event_attribute","i","length","eventNodeClone","cloneNode","startDate","Date","getAttribute","endDate","dates","monthViewMarkersArray","weekDates","currDate","valueOf","week_start","cells","unitMarkersArray","sectionPropertyName","multisection","String","split","section_delimiter","formatedSections","map","element","elems","attachEvent","e","getEvent","target","closest","getState","cascade_event_display","unselect","getActionData","section","unmarkTimespan","undoDelete","ev","deletedEvent","copy","undo_deleted","new_event","message","text","expire","type","callback","undoBtn","addEvent","render","limitPlugin","mark_now","display_marked_timespans","overwrite_marked_timespans","dhx_time_block","default_timespan_type","fix_options","options","days","zones","get_resulting_options","blockTime","addMarkedTimespan","unblockTime","deleteMarkedTimespan","checkInMarkedTimespan","timespan_type","on_overlap","res","temp_start_date","temp_end_date","timespans","_marked_timespans","date_part","day_value","day_index","getDay","getZones","eventStart","_get_zone_minutes","eventEnd","getDate","markerStart","markerEnd","checkLimitViolation","check_limits","s","c","evs","rec_type","_end_date","seriesEnd","limit_start","limit_end","recEventInLimits","complete_res","p","_timed","isOneDayEvent","allow","_drag_id","_drag_mode","setHours","setMinutes","checkEvent","callEvent","_get_blocked_zones","property","timeline_zones","blocked_timeline_zones","_get_relevant_blocked_zones","_add_timespan_zones","resultZones","concat","containers","_props","matrix","container","view","view_config","linker","_mark_now","hide","dhx_now_time","_els","now","_currentDate","_remove_mark_now","_max_date","_min_date","getHours","first_hour","last_hour","locate_holder_day","_append_mark_now","zone_start","_table_view","_mode","start_index","end_index","units_l","size","position","r_divs","t_day","t_div","_render_marked_timespan","els","div","parent","parentNode","removeChild","getMinutes","_prepare_timespan_options","r_configs","temp_configs","Array","t_days","slice","cloned_config","_lame_clone","apply","undefined","min","max","invert_zones","invertZones","uid","view_key","hasOwnProperty","ids","t_config","_lame_copy","k","c_config","t_sd","t_ed","zone_end","_get_dates_by_index","index","start","end","start_day","delta","t_date","_get_css_classes_by_config","css_classes","join","_get_block_by_config","block","area","blocks","min_date","max_date","date_to_display","min_day","areas","_scales","sday","_cols","_ignores","block_proto","className","height","width","order","inner_index","locate_holder","Math","all_hours_height","hour_size_px","hour_ms","round","_mark_timespans","data","divs","_on_scale_add_marker","len","childNodes","_getClassName","indexOf","configuration","Error","rebuild_els","get_elements","timespans_ids","_marked_timespans_ids","timespan_types","_marked_timespans_types","_addMarkerTimespanConfig","unit_id","timespans_view","day_configs","_array","configs","current_zones","resulting_zones","c_zone_start","c_zone_end","isLast","offset","splice","_subtract_timespan_zones","is_modified","_delete_marked_timespan_by_id","parent_array","_delete_marked_timespan_by_config","viewspans","_delete_marked_timespans_list","d","dayConfig","day_timespans","d_t","related_zones","arguments","types","t","typedConfig","_get_types_to_render","common","specific","types_to_render","_get_configs_to_render","units","_get_unit_index","unit","_date","dx","day_ind","unitsPerDay","floor","key","unit_zones","unit_types","global_data","day_types","dblclick_dhx_marked_timespan","src","dblclick_create","addEventNow","createMethod","methods","isActive","disableMethod","methodName","dummyMethod","restoreMethod","disableMethods","methodsHash","call","restoreMethods","batchUpdatePayload","console","error","$stateProvider","registerProvider","batch_update","batchUpdate","noRedraw","call_dp","_dp","updateMode","dp_mode","setUpdateMode","calls","setModeDate","needRender","needUpdateView","repaintEvents","rememberModeDate","setCurrentView","render_data","render_view_data","updateEvent","sendData","initPlugins","limit","uidSeed","isArray","pop","isStringObject","Function","prototype","toString","constructor","isNumberObject","isBooleanObject","isDate","getFullYear","getMonth","defined","delay","timeout","timer","result","$cancelTimeout","$pending","args","setTimeout","clearTimeout","$execute","utils","mixin","source","force","f","object","Number","Boolean","varType","Object","StateService","stateProviders","name","provider","method","internal","unregisterProvider","assert","check","show_errors","log","extend","commonViews","agenda","grid","timeline","week_agenda","year","anythingElse","requiredExtensions","_commonErrorMessages","unknownView","relatedDoc","relatedExtension","collapsedContainer","createTimelineView","createUnitsView","createGridView","renderCalendar","exportToPNG","exportToPDF","dhtmlxError","catchError","a","b","responseText","ajax_error","alert","classes","cssClass","classList","itemTypes","rows_container","row","setAttribute","fix_tab_position","$firstTab","$lastTab","$segmentedTab","button","builtInButton","spacer","minicalendarButton","minicalendarDiv","click","$_eventAttached","isCalendarVisible","destroyCalendar","navigation","handler","calendar","html_element","findRenderer","renderer","rows","cols","renderElement","value","align","justifyContent","prepareConfig","renderLayout","fragment","createDocumentFragment","items","next","_init_nav_bar","navBar","querySelector","_update_nav_bar","previousHeight","heightChanged","configChanged","newHeight","xy","nav_height","unset_actions","set_actions","display","isAttachedNode","root","getWindowSize","w","innerWidth","documentElement","clientWidth","h","innerHeight","clientHeight","equals","listenWindowResize","oldSize","resizeDelay","$destroyed","newSize","triggerSchedulerResize","$root","watchNodeResize","offsetHeight","previousWidth","offsetWidth","lowlevelResizeWatcher","addResizeListener","containerStyles","getComputedStyle","getPropertyValue","resizeWatcher","tabIndex","wai_aria_attributes","salesforce_environment","contentWindow","EventHost","_silent_mode","listeners","createEventStorage","handlers","eventStorage","combinedResult","handlerResult","handlerId","once","originalHandler","removeEvent","clear","makeEventable","eventHost","eventName","toLowerCase","thisObject","bind","innerId","attachAll","eventArguments","handlerName","detachEvent","list","eventId","detachAllEvents","extend$l","_detachDomEvent","el","removeEventListener","_init_once","scheduler_resize_listener","navbar","header","dataArea","hasSchedulerMarkup","createDefaultHeader","views","nav","_grid","names","optionalViews","_obj","getElementById","wai_aria_application_role","JSON","stringify","rtl","_skin_init","_scroll","init_templates","_init_touch_events","set_sizes","$initialized","min_event_height","bar_height","scale_width","scroll_width","scale_height","month_scale_height","menu_width","margin_top","margin_left","editor_width","month_head_height","event_header_height","keys","edit_save","edit_cancel","functor","_x","scale_x","materialScalePlaceholder","_is_material_skin","insertBefore","set_xy","offsetTop","_lightbox","_setLbPosition","_data_width","right","node","x","y","prepareValue","val","prepared","isNaN","direction","getElementsByTagName","class_name","attr_value","label","locale","labels","_waiAria","labelAttr","domEventsScope","_createDomEventScope","detachAll","_click","attach","preventDefault","_temp_touch_block","_on_mouse_move","_ignore_next_click","_on_mouse_down","_on_mouse_up","_on_dbl_click","returnValue","_locate_event","select","_select_id","_close_not_saved","editStop","previousSelection","editor_id","_edit_id","lightbox_id","_lightbox_id","_new_event","select_id","expanded","drag_id","drag_mode","dhx_cal_data","cancelBubble","readonly","icon","mask","buttons","replace","dhx_cal_prev_button","dhx_cal_next_button","dummy","step","def_step","dhx_cal_today_button","dhx_cal_tab","deprecated_name","substring","search","delete","confirm_deleting","_dhtmlx_confirm","title","title_confirm_deleting","deleteEvent","ok","icon_delete","edit","save","details","showLightbox","form","cancel","opts","confirm","base","_isObject","_isDate","duration","event_duration","time_step","start_hour","setTime","_loading","_drag_event","details_on_dblclick","viewHandler","_get_column_index","x_pos","column","_week_indexes_from_pos","pos","ceil","_mouse_coords","$env","isIE","pageX","pageY","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","_colsS","$domHelpers","getAbsoluteLeft","getAbsoluteTop","dy","heights","_ignores_detected","preserve_length","_event_length","_get_real_event_length","x_step","x_unit","timestamp","confirmationText","confirm_closing","title_confirm_closing","positive_closing","_drag_pos","_correct_shift","back","getTimezoneOffset","_is_pos_changed","old_pos","new_pos","diff","old_val","new_val","acc","abs","d_pos","has_moved","_correct_drag_start_date","_start_correction","_end_correction","_get_fictional_event_length","_correct_drag_end_date","mousedownPos","_get_date_from_pos","_drag_start","fields","timeStep","custom","time_part","_dragEventBody","_move_event_shift","resize_date","_drag_from_start","resize_from_start","end_day_start","end_day_date","firstHour","lastHour","maxY","precisePos","minDate","maxDate","preciseDate","cursor","shift","new_end","new_start","limit_drag_out","all_timed","_get_section_view","_get_event_sday","_allow_dnd","update_render","sx","update_view","for_rendered","r","srcElement","classname","drag_event_body","fullClass","_get_private_properties","_clear_temporary_properties","clean","flagged_event","initial","current_state","_mobile","moved","_dhx_changed","is_new","edit_on_create","details_on_create","_trigger_dyn_loading","_load_mode","_load","_render_wait","_reset_ignores","_reset_scale","isViewExists","templates","_set_aria_buttons_attrs","buttonGroups","group","j","prev","headerButtonsAttributes","icon_form","icon_edit","oldClass","newClass","dhx_multi_day","prev_scroll","preserve_scroll","multidayScroll","_dy_shift","tab","headerToggleState","remove","_render_x_header","offset_top","head","left_border","columnHeaderText","dayHeaderAttr","_get_columns_num","from","to","count","count_n","_get_timeunit_start","_get_view_end","dd","ed","_calc_scale_sizes","summ","_process_ignores","realcount","_set_scale_col_size","_render_scales","data_area","sd","today","parseInt","scales","cls","firstHalf","slotDate","format_date","htmlContent","time_slot_text","time_slot_class","secondHalf","week_date_class","dayColumnAttr","day_start","_getNavDateElement","str","drag_resize","drag_move","navBarDateStr","scaleElement","navBarDateAttr","_reset_month_scale","_reset_hours_scale","multi_day","c1","visibility","totalWidth","col_length","hiddenWidth","c2","cc","content","hour_scale","hourScaleAttr","scroll_hour","now_date","n","preserve","ignore","ign_date","_render_month_scale","view_start","cd","tdwidths","cell_width","getCellHeight","cellheight","table","cell","month_date_class","body_class","head_class","monthCellAttr","cellHead","month_day","cellBody","bf1","parse_date","getLabel","lightbox","updateCollection","list_name","collection","serverList","resetLightbox","hideCover","cache","create","n_ev","_focus","focus","getDaysDifference","differenceInTime","getTime","differenceInDays","eventLength","startColumnIndex","endColumnIndex","_get_date_index","last_column","excludedDuration","intervalStart","intervalEnd","leftCellCutOffStart","leftCellCutOffEnd","rightCellCutOffStart","rightCellCutOffEnd","ev_length","dir","per_day","fd","start_slot","end_slot","_get_section_property","_is_initialized","state","_is_lightbox_open","defaultDomEvents","addEventListener","eventRemove","createEventScope","domEvents","eventScope","capture","detach","staticArray","_eventRemoveAll","_trim","func","trim","htmlTags","RegExp","extraSpaces","stripHTMLLite","htmlText","singleQuotes","escapeQuotes","getAttributeString","attr","attributes","setAttributes","values","day_date","role","getHeaderCellAttr","dateString","eventAttr","_eventCommonAttr","event_text","$dataprocessor_class","setEventBarAttr","_getAttributes","attributeSetter","arg","eventBarAttrString","agendaHeadAttrString","agendaHeadDateString","agendaHeadDescriptionString","agendaDataAttrString","agendaEventAttrString","attrs","agendaDetailsBtnString","icon_details","gridAttrString","gridRowAttrString","gridCellAttrString","mapAttrString","mapRowAttrString","mapDetailsBtnString","minicalHeader","headerId","minicalGrid","minicalRow","minicalDayCell","selected","minicalHeadCell","weekAgendaDayCell","weekAgendaEvent","lightboxHiddenAttr","lightboxVisibleAttr","lightboxSectionButtonAttrString","tabindex","yearHeader","yearGrid","yearHeadCell","yearRow","yearDayCell","lightboxAttr","lightboxButtonAttrString","buttonName","eventMenuAttrString","iconName","lightboxHeader","headerText","lightboxSelectAttrString","time_option","month","hour","minute","messageButtonAttrString","buttonLabel","messageInfoAttr","messageModalAttr","quickInfoAttr","quickInfoHeaderAttrString","quickInfoHeader","quickInfoButtonAttrString","tooltipAttr","tooltipVisibleAttr","tooltipHiddenAttr","isDisabled","payload","elementPosition","elem","bottom","getBoundingClientRect","box","docElem","pageYOffset","pageXOffset","offsetLeft","offsetParent","getRelativeEventPosition","getNodePosition","getClassName","baseVal","getTargetNode","trg","tagName","shadowRoot","composedPath","locateCss","strict","ind","charAt","isVisible","currentStyle","hiddenSection","recurringSection","hasNonNegativeTabIndex","hasHref","canHaveHref","nodeName","loLowerCase","canDisable","input","textarea","hasAttribute","getFocusableNodes","nodes","nodesArray","$position","sort","isValid","isShadowDomSupported","createShadowRoot","attachShadow","getActiveElement","activeElement","getSelection","focusNode","getRootNode","ShadowRoot","host","hasShadowParent","dom_helpers","htmlObject","getOffset","getOffsetSum","getOffsetRect","test","navigator","userAgent","dummyBox","selector","insertAfter","newNode","referenceNode","nextSibling","isChildOf","child","contains","Element","matches","msMatchesSelector","webkitMatchesSelector","parentElement","nodeType","isWindowAwailable","env","isOpera","isChrome","isKHTML","isFF","isIPad","isEdge","isNode","clearAll","serialize$1","serialized","encodeURIComponent","Promise","createConfig","url","async","headers","serialize","ajax","serializeRequestParams","parse","DOMParser","parseFromString","ActiveXObject","loadXML","xmltop","tagname","xhr","status","xml","responseXML","xpath","xpathExp","docObj","selectNodes","first","col","ownerDocument","evaluate","XPathResult","ANY_TYPE","iterateNext","query","_call","get","onLoad","getSync","put","postData","del","post","postSync","resolve","reject","XMLHttpRequest","isQt","match","readyState","xmlDoc","filePath","open","setRequestHeader","toUpperCase","send","urlSeparator","$ajax","generateStringToDate","format","utc","splt","code","csp_date_to_str","to_fixed","getUTCDate","getUTCMonth","getUTCFullYear","day_short","getUTCDay","day_full","month_short","month_full","getUTCHours","getUTCMinutes","getUTCSeconds","getSeconds","getUTCISOWeek","getISOWeek","csp_str_to_date","set","temp","month_short_hash","month_full_hash","UTC","cspEnabled","checkIfCSPEnabled","useCsp","csp","old","setSeconds","setMilliseconds","start_on_monday","month_start","setDate","year_start","setMonth","_add_days","inc","ndate","datesDiff","rest","hours","setYear","num","date_to_str","str_to_date","exactFormat","stringToDateMethod","parseExactFormat","yyyyMMddhhIIss","MMddyyyyhhIIss","ddMMyyyyhhIIss","ISO8601","isYMDDate","datestr","isMDYDate","isDMYDate","isISO8601","parseYMD","parseMDY","parseDMY","parse_exact_format","nday","first_thursday","year_number","ordinal_date","week_number","convert_to_utc","default_date","month_date","load_date","week_date","hour_date","date_format","api_date","displayed_event_color","displayed_event_text_color","wide_form","day_column_padding","use_select_menu_space","drag_create","resize_month_events","resize_month_timed","responsive_lightbox","separate_short_events","cascade_event_count","cascade_event_margin","multi_day_height_limit","drag_lightbox","server_utc","touch","touch_tip","touch_drag","touch_swipe_dates","quick_info_detached","icons_edit","icons_select","buttons_left","buttons_right","highlight_displayed_event","delay_render","timeline_swap_resize","$initial","_helpers","parseDate","xml_date","formatDate","xml_format","d1","d2","day_scale_date","month_scale_date","week_scale_date","time_picker","event_date","load_format","event_header","event_class","event_bar_date","event_bar_text","month_events_link","drag_marker_class","drag_marker_content","tooltip_date_format","tooltip_text","calendar_month","calendar_scale_date","calendar_date","calendar_time","_events","_loaded","clear_view","extra_data","event_updated","silent","setEvent","hash","_rendered","changeEventId","new_id","create_getter","create_setter","_changed","is_visible_events","clear_event","in_visible_range","evFirstHour","evLastHour","end_dates_visible","hidden_duration","checkEndDate","get_visible_events","only_timed","stack","filter_event","filter","_is_main_area_event","hold","full","_not_render","_recalculate_timed","tvs","tvd","_rendered_location","buffer","renderedLocation","_view_month_day","_render_month_link","toRender","_sday","_eday","curr","_sweek","getEvents","_get_event_bar_pos","widt","x2","_pre_render_events","render_event_bar","max_evs","max_month_events","_sorder","real","render_event","_get_first_visible_cell","hb","h_old","_pre_render_events_line","_pre_render_events_table","monthRows","cellHeight","cHeight","unshift","scrollHeight","scroll_fix","scale_settings","sum_width","row_heights","full_multi_day_height","used_multi_day_height","used_multi_day_height_css","multi_day_section","multi_day_icon","overflowY","datePart","_get_event_mapped_end_date","ev_duration","_min_mapped_duration","evs_originals","sh","eh","_inner","t_ev","t_end_date","slot_index","sorderSet","_is_sorder","_max_sorder","max_count","_count","_copy_event","_time_order","_is_any_multiday_cell_visible","isAnyCellVisible","checkDate","noCells","lastDayEnd","cellIndex","weekCellIndex","out","weeks","chunks_info","first_chunk","last_chunk","chunk_info","locate_s","locate_e","_length","stack_line","_first_chunk","_last_chunk","_copy_dummy","_y_from_date","sm","_calc_event_y","min_height","em","parentWidth","menu","menu_offset","pos_y","ev_count","ev_sorder","margin","_render_v_bar","_text_style","parentPosition","zIndex","color","setProperty","tplClass","cssText","_editor","shiftKey","keyCode","icons","icons_str","ariaAttr","currentIcon","textColor","highlightEventPosition","contentA","contentB","cs","cse","boxWidth","renderEvent","inner_html","footer_class","_drag_resize","past","_get_dnd_order","ev_height","max_height","_orig_sorder","evTop","columns","y_event_offset","resize_handle","resizable","left_chunk","right_chunk","resize_left","resize_right","timed","bg_color","style_text","_edit_stop_event","getRenderedEvent","rendered_events","rendered_event","showEvent","original_color","original_text_color","restoreOriginalColors","getSectionTop","posFromDate","_smartRenderingEnabled","scrollTo","_append_drag_marker","m","zone","scale","lastChild","previousSibling","_update_marker_position","_parsers","canParse","topElement","loader","csrfToken","security_key","arr","itms","itm","nodeValue","ud","udx","_xmlNodeToJSON","_userdata","_init_event","json","err","events","dhx_security","collections","collections_loaded","option","option_key","ical","c_start","c_end","incoming","event_r","e_start","e_end","exec","param","param_r","parse_param","substr","dh","dm","utcMark","dn","getSerializator","_load_url","prevent_cache","ajaxCallback","response","on_load","lf","cache_line","temp_to","extend$a","extend$9","extend$8","foundParser","parser","_process","_process_loading","_after_call","_tagvalue","_init_date","getSerializableData","createSerializator","dataset","allEvents","exportedEvent","exportValue","rawValue","load","setLoadMode","array","show_loading","_y","_lightbox_controls","formSection","getLightbox","getValue","form_blocks","get_value","setValue","set_value","get_template_control","control","get_select_control","get_textarea_control","get_time_control","defaults","template","time","sns","placeholder","_get_input","_dhx_onchange","onchange","time_format","_time_format_order","dt","last","limit_time_select","selectBoxClass","range","start_year","end_year","year_range","tdate","_time_values","ariaAttrs","full_day","_full_day","checked","disabled","_fill_lightbox_select","auto_end_date","_update_lightbox_select","time_values","direct_value","fixed_value","value_found","t_v","selectedIndex","original","getLightboxRoot","cspEnvironment","salesforceEnvironment","showCover","show_cover","_cover","_fill_lightbox","lightbox_header","headerContent","headerDate","headerTitle","current_sns","_get_lightbox_section_node","default_value","_lightbox_out","_empty_lightbox","hide_lightbox","endLightbox","hide_cover","_move_while_dnd","_finish_dnd","save_lightbox","startLightbox","_custom_lightbox","_temp_lightbox","cancel_lightbox","hideLightbox","_init_lightbox_events","buttonTarget","sectionButton","button_click","action","readonly_active","setLightboxSize","_init_dnd_events","_dnd_start_lb","dhx_unselectable","lb","_lb_start","_ready_to_dnd","recurring","_lightbox_template","label_name","ds","t_ds","_bindLightboxLabels","labelBlock","inputBlock","fallback","inputId","old_id","mobile","MSStream","platform","maxTouchPoints","touchEventsSupported","createEvent","_touch_events","touches","PointerEvent","pointerEnabled","pointerType","msPointerEnabled","MSPOINTER_TYPE_MOUSE","accessor","tracker","scroll_mode","action_mode","dblclicktime","attachTouchEvent","passive","check_direction_swipe","s_ev","e_ev","max_dy","scrollable","doMouseMove","dnd","original_render","_update_global_tip","drag_cancel","_pointerDragId","pointerId","fake_event","_block_next_stop","actTask","fakeTask","sourceTask","_show_global_tip","_hide_global_tip","toptip","_global_tip","drag_to_create","drag_to_move","getRootView","tag","hooks","didInsert","cmp","_addThemeClass","skin","_skin_settings","_skin_xy","lightbox_additional_height","checkIfMaterialSkin","themeNameFromFile","links","href","_build_skin_info","monitorThemeChange","styles","themeVar","isCssVarTheme","themeName","cssValues","oldMaterialTheme","_theme_info","theme","cssVarTheme","themeVariables","calculatedMaterial","probe","cachedBorderBoxValue","checkIfBorderBoxStyling","boxSizing","refreshAfterLoad","_border_box_events","oldStyling","newStyling","_configure","setSkin","flatSkinHourScale","monitorIntervalId","clearInterval","setInterval","csstheme","_old_month_day","old_month_day","reorderTabs","specialTabs","tabName","find","firstTab","reverse","jQuery","$","counter","fn","dhx_scheduler","each","Scheduler","getSchedulerInstance","comp","update_view_timer","curr_view_timer","lazy_setCurrentView","self","oldDate","oldMode","updateFlags","lazy_updateView","ars","DataProcessorEvents","dp","$scheduler","$dp","_dataProcessorHandlers","_validId","setUpdated","z","_in_progress","_invalid","updatedRows","_waitMode","_update_callback","upd","setUserData","action_param","_add_rec_marker","extendScheduler","_is_virtual_event","getUserData","_set_event_text_style","rec_pattern","_dp_change_event_id","_dp_hook_delete","setDp","DataProcessor","serverProcessorURL","serverProcessor","autoUpdate","_tMode","_headers","_payload","post_delim","messages","updated","inserted","deleted","invalid","invalid_cell","enableUTFencoding","eventable","setTransactionMode","total","_tSend","_endnm","_serializeAsJson","_router","router","escape","_utf","setDataColumns","_columns","getSyncState","enableDataNames","enablePartialDataSend","master","rowId","findRow","existing","set_invalid","is_invalid","markRow","_methods","getActionByState","checkBeforeUpdate","sendAllData","_beforeSendData","_getRowData","_sendData","_serializeAsJSON","serialize_one","pref","_applyPayload","dataToSend","_onResolvedCreateUpdate","resultState","sid","tid","afterUpdateCallback","routerMode","actionPromise","update","then","catch","queryParams","afterUpdate","urlParams","_user","_cleanupArgumentsBeforeSend","preprocessedData","_cleanupItemBeforeSend","valid","_forEachUpdatedRow","_getAllData","has_one","pattern","defineAction","_uActions","btag","marker","correct","originalSid","_errorResponse","cleanUpdate","_setDefaultTransactionMode","_serverProcessor","that","finalizeUpdate","atag","_initialized","_dp_init","dataProcessorEvents","_dataprocessor","setOnAfterUpdate","setOnBeforeUpdateHandler","setAutoUpdate","interval","user","_need_update","_update_busy","xml_node","afterAutoUpdate","fullSync","intervalId","loadUpdate","getUpdates","_getXmlNodeValue","version","vers","updates","processedData","updatedItem","output","item","processedItem","prop","_prepareItemForJson","_prepareItemForForm","_prepareDataItem","dataItem","createDataProcessor","tMode","boxAttribute","_dhx_msg_cfg","usercall","modalBox","modal_key","which","messageBox","keyboard","domHelpers","modality","cover","classValue","buttonAriaAttrs","buttonCss","info","timers","pull","getFirstDefined","_boxStructure","contentId","inner","message_ok","message_cancel","btn","_createBox","hidden","alertPopup","confirmPopup","boxPopup","box_params","params","alertBox","confirmBox","focusable","subtype","seed","hideAll","popups","modalbox","ar","day_tab","week_tab","month_tab","icon_save","icon_cancel","section_description","section_time","confirm_recurring","section_recurring","button_recurring","button_recurring_open","button_edit_series","button_edit_occurrence","grid_tab","repeat_radio_day","repeat_radio_week","repeat_radio_month","repeat_radio_year","repeat_radio_day_type","repeat_text_day_count","repeat_radio_day_type2","repeat_week","repeat_text_week_count","repeat_radio_month_type","repeat_radio_month_start","repeat_text_month_day","repeat_text_month_count","repeat_text_month_count2_before","repeat_text_month_count2_after","repeat_year_label","select_year_day2","repeat_text_year_day","select_year_month","repeat_radio_end","repeat_text_occurences_count","repeat_radio_end2","repeat_radio_end3","repeat_never","repeat_daily","repeat_workdays","repeat_weekly","repeat_monthly","repeat_yearly","repeat_custom","repeat_freq_day","repeat_freq_week","repeat_freq_month","repeat_freq_year","repeat_on_date","repeat_ends","month_for_recurring","day_for_recurring","be","agenda_tab","description","year_tab","week_agenda_tab","ca","cn","da","de","en","es","fi","fr","he","hu","it","jp","LocaleManager","_locales","nb","nl","no","pl","pt","ro","ru","si","sk","sv","tr","ua","i18nFactory","DatePicker","modes","currentRange","eventDates","currentModeIndex","onStateChangeHandlers","_domEvents","onStateChange","oldState","newState","_notifyStateChange","newDate","setFullYear","setState","newIndex","backwardArrow","monthLabel","innerText","toLocaleString","startYear","_toggleMode","forwardArrow","_adjustDate","_renderCalendarHeader","dataContainer","_renderDayGrid","_renderMonthGrid","_renderYearGrid","daysOfWeekContainer","currentDate","labelFormat","dayElement","currWeek","minWeeks","minSchedulerDate","maxSchedulerDate","eventDaysTable","reduce","dayStart","_renderDayGridHeader","firstDate","monthStart","monthEnd","lastDate","currentCalDate","_weeksBetween","dayGridContainer","dateCell","wrapper","months","formatLabel","monthElement","doneArea","doneBtn","yearElement","factoryMethod","extensionManager","stateProvider","common_errors","schedulerCore","wai_aria","dom","_createDatePicker","_getFocusableNodes","_locate_css","messageApi","event_highlight","dhtmlx_suite_hooks","skins","jquery","dataProcessorExtend","connector","i18n","addLocale","setLocale","localeObject","getLocale","dhx_save_btn","dhx_cancel_btn","dhx_delete_btn","addPlugins","ext","activePlugins","plugins","extensionList","getExtensionList","treetimeline","daytimeline","outerdrag","legacy","plugin","getExtension","dependencies","priorities","extension","dep","dependencyName","orderA","orderB","ExtensionsManager","_extensions","SchedulerFactory","extensions","_seed","_schedulerPlugins","_bundledExtensions","_extensionsManager","initConfig","_internal_id","$syncFactory","_initFromConfig","calendars","addCalendar","active_links","active_link_view","_active_link_click","s_d","do_wrapper","fullname","week_x","d_s","agenda_legacy","add_agenda_legacy","agenda_legacy_time","agenda_legacy_text","agenda_legacy_date","agenda_legacy_start","old_dblclick_dhx_cal_data","dblclick_dhx_cal_data","fill_agenda_tab","old_render_view_data","_agendaScrollTop","set_full_view","l","rowAttr","dateHeader","descriptionHeader","tableAttr","ev_class","agendaDetailsButtonAttr","agenda_time","agenda_text","agenda_area","v_border","dateElement","agenda_date","agenda_legacy_view","agenda_start","agenda_end","agenda_view","add_agenda","dayDateToStr","dayDowToStr","agenda_day","eventsInDays","anyEvents","renderEmptyView","renderDay","calendarEvent","renderOneEvent","selectedId","bg","all_timed_month","is_event_short","_safe_copy","proto","event_pid","isPrototypeOf","event_length","old_prerender_events_line","old_prerender_events_table","prerender_events","ce","_virtual","isOvernightEvent","getNextDay","setDateTime","event_changed","re","redraw","next_day","old_get_visible_events","old_mode","old_date","oldUpdate","fullRedrawNeeded","collision","temp_section","before","collision_limit","_setTempSection","event_id","checked_mode","checkCollision","edited_ev","_roll_back_dates","_check_sections_collision","second","evs_dates","getRecDates","tevs","concurrent","single","container_autoresize","month_day_min_height","min_grid_size","min_map_size","old_pre_render_event","active","total_height","multiday_height","evl","_h_fix","navHeight","headerHeight","checked_divs","updateContainterHeight","is_repaint","checked_div","maxHeight","rows_length","year_y","week_agenda_scale_height","cur_height","eventsContainer","g","_gridView","y_unit","getSectionHeight","scrollWidth","getScrollSize","callUpdate","conditionalUpdateContainerHeight","asyncRepaint","requestAnimationFrame","autosizeEnabled","$original_scroll_width","$original_section_autoheight","section_autoheight","cookie","setCookie","cookie_param","getCookie","getCookieName","_get_url_nav","urlNavigationPlugin","schedulerCookie","unescape","newMode","old_load","notImplemented","daytimeline_restricted","drag_between_restricted","editors","cached_options","resetCombo","_combo","DOMParent","combo","unload","DOMelem","dhx_globalImgPath","image_path","dhtmlXCombo","options_height","setOptionHeight","enableFilteringMode","filtering","script_path","all_options","single_option","addOption","getIndexByValue","selectOption","selected_id","disable","setComboValue","getSelectedValue","getSelectedText","vertical","radiobuttons","checked_value","isChecked","check_html","label_html","checkbox","unchecked_value","expand","fullscreen","toggleIcon","_position","_width","_height","_overflow","overflow","_maximize","collapse","directions","prev_margin","grid_view","html_templates","all","keyboard_shortcuts","$keyboardNavigation","shortcuts","createCommand","modifiers","alt","ctrl","meta","shortcut","commands","expr","getExpressions","words","getWords","command","commandKeys","specialKeys","charCodeAt","getCommandFromEvent","domEvent","altKey","ctrlKey","metaKey","printableKey","fromCharCode","getHashFromEvent","getHash","parts","junctionChar","term","combinationChar","backspace","enter","esc","space","up","down","home","pageup","pagedown","insert","plus","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","eventhandler","EventHandler","_handlers","findHandler","doAction","unbind","bindAll","initKeys","trap_modal_focus","trapFocus","currentFocus","currentIndex","nextIndex","nextItem","renderMultiple","currentStart","currentEnd","TimeSlot","_modes","_getMode","renderVerticalMarker","renderTimelineMarker","renderYearMarker","renderMonthMarker","weekAgenda","renderWeekAgendaMarker","renderAgendaMarker","dayColumns","addWaiAriaLabel","addDataAttributes","dateToStr","dateTimeLabel","sectionObject","markerDate","_wrapDiv","_get_year_cell","opacity","view_opts","round_position","_trace_x","_is_column_visible","start_pos","end_pos","set_date_part","_timeline_getX","tempStart","tempEnd","_section_height","_isRender","renderMonthCell","weekNumber","dayIndex","datatable","lineHeight","scheduler_node","SchedulerNode","_compose","getDefaultNode","getMode","blur","enable","removeAttribute","_compareEvents","_pickEvent","startId","eventElement","Event","getNode","nextEventHandler","activeNode","dispatcher","nextEvent","currEvent","visibleDates","nextEv","setActiveNode","prevEventHandler","HeaderCell","getNodes","_key_nav_copy_paste","nav_node","KeyNavNode","moveTo","compareTo","canStringifyThis","canStringifyThat","header_cell","defaultCell","_getSection","_getNodes","defaultElement","isScrolledIntoView","eventBox","viewPort","idSelector","inlineEditor","getInlineEditor","isMultisectionEvent","keepScrollPosition","_moveToSlot","slot","nextSlot","time_slot","movingDate","getDefaultDate","key_nav_step","_getDefaultSection","visibleTime","nowTime","showNowTime","findVisibleColumn","clone","timeslot","_getMultisectionView","_getNextSection","isInRange","defaultSlot","DataArea","smart_rendering","_pasteDate","_pasteSection","addMonthDate","nextMonthSlot","_alignTimeSlot","nextTimelineSlot","newPos","nextUnitsSlot","optionsCount","nextDaySlot","_moveDate","isBeforeLastHour","isStartDate","minutes","isAfterFirstHour","isInVisibleDayTime","oldStart","toNextDay","testEnd","nextWeekAgendaSlot","nextAgendaSlot","isDateVisible","nextDateColumn","current","tempSlot","extendSlot","extendUnitsSlot","extendTimelineSlot","extendMonthSlot","extendDaySlot","extendWeekAgendaSlot","extendGenericSlot","allowedDirections","moveDate","newDates","extendSlotDates","oldSlot","newSlot","dateDirection","scrollSlot","minical_button","MinicalButton","globalNode","MinicalCell","minical_cell","_getGrid","_getNode","enabled","newRow","newCol","modals","modalsStack","isModal","afterPopup","startModal","endModal","isTopModal","currentTarget","traceLightbox","_keyNavMessagePopup","focusElement","backupFocus","core","getActiveNode","setDefaultNode","focusGlobalNode","blurNode","editor","keyDownHandler","defaultPrevented","schedulerNode","_timeout","key_nav_legacy","_temp_key_scope","key_nav","isCopy","trackMousePosition","mousePointer","keyNavPointer","elementFromPoint","clear_event_after","copyEvent","_make_pasted_event","_do_paste","is_copy","modified_ev","original_ev","_is_key_nav_active","getSelectedEvent","_buffer_event","new_ev","scheduler_handlers","attachSchedulerHandlers","focusHandler","waitCall","reFocusActiveNode","mousedownHandler","dataAreaClick","listOfScales","arrOfScales","some","focusEvent","evNode","prevState","lastStart","lastEnd","lastSection","minical_handlers","_minicalendars","isMinical","minicalendars","patchMinicalendar","focusMinical","minicalClick","rowIndex","td","renderMinical","cal","added","destroyMinical","_def_count","addShortcut","scope","scopeObject","getScope","getShortcutHandler","removeShortcut","disp","scopes","minicalButton","minicalDate","timeSlot","searchMap","attachOnce","isSchedulerSelected","changeState","layer","layers","validId","_clearUpdateFlag","_cloneObj","_dataprocessors","_layers_zindex","initial_layer_zindex","isDefault","defaultLayer","showLayer","tlayer","toggleLayer","hideLayer","visible","getLayer","layer_name","native_event_object","noMenu","_evs_layer","_t_render_view_data","evs_layer","borderBox","borderBoxWidth","headerWidth","bodyWidth","footerWidth","bodyHeight","new_zIndex","filter_agenda","limit_view","_temp_limit_scope","om","od","nm","nd","isBlocked","date_end","resetDate","is_new_event","data_copy","native_object","_mark_now_timer","GoogleMapAdapter","_markers","zoom","zoom_after_resolve","initial_zoom","lat","lng","setCenter","setZoom","error_position","google","maps","trigger","mapOptions","center","initial_position","mapId","scrollwheel","mapTypeId","Map","__gm","messageOverlay","outerContainer","setOptions","addListener","geocoder","Geocoder","point","latLng","geocode","results","GeocoderStatus","OK","geometry","location","event_location","formatted_address","clearInstanceListeners","addEventMarker","AdvancedMarkerElement","importLibrary","mapView","createMarker","setMap","infoWindow","close","InfoWindow","maxWidth","info_window_max_width","setContent","map_info_content","anchor","markerInfo","setVisible","setPosition","latlng","LatLng","latitude","longitude","resolveAddress","string","address","OpenStreetMapAdapter","openPopup","closeTooltip","setView","mapWrapper","L","tileLayer","addTo","on","fetch","country","myIcon","iconUrl","iconSize","shadowSize","iconAnchor","shadowAnchor","popupConfig","minWidth","markerPopup","popup","tooltip","markerConfig","bindPopup","bindTooltip","removeLayer","setLatLng","lon","MapboxAdapter","getPopup","isOpen","togglePopup","mapboxgl","accessToken","lngLat","features","place_name","Popup","focusAfterOpen","setMaxWidth","setHTML","Marker","setLngLat","setPopup","map_view","mapAdapter","eventHandlerIds","adapters","googleMap","openStreetMaps","mapbox","createAdapter","map_view_provider","currentAdapter","_latLngUpdate","_eventLocationChanged","map_settings","resolve_user_location","resolve_event_location","view_provider","map_initial_position","map_error_position","map_date_width","map_icon_width","map_description_width","add_map","map_date","map_time","map_text","map_start","setupMapView","attachSchedulerEvents","addEventWithLocation","coordinates","removeEventMarker","setUserLocation","adapter","geolocation","getCurrentPosition","coords","dblclick_dhx_map_area","unmodifiedEvent","updateEventMarker","newIdEvent","onEventClick","detachSchedulerEvents","map_initial_zoom","map_zoom_after_resolve","map_infowindow_max_width","map_resolve_user_location","map_type","map_resolve_event_location","fill_map_tab","clearEventMarkers","map_end","mapContainer","_setMapSize","destroy","initialize","elem_id","marginRight","marginTop","_selected_event_id","ariaButtonAttr","_updateEventLocation","_delay","ret","_event_resolve_delay","minical","minicalDomEvents","minicalendar","mark_events","_synced_minicalendars","_prev","is_refresh","cont","tpos","_get_def_cont","_render_calendar","$dom","cellRoot","dateAttribute","unmarkCalendar","markCalendar","_last_date","conf","markedDates","_markCalendarCurrentDate","sync","_on_xle_handler","refreshOnLoad","updateCalendar","_created","_locateCalendar","weekNum","dat","dayCell","_week_template","week_template","dummy_date","_mini_cal_arrows","previous","ts","temp2","temp3","temp4","temp5","temp6","temp7","temp8","padding","weekHeader","move_minicalendar_date","css_classnames","css_texts","diffs","arrow","dayHeaders","dayCells","inputs","selects","inp","number","new_date","_update_minical_select","isFulldayEvent","_attach_action","_round_minutes","linkCalendar","datediff","dateNew","month_end","noHighlight","monthheight","old_s","multisection_restricted","multiselect","parseXMLOptions","parseJSONOptions","_result","_children","_mark_inputs","_ids","delimiter","script_url","divLoading","multisource","backup","mvc","use_id","sanitize","update_timer","_start_ext_load","_finish_ext_load","_get_id","model","cid","backbone","toJSON","changes","queue","add_from_queue","Backbone","Collection","dragger","dhtmlDragAndDropObject","stopDrag","last_event","on_drop","sourceHtmlObject","dhtmlObject","targetHtmlObject","targetHtml","action_data","event_data","view_options","_locate_cell_timeline","addDragLanding","_drag","_dragIn","shtmlObject","_dragOut","DragControl","addDrop","onDrop","sourceDhtmlx","getMaster","onDragIn","pdf","html_regexp","newline_regexp","clean_html","x_norm","parseFloat","colsWidth","x_norm_event","is_left","dhx_cal_header","y_norm","get_style","de_day","de_week","xml_start","xml_end","xml_top","profile","footer","xml_body_header","dhx_cal_date","xh","xml_month_scale","xml_month","yh","xhs","second_scale","top_width","top_col","xml_body","colors","week_starts","_month","text_color","zx","zdx","left_norm","zy","zdy","e_type","dets","week","dy_copy","toXML","original_date","original_mode","temp_date","getPDFData","send_xml","submit","to_pdf","schedulersToPdf","objects","toPDF","toPDFRange","quick_info","show_quick_info","clickedElementPosition","_$quickInfoHandler","getPositionInsideScheduler","showQuickInfo","hiding_function","hideQuickInfo","quick_info_title","quick_info_content","quick_info_date","_quick_info_box_id","_get_event_counter_part","_quick_info_box","_init_quick_info","_fill_quick_data","_show_quick_info","cssTimeToMs","milliseconds","forced","qi","_x_scroll","dataPos","ontransitionend","fitQIInsideWindow","quickInfoPopup","popupRect","containerRect","offsetBottom","_quick_info_onscroll_handler","$testmode","_qi_button_click","domEv","titleContent","titleDate","main","mainContent","originalRecurringSetValue","original_left_buttons","original_right_buttons","readonly_form","forbidden_buttons","button_arrays","forbidden_button","button_array","txt_replace","txts","txtt","originalForm","readonlyForm","_lightbox_r","ALL_WEEKDAYS","Weekday","weekday","fromStr","nth","other","getJsWeekday","isPresent","isNumber","isWeekdayStr","includes","rang","repeat","times","toArray","padStart","targetLength","padString","sep","splits","pymod","divmod","mod","empty","notEmpty","datetime","MONTH_DAYS","ONE_DAY","MAXYEAR","ORDINAL_BASE","PY_WEEKDAYS","isLeapYear","isValidDate","daysBetween","date1","date2","date1ms","date2ms","differencems","toOrdinal","fromOrdinal","ordinal","getMonthDays","getWeekday","monthRange","combine","getMilliseconds","dolly","cloneDates","clones","timeToUntilString","untilStringToDate","until","bits","dateTZtoISO8601","timeZone","dateStr","dateInTimeZone","localTimeZone","Intl","DateTimeFormat","resolvedOptions","dateInLocalTZ","dateInTargetTZ","tzOffset","IterResult","after","accept","tooEarly","tooLate","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__assign","assign","__spreadArray","pack","SuppressedError","suppressed","CallbackIterResult","_super","iterator","_this","ENGLISH","dayNames","monthNames","tokens","SKIP","numberAsText","every","at","the","third","for","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","ToText","rrule","gettext","language","dateFormatter","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","isWeekdays","isEveryDay","sortWeekDays","isFullyConvertible","canConvert","freq","IMPLEMENTED","RRule","FREQUENCIES","plural","HOURLY","MINUTELY","DAILY","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","WEEKLY","MONTHLY","YEARLY","byyearday","byweekno","weekdaytext","monthtext","npos","wday","finalDelim","delim","delimJoin","finalDelimiter","o","realCallback","Parser","rules","done","nextSymbol","isDone","symbol","best","bestSymbol","rule","name_1","v","acceptNumber","expect","parseText","ttr","S","AT","F","MO","TU","WE","TH","FR","ON","wkd","decodeWKD","MDAYs","decodeM","decodeNTH","Frequency","freqIsDailyOrGreater","fromText","toText","Time","millisecond","DateTime","fromDate","getYear","addYears","years","addMonths","yearDiv","monthMod","addWeekly","wkst","fixDay","addDaily","addHours","filtered","_a","dayDiv","hourMod","addMinutes","byminute","hourDiv","minuteMod","addSeconds","seconds","bysecond","minuteDiv","secondMod","daysinmonth","SECONDLY","initializeOptions","_i","keys_1","defaultKeys","parseOptions","DEFAULT_OPTIONS","byeaster","dtstart","bysetpos","bynweekday","parsedOptions","buildTimeset","millisecondModulo","timeset","parseString","rfcString","parseLine","parseDtstart","line","dtstartWithZone","tzid","parseRrule","strippedLine","Days","parseNumber","optionKey","parseWeekday","parseIndividualNumber","SyntaxError","wdaypart","DateWithZone","RangeError","defineProperty","enumerable","configurable","isUTC","rezonedDate","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","between","_cacheAdd","what","_value","_cacheGet","cached","argsKeys","findCacheDiff","cachedObject","iterResult","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","baseYearMasks","wnomask","firstwkst","wyearlen","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","mmask","mdaymask","nmdaymask","mrange","rebuildMonth","lastyear","lastmonth","nwdaymask","ranges","easter","yearStart","Iterinfo","rebuild","yearinfo","monthinfo","eastermask","ydayset","mdayset","_","wdayset","ddayset","htimeset","mtimeset","stimeset","getdayset","gettimeset","buildPoslist","ii","dayset","poslist","daypos","timepos","tmp","iter","emitResult","counterDate","makeTimeset","removeFilteredDays","rezoneIfNeeded","currentDay","isFiltered","dayCounter","SA","SU","noCache","_cache","fromString","_iter","isFullyConvertibleToText","iterSet","_rrule","_exrule","_rdate","_exdate","_exdateHash","_accept","evalExdate","zonedDate","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","splitIntoLines","_b","breakDownLine","parms","_c","rdateTzid","parseRDate","buildRule","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","rrulestr","extractName","validateDateParm","parm","rdateval","createGetterSetter","fieldName","field","field_1","_addRule","_addDate","rrules","exrules","rdates","exdates","_dtstart","rdatesToString","rrs","clearMilliseconds","isDeletedOccurrence","isSeries","recurring_event_id","clearRecurringProperties","original_start","createException","nid","nev","_rec_temp","_rec_markers_pull","_rec_markers","_pid_time","_get_rec_marker","ch","_get_rec_markers","old_add_event","ev_id","_ignore_call","tev","_pid_changed","deleteEventFromSeries","idTimestamp","_is_modified_occurence","sub","isEventFound","_start_date","showLightbox_rec","lightbox_recurring","pid","isVirtual","showSeries","title_confirm_recurring","groupExceptions","exceptions","get_visible_events_rec","repeat_date","old_update_event","toIcalString","non_render","maxCount","seriesExceptions","utcStart","parsedRRule","repeatedDates","adjustedDate","visibleCount","eventDuration","exception","_fix_daylight_saving_date","recurrings","sev","occurence","include_end_by","recurring_workdays","getTopLevelOption","rruleObj","untilDate","hasEndCondition","getWeekdayOfMonth","dayOfWeek","dayOfMonth","dayNumber","jsDaysToRRULEDays","RruleDayNumsToJs","fillCustomDaily","fillCustomWeekly","dayCheckboxes","dayNum","dayLabel","fillCustomMonthly","dateOfMonth","nthWeekDayOfMonth","repeat_monthly_date","repeat_monthly_weekday","formatDayNumber","nthDayOfMonth","repeat_yearly_month_date","repeat_yearly_month_weekday","fillCustomYearly","dateOfYear","nthWeekDayOfYear","fillEndRule","countInput","ondateInput","endOptionSelect","formatter","repeat_date_of_end","dispatchEvent","getRecValue","WORKDAYS","CUSTOM","monthRepeat","yearRepeat","endRule","NEVER","fillInDefaults","rec","_get_node","_outer_html","loc","_init_set_value","_ds","show","onRepeatOptionChange","onCustomRepeatIntervalChange","weekly","monthly","yearly","onCustomRepeatEndRule","_rec_init_done","rf","blocked","rruleset","topOption","customFreq","actual_dates","timeControl","getTimeSection","recurrence","_start","getFirstSectionOfType","recurring_legacy","occurrence_timestamp_in_utc","outerHTML","getOuterHTML","_get_form_node","_get_node_value","_get_node_numeric_value","_set_node_value","hash_value","str_date_format","str_date","date_str","register_els","inps","change_current_view","get_repeat_code","get_rcode","get_end_rule","transpose_type","transp","set_end_rule","has_values","_get_repeat_code","get_numeric_value","repeat_precise","start_exists","transpose_day_week","set_rcode","set_repeat_code","MouseEvent","_set_repeat_code","elements","_toggle_block","_get_button","getRecurringSection","_get_form","backgroundPosition","transponse_size","day_week","originalMonth","cday","newMonth","cor","cor2","transposeRecurring","recurringParts","dayDurationMs","addRecurring","recurringStepDays","weekDays","seriesInstance","currentCount","origMonth","origYear","correctOverflowInstances","recurring_overflow_instances","startHour","ted","data_attributes","all_events","_serialize_json_value","toICal","full_day_format","timeline_restricted","Tooltip","_scheduler","_tooltipNode","_root","_isLikeMouseEvent","_calculateTooltipPosition","viewport","_getViewPortSize","tooltipNode","offsetX","tooltip_offset_x","offsetY","tooltip_offset_y","mouse","containerPos","scrollY","_getViewPort","scrollX","$event_data","$event","TooltipManager","_listeners","_initDelayedFunctions","delayHide","watchableTarget","eventTarget","targetNode","doOnMouseEnter","onmouseenter","touch_tooltip","onmouseleave","onmousemove","listener","cloneDomEvent","delayShow","utils.default","tooltip_timeout","tooltip_hide_timeout","tooltipManager","tooltips","tooltipFor","targetEventId","hideTooltip","treetimeline_restricted","units_restricted","s2d","d2s","select_event","week_agenda_restricted","wp","year_view","year_date","year_month","year_scale_date","year_tooltip","isYearMode","getCellDate","dblclick_dhx_year_grid","_year_render_event","_year_marked_cells","_hideToolTip","_tooltip","_showToolTip","_year_view_tooltip_handler","_init_year_tooltip","_mark_year_date","_unmark_year_date","_reset_year_scale","year_top","ssd","yearBox","year_x","datepicker","locateEvent","export_api","std","getElementSizes","sizes","dhtmlxAjax","dhx4","add_export_methods","orientation","dpi","_export_html","_send_to_export","exportToICal","_serialize_plain","exportToExcel","_serialize_columns","_ajax_to_export","server","fail","_plain_export_copy","$text","_create_hidden_form","_hidden_export_form","_get_export_size","A5","A4","A3","A2","A1","A0","dataX","dataY","headY","multY","cSize","getTimeline","getInitialSizes","smartRendering","style_width","style_height","timeline_scrollable","timeline_smart_rendering","setExportSizes","initialSizes","setInitialSizes","gplExtensions","drag_between","factory","$dhx"],"mappings":"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","x_google_ignoreList":[126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153]} \ No newline at end of file diff --git a/codebase/sources/less/package.json b/codebase/sources/less/package.json index 358b456..0dcd915 100644 --- a/codebase/sources/less/package.json +++ b/codebase/sources/less/package.json @@ -1,6 +1,6 @@ { "name": "dhtmlx-scheduler-skins", - "version": "7.1.0", + "version": "7.1.1", "description": "Less sources and a build tool for DHTMLXScheduler skins", "scripts": { "build": "node scripts.js --file=theme", diff --git a/package.json b/package.json index 74ef81f..dff40ea 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dhtmlx-scheduler", - "version": "7.1.0", + "version": "7.1.1", "description": "JavaScript event calendar. Allows to manage events and appointments in different views", "main": "codebase/dhtmlxscheduler.es.js", "types": "codebase/dhtmlxscheduler.es.d.ts", diff --git a/whatsnew.md b/whatsnew.md index b84c3e1..c2ac308 100644 --- a/whatsnew.md +++ b/whatsnew.md @@ -1,3 +1,13 @@ +### 7.1.1 + +Fix the issue where the DataProcessor did not allow sending false values +Fix the issue where the Tooltip disappeared on mobile devices after a click +Fix the Tooltip position issue during page scroll +Fix the issue where the container_autoresize plugin hid the multiday section +Fix the issue where the Quick Info popup appeared outside of the container +Fix the issue where unconfirmed events disappeared during scrolling with smart rendering enabled in the Timeline view +Fix the incorrect sections height in the Timeline view after calling scheduler.updateCollection() with active smart rendering + ### 7.1.0 Storing recurring events in the RRULE format